СЕМАНТИКА 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.

 

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

 

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

 

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

 

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

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

 

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

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

†† - 0-строка

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

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

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

 

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

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

 

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

 

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

 

Оператор CF Pascal Строковая операция
WRITE(‘ABC’) Конкатенация
WRITE(Ch) Композиция
READ(Ch) Декомпозиция

 

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

 








Дата добавления: 2016-12-08; просмотров: 851;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.