Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции на экзамен.doc
Скачиваний:
9
Добавлен:
16.12.2018
Размер:
733.7 Кб
Скачать

. Словесная запись алгоритмов.

Самой распространенной формой представления алгоритмов, адресуемых человеку, является обычная словесная запись. Форму словесной записи имеют многие так называемые “бытовые” алгоритмы, часто используемые в повседневной практике: как выкрасить изделие, как позвонить по междугородному телефону-автомату, как пользоваться стиральной машиной и т.п. Особенность словесных представлений алгоритмов в том, что таким путем при желании могут быть описаны любые алгоритмы, в том числе и вычислительные.

Например. Пусть требуется записать последовательность элементарных действий для вычислений по формуле:

При составлении требуемой алгоритмической записи предположим, что правило выполнения арифметических операций сложения, умножения и деления, а также действия извлечения квадратного корня понятны вычислителю, т.е. являются для него элементарными. При этом предположении искомый алгоритм в обычной словесной записи может иметь вид:

1.Прочитать заданное значение х.

2.Умножить х на 8.

3. Из результата второго действия извлечь квадратный корень.

4. К результату третьего действия прибавить 1.

5. Умножить х на 3.

6. Результат пятого действия разделить на результат четвертого действия.

7. Записать значение результата у.

Получили словесную запись линейного вычислительного алгоритма.

Следует особое внимание обратить на первое и последнее предписания в этой записи, обеспечивающие задание значения исходного данного и выдачу полученного ответа. При всей кажущейся излишней педантичности этих предписаний они имеют первостепенное значение в алгоритмах, адресуемых исполнителям-автоматам. Формулируя эти предписания, автор алгоритма должен четко определить для себя, что в этой задаче «дано», а что «требуется получить». Или, говоря иными словами, какие величины являются носителями исходных значений (входные величены, или аргументы), а какие – носителями значений результатов (выходные величины или результаты). В приведенной выше записи вычислительного алгоритма входной величиной является х, а выходной – у.

Отметим теперь другое важное обстоятельство. Несмотря на то, что в приведенной записи алгоритма ни в одном из предписаний ничего не сообщается о том, к какому предписанию следует переходить в следующий момент, представляется вполне естественным, что всюду предполагается переход к предписанию, номер которого является следующим.

Графическое представление алгоритмов

Алгоритм, составленный для некоторого исполнителя, можно представить различными способами: с помощью графического или словесного описания, в виде таблицы, последовательностью формул, записанным на алгоритмическом языке (языке программирования). Остановимся на графическом описании алгоритма, называемом блок-схемой. Этот способ имеет ряд преимуществ, благодаря наглядности, обеспечивающей, в частности, высокую «читаемость» алгоритма и явное отображение управления в нем.

Прежде всего, определим понятие блок-схемы. Блок-схема - это ориентированный граф, указывающий порядок исполнения команд алгоритма; вершины такого графа могут быть одного из трех типов.

Три типа вершин графа

Изображены «функциональная» (a) вершина (имеющая один вход и один выход); «предикатная» (б) вершина, имеющая один вход и два выхода (в этом случае функция Р передает управление по одной из ветвей в зависимости от значения Р (Т, т.е. true, означает «истина», F, т.е. false - «ложь»); «объединяющая» (в) вершина (вершина «слияния»), обеспечивающая передачу управления от одного из двух входов к выходу. Иногда вместо Т пишут «да» (либо знак +), вместо F- «нет» (либо знак -).

Из данных элементарных блок-схем можно построить четыре блок-схемы, имеющих особое значение для практики алгоритмизации.

Основные алгоритмические структуры

Изображены следующие блок-схемы: а - композиция, или следование; б - альтернатива, или развилка, в и г - блок-схемы, каждую из которых называют итерацией, или циклом (с предусловием (в), с постусловием (г)). S1 и S2 представляют собой в общем случае некоторые серии команд для соответствующего исполнителя, В - это условие, в зависимости от истинности (Т) или ложности (F) которого управление передаётся по одной из двух ветвей. Можно доказать, что для составления любого алгоритма достаточно представленных выше четырех блок-схем, если пользоваться их последовательностями и/или суперпозициями.

Блок-схема «альтернатива» может иметь и сокращенную форму, в которой отсутствует ветвь S2. Развитием блок-схемы типа альтернатива является блок-схема «выбор».

Развитие структуры типа «альтернатива»;

а) - неполная развилка; б) - структура «выбор»

На практике при составлении блок-схем оказывается удобным использовать и другие графические знаки (некоторые из них приведены ниже).

Основные принципы разработки и анализа алгоритмов

При построении алгоритма для сложной задачи используют системный подход с использованием декомпозиции (нисходящее проектирование сверху вниз) и синтеза (восходящее проектирование снизу вверх). Как и при разработке структуры любой сложной системы, при формировании алгоритма используют дедуктивный и индуктивный методы.

При дедуктивном подходе рассматривается частный случай общеизвестных алгоритмических моделей. Здесь при заданных предположениях известный алгоритм приспосабливается к условиям решаемой задачи. Например, многие вычислительные задачи линейной алгебры, в частности, нелинейные уравнения, системы алгебраических уравнений и т.п., могут быть решены с использованием известных методов и алгоритмов, для которых существует множество специальных библиотек подпрограмм, модулей. В настоящее время получили распространение специализированные пакеты, позволяющие решать многие задачи (Мathcad, Eureka, Reduce, Autocad и др.)

Индуктивный способ предполагает эвристический системный подход (декомпозиция – анализ – синтез ). В этом случае общих и наиболее удачных методов не существует. Возможны некоторые подходы, позволяющие в каждом конкретном случае находить и строить алгоритмы. Методы разработки алгоритмов можно разбить на методы частных целей, подъема, отрабатывания назад, ветвей и границ и т.п.

Одним из системных методов разработки алгоритмов является структурное программирование. Структурное программирование основано на использовании блок-схем, формируемых с помощью управляющих структурных элементов. Выделяют три базовых структурных элемента (управляющие структуры): композицию, альтернативу, итерацию.

Композиция - это линейная конструкция алгоритма, составленная из последовательно следующих друг за другом функциональных вершин.

Альтернатива - это конструкция ветвления, имеющая предикатную вершину. Конструкция ветвления в алгоритмах может быть представлена в виде развилки, неполной развилки и выбора.

Итерация - это циклическая конструкция алгоритма, которая, вообще говоря, является составной структурой, состоящей из композиции и альтернативы. Итерации могут быть представлены в двух формах: с предусловием и с постусловием.

Приведем примеры на каждую из базовых структур.

  1. Композиция.

Рабочий день каждого из нас начинается с последовательности действий: подъем, утренний туалет, завтрак, уход на учебу (работу), возвращение домой, ужен, отдых.

  1. Альтернатива.

Если Вы отлично подготовитесь по информатике, то на экзамене получите 5, в противном случае – 2.

  1. Итерация.

К магазину привезли 100 ящиков яблок. Для перевозки их на склад грузчику необходимо ставить на тележку по 10 ящиков, отвозить их на склад и возвращаться за следующими. Чтобы перевезти все ящики, понадобится 10 раз повторить одну и ту же операцию.