Var имя переменной: string [длина строки];
Например, Var slovo:string[10]; stroka:string;
Таким образом, строковый тип задается регулярным типом (как в случае с массивами), поэтому все свойства массивов переносятся и на строки (длина строки задается статически; доступ к отдельному символу строки осуществляется по его индексу). К особенностям строк следует отнести следующее:
-
строковые константы могут быть присвоены в качестве значений строковым переменным в том случае, если их длины равны;
-
значения строковых переменных можно сравнивать, используя операции отношения (<, >, <=, >=, =, < >), сравнение значений строковых переменных производится путем последовательного сравнения литер до первого несовпадающего символа, и та строка считается большей, где этот символ имеет больший код;
-
ввод значений строковых переменных производится с помощью стандартной процедуры Read (Readln);
-
для задания строке значения в программе используется оператор присваивания, например sl := 'Информатика';
В Паскале для выполнения наиболее часто применяемых действий со строками предназначен набор встроенных функций и процедур (таблица A1).
5.2 Пример алгоритма и программы обработки символьной информации
Составить программу, проверяющую, является ли введенный текст палиндромом (палиндром - текст который читается слева направо и справа налево одинаково). При составлении программы следует обратить внимание на то, что коды прописных букв русского алфавита в таблице ASCII следующие - Ord(A)=128,…,Ord(Я)=159, а строчные русские буквы расположены в таблице кодов не подряд - Ord(а)=160,…, Ord(п)=175, Ord(р) = 224,…, Ord(я)=239.
На рисунке 5.1 представлена блок-схема алгоритма решения задачи, ниже приведена соответствующая ей программа.
Рисунок 5.1 – Пример обработки символьной информации |
program p_5; var st, a, b: string; i, n, k: integer; begin writeln ('Ведите текст на русском языке'); readln (st); a:=''; b:=''; n:=length(st); for i:=1 to n do if st[i]<>' ' then begin {Замена ПРОПИСНОЙ русской буквы на строчную} if (st[i]>='А') and (st[i]<='П') then st[i]:= chr(ord(st[i])+32) else if (st[i]>='Р')and(st[i]<='Я') then st[i]:=chr(ord(st[i])+80); a:=a+st[i]; b:=st[i]+b end; write (st,' - '); if a=b then writeln ('палиндром') else writeln ('не палиндром') end. |
5.3 Варианты заданий
-
Дана строка символов, состоящая из нескольких предложений. Найти самое длинное предложение.
-
Дана строка символов, состоящая из нескольких предложений. Определить количество предложений.
-
Дана строка символов. Посчитать количество пробелов в строке и заменить их на запятые.
-
Дана строка символов. Определить количество слов в строке.
-
Дана последовательность слов. Вывести на экран дисплея только слова, содержащие не более пяти символов.
-
Дана строка символов. Определить количество букв "О" в данной строке.
-
Дана строка символов. Заменить в этой строке все буквы "А" на "Я".
-
Дана строка символов. Определить количество слов состоящих из четырех букв.
-
Дана строка символов. Заменить пробелы на знак "+".
-
Дана строка символов. Определить какой из знаков препинания (тире, запятая, точка, двоеточие) встречается в строке чаще.
-
Дана строка символов. Сколько раз в ней встречается слог "МИ".
-
Определить самое длинное слово в строке.
-
Дана строка символов. Вывести на экран слова, которые заканчиваются на букву "А".
-
Дана строка символов. Определить количество слов, начинающихся на букву "С".
-
Дана строка символов. Заменить все запятые на знаки "-".
-
Определить количество запятых в строке.
-
Определить количество букв "Л" в строке.
-
Определить количество слов заканчивающихся на букву "Ь".
-
Определить количество слов, содержащих не менее двух букв "А".
-
Дана строка символов. Заменить все буквы "И" на знак "+".
-
Определить количество цифр в строке символов.
-
Дана строка символов. Определить количество слов, у которых первый и последний символ совпадают между собой.
-
Дана строка символов. Найти самое длинное слово, начинающееся на букву "а" и вывести его в обратном порядке.
-
Поменять первое слово в строке с последним словом.
-
Дана строка символов. Сколько раз в ней встречается слог "ЛЯ".
-
В заданном тексте осуществить замену одного слова на другое.
-
Напишите программу обращения слов в строке (если был "кот", то результатом будет "ток").
-
Дана строка символов. Замените все буквы "р" на сочетание "ку".
-
Напишите программу, которая удаляет начальные пробелы из введенной с клавиатуры строки.
-
Дана строка символов, состоящая из нескольких предложений. Найти самое короткое предложение.
5.4 Контрольные вопросы
1 Для какой цели используется строковый тип данных?
2 Что называется строкой символов? Какова максимальная длина строки?
3 Чем отличаются строковые константы и строковые переменные?
4 Как объявляются строковые переменные?
5 Назовите основные особенности строк.
6 Какие основные встроенные процедуры и функции предусмотрены для работы со строками?
Лабораторная работа №6. Использование подпрограмм и модулей
Цель работы – приобретение навыков программирования при решении задач с использованием подпрограмм и модулей.
6.1 Подпрограмма-функция и подпрограмма-процедура
При программировании часто возникает необходимость повторять одну и ту же последовательность операторов в различных частях программы при разных параметрах, многократно переписывая их. Для реализации таких действий и сокращения объема программы удобно использовать подпрограммы: процедуры и функции. При решении задач с использованием подпрограмм необходимо сначала определить, что будет вычисляться многократно и сколько при одном вычислении будет результатов. Затем выбрать тип используемой подпрограммы в зависимости от количества предполагаемых результатов, т.к. в подпрограмме-функции результат может быть только один, а подпрограмме-процедуре несколько.
Любая подпрограмма содержит:
-
заголовок;
-
описательную часть;
-
исполнительную часть.
Заголовок подпрограмм оформляется по следующим правилам:
- в подпрограмме-функции |
|
Запись в Паскале |
Function имя (список формальных параметров):тип функции; |
Пример |
Function Beta ( x, y: integer; a, b: real) : real; |
- в подпрограмме-процедуре |
|
Запись в Паскале |
Procedure имя (список формальных параметров); |
Пример |
Procedure Alfa (N:integer; A,B:real; var max:real; var k:integer); |
Параметры, которые используются в описании процедуры, называются формальными (глобальными) параметрами. Формальные параметры процедуры делятся на параметры-значения и параметры-переменные. Под параметрами-значениями понимаются параметры, значения которых не меняются в ходе выполнения подпрограммы (входные). Параметры-переменные - выходные величины подпрограммы, значения которых передаются в головную программу. В списке формальных параметров перед перечислением параметров-переменных необходимо поставить слово Var. В рассмотренном примере вещественная величина max и целая i являются параметрами переменными. Параметры-значения в примере представлены целой величиной N и вещественными A и B. Если в подпрограмме будет использоваться параметр нестандартного типа, например массив, то этот тип должен быть описан явным способом в головной программе.
Формальные параметры подпрограммы-функции могут быть только параметрами-значениями, т.е. входными данными, а выходным параметром является имя подпрограммы, поэтому в заголовке необходимо указать ее тип.
Таким образом, результат процедуры передается через параметры-переменные, а результат подпрограммы-функции через ее имя. В связи с этим имя функции используется в качестве переменной в исполнительной части подпрограммы, которой присваивается результат, а для процедуры это категорически запрещается.
В описательной части подпрограммы следует описать локальные переменные (т.е. те, что используются только внутри подпрограммы), формальные параметры в этой части подпрограммы уже не описываются. Исполнительная часть подпрограммы реализует алгоритм, вынесенный в нее. Для подпрограммы-функции в этой части должен присутствовать оператор присваивания, в левой части которого стоит имя функции.
В отличие от программы подпрограмма заканчивается точкой с запятой.
Обращение к подпрограмме осуществляется из головной программы по следующим правилам:
- к подпрограмме-функции |
|
Запись в Паскале |
Имя переменной := Имя подпрограммы (список фактических параметров); |
Пример |
Z := Beta (5,6, S, D); |
- к подпрограмме-процедуре |
|
Запись в Паскале |
Имя подпрограммы (список фактических параметров); |
Пример |
Alfa (10, X, Xmax, ix); |
Параметры, которые при обращении к подпрограмме подставляются вместо формальных, называются фактическими (локальными) параметрами. Соответствие между фактическими и формальными параметрами устанавливается согласно порядку их следования, количеству в списке и в соответствии с указанным типом.
В программе может содержаться несколько различных подпрограмм, которые располагаются одна за другой после совокупности описания переменных головной программы. Если какая-то подпрограмма обращается к другой подпрограмме, то вызывающая подпрограмма должна располагаться после вызываемой.