Условные операторы Паскаля: синтаксис, семантика в терминах б/с, соотношение по выразимости.

Ответы по Бухараеву:

А) условный оператор IF

симантика условных операторов:

(По Бухараеву) В зависимости от условия (предиката), программа выбирает путь (иными слова трассу) выполнений операций.

Если S1 и S2 – допустимые блок-схемы, то S1→ S2 также допустима.

Структура полного условного оператора. Блок-схема – определение (процедуры вычисления) оператора, состоящая из

- операторных блоков в квадратах,

 

 

При этом в операторный блок могут входить несколько стрелок, а выходит единственная. В условный блок входит несколько стрелок, а выходит – две, помеченных знаками + и -, соответствующих значениям true и false. Из значка Н выходит единственная стрелка, не входит ни одна. В значок К входит единственная стрелка, не выходит ни одна.

Содержательная семантика. После выполнения операторного блока выполняется блок, на который указывает единственная выходящая из него стрелка. После выполнения условного блока выполняется блок, на который указывает стрелка, иначе – в зависимости от условий. Первым выполняется блок, на который указывает стрелка Н , последним блок К .

Синтаксис условных операторов

if условие1 then
begin
if условие2 then оператор1
end
else оператор21

В) Условный оператор while и Repeat.

Синтаксис оператора while

while условие do
оператор

Cимантика оператора while

Работа этого условного циклического оператора будет работать до того времени, пока значение условия (предиката) while не будет “false”. В зависимости от условного оператора if, while работает до тех пор пока не добьется своего нужного результата.

Работа оператора Repeat эквивалентна while, с тем отличием, что repeat сперва вычисляет, а потом проверяет условие, а while наоборот.

 

 

Вопрос 7

Цикл -

Оператор цикла с предусловием

while B do S

B – предикат (условие выполнения)

S – оператор

 

 

Оператор цикла с постусловием

repeat S1; …; Sn until B

B – предикат (условие окончания)

 

Операторы цикла с параметром

Синтаксис:

For v:=e1 to e2 do s

Где v – переменная конечного порядкового типа, e1, e2 – выражения того же типа, а s – оператор.

Семантика:

Очевидно, что цикл с параметром – частный случай цикла с предусловием. Оператор s не должен изменять значения переменных или счетчика v.

 

Ограниченность применения цикла со счетчиком

Нужно до цикла знать или уметь вычислить количество проходов цикла, что возможно не всегда. Например, вычисление с заданной точностью. Любая хорошая функция разлагается в ряд, то есть значения функции в точке есть некоторая бесконечная сумма. Выяснить, какое количество слагаемых необходимо просуммировать, чтобы обеспечить заданную точность. Трудная задача, поэтому в таких вычислениях суммируют только значимые члены. Складывают члены, |a|>E

Условие окончания цикла выглядит: |ai|<eps

Вопрос 8

Классификация типов процедурного Паскаля.

Простые (скалярные) типы

 

Порядковые (ординальные) типы:

Натуральные числа (cardinal) стандартный

Целый тип (integer) стандартный

Символьный тип (char) стандартный

Булевский тип (boolean) стандартный

Вещественные числа (real) стандартный

Ссылочный (указательный) стандартный

Перечислимый не стандартный

Ограниченный не стандартный

 

Производные (структурированные) типы

Массив (array)

Строковый (string)

Множества (set)

Записи (record)

Файл (file)

Текст (text)

 

Тип называется стандартным, если его множество значений фиксировано; и пользовательским в противном случае (множество значений определяется пользователем).

А также string и text.


Скалярный тип — стандартные типы.

 

Стандартные типы

 

Целый тип

Синтаксис значений: обычно [знак ±] последовательность цифр

Семантика: множество значений – все целые числа из некоторого интервала [Low(integer), High(integer)]

Стандартные функции: функция с двумя целыми переменными, которая имеет целые значения:

Двуместные: integer x integer → integer

+, –, *

div (целочисленное деление)

mod (остаток от деления) в арифметических выражениях имеет тот же приоритет, что и умножение

Одноместные: –x обратное

sqr(x) x2

abs(x) |x|

Функции real → integer:

trunk(x) целая часть числа

round(x) округление до ближайшего целого

Функция integer → boolean:

odd(x) нечетность (true – нечётная, false – чётная)

На значениях целого типа определен естественный порядок:

≤ integer x integer → boolean

А также связанные с ним функции:

succ(x) x+1

pred(x) x–1

ord(x) номер значения в заданном порядке

Типы, на которые определено сравнение: предшествующий, последующий, называются порядковыми или ординальными.

 

Вещественный тип

Синтаксис значений:

запись с фиксированной точкой вида: ± целое.целое

запись с плавающей точкой вида: вещественное с плавающей точкой Е целое a•10b

Множество значений:

Рациональные числа из некоторого интервала [Low(real), High(real)]. Все операции над вещественными числами (в отличии от целых) выполняются приближенно с некоторой заданной точностью.

Операции:

Real x Real → Real

+, –, *, / - всегда дают значение real, если хотя бы один из элементов real.

Real → Real

sin(x), cos(x), arctan(x), ln(x), sqr(x), sqrt(x), abs(x)

На вещественных числах также определено естественное сравнение

≤ Real x Real → Bolean

но не определены не имеющие смысла на вещественных числах операции последователь и предшественник, то есть тип real не является порядковым (ординальным).


Скалярные типы — перечисляемые и ограниченные типы.