Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lektsia_4_informatika__algoritmizatsia (1)

.pdf
Скачиваний:
8
Добавлен:
10.02.2015
Размер:
1.28 Mб
Скачать

ОСНОВЫ АЛГОРИТМИЗАЦИИ

Понятие алгоритма

В основу работы ЭВМ положен программный принцип управления, состоящий в том, что ЭВМ выполняет действия по заранее заданной программе.

Программа – это упорядоченная последовательность команд, которые понимает ЭВМ.

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

Алгоритм — точный набор инструкций, описывающих порядок действий ис-

полнителя для достижения результата решения задачи за конечное время.

Свойства алгоритмов

1.дискретный (пошаговый) характер определяемого им процесса.

2.записан на понятном ему языке и содержит предписания, которые ис-

полнитель может выполнить.

3. его массовость, применимость к некоторому классу объектов, возмож-

ность получения результата при различных исходных данных на некото-

рой области допустимых значений.

4.обязательное требование к алгоритмам – требование их конечности.

5.эффективность алгоритма. Время выполнения алгоритма и необходи-

мые ресурсы.

1

Алгоритмизация – процесс разработки и описания алгоритма решения какой-либо задачи.

Существует два вида средств для представления алгоритмов – языковые и графические .

Словесная запись алгоритмов Пример Составим алгоритм вычисления коэффициентов

приведенного квадратного уравнения x2 + px + q = 0, корни которого x1, x2 известны.

алгоритм:

Начало.

1.Ввести x1, x2.

2.p = –(x1+x2).

3.q = x1x2.

4.Вывести p, q.

Конец. □

2

ГОСТ 19.701-90 Схемы алгоритмов , программ, данных и систем.

Схемы алгоритмов

Схема алгоритма – это графический способ его представления с элементами словесной записи.

Наименование

символа

Процесс (вычислительный блок)

Решение (логический блок)

Модификация (заголовок цикла)

Пуск-останов (на- чало-конец)

Предопределенный процесс (вызов подпрограммы)

Ввод-вывод

Соединитель

Межстраничный

соединитель

Таблица Изображение блоков в схемах алгоритмов Обозначение Функция

и размеры

 

Выполнение операции или

a

группы операций, в ре-

 

зультате которых изменя-

b

ются значение, форма

 

представления или распо-

 

ложение данных

 

Выбор направления вы-

 

полнения алгоритма в за-

 

висимости от некоторых

 

условий

 

Выполнение операций по

 

управлению циклом – по-

 

вторением команды или

0,25a

группы команд алгоритма

 

 

 

 

 

 

 

a

 

Начало или конец выпол-

 

 

 

 

 

 

 

 

 

 

 

0,5

 

нения программы или под-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

программы

 

 

0,15a

 

 

 

 

 

 

 

Вызов и использование ра-

 

 

 

 

 

 

 

 

 

 

нее созданных и отдельно

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

описанных алгоритмов

 

 

 

 

 

 

 

 

 

 

(подпрограмм)

 

 

 

 

 

 

 

 

 

 

 

0,25a

 

Общее обозначение ввода

 

 

или вывода данных в алго-

 

a

ритме безотносительно к

 

внешнему устройству

 

 

b

 

 

0,5 a

 

Указание прерванной свя-

 

 

зи между блокам в преде-

 

 

лах одной страницы

0,5 a

 

 

 

 

 

 

Указание прерванной свя-

 

 

 

 

 

 

 

 

 

зи между блоками, распо-

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

0,6

 

 

ложенными на разных лис-

 

 

 

 

a

 

 

 

 

тах

0,2

 

 

 

 

 

 

 

 

 

 

3

Начало

1Ввод x1, x2

2P:=-(x1+x2)

Q:=x1*x2

3Вывод

P, Q

Конец

Рис. 1 Алгоритм вычисления коэффициентов приведенного квадратного уравнения

Технология разработки алгоритмов

Какими качествами должен обладать хороший алгоритм?

Прежде всего, от алгоритма требуется, чтобы он правильно решал поставленную задачу.

Но не менее важно, какой ценой это достигается. Речь идет о разумности затрат на его создание.

С этой точки зрения алгоритм должен быть легким для понимания, простым для доказательства

правильности и удобным для модификации.

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

По своей сути структурный подход есть отказ от беспорядочного стиля в алгоритмизации и про-

граммировании (в частности, отказ от оператора go to) и определение ограниченного числа стан-

дартных приемов построения легко читаемых алгоритмов и программ с ясно выраженной структурой.

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

а) структуры следования или последовательности;

б) структуры ветвления;

4

в) структуры цикла .

Рис.2. Базисные управляющие структуры

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

а) структура сокращенного ветвления; б) структура выбора; в) структура цикла с параметром;

г) структура цикла с постусловием (рис. 0.1, соответственно а, б, в, г).

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

б

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в

г

 

Рис. 0.1. Дополнительные управляющие структуры

Любой алгоритм может быть построен посредством композиции базисных и дополнительных структур:

-путем их последовательного соединения образования последовательных конструкций;

-путем их вложения друг в друга образования вложенных конструкций.

В области автоматизированной обработки данных такой подход называют нисходящим проектиро-

ванием или проектированием «сверху вниз».

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

Структуры алгоритмов

Алгоритмы линейной структуры

Ветвления

Схема алгоритма приведена на рис. 0.2. Алгоритм содержит сложное ветвление, являющееся композицией двух простых ветвлений.

6

 

 

Начало

 

 

 

 

 

 

5.1

 

 

 

1

Ввод

Да

|D|<

Нет

 

 

a,b,c,

 

 

 

 

 

 

 

 

2 D:=b2

5.2

5.3

 

 

x1:= b/2a

x1

: ( b D ) / 2a

 

 

4ac

x2:= x1

 

.

 

 

x2 : ( b D ) / 2a

 

 

 

 

Да

3

Нет

 

 

 

 

D<0

 

 

 

4

 

5

5.4

 

 

Корней

Вычисление

Вывод

 

 

нет

 

корней

x1, x2

 

Конец

Рис. 0.2. Алгоритм решения квадратного уравнения

К операндам вещественного типа не следует применять операцию отношения «=» (равно), условие может не выполняться из-за неточного представления вещественных чисел в памяти ЭВМ и неизбежных ошибок округления при вычислениях. В алгоритме отношение D = 0 заменено отношением |D| < , где – допустимая погрешность округления. □

Циклы

Вычислительные процессы с многократным повторением однотипных вычислений/действий для различных значений входящих величин/данных называются циклическими, повторяемые участки вычислений – циклами, изменяющиеся в цикле величины – переменными цикла. Для организации циклов в алгоритмах необходимо предусмотреть (рис. 0.3):

-подготовку цикла – задание начальных значений переменным цикла перед первым его выполнением;

-тело цикла – вычислении/действия, повторяемые в цикле для различных значений переменных цикла;

-модификацию/изменение значений переменных цикла перед каждым новым его повторением;

-управление циклом – проверку условия продолжения/окончания цикла и переход на повторение цикла или его окончание.

7

Подготовка цикла

Условие Нет продолжения

цикла

Да

Тело цикла (ТЦ)

Изменение

переменных

цикла

а

 

Подготовка цикла

 

Тело цикла (ТЦ)

 

Изменение

 

переменных

 

цикла

 

Условие

Нет

окончания

цикла

 

 

Да

 

б

Рис. 0.3. Общие схемы циклического алгоритма

x:=x0

 

x:=x0

x<=xn

Нет

 

 

ТЦx

Да

 

 

ТЦx

 

x:=x+hx

 

 

x:=x+hx

 

x>xn

 

Нет

 

 

 

 

Да

а

 

б

 

 

y:=f(x)

Вывод

x, y

Рис. 0.4. Общие схемы алгоритма табулирования функции

8

Процесс программирования это запись разработанного алгоритма на специальном языке

(языке программирования) представление алгоритма на языке, "понятном" исполнителю (вычисли-

тельной машине), т. е. в форме, допускающей ввод в машину и последующий перевод на машинный язык (в коды машины).

Системы программирования

Это комплекс средств для разработки программ:

Языки программирования

(ассемблер, Алгоритмические языки;)

Инструментальные системы;

Системы визуальной разработки программ.

Системы создания ПО для работы в Internet

Алгоритмический язык предназначен для записи алгоритма, удобный для программиста и понятный ЭВМ.

Составленная программа вводится в ЭВМ и затем автоматически переводится на язык машины с помощью специальных программных средств, позволяющих автоматизировать этот процесс.

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

Трансляторы могут быть компилирующего типа – компиляторы и интерпретирующего типа – интерпретаторы.

Компилятор анализирует и преобразует исходный текст в, так называемый, объектный код

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

выполнена на компьютере. Загрузка программы из .exe-файла в память машины для еѐ выполнения осуществляется служебной программой загрузчик.

Интерпретатор сразу производит анализ, перевод (в машинный код) и выполнение

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

Выбор языка программирования определяется многими факторами: типом решаемой задачи, располагаемыми вычислительными средствами, вкусами и знаниями заказчика и разработчика.

9

Разработать язык – это создать транслятор для него.

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]