Семантика 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 предлагает три операции для манипулирования строками:
Эти операции над строками образуют базис для работы со строками как математическими объектами.
Читайте также: Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|