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

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

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

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

Источник: sites.google.com

Алгоритм ветвления. Отличие от алгоритмов линейной структуры

Статья рассказывает про алгоритмы с разветвлённой структурой. Читатель узнает, чем их решение отличается от решения линейных алгоритмов, как выглядит программный способ записи таких алгоритмов, а также какова будет блок-схема.

Программирование разветвляющихся алгоритмов | Информатика 8 класс #24 | Инфоурок

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

Алгоритм – это ясный перечень действий, который направлен на решение какой-либо задачи. Одно из свойств алгоритма — дискретность. Дискретность связана с наличием в алгоритмической последовательности ряда операций (этапов, действий), выполняемых пошагово, то есть дискретно.

Алгоритм обладает свойством дискретности, так как он представляет собой процесс решения задачи в виде последовательного выполнения простых шагов. И каждое действие исполняется лишь после окончания исполнения предыдущего. Также предполагается наличие определённых исходных данных и результата выполнения.

Блок-схема — графический способ описания алгоритмов. Графическое представление обеспечивает наглядность и упрощает запись, делая последовательность более понятной. При использовании схемы каждому действию соответствует определённая геометрическая фигура (эти фигуры называют блоками). Вот наиболее часто употребляемые:

1-1801-45f906.png

Ещё раз о линейности

Линейная последовательность — самая простая из возможных структур. При наличии линейности команды выполняются в чёткой последовательности и в порядке их записи, то есть друг за другом. Вот линейная алгоритмическая последовательность посадки дерева: 1) выкапывание ямки в земле; 2) размещение в ямке саженца; 3) закапывание ямки; 4) поливание места посадки водой.

Такой линейный алгоритм имеет следующую блок-схему:

2-1801-c5c0b7.png

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

А вот и общая схема линейного алгоритма:

3-1801-35f267.png

Ветвление в алгоритмических последовательностях

На практике очень редко встречается, чтобы последовательность всех требуемых действий была известна заранее. Если на минуту покинуть мир алгоритмизации и программирования, можно спроецировать ветвление на многие жизненные ситуации. Если на улице дождь, человек берёт зонт, если очень жарко, будет выбрана одежда полегче и т. д. Всё зависит от условия выбора. Как тут не вспомнить рыцаря на распутье из русских народных сказок?

4-1801-2c4a5c.png

«Направо пойдёшь — жену найдёшь, налево пойдешь — богатым будешь, прямо пойдёшь — смерть найдёшь».

Читайте также:
Как вернуть программу до обновления на Андроид

Подобная ситуация заставляет принимать решения с учётом определённого условия. Если нужна жена, то витязь идёт направо, если богатство, то налево, если жизнь не мила, то прямо. Условия, которые влияют на решение, располагаются между словами «если» и «то».

От значения условий зависит дальнейшее поведение. Когда условие выполняется, оно принимает значение «истина», когда нет — «ложь». Иногда анализ ситуации и выбор не вызывают особых затруднений, а иногда принять решение очень трудно. А всё потому, что принимающий решение пытается продумать каждый из вариантов и предугадать последствия выбора. Нельзя не вспомнить гроссмейстера, который анализирует позицию на ходы вперёд, прежде чем передвинуть фигуру на шахматной доске.

Компьютерные программы и игры тоже построены на выборе действий. А блок-схема при наличии ветвления приобретает иной вид:

4.1-1801-fa94a6.png

Логика разветвляющих алгоритмов

Логику можно описать следующим образом:

ЕСЛИ ТО ИНАЧЕ

Ветвление — метод и форма организации действий, когда в зависимости от выполнения определённого условия совершается та либо иная последовательность шагов.

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

5-1801-c7b186.png

Для закрепления можно решить задачу.

Есть 3 монеты одинакового достоинства. Одна из монет фальшивая (известно, что она имеет меньший вес). Найдите фальшивую монету на чашечных весах без гирь с помощью только одного взвешивания.

Решение легко описывается посредством схематических блоков:

6-1801-145fea.png

Следующий пример легко экстраполируется в жизнь. Речь идёт об алгоритме для перехода дороги при наличии светофора. Он имеет следующий вид: 1. Подходим к светофору. 2. Смотрим, какой горит свет. 3. Если зелёный, переходим дорогу.

4. Если красный, ждём, пока загорится зелёный, а потом переходим дорогу.

7-1801-391350.png

Программный способ записи

Чтобы алгоритм было понятен компьютеру, машине и любой другой цифровой системе, следует оформить его в таком виде, который эта система способна воспринимать. То есть надо написать программу, используя для этого команды из СКИ. СКИ — это список команд исполнителя — перечень команд, ему понятных. А любой исполнитель способен исполнить лишь те команды, которые включены в его СКИ, а если говорить человеческим языком — входят в набор его компетенций.

Для примера можно реализовать алгоритм на языке программирования Pascal. Исходя из вышесказанного, следует использовать команды, входящие в терминологию Pascal.

Простейший пример описания алгоритма с разветвляющейся структурой — условный оператор IF. Полная конструкция этого условного оператора имеет следующий вид:

ifthenelse

Здесь if — это «если», then — это «то», else — «иначе».

Условный оператор работает просто: — вычисляется значение логического выражения, которое расположено после служебного слова IF; — если результат — истина, выполняется оператор 1, который размещён после THEN, причём действие после ELSE пропускается; — если результат — ложь, пропускается уже действие после THEN, а действие после ELSE выполняется с помощью оператора 2.

Читайте также:
Как пользоваться программой network cell

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

program Algoritm_vetvlenia; Var x :string; Begin WriteLn (‘Витязь, куда путь держишь?’); ReadLn (x); If x=’Направо’ then writeLn (‘Направо пойдёшь — жену найдёшь’); If x=’Налево’ then writeLn (‘Налево пойдешь — богатым будешь’); If x=’Прямо’ then writeLn (‘Прямо пойдёшь — смерть найдёшь’); ReadLn; End.

Попробовать этот алгоритм в работе можно на любом онлайн-компиляторе, поддерживающим Pascal. Но не стоит на этом останавливаться — лучше всего написать собственную программу, что позволит получить максимальную пользу от урока.

Источник: otus.ru

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

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

Введение

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

Сдай на права пока
учишься в ВУЗе
Вся теория в удобном приложении. Выбери инструктора и начни заниматься!

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

Для реализации разветвляющихся алгоритмических структур в языках программирования предусмотрены следующие типы операторов:

  1. Операторы условных переходов или тип условных операторов.
  2. Тип операторов выбора или операторов вариантов.
  3. Тип операторов безусловных переходов.

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

GOTO определяется как зарезервированное слово, осуществляющее переход на метку. В Турбо Паскале метка — это идентификатор, имеющий произвольный вид, позволяющий выполнить присвоение имени определённому программному оператору и далее осуществлять обращение к нему при помощи ссылок. В качестве меток можно использовать также целочисленные величины без знака. Метку следует располагать непосредственно перед оператором, подлежащим отметке, и необходимо её отделять от оператора знаком двоеточие (:).

Перед использованием метки в программе, она должна быть описана. Описание метки может быть выполнено при посредстве зарезервированного слова LABEL, означающего «метка», после которого следует перечислить все метки. К примеру:

«Разветвляющиеся алгоритмические структуры»
Готовые курсовые работы и рефераты
Решение учебных вопросов в 2 клика
Помощь в написании учебной работы

Label loop, lb1; Begin goto lb1; loop: ……lb1: ……goto loop; End.

Предназначением оператора GOTO является передача управления к необходимому оператору. При использовании меток, необходимо соблюдать следующие правила:

  1. Метки, указанные оператором GOTO, должны обязательно присутствовать в разделе описаний.
  2. Если метки описываются непосредственно в функции, то они могут быть использованы только локально.

При помощи условных операторов можно выполнить проверку некоторого условия и по её результатам назначить дальнейшие операции. Структура условного оператора имеет следующий вид:

IF ∠условие> THEN∠оператор 1> ELSE∠оператор 2>;

Читайте также:
Программа 1с 8 не работает возникшая проблема привела к прекращению работы

Где IF, THEN, ELSE выступают как зарезервированные слова, которые в переводе означают «если», «то», «иначе».

∠условие> определяется как выражение, имеющее логический тип. ∠оператор 1>,∠оператор 2> это операторы языка Турбо Паскаль.

Совокупность ELSE∠оператор 2>, являющаяся фрагментом условного оператора, применяется не всегда и может быть пропущена.

Структурная организация разветвляющегося алгоритма изображена на рисунке ниже:

Структурная организация разветвляющегося алгоритма. Автор24 — интернет-биржа студенческих работ

Рисунок 1. Структурная организация разветвляющегося алгоритма. Автор24 — интернет-биржа студенческих работ

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

Program wetw2; Var maх,х,y:real; Begin write(‘х= ’); readin(х); write(‘y= ‘); readin(y); max:=y; if х>y then max:=х; у тогда max:=x, если это не так, то значение max не меняется> writeln(‘max=’,max:8:2); readin; End.

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

CASE ∠селектор> OF ∠перечень меток варианта>: ∠оператор 1>; ∠перечень меток варианта>: ∠оператор 2>; ∠перечень меток варианта>: ∠оператор З>; ELSE ∠оператор N> END;

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

Если найденное значение селектора не совпадает ни с одной меткой, то исполняется оператор, стоящий за служебным словом ELSE. Следует отметить, эта ветвь ELSE может просто отсутствовать.

Рассмотрим пример программы, использующей оператор варианта. Необходимо заметить, что оператор варианта удобно использовать в случае ввода и вывода величин, используемых скалярных типов информационных данных. Например, в приводимом далее фрагменте программы, следует с внешнего носителя занести порядковый номер объекта из списка значений COLOR. Оператор CPSE задаёт требуемое значение переменной CLR. Аналогичным образом осуществляется вывод величины CLR при помощи оператора варианта:

Program cas; Type color = (red, blue, black); Var х: integer; Clr: color; Begin Write (‘Задайте порядковый номер /0-1-2/ => ‘); Readln (х); Case х of 0: clr:=red; 1: clr:=blue; 2: clr:=black; Else

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

begin ∠оператор 1>; ∠оператор 2>; . . . . . . . . . . . . . . . . . . ∠оператор N> end;

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

Источник: spravochnick.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru