- Primary tabs
- Forums:
- Условный оператор — что это такое
- Структура условного оператора. Блочность
- Точка с запятой перед else
- Операторные скобки условного оператора
- Полная и неполная формы оператора IF
- Полная форма условного оператора IF
- Неполная форма условного оператора IF
- Разбор задач
- Пример №1 — неполная форма IF
- Пример №2 — полная форма, по одному действию в каждой ветке
- Пример №3 — логические выражения и оператор ветвления IF
- Пример №4 — вложенные условные операторы
- Пример №5 — вложенные условные операторы
- Пример №6 — жизненный выбор
- Пример №7 Вложение оператора if в неполной форме в оператор if в полной форме
- Самостоятельная работа
- Вопросы
- Задачи
Формат полной формы условного оператора имеет вид:
IF THEN оператор1
ELSE оператор2;
где IF (если), THEN (тогда), ELSE (иначе) – служебные слова; оператор1, оператор2 – простые или составные операторы.
Перед ELSE точка с запятой не ставится.
Условие – это любое выражение логического типа, использующее операции сравнения: =, <>, >=, 0 и y≠0, и k=sin(x), во всех остальных случаях.
IF (X>0) AND (Y<>0) THEN K := LN(X/Y)
Пример 3.3. Вычислить:
IF C THEN
BEGIN
END
ELSE
BEGIN
END;
Не нашли то, что искали? Воспользуйтесь поиском:
Лучшие изречения: При сдаче лабораторной работы, студент делает вид, что все знает; преподаватель делает вид, что верит ему. 9505 — | 7341 — или читать все.
91.146.8.87 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.
Отключите adBlock!
и обновите страницу (F5)
очень нужно
ОТВЕТЫ КО 2 ЛАБЕ
Чем отличается условная операция от условного оператора?
Может ли существовать неполная форма условной операции?
Может = неполная форма условного оператора
Нужно ли писать "else", если при выполнении условия выполняется оператор return?
If (a>b) return a+b; else return b;
Выражения какого типа могут определять условия в условном операторе или условной операции?
Все выражения, которые являются скалярными (сводятся к одному значению), арифметического типа или типа указатель
Какие значения выражения, определяющего условие, считаются истинными, а какие ложными?
Если выражение не равняется 0 (или не есть пустой указатель), то условие считается истинным, в противном случае оно является ложным.
Какие операции относятся к операциям отношения?
Чем отличается операция "= =" от операции "="?
Какие операции относятся к логическим? Каков их приоритет?
Конъюнкция, Дизъюнкция (расположены по приоритету)
Какой операцией можно заменить операцию "&&" ? побитовое &
Какой операцией можно заменить операцию "||" ? Побитовое или
Чему может быть равно значение выражения отношения или логического выражения? 0 или 1
Как правильно сравнить на равенство вещественные числа? If (a==b)
Как правильно проверить вхождение значения в некоторый диапазон? If(a>b&&a Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
-
#
Primary tabs
Forums:
Условный оператор — что это такое
Условный оператор IF служит для программирования ситуаций выбора (моделирования различных вариантов развития ситуации, с которым мы сталкиваемся в жизни, но теперь уже внутри программы).
Структура условного оператора. Блочность
Условный оператор в общем виде состоит из трёх частей:
- Проверкалогического значения
- Ветка истинности (обязательна) — выполнится если логическое значение истинно (true)
- Ветка ложности (необязательна) — выполнится если логическое значение ложно (false)
Сразу отметим, что логическое значение — это фактически ответ на вопрос формата "да/нет" , напомним, что логическим типом значением обладают:
- логические литералы
- логические переменные
- и логические выражения
— точно также как и любой простой тип данных может быть представлен литералами, переменными или выражениями из них.
В программном коде структуру условного оператора можно проиллюстрировать следующей схемой:
— в данном случае выполнится "ложная" ветка, так как $5 > 7$ возвращает результат false.
Точка с запятой перед else
Заметьте (см. примеры выше и ниже), что перед else точка с запятой не ставится.
Операторные скобки условного оператора
В предыдущем примере обратите внимание на операторные скобки, окружающие тела веток оператора ветвления — begin и end необходимы, если в ветке выполняется более одной операции, если же в ветке содержится только одна операция, то операторные скобки не нужны.
Например для ситуации, изображённой на этой блок-схеме:
Эту же ситуацию можно проиллюстрировать кодом:
— здесь в обеих ветках только одна операция, а потому операторные скобки не нужны.
Полная и неполная формы оператора IF
Оператор IF в программе может быть представлен в следующих формах:
- Полная форма — форма оператора if, в которой присутствуют обе ветки — и then и else
- Неполная форма — форма в которой присутствует только then.
Полная форма условного оператора IF
В полной форме оператора IF присутствуют обе ветки — именно полную форму мы рассматривали выше, например:
— здесь в качестве условия мы сравнивали переменную с числом, а потом описывали два сценария, один из которых выполнится в зависимости от значения условия.
В последнем примере кода, у нас в ветке истинности одна операция, а в ветки ложности 2 — эту ситуацию можно изобразить на блок-схеме так (с каким-то предварительным действием до if):
Неполная форма условного оператора IF
В неполной форме условного оператора есть только сценарий истинности, ветка ложности же вообще не описывается, например:
— в ветке ложности здесь вообще ничего нет, то есть если $a$ не больше $5$, то и никаких действий предпринято не будет.
На блок-схеме неполная форма оператора ветвления выглядит так:
— правило использования операторных скобок действует и здесь: если в ветке больше одной операции, то begin и end нужны.
Разбор задач
Пример №1 — неполная форма IF
Сравните два числа, если первое больше второго, то выведите на экран "22" и затем отдельным вызовом writeln() число 555.
— в этой задаче указано, что надо предпринимать какие-то действия только в одном случае ("если первое больше второго"), а значит будет использовать оператор ветвления в неполной форме:
— в ветке истинности здесь было две операции, а потому мы использовали для неё операторные скобки.
Пример №2 — полная форма, по одному действию в каждой ветке
Сравните два числа, если первое больше второго, то выведите на экран "22", а иначе выведете на экран ‘abc’.
— в этой задаче указаны два альтернативных действия, а потому будем использовать оператор ветвления в его полной форме:
— обратите внимание, что перед else точка с запятой не ставится.
Пример №3 — логические выражения и оператор ветвления IF
Коля набрал $k$ баллов, Миша $n$ баллов, а Петя $d$ баллов в ходе соревнований. Если:
- сумма баллов Коли и Миши больше $20$
- и сумма баллов Пети и Миши меньше $55$
—то тогда вывести в консоль сообщение о том, что ничья, в противном случае вывести сообщение, что победил Коля.
В этой в качестве условия требуется выполнение сразу двух подусловий, причем не одного из них — а двух одновременно, потому в логическом выражении для if мы будем использовать логическую операцию AND, тогда можно решить как-то так:
Пример №4 — вложенные условные операторы
Операторы могут вкладываться один в другой так, как как это показано на блок-схеме (на деле внутренний оператор вкладывается в одну из веток внешнего):
Рассмотрим задачу, решение которой будет соответствовать этой блок-схеме:
Получите от пользователя два целых числа, если первое больше второго, то выведите на экран их сумму, а затем их разность, иначе:
- сначала сравните их сумму с числом $25$, если она больше, то выведите на экран первое число, а если меньше, то второе.
- затем выведите на экран второе число в квадрате
Реализуем решение в виде программы:
Пример №5 — вложенные условные операторы
Например задачу из более раннего примера:
Коля набрал $k$ баллов, Миша $n$ баллов, а Петя $d$ баллов в ходе соревнований. Если:
- сумма баллов Коли и Миши больше $20$
- и сумма баллов Пети и Миши меньше $55$
—то тогда вывести в консоль сообщение о том, что ничья, в противном случае вывести сообщение, что победил Коля.
можно было бы решить с помощью вложенных блоков условного оператора IF:
— обратите внимание, что begin и end не нужны для ветки истинности внешнего оператора, так как в него вложен лишь один if — а остальные строки относятся к этому вложенному if.
ВАЖНО: В этом приме здесь налицо дублирование кода, что является плохим стилем. Более того вложенные блоки в коде труднее понимать, поэтому:
Пример №6 — жизненный выбор
То есть ситуацию, в которую попал богатырь на этой иллюстрации:
Можно запрограммировать следующим образом:
— по сути это тоже несколько вложенных один в другой операторов ветвления, причем вложение здесь на всех двух младших уровнях происходит в ветку ложности.
Пример №7 Вложение оператора if в неполной форме в оператор if в полной форме
При решении задач или при просмотре/анализе кода написанного не вами может возникнуть проблема понимания того, к какому именно then относится данный else, обычно такая проблема возникает в случае, если количество else не равно количеству then (если эти количества равны, то понять что во что вложено не трудно).
Рассмотрим пример (фрагмент кода), в котором есть подвох:
— данный код отформатирован неверно, ведь он как бы показывает что else относится к первому then, в то время как Паскаль будет считать (всегда), что else относится к ближайшему then (не "отделённому" от этого else операторными скобками), итак, повторим эту идею ещё раз, назовём её правило "прикрепления" else:
В случае если число else не равно числу then (а это может быть только при вложенных блоках), else всегда "прикрепляется" (относится) к ближайшему "не изолированному" от него операторными скобками then.
Исходя из этого правила можно понять, что написанный выше код на самом деле имеет структуру:
— но это значит, что уже неверна логика решения, из за того что на деле при подобной записи else относится к ближайшему then (мы показали это правильным форматированием и комментариями).
Но как же нам добиться задуманного в начале, т.е. той ситуации, когда в случае если a > b не верно, мы получили бы сообщение ""переменная a не больше b""?
Для этого нам придётся отделить ближайший then от else операторными скобками, то есть сделать так:
Теперь ближайшим не изолированным операторными скобками от else словом then оказывается первое (то, где "if (a > b)"), а не второе (т.е. не то, где "if (a > c)") — что мы и хотели изначально запрограммировать 😉
Самостоятельная работа
Вопросы
- Для чего нужен оператор ветвления (условный оператор)?
- Какие ветви условного оператора вы знаете?
- Чем полная форма условного оператора отличается от неполной?
- Когда нужны операторные скобки в ветвях оператора IF, а когда нет?
Задачи
- Сравните два числа, если первое больше второго, то выведите на экран "12". (здесь нужно использовать неполную форму условного оператора)
- Сравните два числа, если первое больше второго, то выведите на экран "12", а если нет, то выведите на экран "888".
- Даны три целых числа: $A$, $B$, $C$. Проверить истинность высказывания: «Число $A$ находится между числами $B$ и $C$» — выведите "да", если истинно и "нет" если ложно.
ПРИМЕЧАНИЕ: эта следующая задача базируются на том, что мы уже решали (см. задачи в конце урока).
Решите тремя способами:
- С использованием логической операции and.
- С вложенными блоками (без and).
- Без вложенных блоков (без and) — запомнив максимум из двух в специальной переменной.
Указание: Сначала посрайтесь написать все три решения самостоятельно (по 20 минут размышления на каждую задачу хотя бы), если не получается (или после решения) также можно посмотреть это видео-пояснение.
—то тогда вывести в консоль сообщение о том, что ничья, в противном случае вывести сообщение, что победил Коля.