Цикл for блок схема гост

Справочник

Правила оформления блок-схем

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

В блок-схемах нельзя использовать элементы языка программирования.

  • в качестве оператора присваивания в блок-схемах используется двухсимвольный знак ":="
  • в качестве оператора логического сравнения на равенство в блок-схемах используется одинарный символ знак "="
  • в качестве оператора логического сравнения "больше или равно" ("меньше или равно") в блок-схемах используется одинарный символ " ≥ " ( " ≤ " )
  • в качестве логических операторов используются слова AND , OR
  • индексы у элементов массива указываются также, как в математических выражениях: aij .
  • математические выражения записываются согласно всем правилам математики. Особенно это касается выражений с дробями, то есть формула должна записываться следующим образом , а не x1=(-b-sqrt(b*b-4*a*c))/(2*a).

Назначение блоков

Наименование Обозначение Функция
Терминатор Элемент отображает выход во внешнюю среду и вход из внешней среды (наиболее частое применение − начало и конец программы). Внутри фигуры записывается соответствующее действие.
Процесс Выполнение одной или нескольких операций, обработка данных любого вида (изменение значения данных, формы представления, расположения). Внутри фигуры записывают непосредственно сами операции, например, операцию: a := 10 b + c

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

  1. Описать переменные, которые будут использоваться для хранения текущего значения суммы, текущего значения счетчика элементов цикла, а также общего количества суммируемых элементов.
    Примечание: это действие необходимо только для определения количества переменных, которые потребуются алгоритму и потому в блок-схеме эти действия никак не учитываются.
  2. Получить у пользователя число элементов ряда, которые следует просуммировать, то есть ввести данные в программу.
  3. Обнулить переменную, которая будет хранить сумму ряда.
  4. Инициализировать счетчик цикла начальным значением.
  5. Рассчитать значение элемента ряда с номером, равным текущему значению счетчика и прибавить получившееся значение к значению переменной-суммы.
  6. увеличить значение счетчика на единицу.
  7. Если значение счетчика меньше количества суммируемых элементов, которое задано пользователем, то перейти к выполнению пункта 5.
  8. Вывести значение суммы.

Это текстовая запись алгоритма. Теперь реализуем ее в виде графической схемы (блок-схемы).

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

Схе́ма — графическое представление определения, анализа или метода решения задачи, в котором используются символы для отображения данных, потока, оборудования и т. д. [1]

Блок-схема — распространенный тип схем (графических моделей), описывающих алгоритмы или процессы, в которых отдельные шаги изображаются в виде блоков различной формы, соединенных между собой линиями, указывающими направление последовательности. Правила выполнения регламентируются ГОСТ 19.701-90 «Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения» [1] . Стандарт в частности регулирует способы построения схем и внешний вид их элементов.

Содержание

Основные элементы схем алгоритма [ править | править код ]

При начертании элементов рекомендуется придерживаться строгих размеров, определяемых двумя значениями a и b. Значение a выбирается из ряда 15, 20, 25.. мм. Определение размеров несет рекомендательный характер, однако, стоит отметить, что при соблюдении выполнения размеров блок-схемы имеют более аккуратный вид.

Действие [ править | править код ]

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

Данные (ввод/вывод) [ править | править код ]

Символ отображает данные, носитель данных не определен.

Читайте также:  Что лучше ринза или парацетамол

Преобразование данных в форму, пригодную для обработки (ввод) или отображения результатов обработки (вывод). Данный символ не определяет носителя данных (для указания типа носителя данных используются специфические символы).

Предопределенный процесс (функция) [ править | править код ]

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

Вопрос (условие или решение) [ править | править код ]

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

Отображает решение или функцию переключательного типа с одним входом и двумя или более альтернативными выходами, из которых только один может быть выбран после вычисления условий, определенных внутри этого элемента. Вход в элемент обозначается линией, входящей обычно в верхнюю вершину элемента. Если выходов два или три, то обычно каждый выход обозначается линией, выходящей из оставшихся вершин (боковых и нижней). Если выходов больше трех, то их следует показывать одной линией, выходящей из вершины (чаще нижней) элемента, которая затем разветвляется. Соответствующие результаты вычислений могут записываться рядом с линиями, отображающими эти пути. Примеры решения: в общем случае − сравнение (три выхода: > , , = ); в программировании − условные операторы if (два выхода: true , false ) и case (множество выходов).

Ограничитель [ править | править код ]

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

На практике имеют смысл следующие описания ограничителей: начало/конец, запуск/останов, перезапуск (подразумевает перезапуск данной блок-схемы), ошибка (подразумевает завершение алгоритма с ошибкой), исключение (подразумевает исполнение программного исключения)

Цикл [ править | править код ]

Символ, состоящий из двух частей, отображает начало и конец цикла. Обе части символа имеют один и тот же идентификатор. Условия для инициализации, приращения, завершения и т. д. помещаются внутри символа в начале или в конце в зависимости от расположения операции, проверяющей условие.

Пример блок-схемы расчета факториала с использованием цикла [ править | править код ]

Пример вложенных циклов [ править | править код ]

Соединитель [ править | править код ]

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

Разделение алгоритма на две части с использованием соединителей [ править | править код ]

Комментарий [ править | править код ]

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

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

Параллельные действия [ править | править код ]

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

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

Описание других элементов схем можно найти в соответствующих ГОСТ [1] . Среди элементов существуют:

  • Запоминаемые данные
  • Документ
  • Ручной ввод
  • Карта
  • Дисплей
  • Ручная операция
  • Передача управления
  • Альтернативная связь между двумя или более символами
  • и др.

Представление алгоритмов в виде графов [ править | править код ]

Порядок выполнения действий задается путём соединения вершин дугами, что позволяет рассматривать блок-схемы не только как наглядную интерпретацию алгоритма, удобную для восприятия человеком, но и как взвешенный ориентированный граф (т. н. граф-схема алгоритма, ГСА). Подобное представление алгоритмов используется при построении систем логического управления, реализующих заданные управляющие алгоритмы, в задачах распараллеливания вычислений и т. д.

Читайте также:  Фокусное пятно рентгеновской трубки

Критика [ править | править код ]

Распространённой и ошибочной практикой является попытка использования блок-схем для иллюстрации алгоритма на низком уровне (на уровне кода) — то есть, попытка вписывать в блоки схемы фрагменты кода на каком-либо искусственном языке. Такой подход применим только к программам, организованным согласно структурному подходу, и не может отразить, к примеру, алгоритм, который реализуется во взаимодействии абстракций при объектно-ориентированном подходе. Для целей описания алгоритмов, взаимодействия частей системы и иллюстрации многих других сопутствующих вещей существует нотация UML.

ГОСТом предусмотрен единый блок для обозначения различных циклов (Рисунок 11). В блоке, соответствующем началу цикла указывается имя цикла (Как правило, это одна буква латинского алфавита) и начальное значение переменной цикла. В зависимости от оператора цикла, условие окончания записывается либо в блоке, соответствующем началу цикла (для операторов FOR…DO и WHILE…DO), либо в блоке, соответствующем концу цикла (для оператора REPEAT…UNTIL). Аналогично записывается и шаг изменения переменной цикла.

Примеры использования различных операторов цикла

Пример 15.

.

Значения величин A, B, m, n ввести с клавиатуры. Алгоритм решения данной задачи описывается с помощью следующей структурограммы:

Ввод с клавиатуры A, B, m, n; S:=0;
Для I от M до N c шагом +1 делать:
S=S+I 2 /(N+I);
Вывод на экран значение (A+B*S).

WRITELN(‘BBEДИTE A, B, M и N’);

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

• Оператор END начинать с той же позиции, что и соответствующий ему оператор BEGIN. Это удобно в тех случаях, когда в программе используются вложенные составные операторы.

• Оператор DO писать под соответствующим оператором FOR.

• Операторы THEN и ELSE писать под соответствующим оператором IF.

Найти сумму S всех целых чисел, кратных 3 на отрезке [М, N].

Эта задача похожа на предыдущую. Отличие состоит в том, что, просматривая все числа из интервала [М, N], мы должны проверить, делится ли число I без остатка на 3 прежде, чем его суммировать к S. Для проверки деления используется операция mod – деление с остатком целых чисел. Таким образом, условие деления числа I на 3 без остатка будет иметь вид: I mod 3 = 0.

Алгоритм решения этой задачи отличен от предыдущего наличием условия в теле
арифметического цикла и описан с помощью приведенной ниже структурограммы.

PROGRAM PR16;

WRITELN(‘BBEДИTE M И N’);

DO IF I MOD 3 = 0

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

Количество интервалов n, шаг табуляции h и величины Х, Хn связаны между собой формулой:

Интерпретация переменных (т. е. их обозначение в математической постановке задачи, смысл и тип, обозначения в блоксхеме и программе) приведена в таблице имен.

Математ. величина Обозначение в программе Содержательный смысл Тип переменной
n N Число интервалов разбиения [Хо, Хn] integer
Х Х0 Начало промежутка real
Хn XN Конец промежутка real
X X Текущее значение аргумента real
F(X) Y Текущее значение функции real
h Н Шаг табулирования real

Табулировать функцию F(X) в N равноотстоящих точках, заданную на промежутке [Х, Xn], где

WRITELN(‘ВВЕДИТЕ X0, XN, N’);

Теперь запишем решение этой же задачи, но с использованием цикла While. DO.

WRITELN(‘ВВЕДИТЕ X0, XN, N’);

WHILE X k, используются k предыдущих членов последовательности . Для вычислений по этой формуле нужно задать k первых членов последовательности – .

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

Пример 18.

Вычислить значение tgx:

Знаменатель формулы для вычисления tgX представляет собой цепную дробь. Для вычисления такого знаменателя в цикле удобно использовать рекуррентную зависимость с памятью в один член последовательности Аi= F(Ai-1). Для вывода рекуррентной формулы следует использовать таблицу 18.

Читайте также:  Теплая вода из скважины
Номер 1 Член последовательности Величина
A
A1
A2
A3
A4
A5

Из таблицы 23 видно, что рекуррентная формула принимает вид:

DO A := 11 – 2 * I – X * X/A;

Пример19.

Пользуясь рекуррентной формулой, для заданного N вычислить , известны Y, Y1, Y2, a Yi(i≥3) вычисляется по формуле:

.

Математ. величина Обозначение в программе Содержательный смысл Тип переменной
N N Номер последнего члена последовательности SN integer
Y, Yi-3 Y3 Член последовательности с номером i-3 real
Y1, Yi-2 Y2 Член последовательности с номером i-2 real
Y2, Yi-1 YI Член последовательности с номером i-1 real
Yi Y Член последовательности с номером i real
SN S Искомая сумма real

Первым шагом в работе алгоритма является ввод данных Y, Y1, Y2, N. При вводе трех первых значений последовательности нужно использовать рабочие ячейки Y3, Y2 и Y1 соответственно. На втором шаге требуется проанализировать значение N. Если N 2. На этом шаге для I от 3 до N по рекуррентной формуле вычисляются Y, и подсчитывается их сумма S. Найденное значение S на последнем четвертом шаге выводится на экран.

Y3, Y2, Yl, Y, S: REAL;

WRITELN(‘ВВЕДИТЕ Y0, Yl, Y2, N’);

ELSE S := Y3 + Y2 + Y1

THEN FOR I := 3 TO N

Y := LN(ABS(Y1*Y1 + Y3 + 1));

Вложенный арифметический цикл

Под вложенным арифметическим циклом понимают такую алгоритмическую структуру, при которой в тело одного цикла с параметром включен другой цикл со своим параметром. Другими словами составная инструкция:

является признаком вложенного арифметического цикла.

Вычислить

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

PROGRAM PR20;

DO R := R + SQR(K – P);

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

Пример 21.

Используя вложенный цикл, определить число счастливых билетов S, номера которых меняются от 000001 до 999999.

В основе алгоритма решения этой задачи лежит принцип десятичного счетчика, имеющего шесть разрядов. Роль разрядов играют индексы в следующем порядке I, J, К, L, М, N. Счастливым называется такой номер, у которого три левых разряда в сумме равны сумме трех правых разрядов, то есть I+J + K = L + M + N.

I, N, J, K, L, M: INTEGER;

IF I+J + K = L+M + N

WRITELN(‘Число счастливых билетов = ‘, S:6:0)
END.

В связи с тем, что номер 000000 в катушке билетов отсутствует, то этот номер нужно вычесть из найденного числа. Это можно сделать разными способами. В предложенном алгоритме это реализовано так S := -1. Это решение логично. При исходном состоянии счетчика: I = 0, J = 0, К = 0, L = 0, М = 0, N = 0, условие I + J + K = L +М + N принимает значение TRUE, и S становится равным нулю S = -1 + 1 = 0. Таким образом, все переменные приняли исходное значение для дальнейших расчетов.

Основным достоинством вложенного цикла является возможность в выражениях (в заголовке цикла или его теле) использовать параметры внешних циклов. Например, в описанном выше примере, в теле цикла с параметром N используются также текущие значения параметров I, J, К, L, М внешних циклов по отношению к этому циклу. К параметрам внутренних циклов из внешнего цикла не должно быть обращений. Транслятор с Паскаля такие обращения не проверяет, но для внешних циклов значения параметров внутренних циклов не определено. Допускается выход из тела цикла FOR . DO . любого уровня вложения на любой предыдущий
уровень до полного завершения цикла с помощью оператора GOTO, но не рекомендуется это делать. При выходе из цикла (досрочном или нормальном) значение параметра цикла становится неопределенным. Можно непосредственно из цикла завершить работу программы. Для этой цели используют оператор HALT [(Код)], где код — это необязательный параметр, представляющий собой целое число типа WORD, которое является кодом возврата вашего ЕХЕ модуля.

Пример 22.

Вычислить . Вычисления остановить при выполнении условия .

Для решения этой задачи удобно использовать оператор цикла с предусловием
WHILE . DO.

WHILE I * EXP(-I * LN(2)) > E

Пример 23.

Вычислить с точностью ε квадратный корень из величины .
Вычисление проводить по рекуррентной формуле:

выбрав в качестве начального приближения величину

При решении подобных задач условие остановки вычислительного процесса
формулируется следующим образом: | Yi — Yi-1 | = 1 THEN Y:= Y/2;

Оцените статью
Добавить комментарий

Adblock detector