Другие языки программирования и технологии

[PASCAL] IF - ELSE IF - ELSE. Программирование.

Не могу разобраться, как это в Паскале.. .
Например есть ветвление, содержащее IF - ELSE IF - ELSE
Проблема с выделением блока кода (BEGIN - END).

IF < условие > then begin
< куча операторов > end
ELSE IF < Вот как тут правильно ставить операторные скобки (BEGIN, END), BEGIN идет перед IF или после? Если можно, то приведите небольшой пример >.

Например на Python-е так:

if ( условие1 ):
       (операторы)
elif ( условие2 ):
     (операторы)
else:
     (операторы)

Вот можете наподобие этого примера объяснить, как это выглядит в Паскале? Заранее Спасибо :)
После служебного слова if должно идти только логическое выражение.
Ни чего другого после if не может быть!

Смотри на примерах:

if A = B then WriteLn('равно') else WriteLn('неравно');

После then и else по одному оператору. Значит операторные скобки не обязательны…
Хотя можно было сделать вот так:

if A = B then begin WriteLn('равно'); end
else begin WriteLn('неравно'); end;

Оба варианта 100% рабочие.

Но если нужно несколько операторов после then или else, то операторные скобки обязательны:

if A > B then begin A := A + B; B := A - B; A := A - B; end;

(В данном примере числовые значения A и B меняются без использования третьей переменной. )

Как видно из примера, внутри операторных скобок находятся 3 оператора!

Ещё операторные скобки иногда нужны для однозначности трактовки вложенных условий:

if A < B then if A < C then Write(A) else Write(C)
else if B < C then Write(B) else Write(C);

(Данный пример выводит наименьшее из A, B, C.)

Как видно из данного примера, все условия читаются однозначно.
Но если написать вот так:

if A < B then if B < C then Write('A - минимально')
else Write('A - не минимально');

То если A окажется больше или равно B, то ни какой надписи на экране не увидим.
Нужно исправить данное положение дел указав операторные скобки:

if A < B then begin if B < C then Write('A - минимально') end
else Write('A - не минимально');

(Правда теперь мы не увидим ни какого результата, если B ≥ C… Но это уже другой вопрос ;-)
Валерий Парфёнов
Валерий Парфёнов
84 122
Лучший ответ
Это означает, что последний IF вложен в ветку ELSE, или, что это оператор IF ELSE. Да.
if else вообще не существует. Есть
if условие then оператор;
и
if условие then оператор else оператор;
Оператором может быть простой оператор или составной оператор (блок begin ...else) и даже пустой оператор, например if a>2 THEN ELSE a:=0;
А if условие then begin операторы end else begin if условие then операторы
означает, что последний IF вложен в ветку ELSE. Скобки никакие не нужны, роль скобок в операторах выполняют в Pascal слова begin и end, они и называются операторными скобками. А в связи с наличием в условном операторе слова then и в условии скобки не нужны, они применяются в Pascal в основном в арифметических выражениях (ну еще в функциях и т. п.).
Иззат Ахмедов
Иззат Ахмедов
81 483
после then
else if условие then begin
Юрий Крутик
Юрий Крутик
34 078