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

5. Семантика cf pascal.

Глава 5 знакомит нас с концепцией значения программ. Для точного описания этой идеи используются такие математические структуры как строки, списки, множества, отношения и функции.

Знать значение программы – значит быть способным определить выход программы для любого заданного входа. Если для некоторого X на входе программа выдает Y на выходе, то такая пара формирует часть значения функции. Множество всех пар X,Y для которых программа выполняется корректно, является полным значением программы.

Если какие-то входные данные X0 вызывают аварийное завершение или бесконечное выполнение, то X0 н принадлежит значению программы.

Для некоторых программ значения выражаются довольно просто.

PROGRAM Copy (INPUT, OUTPUT);

{Writes first character in INPUT to OUTPUT}

VAR

Ch: CHAR;

BEGIN

READ(Ch);

WRITELN(Ch);

END.

Значение этой программы содержит пары, такие что входная строка не пуста (содержит символы или маркеры конца строки) а выходная строка содержит первый символ входной. Если первый символ входной строки является маркером конца строки, то выходная строка будет содержать символ пробела и такие пары также принадлежат значению программы.

Но большинство программ не могут иметь таких простых и удобных описаний. Они оперируют бесконечным количеством вариантов входных данных и правила определения выходных данных достаточно сложны. Собственно правилом, определяющим выход для данного входа, является сама программа, сложные программы обычно склонны иметь большое и сложное значение. Нам потребуется некоторый математически аппарат для работы с программами, такой как строки списки, множества, отношения и функции.

5.1. Строки символов.

Строки символов – математические объекты, , имеющие имена, над ними определены операции и отношения.

Новые идеи: строка символов, символьный литерал, строковый литерал, пустая строка, конкатенация, композиция, декомпозиция, подсписок.

Строковый литерал (или просто строка) - последовательность символов, чье начало и конец помечены специальным символом – маркером строки.

Строка, не имеющая символов, 0-строка, называется пустой строкой. Примеры строк:

†† - 0-строка

†□† - 1-строка

†string† - 6-строка

†□string□† - 8-строка

Символьные литералы мы помечаем горизонтальным штрихом над символом, например S для изображения пробелов используем специальный символ □.

Строковые и символьные литералы не одно и то же, их не нужно путать. 1-строка не то же самое, что символ, который в ней размещается. Например, □ – символ, †□† - 1-строка.

Строковым литералам удобно присваивать имена, например: S = †string†. Строка может иметь несколько имен, но одно имя использовать для нескольких строк некорректно. Имена лучше всего использовать для именования не каких-то определенных строк, а тех, значение которых мы можем предположить.

CF Pascal предлагает три операции для манипулирования строками:

Оператор CF Pascal

Строковая операция

WRITE(‘ABC’)

Конкатенация

WRITE(Ch)

Композиция

READ(Ch)

Декомпозиция

Эти операции над строками образуют базис для работы со строками как математическими объектами.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]