Общепринятыми способами записи являются: графическая запись с помощью схем и символьная запись с помощью какого-либо алгоритмического языка.
Схема алгоритма — это графический способ представления алгоритма, каждое действие при этом изображается в виде последовательности связанных символов. Порядок выполнения действий указывается стрелками. Написание алгоритмов с помощью функциональных символов регламентируется: ГОСТ 19.701-90 — ЕСПД. Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения. Внешний вид основных функциональных символов, применяемых при написании схем алгоритмов, приведён в табл. 1.
Таблица 1
Название | Символ (рисунок) | Выполняемая функция (пояснение) |
1. Процесс | Символ отображает функцию обработки данных любого вида (выполнение определённой операции или группы операций, приводящее к изменению значения, формы или размещения информации или к определению, по которому из нескольких направлений потока следует двигаться). | |
2. Решение | Символ отображает решение или функцию переключательного типа, имеющую один вход и ряд альтернативных выходов, один и только один из которых может быть активизирован после вычисления условий, определённых внутри этого символа. | |
3. Данные | Символ отображает данные, носитель данных не определён. | |
4. Документ | Символ отображает данные, представленные на носителе в удобочитаемой форме (машинограмма, документ для оптического или магнитного считывания, микрофильм, рулон ленты с итоговыми данными, бланки ввода данных). | |
5. Граница цикла | Символ, состоящий из двух частей, отображает начало и конец цикла. Обе части символа имеют один и тот же идентификатор. Условия для инициализации, приращения, завершения и т.д. помещаются внутри символа в начале или в конце, в зависимости от расположения операции, проверяющей условие. | |
6. Предопределённый процесс | Символ отображает предопределённый процесс, состоящий из одной или нескольких операций или шагов программы, которые определены в другом месте (в подпрограмме, модуле). | |
7. Соединитель | Символ отображает выход в часть схемы и вход из другой части этой схемы и используется для обрыва линии и продолжения её в другом месте. | |
8. Терминатор | Символ отображает выход во внешнюю среду и вход из внешней среды (начало или конец схемы программы, внешнее использование и источник или пункт назначения данных). | |
9. Ручной ввод | Символ отображает данные, вводимые вручную во время обработки с устройств любого типа (клавиатура, переключатели, кнопки, световое перо, полоски со штриховым кодом). | |
10. Дисплей | Символ отображает данные, представленные в человекочитаемой форме на носителе в виде отображающего устройства (экран для визуального наблюдения, индикаторы ввода информации). |
Правила построения схем алгоритмов:
- схема алгоритма строится сверху вниз;
- в любой схеме алгоритма имеется только один элемент, соответствующий началу алгоритма, и один элемент, соответствующий концу алгоритма;
- должен быть хотя бы один путь из начала схемы алгоритма к любому элементу;
- должен быть хотя бы один путь от каждого элемента в конец схемы алгоритма.
Основные методы технологии построения алгоритмов.
1. Метод структурного построения – любой алгоритм может быть построен из комбинации трёх базовых структур: линейный алгоритм (следование), разветвляющийся алгоритм (развилка) и цикличный алгоритм (повтор).
2. Метод нисходящей разработки – первоначально выделяются главные функции, затем второстепенные.
3. Метод пошаговой декомпозиции.
4. Метод модульности (модель – логически связанные фрагменты программы, выполняющие одну функцию и состоящие из обозримого числа шагов).
Например, требуется построить схему алгоритма для вычисления значения функции z(x)= , при x = 10. Результат вывести на экран монитора.
Используя символы таблицы 3.1 и приведённые правила построения схем алгоритмов, получим (рис. 3.1):
Входные параметры алгоритма: x=10.
Выходные параметры алгоритма: z(10).
Задание 1. Установите порядок выполнения операций для вычисления значения выражения Y=3*(X-Z)3 + 2*Z.
? Y=Y+Y+Y
? Y=Y+2*Z
? Y=Y*Y*Y
? Y=X-Z
Задание 2. Установите порядок выполнения операций так, чтобы при начальных значениях x=N+2, y=N-3, z=2*N (где N — номер студента по журналу) результирующим стало значение z=10.
? z = z*z — 4*z
? x = x-2*y
?
? x = x*x
? z = 4*x — z
Задание 3. На рис. 1 предложен алгоритм вычисления значения переменной C в зависимости от начальных условий X и Y.
а) Чему будет равно значение переменной С в результате выполнения алгоритма (рис. 1) при начальных условиях (см. табл. 2)
б) Какая ошибка допущена в схеме алгоритма на рис. 1?
в) Как производится ввод данных (начальных условий) алгоритма (рис. 1) и куда выводится результат работы данного алгоритма?
Таблица 2
X=1 | X=4 | X=-3 | X=0 | X=-1 | X=7 | X=3 | X=8 | X=2 | X=-3 | X=-6 | X=1 | X=5 | X=-4 | X=4 |
Y=-2 | Y=8 | Y=1 | Y=5 | Y=-1 | Y=3 | Y=-4 | Y=11 | Y=5 | Y=-1 | Y=0 | Y=-2 | Y=8 | Y=-3 | Y=9 |
Задание 4. Задан фрагмент алгоритма (рис. 2).
а) Какие значения примут переменные k и z в результате выполнения данного алгоритма с начальными значениями из табл. 2?
б) Изменятся ли значения переменных k и z в результате выполнения данного алгоритма при тех же начальных условиях (табл. 2), если во втором символе «Решение» условие изменить на (z
Чему в этом случае будут равны значения переменных k и z?
Рис. 2.
Задание 5. Укажите пропущенный фрагмент в алгоритме (рис. 4):
а) определяющем количество положительных элементов в массиве G[i],
б) определяющем количество отрицательных элементов в массиве G[i],
Задание 6. Как необходимо изменить алгоритм (рис. 4), чтобы он
а) определял сумму всех элементов массива G;
б) определял сумму всех чётных элементов массива G;
в) произведение всех элементов массива G;
г) произведение всех нечётных элементов массива G.
Рис. 4.
Задание 7. Задан одномерный массив A1, A2, A3, …, An. Что определяет указанный на рис. 5 фрагмент алгоритма?
Рис. 5.