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

F530EFB30609B81FDFDE985C2ED2DB0F

.pdf
Скачиваний:
15
Добавлен:
12.02.2015
Размер:
1.81 Mб
Скачать

ГЛАВА 13

АЛГОРИТМИЗАЦИЯ

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

13.1. Понятия алгоритма и алгоритмизации. Свойства алгоритма

Понятие алгоритма – одно из основных понятий современной информатики.

Алгоритм (от лат. algorithmi – латинская форма написания имени математика IX века аль-Хорезми) – определенная последовательность правил или команд, позволяющая исполнителю решить любую конкретную задачу из некоторого класса

однотипных задач за конечное число шагов.

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

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

микроорганизмов.

Программа для ЭВМ – тоже алгоритм, но записанный специальным способом.

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

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

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

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

121

Раздел 4. Основы моделирования, алгоритмизации, программирования

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

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

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

2.Определенность (детерминированность). Каждая команда алгоритма должна быть четкой, однозначно понимаемой.

3.Результативность. Алгоритм должен приводить к решению задачи за конечное число шагов.

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

14.2. Способы записи алгоритмов

Разработанный алгоритм можно зафиксировать одним из спосо-

бов:

на естественном языке (словесный алгоритм); в графической форме (в виде блок-схемы);

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

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

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

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

ВРоссии для построения блок-схем приняты элементы, приведенные на рисунке 26.

122

Глава 13. Алгоритмизация

Рис. 26. Элементы блок-схем

Блок 1 содержит надписи «Начало» или «Конец», обозначающие начало и конец алгоритма, соответственно. На схеме может быть несколько блоков «Конец».

Вблоке 2 – ввод данных — указываются названия всех элементов, образующих массив исходной информации.

Вблоке 3 – расчетном блоке — записываются формулы производимых вычислений.

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

Блок 5 – проверка условия.

Блок 6 позволяет вписывать поясняющие текстовые комментарии

вособо сложные места блок-схемы.

Блок 7 – начало и завершение цикла – между этими блоками размещаются все действия, выполняемые в цикле.

Блок 8 – вывод результатов на печать. Блок 9 – вывод результатов на монитор.

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

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

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

123

Раздел 4. Основы моделирования, алгоритмизации, программирования

15.3. Типы алгоритмов

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

Линейные алгоритмы (следование) – алгоритмы, в которых команды выполняются последовательно, одна за другой.

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

Пример линейного алгоритма: вычисление суммы двух чисел.

Блок-схема

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

1.Начало алгоритма.

2.Ввод значений переменных x и y.

3.Вычисление суммы значений переменных x и y и присвоение результата переменной s.

4.Вывод на монитор значения переменной s.

5.Конец алгоритма.

Алгоритмы с разветвляющейся структурой (ветвление, выбор)

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

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

124

Глава 13. Алгоритмизация

Ветвление может быть полной и неполной формы (рис. 27, 28). В первом случае алгоритм предполагает выполнение Действия 1, если записанное условие истинно (выполняется), и выполнение Действия 2, если условие ложно (не выполняется). Во втором случае, действия выполняются только в том случае, если условие истинно.

Рис. 27. Ветвление

Рис. 28. Ветвление

неполной формы

полной формы

 

 

 

Условие – логическое выражение, которое может принимать одно из двух

значений: истина или ложь (1 или 0, Да или Нет).

 

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

имеют вид x<5, y=a и т.п. Состав операций сравнения: «=» – равно; «<>» или «><» – не равно; «<» – меньше; «>» – больше;

«<=» или «=<» – меньше или равно; «=>» или «>=» – больше или равно.

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

not (НЕ) – отрицание логического выражения (простого условия); and (И) – результат логической операции является истинным в том случае, когда слева и справа стоят истинные утверждения (про-

стые условия);

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

Например:

x<3 and y=8 (x меньше трех и y равно восьми);

a<-10 or a>10 (A меньше минус десяти или A больше десяти); not c=x (c не равно x).

125

Раздел 4. Основы моделирования, алгоритмизации, программирования

Сложные условные выражения могут в свою очередь объединятся с помощью логических операций not, and и or.

Пример алгоритма с ветвлением: вычисление корня с проверкой вводимого аргумента (x).

Если x≥0, то рассчитываем и выводим корень, иначе выводим сообщение «Нет решений».

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

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

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

начальное и конечное значения параметров цикла;

шаг цикла – значение, на которое изменяется параметр цикла при каждом повторении.

Циклический алгоритм состоит из подготовки цикла, тела цикла, условия продолжения цикла (рис. 29).

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

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

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

126

Глава 13. Алгоритмизация

Если параметр цикла превысил конечное значение, то выполнение цикла должно быть прекращено.

Рис. 29. Схема алгоритма циклической структуры

Выделяют следующие виды циклов:

с предусловием или цикл-пока (цикл выполняется, пока истинно некоторое условие, указанное перед его началом) (рис. 30);

с постусловием или цикл-до (цикл, в котором проверка условия производится после выполнения тела цикла, цикл выполняется до тех пор, пока условие не станет истинным) (рис. 31);

с фиксированным количеством повторений (цикл, в котором тело цикла выполняется заданное количество раз) (рис. 32).

Рис. 30. Схема цикла с предусловием

Рис. 31. Схема цикла с постусловием

127

Раздел 4. Основы моделирования, алгоритмизации, программирования

Рис. 32. Схема цикла с фиксированным количеством повторений

Пример алгоритма с циклической структурой: вычисление суммы целых чисел в диапазоне от 1 до 5.

16.4. Методы разработки алгоритмов

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

1.Метод восходящего проектирования – построение сложных алгоритмов из простых (разработка снизу вверх или от простых задач к сложным). Применяется при решении простых задач.

2.Метод нисходящего проектирования – построение алгоритмов от сложного к простому (разработка сверху вниз, от слож-

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

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

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

128

Глава 13. Алгоритмизация

различных частей другого алгоритма или вообще из различных алгоритмов (в том числе и вспомогательных).

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

Подпрограмма – вспомогательный алгоритм, записанный на одном из языков программирования.

Вопросы для самопроверки

1.Что такое алгоритм?

2.Какими основными свойствами должен обладать алгоритм?

3.Какие способы записи алгоритма вам известны?

4.В чем состоят особенности блок-схемного подхода к записи алгоритмов?

5.Какие основные типы алгоритмов вам известны?

6.В чем особенность алгоритмов разветвляющейся структуры?

7.Что такое условие?

8.В чем различие ветвления полной и неполной формы?

9.В каких случаях используются алгоритмы циклической структуры?

10.Что такое параметр цикла?

11.Чем отличается цикл с предусловием от цикла с постусловием? 12.В чем заключается суть метода пошаговой детализации?

129

ГЛАВА 14

ПРОГРАММИРОВАНИЕ

Глава посвящена теории программирования. В ней рассматриваются понятие и свойства программ. Приводится классификация языков программирования с указанием конкретных примеров. Дается общая характеристика технологий структурного и объектно-ориентированнного программирования. Описывается структура языка программирования высокого уровня на примере Pascal. Приводится описание системы программирования Pascal ABC. Описываются основные этапы разработки программ.

14.1. Понятия программы и программирования. Языки программирования

Программа – алгоритм, записанный на одном из языков программирования и исполняемый компьютером.

Программа должна обладать такими свойствами, как корректность (правильность), эффективность, понятность, надежность, удобство эксплуатации, удобство сопровождения, модифицируемость.

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

Программирование может рассматриваться как наука, так и искусство. Программа – результат интеллектуального труда, для которого характерно творчество.

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

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

В зависимости от детализации шагов алгоритма определяют уровень языка программирования (чем меньше детализация, тем выше уровень). Различают:

машинно-зависимые (низкого уровня), машинно-независимые (высокого уровня).

130

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