Лекция 5.2. Блок-схемы алгоритма

Алгоритмы решения задач

Логическая структура алгоритма решения любой задачи может быть выражена комбинацией трех базовых структур: следования, ветвления и цикла (это содержание теоремы Бема – Якопини).

Линейная структура (следование) самая важная из структур. Она означает, что действия могут быть выполнены друг за другом (рис. 5.2.1.).

Выполнить B
Выполнить А
Вход Выход

           
  Лекция 5.2. Блок-схемы алгоритма - student2.ru   Лекция 5.2. Блок-схемы алгоритма - student2.ru   Лекция 5.2. Блок-схемы алгоритма - student2.ru

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

Пример 5.2.1.

Лекция 5.2. Блок-схемы алгоритма - student2.ru Опишем алгоритм сложения двух чисел на псевдокоде и в виде блок-схемы (рис. 5.2.2.).

1. Псевдокод:

2. Лекция 5.2. Блок-схемы алгоритма - student2.ru Ввод двух чисел a, b

3. Вычисляем сумму S = a + b

4. Лекция 5.2. Блок-схемы алгоритма - student2.ru Вывод S

5. Конец.

 
  Лекция 5.2. Блок-схемы алгоритма - student2.ru

S= a + b

 
  Лекция 5.2. Блок-схемы алгоритма - student2.ru

Рис. 5.2.2. Блок - схема к примеру 5.2.1.

Ветвление (развилка) – это структура, обеспечивающая выбор между двумя альтернативами. Выполняется проверка условия, а затем выбирается один из путей (рис. 5.2.3). Если условие имеет значение «Истина», то выполняется «Действие А». Если условие имеет значение «Ложь», выполняется «Действие В». Эта структура называется, также «Если – ТО – ИНАЧЕ» или «развилка». Каждый путь (ТО или ИНАЧЕ) ведет к общей точке слияния, так что выполнение алгоритма продолжается независимо от того, какой путь был выбран. Может оказаться, что для одного из результатов проверки ничего выполнять не надо. В этом случае можно применить только один обрабатывающий блок (рис. 5.2.4).

Лекция 5.2. Блок-схемы алгоритма - student2.ru Вход

 
  Лекция 5.2. Блок-схемы алгоритма - student2.ru

Ложь (НЕТ) Истина (ДА)

 
  Лекция 5.2. Блок-схемы алгоритма - student2.ru

Выход

Рис. 5.2.3. Полное ветвление

 
  Лекция 5.2. Блок-схемы алгоритма - student2.ru

Вход

Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru ДА НЕТ

 
 
Действие А

Рис. 5.2.4. Структура «непол-

Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru ное ветвление»

Выход

Такая структура называется «неполным ветвлением» или «неполной развилкой».

Пример 5.2.2.

Вывести значение наибольшего числа из двух чисел (рис. 5.2.5).

Лекция 5.2. Блок-схемы алгоритма - student2.ru Псевдокод:

1. Ввод двух чисел a, b

2. Лекция 5.2. Блок-схемы алгоритма - student2.ru ЕСЛИ a>b, ТО «выводим a»,

ИНАЧЕ «выводим b»

3. Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru

Max= b
Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru
Max= a
Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Конец.

НЕТ ДА

Рис. 5.2.5. Блок – схема к примеру 5.2.2.

 
  Лекция 5.2. Блок-схемы алгоритма - student2.ru

Цикл (или повторение) предусматривает повторное выполнение некоторого набора команд алгоритма. Циклы позволяют записать длинные последовательности операций обработки данных с помощью небольшого числа повторяющихся команд. Различают два типа циклов: «цикл с предусловием» и «цикл с постусловием».

Цикл с предусловием («Пока») (рис. 5.2.6).

Лекция 5.2. Блок-схемы алгоритма - student2.ru

Тело цикла
Истина Выход

           
    Лекция 5.2. Блок-схемы алгоритма - student2.ru
  Лекция 5.2. Блок-схемы алгоритма - student2.ru   Лекция 5.2. Блок-схемы алгоритма - student2.ru
 

Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Ложь

Рис. 5.2.6. Структура цикла «Пока».

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

Пример 5.2.3.

Вычислить сумму 100 чисел (рис. 5.2.7).

Псевдокод:

1. НАЧ

2. I =1; S = 0

3. ПОКА i<=100 делать

НЦ

4. Ввести ai

5. S = S + ai

6. i = i + 1

КЦ

7. Вывод S

8. Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru

i=1; S=0
Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Конец.

НЕТ

ДА

Лекция 5.2. Блок-схемы алгоритма - student2.ru

 
  Лекция 5.2. Блок-схемы алгоритма - student2.ru

Рис. 5.2.7. Блок – схема к примеру 5.2.3 с циклом «Пока»

Цикл с постусловием («До»).

Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru

Тело цикла
Лекция 5.2. Блок-схемы алгоритма - student2.ru В отличие от цикла с предусловием, тело цикла с постусловием всегда будет выполнено хотя бы один раз, после чего проверяется условие. В этой конструкции тело цикла будет повторяться до тех пор, пока значение логического выражения ложно. Как только оно становится истинным, выполнение тела цикла прекращается (рис. 5.2.8).

Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Вход Истина

Ложь Выход

Рис. 5.2.8. Структура «цикла с постусловием».

Пример 5.2.4.

Вывести максимальное значение из 100 натуральных чисел (рис. 5.2.9).

Псевдокод:

1. Начало

2. Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru

Max=a1; i=2
max = ai
Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru
i = i + 1
Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Ввести a1

3. max = a1; i = 2

4. НЦ

a. Ввести ai

b. ЕСЛИ max < ai ТО max = ai

c. i = i + 1

5. ДО I>100;

6. КЦ

7. Лекция 5.2. Блок-схемы алгоритма - student2.ru Вывести max.

8. Конец.

Истина

 
  Лекция 5.2. Блок-схемы алгоритма - student2.ru

Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru

 
  Лекция 5.2. Блок-схемы алгоритма - student2.ru

Лекция 5.2. Блок-схемы алгоритма - student2.ru Ложь Истина

 
  Лекция 5.2. Блок-схемы алгоритма - student2.ru

Рис. 5.2.9. Блок – схема к примеру 5.2.4. с циклом «До»

Базовые алгоритмические структуры можно комбинировать одну с другой – как путем организации их следования, так и путем создания суперпозиций (вложений одной структуры в другую). Используя описанные структуры, можно полностью исключить использование каких-либо еще операторов условного и безусловного перехода, что является важным признаком структурного программирования. Приведем несколько примеров (рис. 5.2.10, 5.2.11, 5.2.12, 5.2.13).

 
  Лекция 5.2. Блок-схемы алгоритма - student2.ru

Лекция 5.2. Блок-схемы алгоритма - student2.ru -

       
    Лекция 5.2. Блок-схемы алгоритма - student2.ru
  Лекция 5.2. Блок-схемы алгоритма - student2.ru
 

+

 
  Лекция 5.2. Блок-схемы алгоритма - student2.ru

- +

       
  Лекция 5.2. Блок-схемы алгоритма - student2.ru
    Лекция 5.2. Блок-схемы алгоритма - student2.ru
 

Рис. 5.2.10. Алгоритм типа «развилка, вложенная в цикл, с предусловием», для нахождения суммы положительных чисел и N возможных

 
  Лекция 5.2. Блок-схемы алгоритма - student2.ru

Лекция 5.2. Блок-схемы алгоритма - student2.ru - +

       
  Лекция 5.2. Блок-схемы алгоритма - student2.ru   Лекция 5.2. Блок-схемы алгоритма - student2.ru
 

Лекция 5.2. Блок-схемы алгоритма - student2.ru -

       
    Лекция 5.2. Блок-схемы алгоритма - student2.ru
  Лекция 5.2. Блок-схемы алгоритма - student2.ru
 

+

       
    Лекция 5.2. Блок-схемы алгоритма - student2.ru
 
  Лекция 5.2. Блок-схемы алгоритма - student2.ru

Рис. 5.2.11. Алгоритм типа «цикл, с предусловием, вложенный в неполную развилку»

Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru - +

Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Лекция 5.2. Блок-схемы алгоритма - student2.ru Рис. 5.2.12. Алгоритм типа «неполная развилка, вложенная в пол-

- + ную развилку». Лекция 5.2. Блок-схемы алгоритма - student2.ru

 
  Лекция 5.2. Блок-схемы алгоритма - student2.ru

Вопросы для самоконтроля

1. Дайте определение алгоритма и поясните его.

2. Какие формы представления алгоритма вы знаете?

3. В чем особенности графического представления алгоритма?

4. Назовите основные (базовые) алгоритмические структуры?

5. Перечислите свойства алгоритмов и объясните, чем они определены.

Наши рекомендации