Сёмов Основы разработки алгоритмов и программ. Учебное пособие для студентов факультета дистанционных форм обучения миигаик москва 2020 2 Рецензенты
Скачать 391.34 Kb.
|
Copy (s : string; Index : integer; Count : integer) : string; Функция возвращает подстроку, выделенную из исходной строки S, длиной Count символов, начиная с символа с номером Index. 3. Pos (Substr, s : string) : byte Функция производит поиск в строке S подстроки Substr. Результатом функции является номер позиции подстроки в исходной строке. Если подстрока не найдена функция возвращает значение 0. 4. Delete (Var s : string; Index, Count : integer); Процедура производит удаление из строки-параметра S подстроки длиной Count символов, начиная с символа с номером Index. 5. Insert (Source : string; Var S : string; Index : integer); Процедура предназначена для вставки строки Source в строку S, начиная с символа с номером Index. 6.3. Примеры алгоритмов и программ обработки строк При составлении программы обработки строки строку рассматривают как одномерный массив символов. Приведем несколько программ обработки текста. В качестве полезного упражнения рекомендуем по каждой программе составить блок-схему алгоритма. В программах для простоты будем считать, что длина вводимого текста не превосходит 255 символов и весь текст можно ввести в одну строковую переменную. Задача 1. Удалить все начальные и все конечные пробелы в тексте, а также все лишние пробелы между словами текста. Между словами должно быть не более одного пробела. Текст, полученный после такой обработки, назовем стандартным. Программа имеет вид Program Standart_Str; Var S : string; i : integer; Begin Writeln (‘ Введите текст ‘) Readln ( S ); While S[ 1 ] = ‘ ‘ do { Пока S[1] = пробелу} Delete ( s , 1 ,1 ); { В цикле избавились от начальных пробелов} While S [ Length ( S )] = ‘ ‘ do { Пока S[ последний] = пробелу} Delete ( S , Length ( S ) ,1 ); {В цикле избавились от концевых пробелов} 81 i := 1; While i < Length ( S ) do Begin While ( S[ i ] = ‘ ‘ ) and ( S[ i +1] = ‘ ‘ ) do Delete ( S , i+1, 1 ); { В этом вложенном цикле среди найденных нескольких, стоящих рядом пробелов, удалили все кроме первого} i := i + 1; {Перешли в следующую позицию, для поиска следующего набора из двух или более пробелов} End; Writeln ( S ); End. Задача 2. В стандартном тексте подсчитать количество слов. Нетрудно сообразить, что количество слов будет на 1 больше количества разделяющих их пробелов. Подсчетом пробелов программа и займется. Program Kol_ slov; Var S : string; i , l , k : integer; Begin Writeln (‘ Введите стандартный текст ‘) Readln ( S ); l := Length ( S ) ; k := 0; for i := 1 to l do If S[ i ] = ‘ ‘ then k := k + 1; k := k + 1; Writeln ( ‘ текст состоит из ‘ , K , ‘ Слов ‘ ); End . 82 Задача 3. Программа должна определить является ли введенное слово полиндромом. Полиндром – слово, которое читается одинаково с начала до конца и с конца до начала. Для простоты будем считать, что слово вводится либо только строчными либо только заглавными буквами. Например: казак, АЛЛА. Program Polindrom; Var S : string; i , m , k : integer; Begin Writeln (‘ Введите слово ‘) Readln ( S ); m := Length ( S ) div 2 ; {Количество пар символов, равноудаленных от начала и конца слова} k := 1; {Предполагаем, что слово – полиндром} for i := 1 to m do if S [ i ] < > S [Length ( S ) + 1 - i ] then k := 0 ;{Если найдется хотя бы одна пара не равных равноудаленных от начала и конца слова символов, то k будет равна 0} if k = 1 then Writeln ( ‘ Слово - полиндром ‘ ); else Writeln ( ‘ Слово – не полиндром ‘ ); End. 83 Задача 4. Определить количество разных вхождений заданной подстроки в заданную строку. Два вхождения разные, если они не имеют общих символов. Program Kol_SubS_v_Str; Var S , Sdubl , SubS: string; k , x : integer; Begin Writeln (‘ Введите текст ‘) Readln ( S ); Writeln (‘ Введите подстроку ‘) Readln ( SubS ); Sdubl := S; {Делаем копию S} k := 0 ; { Обнуление счетчика вхождений} x := Pos( SubS, Sdubl ); While x > 0 do Begin k := k + 1; {Раз нашли вхождение увеличиваем счетчик на 1} Delete ( Sdubl , 1 , x + Length(SubS) - 1 ); { Удалили начало строки по последний символ найденного вхождения включительно} x := Pos( SubS, Sdubl );{ Поиск следующего вхождения в урезанной строке} End; Writeln ( ‘ Количество найденных вхождений = ’ , k ); End. 84 Рекомендуемая литература 1. Информатика: алгоритмизация и программирование. Учеб. пособие / В. В. Гаврилова, А. А. Кудлаев, А. М. Сёмов ;-М. : МИИГАиК, 2010.-82 с.: ил. 2. Информатика. Технология программирования. Алгоритмы обработки массивов. Учеб. пособие / А. А. Кудлаев;-М. :МИИГАиК, 2019.-44 с.: ил 3. Информатика. Базовый курс. 2-е издание / Под ред. С.В. Симоновича. – СПб.: Питер, 2009.-640с.: ил. 4. Князева М.Д. Алгоритмика: от алгоритма к программе. Учебное пособие -М.: КУДИЦ- ОБРАЗ, 2006.-192 с.: ил. 5. Могилев А.В. Информатика: учеб. пособие для студ. пед. вузов / А.В. Могилев, Н.И. Пак, Е.К. Хеннер ; под ред. Е.К. Хеннера. – 6-е изд., стер. – М.: Издательский центр «Академия», 2008.-848 с.: ил 85 Содержание 1 Алгоритм и его свойства 3 1.1 Понятие алгоритма . 3 1.2 Свойства алгоритма . 4 2 Алгоритмы работы с величинами для ЭВМ 7 2.1 Типы данных . 7 2.2 Система команд (алгоритмических действий) ЭВМ.. . . 7 2.3 Блок–схемы алгоритмов 11 2.4 Вопросы и упражнения 15 3 Программирование на алгоритмическом языке . 17 3.1 Линейные алгоритмы . 17 3.2 Алгоритмы с ветвящейся структурой . 20 3.3 Вопросы и упражнения . 23 4 Язык Паскаль 26 4.1 Основные элементы языка . 26 4.2 Подробнее о типах данных . 29 4.3 Преобразование типов и действия над ними . 31 4.4 Арифметические операции .. 32 4.5 Программирование диалога с компьютером . 33 4.6 Вопросы и упражнения . 34 4.7 Логические переменные и выражения . 35 4.8 Оператор ветвления . 38 4.9 Оператор выбора 41 4.10 Вопросы и упражнения . 43 4.11 Технология решения задач на ЭВМ. Программирование циклов 43 4.12 Операторы циклов . 48 4.13 Алгоритм Евклида . 50 4.14 Оператор цикла с постусловием . 53 4.15 Вопросы и упражнения . 55 5 Работа с массивами в Паскале 56 5.1 Понятие массива 56 5.2 Одномерные массивы. . . . . . . 56 5.3 Двумерные массивы . 57 86 5.4 Примеры алгоритмов и программ обработки одномерных массивов 59 5.5 Примеры алгоритмов и программ обработки двумерных массивов 69 6 Работа со строковыми переменными. 78 6.1 Строковые переменные 78 6.2 Операции со строковыми переменными . 78 6.3 Примеры алгоритмов и программ обработки строк . 80 Рекомендуемая литература . . . . . 84 |