Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
24
Добавлен:
20.02.2017
Размер:
342.53 Кб
Скачать

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 Варианты заданий

  1. Дана строка символов, состоящая из нескольких предложений. Найти самое длинное предложение.

  2. Дана строка символов, состоящая из нескольких предложений. Определить количество предложений.

  3. Дана строка символов. Посчитать количество пробелов в строке и заменить их на запятые.

  4. Дана строка символов. Определить количество слов в строке.

  5. Дана последовательность слов. Вывести на экран дисплея только слова, содержащие не более пяти символов.

  6. Дана строка символов. Определить количество букв "О" в данной строке.

  7. Дана строка символов. Заменить в этой строке все буквы "А" на "Я".

  8. Дана строка символов. Определить количество слов состоящих из четырех букв.

  9. Дана строка символов. Заменить пробелы на знак "+".

  10. Дана строка символов. Определить какой из знаков препинания (тире, запятая, точка, двоеточие) встречается в строке чаще.

  11. Дана строка символов. Сколько раз в ней встречается слог "МИ".

  12. Определить самое длинное слово в строке.

  13. Дана строка символов. Вывести на экран слова, которые заканчиваются на букву "А".

  14. Дана строка символов. Определить количество слов, начинающихся на букву "С".

  15. Дана строка символов. Заменить все запятые на знаки "-".

  16. Определить количество запятых в строке.

  17. Определить количество букв "Л" в строке.

  18. Определить количество слов заканчивающихся на букву "Ь".

  19. Определить количество слов, содержащих не менее двух букв "А".

  20. Дана строка символов. Заменить все буквы "И" на знак "+".

  21. Определить количество цифр в строке символов.

  22. Дана строка символов. Определить количество слов, у которых первый и последний символ совпадают между собой.

  23. Дана строка символов. Найти самое длинное слово, начинающееся на букву "а" и вывести его в обратном порядке.

  24. Поменять первое слово в строке с последним словом.

  25. Дана строка символов. Сколько раз в ней встречается слог "ЛЯ".

  26. В заданном тексте осуществить замену одного слова на другое.

  27. Напишите программу обращения слов в строке (если был "кот", то результатом будет "ток").

  28. Дана строка символов. Замените все буквы "р" на сочетание "ку".

  29. Напишите программу, которая удаляет начальные пробелы из введенной с клавиатуры строки.

  30. Дана строка символов, состоящая из нескольких предложений. Найти самое короткое предложение.

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);

Параметры, которые при обращении к подпрограмме подставляются вместо формальных, называются фактическими (локальными) параметрами. Соответствие между фактическими и формальными параметрами устанавливается согласно порядку их следования, количеству в списке и в соответствии с указанным типом.

В программе может содержаться несколько различных подпрограмм, которые располагаются одна за другой после совокупности описания переменных головной программы. Если какая-то подпрограмма обращается к другой подпрограмме, то вызывающая подпрограмма должна располагаться после вызываемой.