"Универсальная" блок-схема и 3 типовых алгоритма :)
Дважды за день заходила речь об одном и том же, да и жаль выкидывать пару картинок, могут ещё понадобиться. Речь шла об изображении базовых типовых алгоритмов, связанных с расчётом какой-либо элементарной характеристики последовательности (массива) - суммы, количества, произведения, максимума, минимума и т.п. В картинках не показаны "начало" и "конец", только содержательная часть.
ГОСТовские "перевёртыши" на практике крайне неудобны, классическое изображение с помощью "ромбика" часто сбивает начинающих с толку похожестью на обычное ветвление (плюс они забывают делать шаг в конце тела цикла), а вот значок "цикла с параметром", если отказаться от паскалевского шага, непременно равного единице, удобен и нормально воспринимается.
I Алгоритм табулирования (составление списка или таблицы)
Алгоритм табулирования (составление списка или таблицы)
Что писать в фигурках вместо цифр?
1. Примем, что управляющая переменная цикла называется x
, а здесь зададим её начальное (x1
) и конечное (x2
) значения, а также шаг изменения dx
. Это можно записать присваиванием x1=0,x2=1,dx=0.1
или поставить вместо прямоугольника параллелограмм (оператор ввода) с подписью "ввод x1,x2,dx
";
2. Обычно внутри значка "цикл с параметром" (цикл, пределы изменения и шаг управляющей переменной которого известны) пишут что-то вроде псевдокода: "для x от x1 до x2 шаг dx
" или то же самое в форме x=x1,x1+dx..x2
или просто x=x1,x2,dx
;
3. Для очередного x
вычислить y=f(x)
. Этот шаг может включать несколько действий и предполагать вставку дополнительных блоков "расчёт" или условных операторов;
4. Вывести строку таблицы: вывод x, f(x)
II. Алгоритм вычисления суммы, количества или произведения нужных элементов последовательности
Алгоритм вычисления суммы, количества или произведения нужных элементов последовательности
Вместо цифр в элементах блок-схему указываем:
1. Для каждой искомой величины задать по переменной и присвоить ей начальные значения: сумме s=0
, количеству k=0
, произведению p=1
(на самом деле, это не совсем корректно, но для обсуждаемого уровня сойдёт);
2. Выполняется как в задаче I;
3. Считаем очередной элемент последовательности y=f(x)
, с тем же замечанием, что к задаче I;
4-5. Если y
отвечает условию задачи (проверка на шаге 4), сумма на шаге 5 ищется в виде s=s+f(x)
, количество в виде k=k+1
, произведение в виде p=p*f(x)
. При нескольких искомых величинах блок вида 4-5 может повторяться несколько раз;
6. По выходе из цикла выводим найденную величину или величины.
III. Алгоритм поиска максимума или минимума
Блок схема задачи II годится и для этого случая.
1. Для каждого максимума или минимума задать по переменной (примем, что минимум обозначен min
, а максимум - max
) и присвоить каждой переменной начальные значения: максимуму – заведомо малое значение (например, -1030, оператор будет иметь вид Max=-1030
) или первый элемент последовательности (массива); минимуму присвоить заведомо большое значение (например, 1030) или первый элемент последовательности;
2-3. Выполняются как в задачах I-II, с теми же замечаниями.
4-5. Для поиска максимума проверяется условие 4 f(x)>max
, выполняется действие 5 вида max=f(x)
, дли минимума проверяется условие 4 f(x)<min
и выполняется действие 5 вида min=f(x)
. С чем сравнивали max
или min
, то им и присваиваем.Могут понадобиться дополнительные условия, связанные логической операцией "И" либо "ИЛИ" с основным, например, поиск максимального из отрицательных элементов предполагает проверку y<0 and y>max
;
6. По выходе из цикла выводим найденную величину или величины.
Несмотря на обилие средств для рисования блок-схем, удобнее простого Paint из Win7 и выше для этой цели ничего пока не придумали :)
IV. Схема ввода и обработки элементов одномерного массива
Как правило, ввод, обработка или вывод одномерного массива (вектора, списка) выполняется поэлементно с помощью цикла с параметром (цикла "for"). Счётчиком цикла служит номер элемента в массиве (обычно применяется нумерация с единицы). Ниже показаны ввод и обработка массива x
из 6 элементов.
Схема ввода и обработки элементов одномерного массива
V. Реализация алгоритма в кратных (вложенных) циклах
Основное отличие – все действия над матрицей (таблицей) выполняются поэлементно в двойном цикле следующего вида:
Блок-схема двойного цикла с параметром
Здесь показан ввод матрицы A
из 6 строк и 4 столбцов, а счётчиками внешнего и внутреннего цикла с параметром служат номера строки (i
) и столбца (j
) в матрице. Обработка и вывод элементов матрицы могут быть реализованы аналогичными конструкциями, часто, если элементы обрабатываются последовательно и независимо друг от друга, ввод и обработку или обработку и вывод можно объединить.
31.10.2016, 21:46 [12835 просмотров]