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

алгоритмы

.pdf
Скачиваний:
30
Добавлен:
27.05.2015
Размер:
365.18 Кб
Скачать

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

«Сибирский государственный индустриальный университет»

Кафедра прикладной информатики

АЛГОРИТМ И ЕГО СВОЙСТВА. ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ КОНСТРУКЦИИ.

БАЗОВЫЕ АЛГОРИТМЫ

Методические указания к выполнению лабораторной работы по дисциплине «Информатика»

Новокузнецк

2012

УДК 004.421(07) А 456

Рецензент:

кандидат технических наук, доцент кафедры ИТМ СибГИУ С. Ю. Красноперов

А 456 Алгоритм и его свойства. Основные алгоритмические конструкции. Базовые алгоритмы: метод. указ. / Сиб. гос. индустр. ун-т.; cост.: Л. Д. Павлова, Н. В. Балицкая. Новокузнецк: Изд. центр СибГИУ, 2012. – 33 с.

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

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

СОДЕРЖАНИЕ

 

ВВЕДЕНИЕ............................................................................................

4

ЦЕЛЬ РАБОТЫ .....................................................................................

4

ОБЩИЕ СВЕДЕНИЯ............................................................................

5

Определения алгоритма........................................................................

5

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

6

Способы представления алгоритма.....................................................

7

ПРАВИЛА ПОСТРОЕНИЯ БЛОК-СХЕМ..........................................

7

ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ КОНСТРУКЦИИ................

11

Линейный алгоритм............................................................................

11

Разветвляющийся алгоритм................................................................

12

Циклический алгоритм.......................................................................

14

БАЗОВЫЕ АЛГОРИТМЫ..................................................................

19

Вычисление суммы и количества элементов последовательности 19

Поиск максимального элемента последовательности......................

20

Сортировка элементов одномерного массива...................................

22

Вычисление суммы цифр в записи числа.........................................

24

Поиск минимального элемента матрицы..........................................

25

ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ........................

28

ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ................................................

32

СПИСОК ЛИТЕРАТУРЫ...................................................................

32

3

ВВЕДЕНИЕ

На протяжении многих веков понятие алгоритма связывалось с числами и относительно простыми действиями над ними. Чаще всего алгоритмы представлялись в виде математических формул, вычисления были громоздкими, трудоемкими, но суть самого вычислительного процесса оставалась очевидной. Потребность в осознании, строгом определении и обобщении понятия алгоритма не возникала. С развитием математики появлялись новые объекты, которыми приходилось оперировать: векторы, графы, матрицы, множества и др. Как определить для них однозначность или установить конечность алгоритма, какие шаги считать элементарными?

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

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

ЦЕЛЬ РАБОТЫ

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

4

ОБЩИЕ СВЕДЕНИЯ

Определения алгоритма

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

Полагают, что термин «алгоритм» [algorithm - англ.] происходит от имени средневекового персидского математика IX века Абу Джафара Мохамеда ибн Мусы аль-Хорезми. Редакция последней части имени ученого в европейских языках привела к образованию термина «алгорифм» или «алгоритм». Приведем несколько вариантов определения алгоритма из различных источников.

Алгоритм - это заранее заданная последовательность четко определенных правил или команд для получения решения задачи за конечное число шагов [7].

Алгоритм – это система операций, применяемых по строго определенным правилам, которая после последовательного их выполнения приводит к решению поставленной задачи [6].

Алгоритм – это формальное описание способа решения задачи путем ее разбиения на конечную во времени последовательность действий (элементарных операций) [1].

Под алгоритмом принято понимать точное предписание, определяющее вычислительный процесс, ведущий от варьируемых начальных данных к искомому результату [5].

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

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

5

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

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

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

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

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

Конечность (завершаемость). При корректно заданных ис-

ходных данных алгоритм должен завершать работу и выдавать результат за конечное число шагов.

Результативность. Выполнение алгоритма должно завершаться определёнными результатами.

Массовость (универсальность). Алгоритм должен быть при-

меним к разным наборам исходных данных.

Пример 1: Какое свойство алгоритма означает, что при корректно заданных исходных данных алгоритм выдает результат за фиксированное число шагов?

детерминированность

конечность

понятность

массовость Пример 2: Что не существенно в представлении алгоритма? понятность

сложность разработки

однозначность

наглядность

6

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

Существуют следующие способы представления алгоритмов:

словесное описание, псевдокод, графическое описание, запись на языке программирования.

Словесное описание алгоритма имеет минимум ограничений

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

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

Графическое описание алгоритма (блок-схема) – это изобра-

жение алгоритма в виде последовательности геометрических блоков. Блоки соединяются между собой линиями потока информации

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

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

Пример 3: Средством записи алгоритма не являются блок-схемы языки программирования

трансляторы

псевдокоды

ПРАВИЛА ПОСТРОЕНИЯ БЛОК-СХЕМ

При графическом описании отдельные функции алгоритмов отображаются в виде условных графических изображений - символов. Перечень условных графических символов, их наименование, форма, размеры, отображаемые функции и правила выполнения алгоритмов приведены в ГОСТ 19.701-90 [4].

7

Стандартом устанавливаются следующие соотношения между геометрическими размерами символов:

-размер а (высота блока), должен выбираться как величина кратная 5: 10, 15, 20… (мм);

-размер b (ширина блока) определяется по формуле b = 1,5·а

(мм).

В лабораторных работах для компактного размещения блоксхем необходимо использовать блоки следующих размеров:

а=10 мм, b=15 мм.

Основные графические символы, используемые для описания алгоритмов, приведены в таблице 1.

Таблица 1 - Основные графические символы, используемые для описания алгоритмов

Название

 

Изображение

Назначение

символа

 

 

символа

 

символа

Пуск - останов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Начало

или завершение

 

 

 

 

 

 

 

 

 

 

 

 

0,5a

процесса

обработки дан-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ных

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Данные

0,25a

Ввод или вывод данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Процесс

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вычисление по формулам

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

Решение

Проверка

логического

a

условия и выбор решения

 

в зависимости от условия

b

 

 

8

Продолжение таблицы 1

Подготовка

 

 

 

0,25a

Организация

 

цикличе-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ских

вычислительных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

процессов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Предопределенный

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Использование

отдельно

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

процесс

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

описанных

алгоритмов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

или программ

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Комментарий

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а

Применяется для поясне-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ния символов на схеме

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,5а

 

 

 

 

 

Соединитель

 

 

 

 

 

 

 

ø 0,5а

Указывает на связь меж-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ду прерванными линиями

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

потока,

соединяющими

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

символы на блок-схеме

Линии

потока

ин-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обозначают направление

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

формации

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

потока

информации

от

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

одного символа на схеме

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

к другому. Если линия

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

потока

информации

на-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

правлена снизу вверх или

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

справа налево, то она за-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

канчивается стрелкой

 

Пересечение линий

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Применяют в случае пе-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

потока

информа-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ресечения не

связанных

ции

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

линий потока на схеме

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Слияние линий по-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Применяют

в

случае

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тока информации

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

слияний

линий

потока

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

информации,

каждая

из

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

которых направлена к од-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ному символу на схеме

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

Выполнение алгоритма всегда начинается с блока Пуск и заканчивается блоком Останов.

Блок Данные используется для ввода или вывода данных. Блок Процесс используется для описания тех действий, кото-

рые необходимо выполнить над объектами: вычисляются значения выражений и результат присваивается переменным.

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

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

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

Комментарии используются для записи пояснительного текста к блокам. Наличие комментариев делает блок-схему понятной для любого пользователя.

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

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

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

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

ввод данных присваивание

проверка логического выражения

вывод данных.

10