Что такое полная и сокращенная записи условного оператора
#9 Условный оператор IF (оператор ветвления if else) в Паскаль. Полная и неполная формы условного оператора. Вложенность условий
Primary tabs
Forums:
Условный оператор IF служит для программирования ситуаций выбора (моделирования различных вариантов развития ситуации, с которым мы сталкиваемся в жизни, но теперь уже внутри программы).
Структура условного оператора. Блочность
Условный оператор в общем виде состоит из трёх частей:
— точно также как и любой простой тип данных может быть представлен литералами, переменными или выражениями из них.
В программном коде структуру условного оператора можно проиллюстрировать следующей схемой:
Точка с запятой перед else
Заметьте (см. примеры выше и ниже), что перед else точка с запятой не ставится.
Операторные скобки условного оператора
Например для ситуации, изображённой на этой блок-схеме:
Эту же ситуацию можно проиллюстрировать кодом:
— здесь в обеих ветках только одна операция, а потому операторные скобки не нужны.
Полная и неполная формы оператора IF
Оператор IF в программе может быть представлен в следующих формах:
Полная форма условного оператора IF
— здесь в качестве условия мы сравнивали переменную с числом, а потом описывали два сценария, один из которых выполнится в зависимости от значения условия.
Неполная форма условного оператора IF
В неполной форме условного оператора есть только сценарий истинности, ветка ложности же вообще не описывается, например:
На блок-схеме неполная форма оператора ветвления выглядит так:
— правило использования операторных скобок действует и здесь: в данном же случае у нас только одна операция в ветке then, а потому begin и end не нужны.
Разбор задач
Сравните два числа, если первое больше второго, то выведите на экран «22» и затем отдельным вызовом writeln() число 555.
— в этой задаче указано, что надо предпринимать какие-то действия только в одном случае («если первое больше второго»), а значит будет использовать оператор ветвления в неполной форме:
— в ветке истинности здесь было две операции, а потому мы использовали для неё операторные скобки.
Сравните два числа, если первое больше второго, то выведите на экран «22», а иначе выведете на экран ‘abc’.
— в этой задаче указаны два альтернативных действия, а потому будем использовать оператор ветвления в его полной форме:
— обратите внимание, что перед else точка с запятой не ставится.
—то тогда вывести в консоль сообщение о том, что ничья, в противном случае вывести сообщение, что победил Коля.
Операторы могут вкладываться один в другой так, как как это показано на блок-схеме (на деле внутренний оператор вкладывается в одну из веток внешнего):
Рассмотрим задачу, решение которой будет соответствовать этой блок-схеме:
Получите от пользователя два целых числа, если первое больше второго, то выведите на экран их сумму, а затем их разность, иначе:
Реализуем решение в виде программы:
Например задачу из более раннего примера:
—то тогда вывести в консоль сообщение о том, что ничья, в противном случае вывести сообщение, что победил Коля.
можно было бы решить с помощью вложенных блоков условного оператора IF:
ВАЖНО: В этом приме здесь налицо дублирование кода, что является плохим стилем. Более того вложенные блоки в коде труднее понимать, поэтому:
То есть ситуацию, в которую попал богатырь на этой иллюстрации:
Можно запрограммировать следующим образом:
— по сути это тоже несколько вложенных один в другой операторов ветвления, причем вложение здесь на всех двух младших уровнях происходит в ветку ложности.
Пример №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 операторными скобками, то есть сделать так:
Видео-пояснения
Для этого урока есть следующие видео:
Самостоятельная работа
Вопросы
Задачи
ПРИМЕЧАНИЕ: эта следующая задача базируются на том, что мы уже решали (см. задачи в конце урока).
Решите тремя способами:
Указание: Сначала посрайтесь написать все три решения самостоятельно (по 20 минут размышления на каждую задачу хотя бы), если не получается (или после решения) также можно посмотреть это видео-пояснение.
—то тогда вывести в консоль сообщение о том, что ничья, в противном случае вывести сообщение, что победил Коля.
— но сейчас код написан неоптимально и при каждом запуске выполняется 2 сравнения, при этом код можно переписать так, что при вводе одного из двух значений, которые приводят к выводу сообщения, сравнение будет выполняться только один раз.
Перепишите программу оптимальным образом.
Подсказка: если самостоятельно разобраться не получается, смотрите этот видео-разбор.
— в двух условных операторах действия частично совпадают, а значит наблюдается дублирование кода. Перепишите код так, чтобы дублирования не было.
Примечание: это условие давалось как простая разминочная задачка для собеседования в Яндекс.
QBASICBOOK.ru: сайт про QB64
Опубликовано: 2018-02-03 08:00:00
Условный оператор IF. THEN
Вычислительный процесс называется разветвляющимся, когда он, в зависимости от выполнения определенных условий, реализуется по одному из заранее предусмотренных возможных направлений.
Условный оператор позволяет проверить некоторое условие и, в зависимости от результатов проверки, выполнить то или иное действие.
Оператор условного перехода IF. THEN позволяет определять операции, которые будут выполнены только при выполнении определённого условия.
Синтаксис оператора IF:
IF THEN
Также оператор IF. THEN может быть составным (выполнять более одного действия):
IF THEN
.
END IF
Условный оператор выполняется следующим образом:
ЕСЛИ условие истинно ТО выполняем действие и выходим из условного оператора.
Оператор IF может иметь конструкцию ELSE. Такая форма оператора называется полной. Если оператор IF не имеет конструкцию ELSE, то такая форма называется сокращенной.
Оператор условного перехода IF. THEN. ELSE работает следующим образом (полная форма работы оператора):
ЕСЛИ условие истинно ТО выполняем первое действие и выходим из условного оператора ИНАЧЕ выполняем второе действие и выходим из условного оператора.
Теперь перейдём к примеру:
Рисунок 1 – Сокращенная форма условного оператора
Рисунок 2 – Результат выполнения сокращенной формы условного оператора
Сначала вводим с клавиатуры переменную A, потом вводим с клавиатуры переменную B.
Если B будет не равно нулю то выводит результат деления переменную A на переменную B. Если переменная B будет равна нуля то вывод деления не выполнится.
Рассмотрим ещё один пример:
Рисунок 3 – Идущие друг за другом условные операторы
Рисунок 4 – Вывод результата из определенного условного оператора
В этойм примере всё та же конструкция IF. THEN, только объявлена она три раза.
Самостоятельно запустите программу и повводите различные значения переменную A. Подрубуйте, например, значения 1, 2, 3, 5, 10. Объясните результат.
Если вы поняли как работают эти две программы, то можно переходить к следующей статье в которой мы поговорм про полную форму записи условного оператора.
Условный оператор в сокращенной и полной форме. Составной оператор.
Условный оператор.
Условный оператор.
Форма условного оператора (ниже дается перевод на русский язык ключевых слов).
Если логическое выражение истинно, то выполняется оператор1, иначе выполняется оператор2 и затем следующий оператор программы. Перед словом else точку с запятой ставить нельзя!
Сокращенная форма этого оператора:
if логическое выражение then оператор1;
Если логическое выражение истинно, то выполняется оператор1, иначе выполняется следующий оператор программы.
Пусть а имеет значение 6.
Тогда после выполнения оператора if a>5 then d:=8.5 else d:=3;
переменная d примет значение 8.5,
а после выполнения оператора if a>7 then d:=7;
переменная d не изменит своего значения.
Составной оператор.
Структура составного оператора:
Заметим, что перед end точка с запятой “;” может не ставится.
9. Ввод и вывод с использованием формы. Таблица функций преобразования чисел.
Ввод и вывод с использованием формы.
Вводить данные будем в компонент формы классаTEdit. В один компонент вводить можно только одну символьную строку. Если это данное имеет тип String, то после ввода преобразований не требуется. Но если данное является символьным представлением числа, то для перевода во внутреннее представление (для проведения вычислений) воспользуемся стандартной функцией StrToInt(i1) для целых чисел и стандартной функцией StrToFloat(a1) для вещественных, где i1 – символьное представление целого числа, а1 – символьное представление вещественного числа.
i:= StrToInt(i1); a:=StrToFloat(a1);
Внимание: переменные не должны иметь ни ведущих, ни ведомых пробелов.
В результате выполнения этих операторов внутренние переменные программы i и а получат внутренние представления соответствующих чисел.
Вывод значений переменных также производится в компоненты TEditформы.Вывод производится после преобразования чисел в символьную форму.
Преобразование целых чисел осуществляется функцией IntToStr(i), где i – внутреннее представление числа.
Почему в представлении чисел в форме используется запятая? Это потому, что формат вывода в компонент класса TEdit формы ориентирован на конкретную настройку Windows. В стандартной версии Windows в качестве разделителя целой и дробной части числа используется запятая. Можно с помощью Панели Управленияизменить запятую на точку. Но делать этого мы не будем, и поэтому в компоненте класса TEdit формы для вещественных чисел мы используем запятую. Разумеется, в Object Pascal разделителем между целой и дробной частью является точка.
Мы ограничимся выводом вещественных чисел только в форме с фиксированной точкой.
Для преобразования строки символов из формы во внутреннее представление ПК и обратного преобразования нам понадобятся четыре функции.
Таблица 3.3. Функции преобразования чисел.
Обращение к функции | Пояснения |
IntTоStr(x) | x – внутреннее представление числа типа Integer. Результат – строка символов, представляющая это целое число. |
StrToInt(a) | а – строка символов, представляющая целое число. Результат – внутреннее представление в виде числа типа Integer |
FloatToStrF(x,ffFixed,m,n) | x – внутреннее представление числа типа Extended, ffFixed – набрать, что написано, m – количество позиций, занимаемых всем числом, считая знак и десятичную запятую, n – количество позиций, занимаемых дробной частью числа (m ≥ n+2). Речь идет о представлении числа в форме с фиксированной запятой. Результат – символьное представление числа с плавающей запятой. |
StrToFloat(a) | a – строка символов, представляющая число в форме с фиксированной запятой, Результат – внутреннее представление числа типа Extended. |
Понятие файла. Текстовый файл. Файловая переменная. Открытие и закрытие файлов. Чтение из вводного файла и запись в выводной файл. Использование окончания In.
Файлы. Чтение из вводного и запись в выводной файл.
Файл – это набор данных, названных одним именем, который расположен на дисках, поступает в ПК с клавиатуры, по телефонной линии, связанной с ПК, поступает из ПК на дисплей, диски, принтер, в телефонную линию и т.д. Если данные поступают из файла в оперативную память,
то это – вводной файл, а если из оперативной памяти в файл, то это – выводной файл.
Файл имеет имя – набор разрешенных символов, среди которых есть буквы, цифры и некоторые другие символы. У файла может быть расширение, которое располагается после его имени и состоит не более чем из трех символов.
В дальнейшем будем говорить только о текстовых файлах на дисках.
Текстовый файл – это набор строк с признаками конца строк. Для работы с текстовыми файлами используются файловые переменные, которые объявляются в разделе переменных var так:
список имен файловых переменных :TextFile;
Для работы с файлом нужна файловая переменная, которая связывается с файлом процедурой AssignFile (назначить файл). Для краткости вместо слов “файловая переменная ” будем писать “ф.п.”.
Эта процедура выглядит так: AssignFile(имя ф.п., ‘имя файла’);
Вместо имени файла может быть указан путь к нему. Указывать путь необходимо, если файл не находится в текущей папке.
Примеры: AssignFile(f1,’j107′); AssignFile(f2,’C:\ fain\proba.pas’);
Переменная f1 связывается с файлом j107, а переменная f2 – с файлом proba.pas, который находится на диске С в папке fain.
Для чтения из вводного файла его нужно открыть процедурой:
Для записи в выводной файл его нужно открыть процедурой:
Открытие предыдущих файлов: reset(f1); rewrite(f2);
После работы файлы закрываются процедурой: CloseFile( ).
Перевод использованных слов:
reset | вернуть |
rewrite | перезаписать |
CloseFile | Закрыть файл |
Наши файлы закроем так: CloseFile(f1);CloseFile(f2);
Выводной файл следует закрывать обязательно, чтобы иметь в них всю информацию, а не ее часть. Для единообразия будем закрывать также и вводный файл.
Перед работой с вводным файлом его обязательно надо создать в
какой-нибудь операционной среде, например, в среде DELPHI, выводной файл создается выполняемой программой.
3.6.2. Чтение из вводного и запись в выводной файл.
Для чтения из вводного файла используем оператор:
Для записи в выводной файл используется оператор:
Окончание ln при вводе и выводе означает переход на новую строку в файле.
Оператор цикла for в двух формах.
Оператор цикла for.
Другая форма оператора цикла:
(для) (до с уменьшением) (выполнить)
Начальное и конечное значения в операторах цикла этого типа могут быть арифметическими выражениями целого типа.
Внимание! В операторах цикла типа for лучше использовать в качестве параметра цикла локальные переменные, т.е., которые объявлены в процедуре, где эти операторы применяются. Правда, если в качестве параметра цикла использовать глобальную переменную, то на это система выдает предупреждение, но выполнение программы оказывается возможным.
Фрагмент программы вычисления суммы первых 100 натуральных числа в прямом и обратном порядке.
for i:=100 downto 1 do
12. Оператор цикла while.
Пока логическое выражение истинно, то будет выполняться оператор. Когда оно станет ложным, выполнение оператора прекратиться и начнет выполняться следующий оператор.
Пример бесконечного повторения (точнее, до переполнения разрядной сетки числа a):
Пример, когда оператор не выполнится ни разу:
while false do a:=a+1;
Условные операторы в Си
Условный оператор if
Условный оператор if может использоваться в форме полной или неполной развилки.
В случае неполной развилки если Условие истинно, то БлокОпераций1 выполняется, если Условие ложно, то БлокОпераций1 не выполняется.
БлокОпераций может состоять из одной операции. В этом случае наличие фигурных скобок, ограничивающих блок, необязательно.
Основными операциями, проверяемыми внутри условного блока, являются операции отношения.
Пример на C :
Результат выполнения
Оператор if может быть вложенным.
Результат выполнения
Логические операции в условных операторах
Условный оператор может проверять
Пример на Си : Найти максимум из 3 чисел
Пример на С++ : Найти максимум из 3 чисел
Тернарные операции
Тернарная условная операция имеет 3 аргумента и возвращает свой второй или третий операнд в зависимости от значения логического выражения, заданного первым операндом. Синтаксис тернарной операции в языке Си
Тернарные операции, как и операции условия, могут быть вложенными. Для разделения вложенных операций используются круглые скобки.
Приведенный выше пример с использованием тернарных операций можно представить в виде
Оператор ветвления switch (оператор множественного выбора)
Общая форма записи
Оператор ветвления switch выполняется следующим образом:
Константы в опциях case должны быть целого типа (могут быть символами).
Комментариев к записи: 30
#include
#include
#include
Что такое полная и сокращенная записи условного оператора
В Паскале разветвляющиеся алгоритмы позволяет реализовать условный оператор. Условный оператор позволяет проверить некоторое логическое выражение и в зависимости от результатов проверки выполнить то или иное действие.
Структура условного оператора в полной форме имеет следующий вид:
IF (логическое выражение) THEN (оператор1) ELSE (оператор2);
Блок-схема условного оператора в полной форме:
В условном операторе после then, а также после else по синтаксису может стоять только один оператор. Если же при выполнении (или невыполнении)логического выражения надо выполнить не одно действие, а несколько, то их надо объединить в единый, составной оператор, т.е. заключить эту последовательность действий в операторные скобки.
Составной оператор имеет вид:
Перед служебным словом Else символ «;» не ставится. Структура условного оператора в неполной форме имеет следующий вид: IF (условие) THEN (оператор); Пример: If A then If A then begin Пример 1: | Программный код на языке Pascal: var n: integer; begin write (‘ Введите целое число : ‘); readln (n); //ввод переменной if n mod 2 = 0 then //определяется четность write (‘Оно четное’) //если выполняется условие четности выводится сообщение «Оно четное» else write (‘Оно нечетное’); //если не выполняется условие четности выводится сообщение «Оно нечетное» readln end |
Пример 2:
Даны два числа, найти наибольшее.
Упражнения «Программирование разветвляющихся алгоритмов»
1. Записать условие, которое является истинным, когда
· каждое из чисел X и Y нечетное;
· только одно из чисел X и Y меньше 20;
· хотя бы одно из чисел X и Y равно нулю;
2. Записать условие, которое является истинным, когда
· каждое из чисел А и В больше 100;
· только одно из чисел А и В четное;
· хотя бы одно из чисел А и В положительно;
· каждое из чисел А, В, С кратно трем;
· только одно из чисел А, В и С меньше 50;
· хотя бы одно из чисел А, В, С отрицательно.
3. Записать условие, которое является истинным, когда
1. целое А кратно двум или трем;
2. целое А не кратно трем и оканчивается нулем.
4. Записать условие, которое является истинным, когда
1. целое N кратно пяти или семи;
2. целое N кратно четырем и не оканчивается нулем.
5. Определите значение переменной С после выполнения фрагмента программы:
if А>В then С:=А+В else С:=А-В;
а) 100 b) 5 с) 105 d)95
6. Укажите правильную запись на языке Паскаль выражения, записанного на русском языке Х>=0 и Х>=3,25 и У