Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по информатике все.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
986.62 Кб
Скачать

4.2.3. Пример использования множества

В качестве иллюстрации приемов работы с данными типа множество обычно рассматривают классическую задачу под названием "решето Эратосфена" (выделение из натуральных чисел всех простых чисел). Отойдем от этой традиции и приведем текст программы, которая вводит некоторое подмножество латинских букв и печатает сообщение о том, содержит ли введенное подмножество буквы A, B, C одновременно. Пример 33

Пример 33

program Mnogestvo; {использование множеств} var

Bukvy: set of 'A'..'Z'; Buk: char;

begin

Bukvy := [];    {инициализация множеств} while not eoln do begin

read(Buk); Bukvy := Bukvy + [Buk];

end; if ['A', 'B', 'C'] - Bukvy = [] then

writeln('содержатся A, B, C')

else

writeln('не содержатся одновременно буквы A, B, C');

end.

4.3. Строки

4.3.1. Объявление типа String

Особое место в программировании занимают задачи по обработке различных текстов, представляющих собой цепочки символов. В Турбо-Паскале введен специальный строковый тип String [N], определяющий множество цепочек символов произвольной длины от 0 до N. Количество символов в строке может быть любым, но не более 255. Если указание максимальной длины опущено, то подразумевается максимально возможная длина, т.е. 255, например:

var     Stroka1: string;     Stroka2: string[20];

К любому символу строки можно обратиться точно так же, как к элементу одномерного символьного массива, например:

if Stroka2[5] = 'a' then     ...

Для переменной типа String длиной N символов отводится N+1 байтов памяти, причем нулевой байт содержит значение текущей длины строки. Это значение может быть получено с помощью специальной функции Ord (Stroka2[0]), которая возвращает порядковый номер аргумента. Заметим, что для целых типов функция Ord возвращает сам аргумент. Однако, как правило, для определения текущей длины строки используют стандартную функцию Length, аргументом которой является выражение типа String, например, функция Length (Stroka2) возвращает текущую длину этой строки.

4.3.2. Операции над строковыми переменными

Строковым переменным можно присваивать значение строковой константы, например:

Stroka1 := 'stroka '; Stroka2 := 'string';

К строкам можно применить операцию конкатенации (сцепления), обозначаемую символом '+', например:

Stroka1 := Stroka1 + Stroka2; writeln(Stroka1);

В результате выполнения этих двух операторов на экране появится сообщение:

stroka string

Если длина сцепленной строки превысит максимально допустимую длину N, то "лишние" символы отбрасываются. Для строковых переменных определены операции сравнения, например:

Stroka1 < Stroka2 возвращает FALSE; Stroka2 < 'ttring' возвращает TRUE;

При выполнении операции сравнения действуют следующее правило:

  • более короткая строка всегда меньше более длинной;

  • для строк одинаковой длины происходит поэлементное сравнение с учетом лексикографической упорядоченности.

Для ввода строковых переменных обычно используют оператор Readln(Stroka1), который пропускает символ "конец строки". Вывод осуществляется оператором Writeln(Stroka1). Очевидно, что ввод строковой переменной можно осуществить посимвольно, как в одномерный массив, но в этом случае необходимо записать в нулевой байт ее длину, используя функцию Chr(B). Функция Chr(B) типа Char преобразует выражение типа Byte в символ и возвращает последний в качестве своего значения, например:

Stroka1[0] := Chr(5); - строка будет иметь длину 5 символов.