- •Вопрос 4. Деревья синтаксического анализа.
- •Генерация дерева синтаксического анализа
- •Вопрос 5. Приоритет операторов. Ассоциативность операторов.
- •Вопрос 6. Расширенная форма Бэкуса-Наура и синтаксические графы.
- •Вопрос 10. Концепция связывания, способы связи переменных с памятью
- •Вопрос 11. Арифметические выражения, порядок вычисления операторов.
- •Вопрос 12. Перегруженные операторы
- •Вопрос 13. Преобразование типов.
- •Вопрос 15. Операторы присваивания.
- •Вопрос 16.Структура операторов управления. Составной оператор и оператор ветвления (2 варианта).
- •Вопрос 14. Отношения и булевские выражения. Сокращенные вычисления.
- •Вложенные операторы ветвления и замыкание операторов ветвления.
- •I. Вложенные операторы ветвления.
- •Многовариантные операторы ветвления.
- •Вопрос 19. Операторы цикла. Циклы со счетчиком. Оператор do в Fortran. Оператор цикла в Pascal, algol 60.
- •Вопрос 21. Логически управляемые циклы.
- •Вопрос 22. Циклы с механизмом управления, размещаемым пользователем.
Вопрос 14. Отношения и булевские выражения. Сокращенные вычисления.
Оператор отношения – оператор который сравнивает свои операнды. Выражение отношения состоит из 2х операндов и оператора отношения. Значение выражения отношения принадлежит типу bool.
Операция |
Pascal |
ADA |
C |
Fortran 77 |
Равно |
= |
= |
= |
.EQ. |
Не равно |
<> |
/= |
!= |
.NE. |
Больше |
> |
> |
> |
.GT. |
Меньше |
< |
< |
< |
.LT. |
Больше равно |
>= |
>= |
>= |
.GE. |
Меньше равно |
<= |
<= |
<= |
.LE. |
Пример: a>b; c!=d;
Логические операторы
&& |
И (and) |
|| |
ИЛИ(or) |
! |
НЕ(not) |
Пример: a>b and a<c or k=0
Операторы отношения имеют наименьший приоритет выполнения.
Сокращенное вычисление.
Сокращенное вычисление – это ситуации, когда мы получаем значение выражения не выполняя всех предписанных операций.
Пример(13*A)/(B+C/D)=0 при А=0, нет смысла производить дальнейшее вычисление т.к. результат деления на ноль равен нулю.
(A>=0)and(C<S) при A=-10, значение будет false.
Вопрос 15. Операторы присваивания.
Операторы присваивания одна из основных конструкций языков программирования, которая обеспечивает связь значений и переменных.
<целевая переменная><знак оператора присваивания><выражение>
Оператор |
Назначение |
= |
Сохранение значения второго операнда в объект, указанный первым операндом (простое присваивание). |
*= |
Умножение значения первого операнда на значение второго операнда; сохранение результата в объект, указанный первым операндом. |
/= |
Деление значения первого операнда на значение второго операнда; сохранение результата в объект, указанный первым операндом. |
%= |
деление по модулю первого операнда на значение второго операнда; сохранение результата в объект, указанный первым операндом. |
+= |
Сложение значения первого операнда со значением второго операнда; сохранение результата в объект, указанный первым операндом. |
–= |
Вычитание значения второго операнда из значения первого операнда; сохранение результата в объект, указанный первым операндом. |
Операторы присваивания бывают:
Простой оператор присваивания записывается так:
переменная = выражение;
Составной оператор – позволяет задавать в сокращенном виде те или иные формы операторов присваивания.
s += 5; тоже самое, что s = s + 5;
Унарный оператор присваивания
s=++c
Вопрос 16.Структура операторов управления. Составной оператор и оператор ветвления (2 варианта).
Структура операторов управления.
Управляющая структура |
Оператор языка Object Pascal |
Пример |
Последовательность
|
A; B; Сначала выполняется A, затемB. A, B – операторы обработки информации |
readln(x); y:= x; |
Если_То_Иначе |
if P then A else B; Если значение логического выражения P истинно, то выполняется A, иначе – B. |
if x>0 then y:= 1 else y:=0; |
Если_То |
if P then A; |
if x>0 then y:= 1; |
Выбор |
case K of 1: A; 2: B; 3: C else D; end; K– переменная («переключатель»), значение которой определяет выполнение операторов: если K = 1, то A; если K = 2, то B; если K = 3, то C иначе – D; |
var ch: char; begin . . . case ch of '0'..'9': writeln('Это цифра'); 'a'..'z': writeln('Это буква') else writeln('Это другой символ'); end; . . . end. |
Цикл_Пока
(цикл с предусловием) |
while P do A; Оператор A выполняется,пока значение логического выражения Pистинно. |
while N>0 do N:=N-1; |
Цикл_со_счетчиком
(цикл с предусловием) |
for i:= <начальное значение> to <конечное значение> do A; Переменная i– это показатель цикла, значение которого на каждом шаге цикла автоматически увеличивается (или уменьшается) на 1. |
for i:= 1 to N do writeln(i); for i:= N downto 1 do writeln(i); |
Цикл_До
(цикл с постусловием) |
repeat A; until P; Оператор Aвыполняется до тех пор, пока логическое выражение Pне станет истинным. |
repeat N:=N-1; until N <= 0; |
Составной оператор – это последовательность операторов, перед которой стоит слово BEGIN, а после – END. Слова BEGIN и END часто именую операторными скобками.
Пример составного оператора:
BEGIN a := 10; b :+ a*5; Write( a, b ) END;
Составной оператор может содержать любое количество простых операторов. Он допускает вложенность, т.е. может содержать внутри себя другие составные операторы.
ВАЖНО: Составной оператор применяется в тех случаях, когда синтаксис языка Паскаль допускает использование только одного оператора, в то время как алгоритм требует задания некоторой последовательности действий. В Паскале все управляющие структуры (операторы) не различают простой и составной оператор: там где стоит простой оператор, можно поставить и составной.
Опера́тор ветвле́ния (усло́вная инстру́кция, усло́вный опера́тор) — оператор, конструкция языка программирования, обеспечивающая выполнение определённой команды (набора команд) только при условии истинности некоторого логического выражения, либо выполнение одной из нескольких команд (наборов команд) в зависимости от значения некоторого выражения.
Оператор ветвления применяется в случаях, когда выполнение или невыполнение некоторого набора команд должно зависеть от выполнения или невыполнения некоторого условия. Ветвление - одна из трёх (наряду с последовательным исполнением команд и циклом) базовых конструкций структурного программирования.
Пример
Условный оператор с одной ветвью
if условие then команды end
При выполнении такого оператора вычисляется условие, и если оно истинно, то выполняются команды до ключевого слова end, в противном случае выполнение программы продолжается со следующей за условным оператором команды. В языках низкого уровня (ассемблерах) это — единственная доступная форма условного оператора. В некоторых языках для условного оператора с одной ветвью используется специальное ключевое слово (обычно это when).
Условный оператор с двумя ветвями
if условие then команды1 else команды2 end
Здесь при истинности условия выполняются команды1 при ложности — команды2. При необходимости проверить последовательно несколько условий возможно каскадирование условных операторов:
if условие1
then команды1
else if условие2 then команды2
else if условие3 then команды3
...
else if условиеN-1 then командыN-1
else командыN end;
В этом случае условия будут проверяться последовательно, и как только встретится истинное, будет выполнен соответствующий набор команд и исполнение перейдёт к команде, следующей за условным оператором. Если ни одно из условий не окажется истинным, выполнятся командыN из ветви else.
Algol
If условие
then
begin
операторы;
end
else
begin
операторы;
end;
Ада
if условие1 then команды1
else if условие2 then команды2
...
else командыN
end if;
