пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

2 курс 2 семестр:
» Математика
2 курс 1 семестр:
» Математ
» Химия
» ИМХ
» Физика
1 семестр:
» хим
» Математика
» Физика
» Информатика

Разветвляющиеся алгоритмы и программы.

Разветвляющиеся алгоритмы и программы

В жизни нам часто приходится сталкиваться с ситуацией, когда
необходимо выбрать какой-то один из нескольких вариантов действий в
зависимости от некоторого условия. Классическим примером такого вы-
бора является сюжет из сказки: «Едет добрый молодец на коне и подъ-
езжает к развилке из трех дорог.....» (рис.3.1):

Разветвляющиеся алгоритмы и программы

В жизни нам часто приходится сталкиваться с ситуацией, когда
необходимо выбрать какой-то один из нескольких вариантов действий в
зависимости от некоторого условия. Классическим примером такого вы-
бора является сюжет из сказки: «Едет добрый молодец на коне и подъ-
езжает к развилке из трех дорог.....» (рис.3.1):

 

 

agd18-3L18o.jpg

Аналогичных примеров из жизни можно привести много,

например:

ЕСЛИ пошел дождь,

ТО надо открыть зонт

ВСЕ

ЕСЛИ назвался груздем,

ТО полезай в кузов

ВСЕ

ЕСЛИ ласточки летают низко,

ТО будет дождь,

ИНАЧЕ дождя не будет

ВСЕ

В программировании для реализации такого рода ситуаций используются разветвляющиеся алгоритмы (программы):
Разветвляющимся называется алгоритм (программа), в котором в зависимости от истинности или ложности некоторого условия, выбирается один из двух (или нескольких) возможных путей продолжения алгоритма.
Эти пути продолжения называют ветвями.
В зависимости от количества ветвей различают:
1. Полное ветвление (две ветви)
2.Неполное ветвление (одна ветвь)
3.Многократное ветвление (больше двух ветвей)
На рисунке 3.2 приведена блок-схема полного и неполного ветвлений
UzXm4ONzQcU.jpg
В языке Паскаль для реализации разветвляющихся программ
используется условный оператор.
Он имеет следующий формат:
If <логическое выражение>
then <оператор 1>
[else <оператор2>];
Если в условном операторе присутствуют обе ветви (then и
else), то такую форму оператора называют полной, если же ветвь else
отсутствует – неполной.
При выполнении условного оператора в полной форме вычис-
ляется значение логического (булевского) выражения. Если оно равно
‘true’, то выполняется <оператор 1>, а <оператор 2> пропускается; если
же оно равно ‘false’, то выполняется <оператор 2>, а <оператор 1> про-
пускается.
При выполнении условного оператора в неполной форме также
сначала вычисляется значение булевского выражения. Если оно равно
‘true’, то выполняется <оператор 1>, если ‘false’- осуществляется пере-
ход к оператору, следующему за условным оператором, то есть в по-
следнем случае <оператор 1> просто пропускается (“обходится”).
После ключевых слов then и else по правилам языка Паскаль
можно записывать только один оператор, а часто бывает необходимо
выполнить несколько операторов на каждой из ветвей. Тогда эти опера-
торы объединяются в один составной оператор при помощи оператор-
ных скобок, роль которых выполняют ключевые слова begin (откры-
вающаяся скобка) и end (закрывающаяся скобка). То есть составной
оператор имеет следующий формат:
begin
<оператор 1>;
<оператор 2>;
...............
<оператор n>
end;
Если в разветвляющейся программе необходимо организовать
более двух ветвей (многократное ветвление), то можно использовать
вложенные условные операторы, то есть в качестве операторов на ветвях
then или else будут также стоять условные операторы.
При этом для удобочитаемости программы необходимо вырав-
нивать по левому краю (то есть располагать на одной вертикальной ли-
нии) соответствующую пару ключевых слов then-else:
If <логическое выражение 1>
then
if < логическое выражение 2>
then <.........>
else <.........>
else
if < логическое выражение 3>
then <..........>
else <...........>;
 
 
В целом же следует помнить, что по правилам языка Паскаль
каждому else соответствует ближайший стоящий перед ним then (if).
Это соглашение позволяет избежать неоднозначности в
трактовке выполнения вложенных условных операторов.
В качестве примера рассмотрим классическую задачу нахож-
дения максимального из трех чисел и проиллюстрируем ее решение не-
сколькими способами.
Постановка задачи
Даны три целых числа. Найти максимальное из них.
Введем обозначения: исходные числа a,b,c. Результат - m (мак-
симальное из них).
1 способ решения
Сравним первые два числа, найдем максимальное из них и ре-
зультат сохраним в переменной m (полное ветвление).
Затем сравним m и c (неполное ветвление)
Ниже (рис.3.3) приведены блок-схема алгоритма, текст про-
граммы и протокол работы в среде Паскаль АВС
Ytu6A7kCK2A.jpg
Рис. 3.3 Первый способ решения
2 способ решения
Сначала считаем, что максимальное – первое число (m:=a). Потом
сравниваем последовательно m и b , m и c (неполные ветвления).
На рисунке 3.4 приведены блок-схема и текст программы:
n6voKYJOV5Q.jpg
Рис. 3.4 Второй способ решения
3 способ решения (этот способ интуитивно понятный, но неэффек-
тивный)
Три последовательных неполных ветвления с составными условия-
ми (рис. 3.5):
1-qm6QaGnfw.jpg
Рис. 3.5 Третий способ решения
4 способ решения
Вложенные ветвления: во внешнем сравниваем два первых числа,
а на каждой из ветвей соответственно максимальное из них с третьим
(рис. 3.6):
k-htbTd_rQc.jpg
ips36KIkzZ8.jpg
 

29.06.2016; 20:49
хиты: 3064
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь