Лекция 8. Понятие алгоритма. Свойства алгоритма. Способы записи. Структура алгоритма. Базовые алгоритмические конструкции: следование, ветвление, циклы и их программная реализация на алгоритмическом языке. Понятие алгоритма является одним из основных понятий в современной математики, т.к. нахождение приемлемого алгоритма для различных классов задач является одной из целей математики. Алгоритм – точно определенное правило действий, для которого задано указание, как и в какой последовательности, это правило необходимо применять к исходным данным задачи, чтобы получить ее решение. Как известно ЭВМ выполняет только элементарные арифметические и логические действия. Поэтому обязательным условием решения задачи на ЭВМ является возможность приведения вычислительного процесса по реализации конкретной задачи к четырем элементарным операциям арифметики и логическим операциям с помощью последовательности действий задаваемых алгоритмом. Основными характеристиками (свойствами) алгоритма являются следующие: Свойства алгоритма определенность – набор указаний должен быть понятен исполнителю и однозначен, т.е. описание любого действия в алгоритме не должно быть истолковано по разному любыми двумя исполнителями; массовость – алгоритм должен быть пригоден для решения не одной, а целого класса задач данного типа; дискретность – означает возможность разбиения алгоритма на отдельные элементарные этапы, выполнение которых не вызывает сомнения, только выполнив требования родного указания можно перейти к выполнению следующего указания; результативность – заключается в том, что определяемый алгоритмом процесс ведет через конечное число шагов от исходных данных задачи к результату, который и является решением задачи. Если рассмотреть процесс решения задачи в целом, то разработка алгоритма дл ЭВМ является на самом деле лишь составной частью того сложного процесса, который обеспечивает полное решение задачи на ЭВМ. Процесс решения задачи включает в себя следующие основные этапы: 1. Постановка задачи. На этом этапе формируется цель решения задачи, подробно анализируется характер и сущность величин, используемых в задачи, определяются условия при которых задача имеет решение. 2. Построение математической модели. На этом этапе связь между величинами выражается математическими формулами. 3. Выбор и обоснование численного метода При выборе численного метода определяющими факторами могут быть: точность вычислений, время решения задачи, требуемый объем основной памяти. 4. Разработка алгоритма. На этом этапе составляется алгоритм решения задачи, согласно выбранному численному методу. 5. Составление программы. Алгоритм решения задачи переводится на язык программирования. 6. Отладка программы. В процессе отладки программы обнаруживаются ошибки, проверяется логика работы программы. 7. Реализация программы на ЭВМ и анализ результатов. Программа выполняется на ЭВМ для всех исходных данных. Способы описания алгоритма: формулы табличный, словесный, любой алгоритмический язык (Бейсик, Паскаль и др.), блок-схемный. Блок-схемой называется графическое изображение логической структуры алгоритма, в котором каждый этап процесса переработки данных представляется в виде геометрических фигур (блоков), имеющих определенную конфигурацию, в зависимости от характера выполняемой операции: - блок начала, конца; блок действия (арифметический блок); - логический проверки); блок (блок - блок ввода, вывода. Алгоритмизация вычислительных процессов Все вычислительные процессы можно разделить на 3 группы: линейные, ветвящиеся и циклические. Линейным называется такой вычислительный процесс, в котором самостоятельные этапы вычислений выполняются в линейной последовательности их записи. Ветвящимся называется вычислительный процесс, в котором в зависимости от исходных условий задачи или промежуточных результатов его реализация происходит по одному из нескольких заранее предусмотренных возможных направлений; каждое из отдельных направлений называется ветвью вычислений. Выбор той или иной ветви вычислений осуществляется проверкой выполнения логического условия, определяющего свойства исходных данных или промежуточных результатов. Многократное повторение участков вычислений называется циклами, а вычислительные процессы, содержащие такие повторяемые участки – циклическими. Цикл всегда состоит из одних и тех же частей: подготовка к выполнению цикла; определение момента завершения цикла; рабочей части цикла; подготовки исходной информации для очередного шага цикла. Повторение участков вычислений происходит с использованием новых значений для переменных, которые называют параметрами цикла. По структуре циклы можно разделить на: простые (не содержащие внутри себя других циклов); сложные (содержащие внутри себя один или более циклов). По типу циклы разделяются на: циклы с известным числом повторений; циклы с неизвестным числом повторений (итерационные циклы). Циклы с известным числом повторений характеризуются тем, что задаются начальные и конечные значения параметра цикла, закон изменения параметра цикла при каждом его повторении, количество повторений цикла, которое вытекает из первых двух условий. Базовые алгоритмические конструкции Реализацию базовых алгоритмических конструкций рассмотрим на примере алгоритмического языка. Алгоритмический язык – это система обозначения и правил для единообразной и точной записи алгоритмов и их использования. Простейшая команда имеет вид повелительного наклонения русского языка и содержит, если необходимо формулы. Команды в языке записываются последовательно. Последовательность нескольких команд алгоритма называется серией. Общий вид алгоритма на алгоязыке: АЛГ название алгоритма (список формальных параметров с указанием их типов) НАЧ описание текущих переменных Тело алгоритма КОН 1. Базовая конструкция следование реализует линейный вычислительный процесс Серия1; серия2; … , Серия N Серия 1 Серия 2 …. Серия N Пример 1: Вычислить площадь треугольника со сторонами a, b, c по формуле Герона АЛГ площадь (арг вещ a, b, c) НАЧ вещ p,S p:=(a+b+c)/2; S:=p*(p-a)*(p-b)*(p-c); S:=sqrt(S); Выв ‘Площадь равна ’,S КОН 2. Базовая конструкция ветвление, реализует ветвящиеся вычислительные процессы. а) полное ветвление если условие то серия 1 иначе серия 2 все б) неполное ветвление если условие то серия 1 все Пример 2: Вычислить значение функции x 2 если x 1 y x 10 если x 1 АЛГ функция (арг вещ x) НАЧ вещ y если условие то y:=x-1 иначе y=x-10 все Выв ‘y=’,y КОН 3. Базовая конструкция цикл, реализует циклические вычислительные процессы. Цикл-пока пока условие нц тело цикла кц Цикл-до Для x от А до В шаг Н нц тело цикла кц Пример 3. Найти сумму чисел от 1 до 100. Цикл-пока АЛГ сумма (арг цел I) НАЧ цел S I:=1; S;=0 пока условие нц S:=S+i I:=I=1 кц Выв ‘S=’,S КОН Цикл-до АЛГ сумма (арг цел I) НАЧ цел S S;=0 Для I от 1 до 100 шаг 1 нц S:=S+i I:=I=1 кц Выв ‘S=’,S КОН