Базовые алгоритмические структуры

Таким образом, программирование – это наука о том, как заставить компьютер делать то, что нам нужно, и так, как нам нужно.

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

6.3.1. Последовательная (линейная) алгоритмическая структура

Эта структура – самая простая. Её элементы образуют простую последовательность (цепочку), в которой они и выполняются друг за другом, никогда не нарушая и не прерывая эту цепочку - линейно - от начала к концу (рис.10.2).

Y = x + x3 - 35
Начало Начать выполнение операций

х = 2
Назначить х = 2

 

Вычислить выражение x + x3 – 35 и присвоить его

переменной Y

x, Y
Напечатать значения x и Y

 

Конец Закончить выполнение операций

Рис. 6.2. Графическая форма алгоритма, пояснённая псевдокодом

6.3.2. Ветвящаяся (разветвлённая) структура

Иногда её называют "структура с условием (условиями)". Сердцевиной такой структуры действительно является операция проверки некоего условия, в результате которой дальнейшее выполнение алгоритма может идти по одному из предусмотренных путей. Например, такие ветвящиеся структуры:

           
   
     
нет
 

 


условие условие

       
 
   
 

 


 

Ветвящиеся структуры

Рис. 6.3. С одной ветвью Рис. 6.4. С двумя ветвями

         
 
Этой структуре соответствует такой псевдокод: Если результат проверки <условия> "да", то выполнить <оператор1>, если "нет" – то пропустить выполнение <оператора1>, после чего продолжить работу
   
Этой структуре соответствует такой псевдокод: Если результат проверки <условия> "да", то выполнить <оператор1>, если "нет" – то выполнить <оператор2>, после чего продолжить работу  
 
 
   
В алгоязыке этой структуре соответ- ствует оператор:  
     
В алгоязыке этой структуре соответ- ствует оператор:  
 

 


If <усл-е> THEN <опер1> End If If <усл-е> THEN <опер1> ELSE <опер2> End If

ключ = 20
ключ = 20

Select Caseключ

нет
Case 1

ключ = 1,2,…20 Опер-р 1

Case 2

да

Опер-р 2

Опер-р 20
Опер-р 2
<>20
Опер-р 1
………..

…… Case 20

Опер-р 20

Опер-р N
Case ElseОпер-р N

End Select

 

Рис. 6.5. С несколькими (N) альтернативными ветвями (справа - соответствующий оператор алгоязыка)

 

Пусть ключ = 20 (количество вариантов выбора пути решения) Если ключ = 1, то выполнить <оператор1>, если ключ = 2, то выполнить <оператор2>, … дальнейшие проверки значения ключа … если ключ = 20, то выполнить <оператор20>, если ключ НЕ равен ни одному из значений списка 1,2, … 20, то выполнить <операторN>
В псевдокоде такая варианту разветвлённой структуры соответствует запись:

 

 

6.3.3. Циклические структуры (от греч. kiklos – круг)

Договоримся, что "тело цикла" – это некоторый набор операций, которые должны повторно выполняться раз за разом, пока не наступит момент завершения повторов (циклов). Причём, тело цикла может представлять собой любую алгоритмическую структуру, в том числе, и циклическую. Выделяют 3 циклических структуры: цикл с предусловием (условие для выполнения цикла проверяется перед его началом), цикл с постусловием (условие проверяется после первого выполнения цикла) и цикл с заданным (вычисляемым) числом повторов.



 

 
 


нет

условие Do While <условие>

       
 
   
 


тело цикла

 
 
тело цикла

 


Wend

 
 


Рис. 6.6. Блок-схема и оператор выполнения цикла с предусловием

Проверить <условие> Если оно несправедливо – не выполняется - ("нет"), то выйти из цикла. Если оно справедливо ("да"), то выполнить тело цикла, Вернуться к новой проверке условия
В псевдокоде такому варианту циклической структуры соответствует запись:

 

 

Заметим: для того, чтобы алгоритм не "зацикливался" до бесконечности, обычно в теле цикла предусматривают изменение значений, входящих в проверяемое <условие>. И в какой-то из проверок это условие, наконец, нарушается, приводя к выходу из цикла.

 
 


Do (делай)

тело цикла

тело цикла

 
 

 


Условие Loop (While) <условие> (пока усл-е истинно)

       
 
да
 
   

 


Рис. 6.7. Блок-схема и оператор выполнения цикла с постусловием

 

Этот вариант циклической структуры, вроде бы, мало отличается от предыдущего - условие проверяется не до входа в цикл, а после этого.

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

Третий вариант организации цикла отличается от первых двух своей изначальной определённостью. Если в тех вариантах трудно заранее определить, когда именно закончится выполнение циклов, то это - цикл, в котором число повторов тела цикла определено (явно или неявно). Он так и называется

"циклс заданнымчисломповторов" (см. рис. 6.8):

 
 
В алгоязыке этому соответствует:


i нач.знач.
For I = <нач.знач.> to <кон.знач> step <шаг>   . .   Тело цикла . . Next(модификация знач-я переменной i)

 
 


нет

i <> кон. знач.?

 
 


тело цикла

 
 

 


i = i + шаг

 
 


Рис. 6.8. Блок-схема и оператор выполнения цикла с заданнымчисломповторов (как правило – он подчиняется закону арифметической прогрессии)

В Н И М А Н И Е ! Шаг может быть и отрицательным!

Задать: начальное значение счётчика i, Проверить условие i <> (не равно) <конечное значение> Если оно несправедливо ("нет"), то выйти из цикла. Если - справедливо ("да"), то перейти к выполнению тела цикла. После этого увеличить i на величину <шага> и вернуться к новой проверке условия
В псевдокоде такому варианту циклической структуры соответствует запись:









Последнее изменение этой страницы: 2016-04-20; Нарушение авторского права страницы

infopedia.su не принадлежат авторские права, размещенных материалов. Все права принадлежать их авторам. Обратная связь