ВАЖНО: В этом примере есть повторения кода, что является признаком плохого стиля программирования. Кроме того, вложенные блоки труднее понять, поэтому:
Уроки 27 — 28 § 3.4. Программирование разветвляющихся алгоритмов
При написании алгоритмов ветвления в Паскале используйте условный оператор. Его общая форма такова:
если, то, иначе
Для записи несовершенных ветвей используется несовершенная форма оператора условия:
если тогда
Слова if — then — else переводятся с английского на русский язык как если — то — еще, что полностью соответствует алгоритмическому ветвящемуся файлу.
Перед else не ставится «;».
В качестве условий используются булевы выражения:
— простой — написанный с использованием операций с позой; — сложный — написанный с использованием логических операций.
Пример 1. Опишем на языке Pascal алгоритм, рассмотренный в разделе 2.4.2 (пример 8), для нахождения начала точки x на отрезке a, b.
Пример 2. Используя оператор несовершенного условия, напишем на языке Pascal алгоритм, который присваивает переменной y наибольшее значение из трех значений a, b и c, рассмотренных в разделе 2.4.2 (пример 9).
Завершите эту программу так, чтобы в результате ее выполнения переменной y было присвоено наибольшее из четырех значений a, b, c и d.
4.2. Составной оператор
В условном операторе после then и else можно использовать только один оператор. Если определенные условия требуют определенной последовательности операторов, они объединяются в составной оператор.
Оператор начала-конец называется составным оператором.
Пример. Алгоритм решения квадратного уравнения вам хорошо знаком. Давайте напишем соответствующую программу на языке Pascal.
4.3. Многообразие способов записи ветвлений
Вы можете использовать условный оператор после then и else, например, следующую конструкцию:
если тогда
если тогда
else
При использовании таких сложных конструкций (также называемых вложенными ветвями) обратите внимание, что else всегда ссылается на ближайший оператор if.
Пример. Давайте воспользуемся вложенной ветвью для написания алгоритма решения линейного уравнения на языке Pascal, рассмотренного в разделе 2.4.2 (пример 10).
Обычно для решения одной и той же задачи может быть предложено несколько алгоритмов. Убедитесь в этом, написав программу для решения линейного уравнения, не прибегая к вложенным ветвям.
Второй вариант программы, возможно, несколько проще в обращении. Однако у первого варианта есть одно преимущество: он имеет меньше элементов управления.
если, то, иначе
Используя вложенные ветви, напишите программу, которая выясняет, принадлежит ли точка x отрезку a, b.
если тогда
If ( если )
Условие записывается в скобках между словами if ( если ) и then ( тогда ). В нашем случае нам понадобится такое условие if ( a>b ) тогда. Если условие «a больше b» возвращает истинный результат, то выполняется первый оператор после слова then. Например
После выполнения этой программы, если условие истинно и «a» больше, чем «b», на экране появится сообщение A больше. Обратите внимание, однако, что несколько инструкций, которые должны быть выполнены в результате выполнения условия, должны быть объединены в блок «начало-конец».
Ознакомьтесь с изложением дела Pascal — особенности и примеры дела Pascal
Else ( иначе )
Предположим, задача такова: ввести на клавиатуре два числа «a» и «b». Если «a» больше, напечатайте «a». В противном случае выведите «b».
Блок else («еще») записывается после тела истинного значения. Помните: никогда не ставьте ;выше другого!
Если мы хотим выполнить несколько (более одной) команд в теле ложного значения, мы помещаем эти команды в конец begin
Сложные условия :
В аналогии с простыми существуют и сложные условия. Пример простого условия ( a = b ). Пример сложного ( a>b ) и ( a<>b ). Дословно — если «а» больше «б» и «а» неравно «б» тогда … В данном случае блок then будет выполнятся тогда и только тогда, когда обе скобки возвращают истинный результат. Если хоть одна из скобок возвращает ложный, то будет выполнен блок else ( если он есть ). Разберем пример ещё одного условия ( сложного ). if ( (a>b) и ( a<>b ) или ( a = c ), то выполняется блок then, если «a» больше «b» и «a» не равно «b» или «a» равно «c».
Pascal: Занятие №2. Часть 1: Условный оператор в Паскале (If)
Обратите внимание, что эта страница не претендует на полноту. Цель портала — изучение материала на готовых решенных примерах для Pascal с практическими упражнениями для закрепления материала. Задачи на Паскале, представленные на labs-org.ru, упорядочены по возрастанию сложности. Сайт labs-org.ru может быть использован учителями и преподавателями в качестве полезного наглядного пособия.
Условный оператор в Паскале
До этого выпуска линейные алгоритмы в Pascal использовались в основном для очень простых задач, где действия (операторы) выполняются последовательно друг за другом. Для более сложных алгоритмов используется ветвление.
Блок-схема для условных операторов: Условный оператор в Паскале имеет следующий синтаксис:
ifГосударствозатемОператор;
Полная версия:
ifГосударствозатемОператорВ противном случаеОператор;
Условный оператор в Паскале — if — используется для организации задачи таким образом, что последовательность операторов изменяется в соответствии с логическим условием. Логическое условие может принимать одно из двух значений: либо true, либо false.
Составной оператор
Согласно правилам Паскаля, если истинное условие требует более одного оператора, они должны быть заключены в блок, который начинается со слова function begin и заканчивается словом function end. Это то, что мы называем операторными скобками, и эта конструкция называется составным оператором:
Операторные скобки и составные операторы в Паскале:
ifлогическое выражениезатемначатьОператор1;Оператор2;конецВ противном случаеначатьОператор1;Оператор2;конец;
Перевод оператора условия на английский язык облегчает понимание его использования:
IF | ЗАТЕМ | ELSE |
ЕСЛИ | ТО | ИЛИ ДРУГОЕ |
Реляционные операторы используются в условии (в логическом выражении). Рассмотрим список операторов отношения Паскаля:
- больше>
- меньше
- больше или равно в Pascal>=
- меньше либо равно в Pascal
- сравнение в Pascal =
- не равно в Pascal<>
Построение блок-схем по коду Паскаль
Теперь пришло время вспомнить, что такое блок-схемы. Блок-схема — это ориентированный граф, который показывает последовательность операций, ведущих к решению конкретной задачи.
Существует три типа структур управления:
следование | ветвление | повторение или цикл |
Две из трех представленных структур блок-схем уже могут быть переведены в код на языке Паскаль.
Пример: Составить блок-схему вычисления значения величины С, определяемое по формулам: С=A+B, если A и C=A-B, если A>B .
Результат:
Задание 5: Постройте блок-схему решения задачи 3.
Пример: автобусный билет считается счастливым, если сумма первых трех цифр билета равна сумме последних трех цифр. Чтобы определить билет со счастливым номером, необходима блок-схема алгоритма.
Задание 6. Решите задачу на языке Pascal, используя приведенную выше блок-схему.
Имя файла: L2task6.pas.
Задача 7. Дано двузначное целое число. Выведите сумму и произведение цифр. Проверьте, правильно ли составлена ваша программа. Чтобы найти цифры числа, используйте оператор остатка mod и операцию целочисленного деления div. Единицей измерения числа является функция abs().
Ввод двузначного числа: -12 Сумма цифр = 3 Произведение цифр = 2
Имя файла: L2task7.pas
Задача 8: Дано целое трехзначное число. Извлеките все цифры (порядок не имеет значения). Проверьте, правильно ли составлена ваша программа. Чтобы найти цифры числа, используйте оператор остатка mod и операцию целочисленного деления div .
Ввод трехзначного числа: -123 Разряд сотен: 1 Разряд десятков: 2 Разряд единиц: 3
Имя файла: L2task8.pas
Пользовательский ввод почти всегда должен проверяться на корректность. Чтобы избежать ошибок в программе, необходимо использовать функцию assert(), параметром которой является условие, которое должно возвращать true.
Выполнение: Даны координаты точки (x,y) в координатной плоскости ( ≠ 0, ≠ 0). Извлеките номер квартала:
var(x,y):=ReadInteger2;varReadIntegerInteger:Целое число;Сертификат((x<>0)и(y<>0),недействительная запись".);// Правдаifx>0затемify>0затемКвартал:=1В противном случаеКвартал:=4В противном случаеify>0затемКвартал:=2В противном случаеКвартал:=3;
var (x,y) := ReadInteger2; var quarter: integer; Assert((x<>0) и (y<>0), ‘некорректный ввод’); // True if x>0 then if y>0 then quarter := 1 else quarter := 4 else if y>0, то квартал := 2, иначе квартал := 3,
Условный оператор IF в языке Турбо-Паскаль. Примеры использования
Теперь мы переходим к рассмотрению сложных операторов, первый из которых — условный.
С помощью условного оператора мы можем проверить условие, а затем либо сделать что-то, либо сделать что-то другое в зависимости от результата.
Структура условного оператора выглядит следующим образом:
Где IF, THEN, ELSE — зарезервированные слова; условие — любое логическое выражение; оператор1, оператор2 — любые операторы языка Turbo Pascal (операторы могут быть и сложными).
Как происходит выполнение условного оператора?
Сначала проверяется истинность условия. Если условие истинно (равно true), выполняется оператор1, а если ложно (равно false), выполняется оператор2. В обоих случаях выполняется только один из операторов 1 и 2, второй просто игнорируется.
Как видите, в условии else часть оператора может отсутствовать. В этом случае, если условие истинно, выполняется оператор1, в противном случае весь оператор if опускается.
Использование условного оператора показано в следующем примере.
Значение y зависит от значения x. График показан на следующем рисунке. Учитывая x, необходимо определить значение y.
Чтобы определить значение y, необходимо выяснить, в каком из трех интервалов находится значение x, а затем подставить его в искомое выражение.