Блок-схемы ветвлений (условного оператора) и циклов в Pascal

Создано: 10.04.2026

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

Блок-схемы можно рисовать от руки на бумаге, в любом графическом редакторе, инструментами рисования офисных приложений. Также существует специализированное программное обеспечение для создания различных типов диаграмм, в том числе блок-схем. Одним из таких является draw.io. Все нижеследующие схемы нарисованы в этом приложении. Разработка и черчение блок-схем требует определенного навыка, поэтому этот урок носит в основном ознакомительный характер.

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

Блок-схема условного оператора if-else

Верхняя стрелка, направленная в ромб, обозначает вход в условный оператор. На языке блок-схем ромб — это проверка условия. Можно считать, в данном случае это заголовок условного оператора. От него отходят две стрелки. Одна подписана как "правда" и уходит в код тела if, другая — как "ложь" и уходит в код тела ветки else.

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

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

Блок-схема сокращенной формы условного оператора (только ветка if)

Блок-схема цикла while похожа на таковую условного оператора. Однако из блока тела цикла стрелка уходит не за пределы циклического оператора, а опять в его заголовок, к проверке условия. Выход из цикла возможен только по "ложному пути".

Блок-схема цикла while

Для цикла с постусловием, который в Паскале представлен оператором repeat...until..., поток выполнения обратный. Стрелка выходит не из условия–ромба и входит в тело–прямоугольник, а наоборот. Стрелка выходит из прямоугольника и входит в ромб. Выход из цикла осуществляется по стрелке "правда".

Блок-схема цикла с постусловием (repeat в Паскале)

Блок-схема цикла for почти дублирует while. Однако в заголовке for используется не условие, а скорее задается диапазон значений для переменной счетчика, то есть выполняются подготовительные действия для цикла, что обозначается удлиненным шестиугольником, а не ромбом. Условием продолжения цикла является попадание текущего значения счетчика в заданный диапазон. Уместно сказать "да", если попадает, и "нет", если значение вышло за пределы.

Блок-схема цикла со счетчиком (for)

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

Вариация представления в пространстве блок-схемы цикла со счетчиком

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

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

var i, n, q: integer;
begin
    readln(n);
    q := 0;

    for i:=2 to n div 2 do
        if n mod i = 0 then begin
            write(i, ' ');
            q := q + 1;
        end;

    writeln('(всего делителей: ', q, ')');
end.
165
3 5 11 15 33 55 (всего делителей: 6)

Блок-схема для нее с выражениями на языке Pascal в геометрических примитивах может быть такой:

Блок-схема программы на Pascal, которая определяет делители числа

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

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

Блок-схема программы на Pascal с вложенными в ветви условного оператора циклами

Задания для дополнительной или самостоятельной работы:

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