- •Программирование на языке Pascal введение
- •Этапы разработки программ
- •Ядро Турбо Паскаль
- •Среда программирования Турбо паскаль
- •Функциональные клавиши
- •2.3. Текстовый редактор
- •Запуск и отладка программы
- •Элементы языка
- •3.1. Алфавит
- •3.2. Зарезервированные слова и идентификаторы
- •3.3. Общая структура программ в Турбо Паскаль
- •3.4. Основные типы данных. Простые типы
- •Основные операторы языка программирования Турбо Паскаль
- •4. 1. Ввод – вывод информации в Турбо Паскаль
- •4.2. Математические операции, встроенные математические функции Турбо Паскаль
- •4.3. Пустой оператор и составной оператор
- •4.4. Условный оператор
- •4.5. Оператор выбора
- •4.6. Операторы повторений
- •5. Символьные типы данных
- •6. Строковые типы данных
- •Стандартные процедуры и функции для строк
- •7. Структурированные типы данных. Массивы
- •7. 1. Одномерные массивы
- •Доступ к элементам массива
- •7.2. Сортировка массивов
- •7.2.1. Сортировка вставкой
- •7.2.2. Сортировка выбором
- •7.2.3. Сортировка обменом (пузырьковая сортировка)
- •7.3. Многомерные массивы
- •8. Записи
- •9. Множества
- •10. Типизированные константы
- •10.1. Константы простых типов и типа string
- •10.2. Константы-массивы
- •10.3. Константы-записи
- •10.4. Константы-множества
- •Литература
6. Строковые типы данных
До сих пор мы рассматривали типы данных ориентированные на хранение отдельных элементов (неструктурированных), например чисел или символов. В Турбо Паскаль существует тип данных STRING (строка), предназначенный для обработки строк (цепочки символов). Он занимает промежуточное место между простыми и структурированными типами.
Переменную типа STRING можно рассматривать как упорядоченную цепочку символов (элементов типа CHAR).
Переменная типа STRING объявляется путем указания имени переменной, зарезервированного слова STRING и указания в квадратных скобках максимального размера. Если максимальный размер не указан, то он автоматически принимается равным максимальной длине строки, т.е. 255 символам.
Например:
Var
Str1: String;
Str2: String[20];
Str3: String[100]
Здесь строка Str1 имеет максимальную длину – 255 символов, Str2 –20, а Str3 –100.
В Турбо Паскаль существует два способа обработки переменных типа STRING. Первый способ – это обработка всей строки как единого целого. Второй способ рассматривает строку как составной объект, состоящий из элементов типа CHAR.
Для ввода строковых переменных обычно используют конструкции вида:
Writeln ('Введите строку');
Readln (Str1);
либо:
Str1: = 'Это строка';
Конструкции напоминают конструкции ввода переменных простого типа.
Турбо Паскаль позволяет выполнять операции объединения (сцепления) нескольких строк в процессе их присваивания какой-либо переменной, например:
Str1: = 'Это' + ' - ' + 'строка' + ' ! ';
либо:
Str1: = Str2 + Str3;
Возможен доступ к отдельным символам строки по номеру их позиции. По отношению к отдельному символу строки возможны все те операции, что и к переменной типа CHAR.
Пример:
Программа ввода в строку слова «папа» и замену его на слово «мама».
Program Zamena;
Var
i: integer; st: string [10]:
Begin
st: = папа:
writeln(st);
st[1]: = м;
st[3]: = м;
writeln(st);
End.
Возможен поэлементный вывод переменной типа String. Например, вывод через пробел:
for i: =1 to length(st) do
Write(st[i], );
Вывод в столбик:
For i: =1 to length(st) do
Writeln(st[i]);
Турбо Паскаль предоставляет в распоряжение пользователей целый ряд процедур и функций, предназначенных для обработки строк.
Стандартные процедуры и функции для строк
Функция Length
Program DemoFunctionLENGTH;
Var
Words: STRING;
Begin
Writeln ('Введите, пожалуйста, слово:');
Readln(Words);
Writeln;
Writeln ('Это слово состоит из', Length (Words):3,'букв!');
End.
Примечание:
При подсчете фактической длины строки учитываются все входящие в нее символы, в том числе и пробелы.
Функция UpCase
Функция UpCase позволяет преобразовывать символ любой литеры из строчного в прописной. Эта функция рассчитана на обработку отдельного символа. Поэтому для обработки строки символов с помощью этой функции приходиться организовывать цикл.
Примечание:
Русские литеры не могут обрабатываться этой функцией.
Рассмотрим пример как с помощью функции UpCase можно заменить все строчные буквы строки прописными:
Program DemoFunctionUpCase;
Var
Words: STRING;
I: integer;
Begin
Readln(Words);
For i:=1 to Length(Words) do Words[i]:=UpCase(Words[i]);
Writeln(Words);
End.
В результате работы этой программы на экране появится строка, содержащая большие английские и маленькие русские буквы.
Функция Copy
Функция Copy позволяет копировать фрагмент некоторой строки из одной переменной в другую. Вызывая функцию Copy, необходимо указывать следующие параметры:
имя строки, из которой должен извлекаться копируемый фрагмент;
позицию в строке, начиная с которой будет копироваться фрагмент;
число копируемых символов.
Пример:
Program DemoFunctionCopy;
Var
Words: STRING[30];
Word 1, Word 2, Word 3: STRING[20];
Begin
Words:='картографирование';
Writeln(Words);
Word1:=Copy(Words,6,4);
Writeln(Word1); {На экране появится 'граф'}
Word2:=Copy(Words,2,3);
Writeln(Word2); {На экране появится 'арт'}
Word3:=Copy(Words,11,3);
Writeln(Word3); {На экране появится 'ров'}
End.
Функция Pos
С помощью функции Pos можно осуществить в некоторой строке поиск определенного фрагмента. Если заданный фрагмент в строке присутствует, то функция возвращает номер позиции в строке, с которой этот фрагмент начинается. Если фрагмент в строке не найден, то функция возвращает нуль.
Program DemoFunctionPos;
Var
Words: STRING[70];
NewWord: STRING[20];
Position: integer;
Begin
Readln(Words);
NewWord: = 'электрификация';
Position:=Pos(NewWord,Words);
if position <>0
then Writeln('Фрагмент', NewWords, 'Содержится во фразе', Words, 'начиная с позиции', Position:3)
else Writeln ('Фрагмент', NewWord, 'не содержится во фразе', Words);
End.
Из данного примера видно, что функция Pos требует полного совпадения искомого фрагмента и фрагмента строки, в которой производится поиск. Прием большие и маленькие буквы считаются различными символами.
Процедуры Insert и Delete
С помощью процедур Insert и Delete можно вставить фрагмент из одной строки в другую, удалить фрагмент из строки.
Процедура Insert вставляет в исходную строку, начиная с указанной позиции, какую-либо другую строку. Оператор Insert(Word1, Words, 4); указывает Турбо Паскаль 7.0., что необходимо в строку Words, начиная с 4 позиции (перед 4-ой позицией), вставить строку Word1.
Процедура Delete удаляет в исходной строке фрагмент определенной длины, начинающийся с указанной позиции. Так, оператор Delete (Words, 2,3) удаляет из строки Words фрагмент, состоящий из трех символов и начинающийся со второй позиции.
Рассмотрим возможности этих двух процедур на слове "компьютеризация".
Program DemoFunctionInsertendDelete;
Var
Words: STRING[70];
Word1: STRING[20];
Begin
Writeln;
Words:='компьютеризация';
Writeln(Words);
Delete(Words,1,7);
Writeln(Words);
Delete(Words,3,2);
Writeln(Words);
Word1: ='Г';
Insert(Word1,Words,1);
Writeln(Words);
Word1:='не';
Insert(Word1,Words,3);
Writeln(Words);
End.
В результате работы данной программы на экран будут выведены следующие строки:
компьютеризация
еризация
ерация
герация
генерация
Примечание:
Во избежание ошибок при применении процедур Insert и Delete указанные в списке параметров позиции должны обязательно присутствовать в обрабатываемых строках.
Задачи
Ввести строку. Подсчитать, сколько раз в ней встречается буква «А» и сколько «Б».
Ввести строку. Подсчитать, сколько раз встречаются строчные и сколько раз заглавные русские буквы.
Ввести строку. Подсчитать, сколько раз в ней встречается слово «мама».
Ввести строку из русских букв. Вывести на экран по порядку слова в столбик. Повторяющиеся слова не выводить.
Ввести строку из русских буква. Разложить слова в алфавитном порядке.
Ввести строку из русских букв. Вывести самое короткое предложение.
Ввести строку из русских букв. Вывести самое короткое и самое длинное слово.
Ввести строку. Заменить заданное слово на другое слово в строке.
Ввести строку из русских букв. Вывести максимальное количество слов, начинающихся на одну букву.
Ввести строку из русских букв. Удалить из нее все слова, состоящие из нечетного числа букв.
Ввести строку из русских букв. Заменить в ней каждое слово:
а) «маша» на «медведь»,
б) «ЭВМ» на «компьютер»,
в) «паровоз» на «паром»,
г) «медаль» на «награда»,
д) «мышь» на «кот»,
е) «поезд» на «самолет».
Разработать программу, позволяющую вводить строку символов и осуществляющую замену каждого произвольного слова на другое слово.
Ввести строку из русских букв. Определить все симметричные слова.
Ввести строку из русских букв. Заменить все строчные буквы на прописные.
Ввести строку из русских букв. Определить все слова, у которых первая и последняя буква совпадают.
Ввести строку из русских символов. Удалить из нее все лишние пробелы и символы.
Ввести строку из русских букв. Удалить все повторяющиеся слова.
