Что значит else в паскале

Что значит else в паскале

Конструкция if. then. else определяет условия, при которых будет выполнен оператор.

Синтаксис

if выражение then оператор

if выражение then оператор else оператор

Замечания

Если булево выражение после слова if истинно ( True ), то оператор , следующий за словом then, будет выполнен.

В противном случае, если присутствует часть else, то будет выполнен оператор, следующий за словом else.

Пример

OutOfBounds := False;
if (I Max) then
begin
I := 0;
OutOfBounds := True;
end;

if ParamCount <> 2 then
begin
WriteLn(‘Неверные параметры командной строки’);
Halt(1);
end
else
begin
ReadFile(ParamStr(1));
WriteFile(ParamStr(2));
end;

if выражение then операторы end if;
if выражение then операторы else операторы end if;
if выражение then операторы elsif выражение then операторы end if;

Частей elsif может быть несколько, часть else необязательна и может быть использована после elsif. В отличие от Borland Pascal, операторов может быть несколько, и для указания нескольких операторов не требуется использовать лишние begin-end .

Пример на языке Ада

Out_Of_Bounds := False;
if I not in Min .. Max then
I := 0;
Out_Of_Bounds := True;
end if;

if Argument_Count /= 2 then
Put_Line ("Неверные параметры командной строки");
Set_Exit_Status (Failure);
else
Read_File (Argument (1));
Write_File (Argument (2));
end if;

Следует быть внимательными при использовании вложенных операторов if. Предпочтительнее пользоваться схемой else-if (т.е. вкладывать во внешнюю ветку else), а не then-if (т.е не вкладывать во внешнюю ветку if). Так как в последнем случае придется следить за тем, к какой ветке относится соответствующее else. Пренебрежение этим правилом приводит к нагромождению закрывающих else.

Сравните две программы ниже. Они делают одно и то же. Однако предпочтительной является первая.

else-if

then-if

При использовании второго варианта надо помнить следующее общее правило: каждый else относится к ближайшему предшествующему if, еще не имеющему парного else.

При вложении в ветвь else (первый вариант) конструкция получается логически более понятной.

Primary tabs

Forums:

Условный оператор — что это такое

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

Структура условного оператора. Блочность

Условный оператор в общем виде состоит из трёх частей:

  1. Проверкалогического значения
  2. Ветка истинности (обязательна) — выполнится если логическое значение истинно (true)
  3. Ветка ложности (необязательна) — выполнится если логическое значение ложно (false)

Сразу отметим, что логическое значение — это фактически ответ на вопрос формата "да/нет" , напомним, что логическим типом значением обладают:

  1. логические литералы
  2. логические переменные
  3. и логические выражения

— точно также как и любой простой тип данных может быть представлен литералами, переменными или выражениями из них.

В программном коде структуру условного оператора можно проиллюстрировать следующей схемой:

— в данном случае выполнится "ложная" ветка, так как $5 > 7$ возвращает результат false.

Точка с запятой перед else

Заметьте (см. примеры выше и ниже), что перед else точка с запятой не ставится.

Операторные скобки условного оператора

В предыдущем примере обратите внимание на операторные скобки, окружающие тела веток оператора ветвления — begin и end необходимы, если в ветке выполняется более одной операции, если же в ветке содержится только одна операция, то операторные скобки не нужны.

Например для ситуации, изображённой на этой блок-схеме:

Эту же ситуацию можно проиллюстрировать кодом:

Читайте также:  Программа для расчета акустики

— здесь в обеих ветках только одна операция, а потому операторные скобки не нужны.

Полная и неполная формы оператора IF

Оператор IF в программе может быть представлен в следующих формах:

  1. Полная форма — форма оператора if, в которой присутствуют обе ветки — и then и else
  2. Неполная форма — форма в которой присутствует только then.

Полная форма условного оператора IF

В полной форме оператора IF присутствуют обе ветки — именно полную форму мы рассматривали выше, например:

— здесь в качестве условия мы сравнивали переменную с числом, а потом описывали два сценария, один из которых выполнится в зависимости от значения условия.

В последнем примере кода, у нас в ветке истинности одна операция, а в ветки ложности 2 — эту ситуацию можно изобразить на блок-схеме так (с каким-то предварительным действием до if):

Неполная форма условного оператора IF

В неполной форме условного оператора есть только сценарий истинности, ветка ложности же вообще не описывается, например:

— в ветке ложности здесь вообще ничего нет, то есть если $a$ не больше $5$, то и никаких действий предпринято не будет.

На блок-схеме неполная форма оператора ветвления выглядит так:

— правило использования операторных скобок действует и здесь: если в ветке больше одной операции, то begin и end нужны.

Разбор задач

Пример №1 — неполная форма IF

Сравните два числа, если первое больше второго, то выведите на экран "22" и затем отдельным вызовом writeln() число 555.

— в этой задаче указано, что надо предпринимать какие-то действия только в одном случае ("если первое больше второго"), а значит будет использовать оператор ветвления в неполной форме:

— в ветке истинности здесь было две операции, а потому мы использовали для неё операторные скобки.

Пример №2 — полная форма, по одному действию в каждой ветке

Сравните два числа, если первое больше второго, то выведите на экран "22", а иначе выведете на экран ‘abc’.

— в этой задаче указаны два альтернативных действия, а потому будем использовать оператор ветвления в его полной форме:

— обратите внимание, что перед else точка с запятой не ставится.

Пример №3 — логические выражения и оператор ветвления IF

Коля набрал $k$ баллов, Миша $n$ баллов, а Петя $d$ баллов в ходе соревнований. Если:

  1. сумма баллов Коли и Миши больше $20$
  2. и сумма баллов Пети и Миши меньше $55$

—то тогда вывести в консоль сообщение о том, что ничья, в противном случае вывести сообщение, что победил Коля.

Читайте также:  Как поставить печать на документ в фотошопе

В этой в качестве условия требуется выполнение сразу двух подусловий, причем не одного из них — а двух одновременно, потому в логическом выражении для if мы будем использовать логическую операцию AND, тогда можно решить как-то так:

Пример №4 — вложенные условные операторы

Операторы могут вкладываться один в другой так, как как это показано на блок-схеме (на деле внутренний оператор вкладывается в одну из веток внешнего):

Рассмотрим задачу, решение которой будет соответствовать этой блок-схеме:

Получите от пользователя два целых числа, если первое больше второго, то выведите на экран их сумму, а затем их разность, иначе:

  1. сначала сравните их сумму с числом $25$, если она больше, то выведите на экран первое число, а если меньше, то второе.
  2. затем выведите на экран второе число в квадрате

Реализуем решение в виде программы:

Пример №5 — вложенные условные операторы

Например задачу из более раннего примера:

Коля набрал $k$ баллов, Миша $n$ баллов, а Петя $d$ баллов в ходе соревнований. Если:

  1. сумма баллов Коли и Миши больше $20$
  2. и сумма баллов Пети и Миши меньше $55$

—то тогда вывести в консоль сообщение о том, что ничья, в противном случае вывести сообщение, что победил Коля.

можно было бы решить с помощью вложенных блоков условного оператора IF:

— обратите внимание, что begin и end не нужны для ветки истинности внешнего оператора, так как в него вложен лишь один if — а остальные строки относятся к этому вложенному if.

ВАЖНО: В этом приме здесь налицо дублирование кода, что является плохим стилем. Более того вложенные блоки в коде труднее понимать, поэтому:

Пример №6 — жизненный выбор

То есть ситуацию, в которую попал богатырь на этой иллюстрации:

Можно запрограммировать следующим образом:

— по сути это тоже несколько вложенных один в другой операторов ветвления, причем вложение здесь на всех двух младших уровнях происходит в ветку ложности.

Пример №7 Вложение оператора if в неполной форме в оператор if в полной форме

При решении задач или при просмотре/анализе кода написанного не вами может возникнуть проблема понимания того, к какому именно then относится данный else, обычно такая проблема возникает в случае, если количество else не равно количеству then (если эти количества равны, то понять что во что вложено не трудно).

Рассмотрим пример (фрагмент кода), в котором есть подвох:

— данный код отформатирован неверно, ведь он как бы показывает что else относится к первому then, в то время как Паскаль будет считать (всегда), что else относится к ближайшему then (не "отделённому" от этого else операторными скобками), итак, повторим эту идею ещё раз, назовём её правило "прикрепления" else:

В случае если число else не равно числу then (а это может быть только при вложенных блоках), else всегда "прикрепляется" (относится) к ближайшему "не изолированному" от него операторными скобками then.

Исходя из этого правила можно понять, что написанный выше код на самом деле имеет структуру:

Читайте также:  Синий экран смерти виндовс 7 как убрать

— но это значит, что уже неверна логика решения, из за того что на деле при подобной записи else относится к ближайшему then (мы показали это правильным форматированием и комментариями).

Но как же нам добиться задуманного в начале, т.е. той ситуации, когда в случае если a > b не верно, мы получили бы сообщение ""переменная a не больше b""?
Для этого нам придётся отделить ближайший then от else операторными скобками, то есть сделать так:

Теперь ближайшим не изолированным операторными скобками от else словом then оказывается первое (то, где "if (a > b)"), а не второе (т.е. не то, где "if (a > c)") — что мы и хотели изначально запрограммировать 😉

Видео-пояснения

Для этого урока есть следующие видео:

Самостоятельная работа

Вопросы

  1. Для чего нужен оператор ветвления (условный оператор)?
  2. Какие ветви условного оператора вы знаете?
  3. Чем полная форма условного оператора отличается от неполной?
  4. Когда нужны операторные скобки в ветвях оператора IF, а когда нет?

Задачи

  1. Сравните два числа, если первое больше второго, то выведите на экран "12". (здесь нужно использовать неполную форму условного оператора)
  2. Сравните два числа, если первое больше второго, то выведите на экран "12", а если нет, то выведите на экран "888".
  3. Даны три целых числа: $A$, $B$, $C$. Проверить истинность высказывания: «Число $A$ находится между числами $B$ и $C$» — выведите "да", если истинно и "нет" если ложно.

ПРИМЕЧАНИЕ: эта следующая задача базируются на том, что мы уже решали (см. задачи в конце урока).

  • Даны три целых числа: $A$, $B$, $C$. Проверить истинность высказывания: « Число $A$ и число $B$ больше 17, а $C$ > 7». — выведите "да", если истинно и "нет" если ложно.
  • Пользователь вводит два числа, найдите из них максимальное. (тут всё просто)
  • Пользователь вводит три числа, найдите из них максимальное.
  • Решите тремя способами:

    • С использованием логической операции and.
    • С вложенными блоками (без and).
    • Без вложенных блоков (без and) — запомнив максимум из двух в специальной переменной.

    Указание: Сначала посрайтесь написать все три решения самостоятельно (по 20 минут размышления на каждую задачу хотя бы), если не получается (или после решения) также можно посмотреть это видео-пояснение.

  • Пользователь вводит четыре числа, найдите из них максимальное.
  • Коля набрал $k$ баллов, Миша $n$ баллов, а Петя $d$ баллов в ходе соревнований. Если:
    1. сумма баллов Коли и Миши больше $20$
    2. или произведение баллов Пети и Миши меньше $55$
    3. —то тогда вывести в консоль сообщение о том, что ничья, в противном случае вывести сообщение, что победил Коля.

      Ссылка на основную публикацию
      Что делать если браузерные игры лагают
      Что делать если зависает браузерная игра, не грузится, лагает? Если игра не загружается, зависает, загрузка останавливается на определенном шаге, вы...
      Чем обработать сколы на машине от ржавчины
      Получайте на почту один раз в сутки одну самую читаемую статью. Присоединяйтесь к нам в Facebook и ВКонтакте. 1. Если...
      Чем опасно низкое напряжение в сети
      Эффект «проседания» входного напряжения ниже установленной нормы довольно распространенная проблема. Она более характерна для электроснабжения в сельской местности, но нередко...
      Что делать если взорвалось колесо
      Вы когда-нибудь видели взрыв шины? Это поистине экстремальное зрелище, особенно если речь идёт о грузовом транспорте. Взрываясь на ходу, куски...
      Adblock detector