Что такое условный алгоритм кратко

Обновлено: 04.07.2024

Как мы уже говорили, любой алгоритм можно составить из нескольких базовых структур. Простейшей из них является линейная (следование). В ней команды выполняются однократно в той последовательности, как они записаны. Однако далеко не всегда для решения задачи последовательность действий одна и та же при любых исходных данных. Если на каком-то этапе исполнитель должен выбирать один вариант из нескольких, в алгоритме используют ветвление.

В алгоритме разветвленной структуры (ветвлении) в зависимости от истинности или ложности некоторого условия выбирается одна из двух серий команд.

В данном уроке закрепляется материал о разветвляющихся алгоритмах. В этот раз рассматриваются полная и краткая форма условного оператора if, основы работы с оператором while.

План урока:

Программирование разветвляющихся алгоритмов

Не все алгоритмы можно представить в виде списка действий. Бывают случаи, когда на выполнение чего-либо влияют определённые факторы. Например, если погода будет хорошей, то Настя пойдёт гулять и есть мороженое, однако, если погода будет плохой – она будет сидеть дома и делать уроки. В данном случае, окончательное действие зависело от того, какой будет погода. Это и есть условие выполнения.

Определение разветвляющегося алгоритма

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

Простые условия содержат одно логическое (булево) выражение, то есть такое утверждение, которое является либо истинным, либо ложным.

Логическое выражение может быть представлено как одним идентификатором логического типа, так и двумя идентификаторами или выражениями, между которыми стоит знак логической операции отношения, позволяющей сравнить их между собой. К операциям отношения относятся:

  • > (больше);
  • = (больше или равно);
  • (не равно);
  • = (равно).

Примеры простых логических выражений:

  • Value (идентификатор Value должен иметь логический тип данных);
  • a - b<> 5 (истинно, если a -b не равно 5);
  • c>= 10 + 11 (истинно, если c имеет значение 21 или больше);
  • 7 > 8 (это выражение всегда ложно);
  • ‘бабушка’ <> ‘дедушка' (это выражение всегда истинно).

Первые три выражения имеют в своём составе переменные или константы, следовательно, об истинности всего выражения можно говорить только когда эти идентификаторы будут иметь какие-то определённые значения:

  • Если a = 5, b = 3, то второе выражение является истинным. Однако, если a = 5, b = 0, то результатом их разности будет число 5, которое делает это выражение ложным.
  • Если c = 9, то третье выражение будет ложным, при этом, если с имеет значение 21 и более, то выражение будет истинным.

В третьем примере сначала определяется истинность выражения d > 5 and x <> 2, а затем выполняется операция or, поскольку логическое умножение, как и арифметическое, имеет приоритет над сложением.

Какие условные операторы языка Паскаль позволяют описывать подобные разветвленные алгоритмы? На этом уроке мы продолжим разбор условного оператора if и рассмотрим различные его формы.

Условный оператор

Условный оператор в Паскале позволяет выбрать ветвь выполнения программы в зависимости от истинности или ложности логического выражения, записанного в условии.

Формы записи условного оператора if

if then ;

if then else ;

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

if then

else

Составной условный оператор

Составной оператор в Паскале применяется тогда, когда в одной из ветвей нужно выполнить более одного оператора. Составной оператор начинается со служебного слова begin и завершается служебным словом end. В промежутке между этими двумя словами находятся операторы, выполнение которых происходит в том порядке, в котором они записаны. Составные операторы могут применяться везде, где применяются простые операторы, и также как простые операторы, они должны отделяться точкой с запятой по тем же правилам. Пример использования составного оператора в конструкции if..then..else:

if then

begin

end

else

begin

end;

В данном примере, в случае истинности условия будут выполняться операторы 1 и 2, в случае ложности – операторы 3 и 4.

Вложенный условный оператор

if then

if then

else

else

Таким образом, для множества алгоритмов разветвляющейся структуры существует множество простых и составных операторов.

Однако, на этом многообразие операторов ветвления не заканчивается. Так, для разветвляющихся циклических алгоритмов применяется оператор while.

Циклический оператор while

Если нужно создать цикл, то циклический оператор while отлично подходит для этой задачи. Он используется тогда, когда неизвестно точное число повторений одних и тех же действий. Однако, эти действия могут не выполниться ни разу. Оператор while записывается следующим образом:

Выполнение действий, заключённых в операторе 1, продолжается до тех пор, пока логическое выражение в условии принимает истинное значение. Когда условие станет ложным, программа выйдет из цикла и перейдёт к выполнению последующих команд.

Задачи

Для закрепления полученных знаний необходимо решить несколько задач на условные операторы и рассмотреть примеры разветвляющихся алгоритмов.

Задача 1. Необходимо создать программу, которая на вход будет получать 2 числа, а выводить наибольшее из них. Если числа одинаковы, то нужно вывести любое из них.

Шаг 1. Необходимо ввести наименование программы. В данном случае это будет решение первой задачи.

Шаг 2. Учитывая, что числа, которые получит программа и запишет в переменные a и b, будут относиться к численному типу данных, необходимо указать тип integer.

Шаг 4. Необходимо записать оператора, благодаря которому будет происходить принятие входных данных и закрепление их за определёнными переменными.

Шаг 5. Появление условного оператора if. В данной задаче необходимо вывести наибольшее число, поэтому условием будет сравнение чисел.

Шаг 6. Проверка написанного кода программы и правильности выводящихся данных. Если значение a больше значения b, то программа выводит значение, закреплённое за переменной a. В противном случае, программа выведет число b. Если числа одинаковы, то программа автоматически перейдёт к выполнению оператора, записанного после слова else, так как числа одинаковы, нет разницы в том, какое из них выводить.

Задача 2. На вход программа получает 3 числа, которые обозначают длины различных отрезков. Необходимо выяснить, можно ли построить с помощью этих отрезков треугольник. Если да, то каким он будет: тупоугольным, прямоугольным или остроугольным.

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

Шаг 2. Построение кода программы. Для начала необходимо дать ей название.

Шаг 3. Указывается тип данных. Поскольку данные, которые получает программа, относятся к численному типу данных, то после названий переменных нужно написать integer.

Шаг 5. Запись оператора, который поможет программе получить данные.

Шаг 6. Запись и представление примерной работы всех необходимых условий. Изначально нужно понять, образуют ли отрезки какой-либо треугольник, для этого записывается условие, дословно переводящееся как «если c n является истинным. На вход подаётся число n, большее чем единица.

Шаг 1. Для начала необходимо дать программе название.

Шаг 2. Учитывая, что на вход подаётся целое число, указать тип данных, в данном случае – integer.

Шаг 3. Запись командного блока. Нужно написать слово, обозначающее начало, begin.

Шаг 5. Запись необходимых операторов. Используя оператор readln программа считывает данные и переводит курсор на новую строку. Далее она производит операции над поступившими данными.

Шаг 7. Проверка правильности записи алгоритма. В конце программного блока, после слова end нельзя забывать точку, её обязательно нужно поставить.

Задача 4. На вход подаётся натуральное число, из которого необходимо удалить заданную пользователем цифру.

Шаг 1. Для решения данной задачи понадобится вспомнить операции mod и div в Паскале. Div возвращает целую часть при делении какого-то числа на какое-то число. К примеру, если 5 поделить на 3, то в остатке будет 2. При записи 5 div 3 программа выдаст значение 1, тк 5 делится на 3 ровно 1 раз. Mod возвращает остаток от деления. При записи 5 mod 3 программа выдаст значение 2, поскольку остаток от деления 5 на 3 равен 2. Как же решать эту задачу?

Шаг 3. Указание типа вводимых данных. Longint представляет тип данных с длинными целыми числами, к нему можно отнести подающееся на вход число (а) и цифру, которую нужно удалить (b). Следующим типом будет byte, он представляет целый беззнаковый тип.

Шаг 4. После этого следует командный блок. Вписываются 2 оператора readln, позволяющие программе считать необходимые данные.

Шаг 6. Проверка кода программы. После окончания всех циклов она должна вывести итоговое число и завершить свою работу.

Условный алгоритм, слайд №1
Условный алгоритм, слайд №2
Условный алгоритм, слайд №3
Условный алгоритм, слайд №4
Условный алгоритм, слайд №5
Условный алгоритм, слайд №6
Условный алгоритм, слайд №7
Условный алгоритм, слайд №8
Условный алгоритм, слайд №9
Условный алгоритм, слайд №10
Условный алгоритм, слайд №11
Условный алгоритм, слайд №12
Условный алгоритм, слайд №13
Условный алгоритм, слайд №14
Условный алгоритм, слайд №15
Условный алгоритм, слайд №16

 Условный алгоритм Ветвление

Слайд 1

 Условный алгоритм или ветвление – это такая организация алгоритма, при которой в зависимости от выполнения или невыполнения некоторого условия выполняется та или другая последовательность команд

Слайд 2

Условный алгоритм или ветвление – это такая организация алгоритма, при которой в зависимости от выполнения или невыполнения некоторого условия выполняется та или другая последовательность команд


Слайд 3

Условие – это логическое выражение Логическое выражение – это повествовательное предложение, в котором что-либо утверждается или отрицается. Примеры логических выражений: Все лошади белые. 111 делится на 3. Логическое выражение имеет значение: ложь (false) или истина (true). Логические выражения: простые (=, >, =, ) и сложные: (условие1) лог. операция (условие2). Логические операции: отрицание (not), логическое сложение (or), логическое умножение (and), исключающее или (xor)

 Логический тип - boolean Написать программу, которая выводит значение true, если точка с заданными координатами (x, y) лежит в заштрихованной области и false – в противном случае.

Слайд 4

Логический тип - boolean Написать программу, которая выводит значение true, если точка с заданными координатами (x, y) лежит в заштрихованной области и false – в противном случае.


Слайд 6

Ветвление 1 – полная форма Формат команды: If then K1 else K2; Это означает: Если условие 1 истинно, тогда выполнить K1, иначе выполнить K2


Слайд 7

Ветвление 2 – составные операторы Формат команды: If then Begin K1; K3; K4; End else Begin K2; K5; End; Замечания: 1. Составной оператор – на ветке ветвления более одной команды. 2. Операторные скобки (Begin – End).


Слайд 8


Слайд 9

Замечания (основные ошибки): Условие ветвления содержит знаки сравнения: =, , =, <>. Команда присваивания (:=) не может использоваться в условии. Сложное условие ветвления записывается в скобках: (условие 1) лог. операция (условие 2); логическая операция: and или or. Используются операторные скобки (begin – end), если на ветке ветвления более одной команды. Нельзя записывать: then; или ;else.

 Задачи 2: Набор состоит из 1 ручки, 2 тетрадей, 4 карандашей. Имеется a ручек, b тетрадей, c карандашей. Сколько получится наборов? Влезет ли шкаф размером a×b×c в дверь размером x×y? Или: Влезет ли сундук размером a×b×c в иллюминатор радиуса R? На шахматной доске заданы два поля с координатами: I (k, l) и II(m, n). Определить цвет полей. Если на поле I находится ферзь, а на поле II – конь, определить: угрожает ли ферзь коню, угрожает ли конь ферзю?

Слайд 11

Задачи 2: Набор состоит из 1 ручки, 2 тетрадей, 4 карандашей. Имеется a ручек, b тетрадей, c карандашей. Сколько получится наборов? Влезет ли шкаф размером a×b×c в дверь размером x×y? Или: Влезет ли сундук размером a×b×c в иллюминатор радиуса R? На шахматной доске заданы два поля с координатами: I (k, l) и II(m, n). Определить цвет полей. Если на поле I находится ферзь, а на поле II – конь, определить: угрожает ли ферзь коню, угрожает ли конь ферзю?

 Домашнее задание 1: Нарисовать блок-схемы для задач. Определить значение функции для заданного аргумента: 1. 2.

Слайд 12

Домашнее задание 1: Нарисовать блок-схемы для задач. Определить значение функции для заданного аргумента: 1. 2.

 Ветвление 4: Вложенные ветвления

Слайд 13

 Задачи 3: Решить квадратное уравнение для любых параметров a (a≠0), b, c: Даны два числа m и n. Если эти числа не равны, заменить каждое из них одним и тем же числом, равным большему из данных, а если равны – то заменить числа нулями. При покупке на сумму более 500 рублей предоставляется скидка 3%, при покупке на сумму более 1000 рублей – скидка 5%. Определить стоимость покупки с учетом скидки. На оси ОХ расположены две точки a и b. Определить, какая из точек расположена ближе к нулю.

Слайд 14

Задачи 3: Решить квадратное уравнение для любых параметров a (a≠0), b, c: Даны два числа m и n. Если эти числа не равны, заменить каждое из них одним и тем же числом, равным большему из данных, а если равны – то заменить числа нулями. При покупке на сумму более 500 рублей предоставляется скидка 3%, при покупке на сумму более 1000 рублей – скидка 5%. Определить стоимость покупки с учетом скидки. На оси ОХ расположены две точки a и b. Определить, какая из точек расположена ближе к нулю.

 Задачи 4: Даны два числа a и b. Меньшее из этих чисел заменить их полусуммой, а большее – их удвоенным произведением. Если числа равны – оставить их без изменения. Известно, что из четырех чисел a1, a2, a3, a4 одно отлично от трех других, равных между собой. Присвоить номер этого числа переменной n и вывести ее на экран. Определить взаимное расположение двух окружностей: первая окружность – радиус R1 и центр А(х1, y1), вторая окружность – радиус R2 и центр В(х2, y2).

Слайд 15

Задачи 4: Даны два числа a и b. Меньшее из этих чисел заменить их полусуммой, а большее – их удвоенным произведением. Если числа равны – оставить их без изменения. Известно, что из четырех чисел a1, a2, a3, a4 одно отлично от трех других, равных между собой. Присвоить номер этого числа переменной n и вывести ее на экран. Определить взаимное расположение двух окружностей: первая окружность – радиус R1 и центр А(х1, y1), вторая окружность – радиус R2 и центр В(х2, y2).

 Домашнее задание 2: Нарисовать блок-схему программы с вложенными ветвлениями. Написать программу для своей блок-схемы.

Слайд 16

Домашнее задание 2: Нарисовать блок-схему программы с вложенными ветвлениями. Написать программу для своей блок-схемы.

Аннотация: В этой главе изложена методика составления алгоритмов с помощью блок-схем и описаны основные операторы языка: условный оператор if, оператор выбора case, операторы цикла while..do, repeat..until, for..do. Приводится большое количество примеров составления программ различной сложности.

3.1 Основные конструкции алгоритма

Как правило, созданию программы предшествует разработка алгоритма 1 Алгоритм — от algorithmi, algorismus, первоначально латинская транслитерация имени математика аль-Хорезми. . Алгоритм — это чёткое описание последовательности действий, которые необходимо выполнить для того, чтобы при соответствующих исходных данных получить требуемый результат. Одним из способов представления алгоритма является блок-схема . При составлении блок-схемы все этапы решения задачи изображаются с помощью различных геометрических фигур. Эти фигуры называют блоками и, как правило, сопровождают текстом. Последовательность выполнения этапов указывают при помощи стрелок, соединяющих эти блоки. Типичные этапы решения задачи изображаются следующими геометрическими фигурами:

  • блок начала (конца ) (рис. 3.1). Текст внутри блока: "начало" ("конец");

Блок начала (конца) алгоритма

  • блок ввода (вывода ) данных (рис. 3.2). Текст внутри блока: "ввод" ("вывод" или "печать") и список вводимых (выводимых) переменных;

Блок ввода (вывода)

  • блок решения, или арифметический (рис. 3.3). Внутри блока записывается действие, вычислительная операция или группа операций;

Арифметический блок

  • условный блок (рис. 3.4). Логическое условие записывается внутри блока. В результате проверки условия осуществляется выбор одного из возможных путей (ветвей) вычислительного процесса.

Условный блок

Рассмотренные блоки позволяют описать три основные конструкции алгоритма : линейный процесс, разветвляющийся процесс и циклический процесс.

Линейный процесс — это конструкция, представляющая собой последовательное выполнение двух или более блоков (рис. 3.5).

Разветвляющийся процесс задаёт выполнение одного или другого оператора в зависимости от выполнения условия (рис. 3.6).

Циклический процесс задаёт многократное выполнение оператора или группы операторов (рис. 3.7).

Линейный процесс

Разветвляющийся процесс

Циклический процесс

Нетрудно заметить, что каждая из основных конструкций алгоритма имеет один вход и один выход . Это позволяет вкладывать конструкции друг в друга произвольным образом и составлять алгоритмы для решения задач любой сложности.

Рассмотрим операторы языка программирования Free Pascal , реализующие основные конструкции алгоритма.

3.2 Оператор присваивания

Оператор присваивания в языке Free Pascal состоит из двух символов: двоеточия и знака равенства. Символы := всегда пишут слитно. Пробелы допускаются перед символом двоеточия и после символа равенства.

В общем случае оператор присваивания имеет вид:

где значение — это выражение , переменная , константа или функция . Выполняется оператор так. Сначала вычисляется значение выражения, указанного в правой части оператора, а затем его результат записывается в область памяти (переменную), имя которой указано слева. Например, запись a:=b означает, что переменной а присваивается значение выражения b .

Типы переменной a и выражения b должны совпадать или быть совместимыми для присваивания, то есть тип, к которому принадлежит b , должен находиться в границах типа переменной а .

Оператор присваивания , как и любой другой оператор в языке Free Pascal , отделяется от других точкой с запятой.

3.3 Составной оператор

Составной оператор — группа операторов, отделённых друг от друга точкой с запятой, начинающихся со служебного слова begin и заканчивающихся служебным словом end :

Транслятор воспринимает составной оператор как один оператор.

3.4 Условные операторы

В языке Free Pascal одна из основных конструкций алгоритма, разветвляющийся процесс, реализована двумя условными операторами: if и case . Рассмотрим каждый из них.

3.4.1 Условный оператор if..then..else

При решении большинства задач порядок вычислений зависит от определённых условий, например от исходных данных или от промежуточных результатов, полученных на предыдущих шагах программы. Для организации вычислений в зависимости от какого-либо условия в языке Free Pascal используется условный оператор if..then..else , который в общем виде записывается так:

Алгоритм условного оператора if..then..else

if условие then оператор_1 else оператор_2;

где if..then..else — зарезервированные слова, условие — выражение логического типа 2 Логическое выражение может принимать одно из двух значений: истина или ложь. , оператор_1 и оператор_2 — любые операторы языка Free Pascal.

Работа условного оператора организована следующим образом. Сначала вычисляется выражение, записанное в условии . Если оно имеет значение истина ( True ), то выполняется оператор_1 . В противном случае, когда выражение имеет значение ложь ( False ), оператор_1 игнорируется и управление передаётся оператору_2 .

Алгоритм, который реализован в условном операторе if..then..else , представлен на рис. 3.8.

Например, чтобы сравнить значения переменных и , нужно создать следующий программный код:

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

Альтернативная ветвь else в условном операторе может отсутствовать, если в ней нет необходимости:

В таком "усечённом" виде условный оператор работает так: оператор (группа операторов) либо выполняется, либо пропускается в зависимости от значения выражения, представляющего условие. Алгоритм этого условного процесса представлен на рис. 3.9.

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

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

Алгоритм условного оператора if без альтернативной ветви else

оператор_Б относится к условию_2 , а в конструкции

Для сравнения переменных в условных выражениях применяют операции отношения : =, <>, , = . Условные выражения составляют с использованием логических операций and, or и not. В языке Free Pascal приоритет операций отношения меньше, чем у логических операций, поэтому составные части сложного логического выражения заключают в скобки.

Допустим, нужно проверить, принадлежит ли переменная интервалу . Условный оператор будет иметь вид:

if ( x>=a ) and ( x =a and x =(a and x) >

Читайте также: