Методы изображения алгоритмов
Разработка алгоритмов для структурного программирования и их реализация
ВВЕДЕНИЕ
Современным пользователям и профессиональным программистам приходится иметь дело с огромным количеством разнообразных языков программирования различных уровней и назначений. Но по-прежнему начинать изучение основ программирования целесообразно на базе структурных алгоритмов и программ, так как при использовании таких форм программирования у обучающегося быстрее формируется четкое алгоритмическое мышление [1, 2].
Цель выполнения работ: обучающиеся технических специальностей и форм обучения должны показать и закрепить свои знания по:
· базовым понятиям алгоритмов;
· основным методам программирования;
· принципам работы прикладных программных средств для технических расчетов;
· управлению техническими средствами ЭВМ.
ОСНОВНЫЕ ТЕРМИНЫ И ПОНЯТИЯ ТЕОРИИ АЛГОРИТМОВ
Алгоритм – это последовательность элементарных шагов, выполнение которой позволяет получать однозначный результат (не зависящий от того, кто выполнял эти шаги) или за конечное число шагов прийти к выводу о том, что решения не существует. [3].
Задача называется алгоритмически неразрешимой, если не существует машины, модели или алгоритма, которые ее бы решали.
Алгоритм может быть предназначен для выполнения его человеком или автоматическим устройством. Создание алгоритма, пусть самого простого, - процесс творческий. Другое дело – реализация уже имеющегося алгоритма, ее можно поручить субъекту или объекту, который не обязан вникать в существо дела, а возможно, и не способен его понять. Такой субъект или объект принято называть формальным исполнителем. Каждый алгоритм создается в расчете на вполне конкретного исполнителя. Совокупность действий (шагов) образует систему команд исполнителя. Алгоритм должен содержать только те действия, которые допустимы для данного исполнителя.
Свойства алгоритмов
Несколько общих свойств алгоритмов, позволяющих отличать алгоритмы от других инструкций [3]:
· дискретность – алгоритм должен представлять процесс решения задачи как последовательное выполнение простых или ранее определенных шагов; каждое действие исполняется только после того, как закончилось исполнение предыдущего;
· определенность – каждое действие, правило алгоритма должно быть четким, однозначным и не оставлять место для произвола, и не требовать никаких дополнительных указаний или сведений о решаемой задаче;
· результативность – алгоритм должен приводить к решению задачи за конечное число шагов;
· массовость – алгоритм должен быть применим для некоторого класса задач, различающихся только исходными данными.
Чтобы алгоритм выполнил свое предназначение, его необходимо строить по определенным правилам.
Первое правило – необходимо задать множество объектов, с которыми будет работать алгоритм. Формализованное (в виде, удобном для записи, поиска и хранения в ПК) представление этих объектов носит название данных. Алгоритм приступает к работе с некоторым набором данных, которые называются входными, в результате своей работы выдает данные, которые называются выходными.
Второе правило – для работы алгоритма требуется память. В памяти размещаются входные, выходные и промежуточные данные. Поименованная ячейка памяти называется переменной. В теории алгоритмов размеры памяти не ограничиваются.
Третье правило – дискретность.
Четвертое правило – детерменированность. После каждого шага (действия) необходимо указывать, какой шаг выполняется следующим, либо дать команду остановки.
Пятое правило – сходимость (результативность). Алгоритм должен завершать работу после конечного числа шагов. При этом необходимо указать, что считается результатом работы алгоритма.
Виды алгоритмов
Виды алгоритмов как логико-математических средств:
· механические – или детерминированные, жесткие, задают определенные действия в единственной и достоверной последовательности, обеспечивая однозначный и требуемый результат;
· гибкие – дают последовательность нахождения решения задачи несколькими путями или способами, или это такие алгоритмы, в которых достижение результата однозначно не определено;
· линейные – набор действий, выполняемых во времени последовательно, друг за другом;
· разветвляющиеся – алгоритмы, содержащие хотя бы одно условие, в результате проверки которого программа переходит к одному из двух возможных шагов;
· циклические – алгоритмы, предусматривающие многократное повторение одного и того же действия, но над новыми данными;
· подчиненные (вспомогательные) – алгоритмы, ранее разработанные и целиком использованные при алгоритмизации задачи (обычно на их основе создаются подпрограммы).
Процессы вычислений циклической структуры в свою очередь можно разделить на три группы:
· циклические процессы, для которых количество повторений известно – счетные циклы или циклы с заданным количеством повторений;
· циклические процессы, завершающиеся по достижении или нарушении некоторых условий - итерационные циклы;
· циклические процессы, из которых возможны два варианта выхода: по завершении процесса и досрочный выход по какому-либо дополнительному условию – поисковые циклы.
Методы изображения алгоритмов
На практике распространены формы представления алгоритмов:
· словесная - в виде последовательности записей на естественном языке;
· графическая - в виде совокупности графических знаков;
· псевдокоды – полуформализованное описание алгоритма на условном языке, включающем в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.;
· программная – текст на языке программирования.
Запись алгоритмов на естественном языке (словесная форма) не получила широкого распространения, из-за отсутствия наглядности; ввиду возможности неоднозначного толкования записей, и их многословности. Пример словесной формы алгоритма:
1. Определить форматы переменных А, С и В.
2. Ввести значения А и В с клавиатуры.
3. Сравнить А и В.
4. Если А больше В, то переменной С присвоить значение А.
5. Если В больше А, то переменной С присвоить значение В.
6. Если А равно В, переменной С присвоить значение 0.
7. Вывести на экран значения А, В и С.
8. Конец.
Запись алгоритма в виде совокупности графических знаков называется блок-схемой, и получила широкое распространение в научной и учебной литературе. На изображение схем алгоритмов существует ГОСТ 19.701-90. Знаки (блоки) соединены линиями информационного потока (стрелками); каждый знак имеет определенный смысл (см. табл. 1) и соответствует одному шагу (действию) алгоритма. Внутри блока дается описание соответствующего действия. Для простоты чтения схем желательно, чтобы линия входила в блок сверху, а выходила снизу, или шла слева направо. Блоки должны быть одного масштаба. В случае, когда схема алгоритма не умещается на листе, используются соединители. В Microsoft Word для выполнения алгоритмов используется панель инструментов «Рисование – Автофигуры – Блок-схема».
Выполнение алгоритма в виде блок-схемы перед программированием существенно облегчает процесс создания и отладки программы, определения форматов и перечня переменных, поиск ошибок, редактирование алгоритма в будущем.
Таблица 1 − Знаки для изображения схем алгоритмов
Обозначение (графическое изображение) | Название | Назначение | Наименование автофигуры в Word |
Терминатор | Начало или завершение программы или подпрограммы | Знак завершения | |
Процесс | Обработка данных (вычисления, пересылки т.п.) | Процесс | |
Решение | Ветвления, выбор, итерационные и поисковые циклы | Решение | |
Данные | Операции ввода-вывода | Данные | |
Подготовка | Счетные циклы | Подготовка | |
Документ | Вывод на бумагу | Документ | |
Архив | Данные, хранящиеся в архиве или взятые из архива | - | |
Документ | Документ, подготовленный вручную | - | |
Файл | Файл или база данных | Магнитный диск | |
Предопреде-ленный процесс | Вызов подпрограмм (процедур) | Типовой процесс | |
Источник или приемник данных | Указание источника или приемника данных | - | |
Монитор | Вывод информации на экран | Дисплей | |
Соединитель | Маркировка разрывов линий | Узел | |
Соединитель | Маркировка разрывов линий | Ссылка на другую страницу | |
Комментарий | Пояснения к действиям | Выноска | |
Поток информации | Линии, связывающие блоки | Стрелка |
В теории программирования доказано [1, 2], что для записи любого сложного алгоритма достаточно трех базовых структур: следование – последовательное выполнение действий (рис. 1,а); ветвление – соответствует выбору одного из двух вариантов действий (рис. 1,б); цикл-пока – определяет повторение действий, пока не будет нарушено условие, выполнение которого проверяется в начале цикла (рис. 2).
Рисунок 1 − Базовые алгоритмические структуры: а) следование, б) ветвление
Рисунок 2 − Базовая структура: цикл-пока
На основе базовых структур строятся дополнительные структуры для изображения алгоритмов: выбор (рис. 3), цикл-до, счетный цикл.
Рисунок 3 − Дополнительная структура «выбор» и реализация ее через базовые структуры
Рисунок 4 − Дополнительная структура: цикл – до
Рисунок 5 − Дополнительная структура: цикл с заданным числом повторений (счетный цикл).
Простые циклические конструкции могут вкладываться в другую простую циклическую конструкцию, образуя тем самым вложенный (сложный) цикл (рисунок 6). При этом необходимо придерживаться следующих правил:
имена параметров всех простых циклов не должны повторяться;
нельзя войти во внутренний (вложенный) цикл, минуя внешний;
простые циклы в сложном цикле не должны пересекаться, то есть внешний цикл должен заканчиваться после внутреннего и инструкции тела внешнего цикла не должны быть в теле внутреннего цикла [2].
Рисунок 6 – Примеры вложенных циклов
Выполните задания из Приложений I, II и III.
На основе алгоритмов создается программное обеспечение (ПО) для решения прикладных задач.
ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА И ИНТЕРНЕТ – ИСТОЧНИКИ
1. Иванова Г.С. Основы программирования.- Изд-во МГТУ им. Н.Э. Баумана.- 2004.
2. Информатика: учеб. пособие: / Л. С. Таганов, А. Г. Пимонов: ГУ КузГТУ. – Кемерово, 2010. – 330с.
ПРИЛОЖЕНИЕ I
Варианты заданий
Варианты 14 и 27 (по журналу) выполняют 1 вариант задания, 15 и 28 варианты по журналу – 2 вариант здания и т.д.
ПРИЛОЖЕНИЕ II
Варианты заданий:
Варианты 6, 11, 16, 21, 26, 31 (по журналу) выполняют 1 задание; варианты 7, 12, 17, 22, 27, 32 – 2 задание и т.д.
ПРИЛОЖЕНИЕ III
Дополнить алгоритм началом и концом, вычислить тестовые примеры.
Рисунок 7 – Блок схема для вариантов 1, 14, 27
Рисунок 8 – Блок схема для вариантов 2, 15, 28.
Рисунок 9 – Блок схема для вариантов 3, 16, 29.
Рисунок 10 – Блок схема для вариантов 4, 17, 30.
Рисунок 11 – Блок схема для вариантов 5, 18, 31.
Рисунок 12 – Блок схема для вариантов 6, 19, 32.
Рисунок 13 – Блок схема для вариантов 7, 20, 33.
Рисунок 14 – Блок схема для вариантов 8, 21.
Рисунок 15 – Блок схема для вариантов 9, 22.
Рисунок 16 – Блок схема для вариантов 10, 23.
Рисунок 17 – Блок схема для вариантов 11, 24.
Рисунок 18 – Блок схема для вариантов 12, 25.
Рисунок 19 – Блок схема для вариантов 13, 26.