- •Пояснительная записка
- •Основы теории алгоритмов
- •Понятие алгоритма
- •Свойства алгоритма
- •Способы описания алгоритма
- •Условные графические обозначения, используемые в схемах алгоритмов и программ, правила их выполнения
- •Примеры применения символов при выполнении схем алгоритмов и программ
- •Типы алгоритмов
- •Линейные алгоритмы
- •Алгоритмы ветвящейся структуры
- •Алгоритмы циклической структуры
- •Циклы с известным числом повторений
- •Циклы с неизвестным числом повторений (итерационные)
- •Массивы
- •Выписка из гост 19.701-90 (исо 5807-85) Схемы алгоритмов, программ, данных и систем Условные обозначения и правила выполнения
- •Примеры выполнения алгоритмов
- •Индивидуальные задания
- •Библиографический список
- •Содержание
Типы алгоритмов
Алгоритмы любых вычислительных процессов могут быть трех типов:
1) линейные;
2) ветвящиеся;
3) циклические: а) с известным числом повторений; б) с неизвестным числом повторений (итерационные - приближенные).
При решении любой задачи можно воспользоваться несколькими алгоритмами, каждый из которых приводил бы к получению результата ее решения. Из всех возможных алгоритмов следует выбрать наилучший в смысле некоторого критерия. Часто в качестве критерия используют либо оценку точности решения задачи, либо затраты времени на ее решение, либо некоторый интегральный критерий, включающий оценки точности и затрат времени.
Линейные алгоритмы
Линейные алгоритмы представляют собой ряд действий, которые выполняются последовательно от начала до конца программы (структура следования). Инженерные задачи при расчетах каких-либо устройств или схем по формулам часто выполняются по линейным алгоритмам.
Наибольшая часть реальных практических задач представляет собой циклические и ветвящиеся алгоритмы. Однако в составе самих ветвящихся и циклических алгоритмов есть линейные участки.
Пример 1. Составить схему алгоритма вычисления медиан треугольника со сторонами a, b, c по формулам (рис. 17):
При организации решения задачи для исключения повторений сначала вычислим величины 2a2, 2b2, 2с2.
Пример 2. Составить схему алгоритма вычисления значения функций (рис. 18):
y
= (e-x1+e-x2)/2
и
где
Промежуточные результаты присваиваем произвольно выбранным переменным. При наименовании переменных в имя переменной вкладывают смысл. Например, r2 — числитель второй дроби в блоке 5; r1 — числитель первой дроби в блоке 6; Зн — знаменатель в блоке 7.
Рис. 17.
Рис. 18.
Алгоритмы ветвящейся структуры
Часто в зависимости от каких-либо значений промежуточных результатов необходимо организовать вычисление либо по одним, либо по другим формулам, т. е. в зависимости от результата выполнения некоторого логического условия вычислительный процесс должен идти по одной или другой ветви. Алгоритм такого вычислительного процесса называется алгоритмом ветвящейся структуры. В общем случае количество ветвей в таком алгоритме не обязательно равно двум.
Рис. 19.
Пример 3. Составить схему алгоритма вычисления значения функций А (рис. 20):
если x>3;
если x≤3.
Требуется вычислить значение A либо по одной, либо по другой формуле, в зависимости от значения x>3 или x≤3.
В блоке 1 осуществлен ввод переменных x и y. Блок 2 осуществляет ветвление вычислительного процесса. Внутри блока записывается условие. Из такого блока два выхода: один на ответ «да», другой - на ответ «нет». При ответе «да» на условие «x>3» следует А присвоить значение х2+у2, а при ответе «нет» А присвоить значение х-у2. После вычисления требуется осуществить вывод значения А, что и делаем в блоке 4. Таким образом, в зависимости от введенной переменной x (у может иметь любое значение) ход вычислительного процесса будет идти или по блокам 1, 2, 5, 4 (если x>3), или по блокам 1, 2, 3, 4 (если x≤3).
Рис. 20.
Пример 4. Составить схему алгоритма вычисления функции у (рис. 21):
если x>0,5;
если 0,3<x≤0,5;
если 0,2<x≤0,3;
если 0,1<x≤0,2;
если x≤0,1.
Ставится задача вычисления значения у по одной из пяти формул в зависимости от значения переменной х.
Рис. 21.
На выходе из блока 2 по ответу «да» имеем значение x>0,5 и в блоке 3 вычисляем y.
На выходе из блока 2 по ответу «нет» имеем значения x≤0,5 и в блоке 4 отбираем значения x>0,3. Записывать в блоке 4 условие 0,3<x≤0,5 не стоит, так как на входе в блок 4 уже имеем значения x≤5 (либо двойное условие записывают через логические связки – «и», «или»). При выходе из блока 4 на ответ «да» получаем значения 0,3<x≤0,5 и вычисляем у в блоке 5, а на ответ «нет» значение x≤З.
Дальнейший ход рассуждений аналогичен приведённому. Необходимо обратить внимание на то, что при ветвлении на n веток при построении алгоритма имеем n-1 логических блоков. Ветвящийся алгоритм можно создавать в соответствии с поставленной задачей и структурой программы, где количество блоков «решение» будет соответствовать количеству структурных логических операторов в программе.
Пример 5. Составить схему алгоритма вычисления величины y по заданному значению аргумента x (рис. 23). Функция y = f(x) задана графически (рис. 22):
Рис. 22.
Как видно на графике, для значений аргумента x<2 функция задана прямой, пересекающей ось x под углом 45° в точке x = 0, а для нее уравнение имеет вид у = х. На отрезке 2≤x<3 график функции параллелен оси x, т. е. для этих значений аргументов у = 2. Для значения x≥3 график функции снова представляет собой прямую под углом 45°, и аналитическая зависимость: y = x – 1.
Рис. 23.
П
если x≠y;
если x=y;
г
если
a>b;
если
a=b;
если
a<b;
если a<20;
если a=20;
если a>20.
В зависимости от введенных значений а и b значение х будет вычислено по одной из трех формул к точке входа в блок 7. К точке входа в блок 12 будут вычислены х и у. В блоках 13 или 14 будет вычислена величина z, в зависимости от соотношения вычисленных в предыдущих блоках величин х и у.
Рис. 24.
Пример 7. Составить схему алгоритма нахождения максимального числа среди трех элементов (рис. 25):
M=max(a,b,c).
Приведены два варианта составления алгоритма поставленной задачи (рис.25, 26).
В первом варианте (рис. 25, а) в блоке 2 сравнивают две переменные а и b, и в зависимости от того, какая величина больше, искомой переменной М присваивают значение наибольшего из а и b. Таким образом, к блоку 5 переменная М будет иметь значение наибольшего из двух чисел a и b. В блоке 5 полученное значение М сравниваем с третьей переменной с, и в зависимости от того, больше ли М переменной с или нет, оставляем старое значение М или присваиваем ей значение переменной с. В блоке 7 выводим полученное значение М, которое равно наибольшему из трёх переменных. Второй вариант (рис. 25, б) более длинный и громоздкий.
Рис. 25.
Аналогичные схемы будут и при вычислении максимального (минимального) значения для четырех величин, но во втором варианте это крайне усложнит алгоритм. Для обработки большого количества переменных из них создают массив, который обрабатывается циклическим процессом.
П
если
a>0;
если
a<0;
если
a=0.
Рис. 26.
