Реферат: Реализация алгоритма на ЭВМ
Например, в Pascal'е есть понятие имени. Переменная, функция, процедура, равно как и программа на Pascal'е имеют имя. Синтаксис этого понятия “имя” - последовательность букв и цифр, начинающаяся с буквы.
Другой пример - синтаксис оператора присваивания. Примером оператора присваивания может служить конструкция s:=s+1/i из строки 7 на рис. 9.1. Синтаксис оператора присваивания:
<переменная>:=<выражение>.
Здесь синтаксическая конструкция <переменная> должна всегда стоять слева от символа := алфавита языка Pascal, а синтаксическая конструкция <выражение> - справа от него. Если мы теперь определим, что в каких-то случаях <переменная> есть <имя>, то тем самым мы определим синтаксис понятия "переменная", так как синтаксис понятия "имя" мы уже определили ранее. На семинарских занятиях Вы подробно ознакомитесь как с разными способами определения синтаксиса конструкций языка Pascal, так и с синтаксисом самих этих конструкций.
Несколько замечаний необходимо сделать о наборе символов, использование которых допускается в программе на языке Pascal. Наряду с символами латинского алфавита и цифрами в этот набор входит небольшое количество вспомогательных символов. Необходимо знать ограничения этого набора символов, определяемого стандартом ASCII - Американский Стандартный Код для Обмена Информацией.
В ASCII набор, например, не входят математические символы S, £, ", $ и т.д. Часто этот набор расширяют национальными алфавитами. Например, программисты в России должны иметь возможность писать комментарий по-русски.
Под семантикой той или иной языковой конструкции понимается ее смысл. Для примера рассмотрим фразу: "На столе лежит карандаш.". Мы знаем, какие объекты реального мира обозначаются словом "стол", какие объекты обозначаются словом "карандаш" и что обозначает слово "лежать". Заметим, что, например, слово "стол" обозначает сразу множество объектов реального мира, а не один какой-то конкретный объект.
Если мы увидим фразу: "Стол съел карандаш", то без дополнительных комментариев она для нас бессмысленна, так как объекты реального мира, обозначаемые словом стол, не могут ничего и никого съесть. Таким образом, конструкции языка могут быть корректны синтаксически, а семантически - нет.
Итак, семантика - это отображение, соответствие между конструкциями языка и объектами из некоторого множества объектов, называемого миром или Universum. Так, в примере со столом, когда фраза, пусть даже синтаксически правильная, описывала ситуацию, не согласующуюся со здравым смыслом (столы не могут никого/ничего есть), мы рассматривали эту фразу как бессмысленную, т.е. семантически не корректную. Что же это означает применительно к языкам программирования?
Вспомним, что всякому алгоритму соответствует множество вычислительных процессов. Всякий вычислительный процесс - это цепочка состояний множества всех переменных этого алгоритма, а действие или шаг алгоритма определяет переход из состояния в состояние.
Поскольку программа - суть алгоритм, оформленный должным образом, то все вышесказанное справедливо и по отношению к программе. Вернемся к нашему примеру 9.1 и рассмотрим выполнение этой программы для n=5.
После выполнения строки 4 переменная n примет значение 5, а значения переменных s и i будут неопределенными. Обозначим это состояние так - (5, ", "). После строки 5 мы получим состояние (5, ", 0), затем (5, 1, 0). Вся последовательность состояний приведена на рис 9.3.
N строки | n | s | i |
" | " | " | |
4 | |||
5 | " | " | |
5 | |||
5 | 1 | " | |
6 | |||
5 | 1 | 1 | |
7 | |||
5 | 1 | 2 | |
8 | |||
5 | 1+1/2 | 2 | |
7 | |||
5 | 1+1/2 | 3 | |
8 | |||
5 | 1+1/2+1/3 | 3 | |
7 | |||
5 | 1+1/2+1/3 | 4 | |
8 | |||
5 | 1+1/2+1/3+1/4 | 4 | |
7 | |||
5 | 1+1/2+1/3+1/4 | 5 | |
8 | |||
5 | 1+1/2+1/3+1/4+1/5 | 5 | |
9 | |||
Стоп |
Рис. 9.3.
Поскольку всякой программе соответствует множество вычислительных процессов, то всякий оператор определяет переход из множества состояний в множество состояний. Особенности, специфика этого перехода и составляет смысл, семантику этого оператора.