1.1 Понятие алгоритма.
____________________________________________________________________
представить этот алгоритм в таком виде, чтобы компьютер мог его выполнить.
Для этого нужно, во-первых, разбить алгоритм на элементарные операции, на-
зываемые инструкциями или командами, которые умеет выполнять компьютер,
и, во-вторых, записать каждую такую операцию на языке, понятом компьюте-
ру. Такая запись алгоритма на языке компьютера называется программой.
Процесс разработки программы называется программированием. А человек,
выполняющий эту работу - программистом. При этом следует различать про-
грамму в машинных кодах, говорят еще исполнимая программа и программу,
написанную на каком-либо языке программирования. Обычно человек пишет программу на языке высокого уровня, в крайнем случае, на ассемблере. Компи-
лятор переводит ее в программу на машинном языке, которую и исполняет компьютер.
Программирование – это научная дисциплина. Если бы процессы про-
граммирования разных задач не имели между собой ничего общего, то про-
граммирование, как таковое, не было бы научной дисциплиной. Но дело об-
стоит не так. Существуют общие методы, которые позволяют, постепенно расчленяя задачи на подзадачи, сводить их решение, в конечном счете, к
некоторым элементарным операциям (чаще всего к элементарным арифме-
тическим операциям), подобно тому, как разбирая совершенно непохожие сложные механизмы, мы обнаруживаем, что они состоят из одинаковых де-
талей и узлов, только по разному соединенных (напр. подшипники, болты,
гайки и т.д.). Из этого, конечно, не следует, что процесс программирования не содержит в себе элементов творчества. Составление программы, такой же творческий процесс, что и разработка сложного механизма из заданных на-
боров деталей.
Основное назначение алгоритмов заключается в их фактическом вы-
полнении тем или иным исполнителем. Т.е. алгоритм составляется для того,
чтобы он был выполнен для решения какой либо задачи. В качестве испол-
нителя может выступать кто угодно – человек, станок с ЧПУ, компьютер и т.д.
16
Глава 1 Основы программирования
____________________________________________________________________
В силу своей природы, компьютеры стали наиболее распространенными ис-
полнителями алгоритмов. Собственно они и были придуманы для того, чтобы с их помощью исполнять алгоритмы.
Назначение компьютеров, таким образом, состоит в фактическом испол-
нении алгоритмов, разработанных человеком.
Важно понять, что компьютер сам по себе ничего не делает. Он лишь слепо выполняет то, что укажет ему человек. Поэтому, когда говорят, что компьютер управляет станками, ракетами, сочиняет музыку, играет в шахматы
"как бы самостоятельно", это неверно!
Это человек придумывает алгоритм, т.е. способ управления станками, ра-
кетами, сочинения музыки, игры в шахматы, а компьютер лишь исполняет этот алгоритм. Таким образом, компьютер это помощник, инструмент чело-
века для решения различных задач, но инструмент очень мощный, разно-
плановый. С помощью компьютера человек может решать самые разнооб-
разные задачи.
Рассмотрим пример разработки алгоритма.
1.1.2 Задача о поездах и мухе
Рассмотрим задачу, которую мы позаимствовали из [11] и рассмотрим на этом примере основные приемы и способы составления алгоритмов. Пусть два города A и B удалены на расстояние d=600 км. Одновременно из каждого горо-
да отходят поезда в направлении друг другу. Поезд вышедший из города А имеет скорость v1=40 км/ч, а из В – имеет скорость v2=60 км/ч. Одновременно из пункта А вылетает исключительно быстрая муха со скоростью v=200 км/ч и летит на встречу поезду вышедшего из пункта В. При встрече с ним муха дела-
ет поворот и летит обратно навстречу с поездом, идущему из А. Когда она его встретит, муха снова делает поворот и летит в обратном направлении. Так про-
должается до тех пор, пока поезда не встретятся.
17
1.1 Понятие алгоритма.
____________________________________________________________________
Задание.
1)определить длину различных отрезков пути, которые пролетит муха
2)определить общее расстояние, которое пролетит муха
На второй вопрос легко ответить: поезда встретятся через 600/(40+60)=6
часов, а муха за это же время пролетит расстояние 200*6=1200 км. Но оставим в стороне эту хитрость, и будем решать задачу в «лоб».
Прежде всего, нужно составить алгоритм, т.е. придумать, как решить зада-
чу с помощью элементарных шагов. Алгоритм будем записывать в виде блок-
схемы. С чего нужно составлять блок-схему? Как правило, блок-схема начина-
ется с ввода исходных данных и начальных установок, т.е. определение началь-
ных значений некоторых вспомогательных переменных. Но в начале бывает трудно сразу определить начальные значения, поэтому рисуют сначала цен-
тральную часть блок-схемы (ядро), в которой определены те действия, которые решают задачу, причем сначала рисуют укрупненную блок-схему, чтобы как можно яснее представить себе весь процесс решения.
Какие идеи сразу приходят в голову?
Самая простая идея заключается в том, чтобы производить действия сле-
дующим образом:
1)вычислить длину первого отрезка пути, который пролетит муха
2)вычислить длину второго отрезка и прибавить к предыдущему
3)вычислить длину третьего отрезка и сложить с ранее полученной суммой
и т.д.
Мы можем этот процесс представить в виде
18
Глава 1 Основы программирования
____________________________________________________________________
Sстар=0
Вычисление 1-го отрезка x1
Sнов. = Sстар. + x1
Sстар. = Sнов.
Вычисление 2-го отрезка x2
Sнов. = Sстар. + x2
Sстар. = Sнов.
и т.д.
Рис. 1.2. Первый вариант алгоритма
Тут же возникает вопрос: т.к. схема должна иметь конечную длину, то нужно средствами рисунка выразить понятие повторения, кроме того, надо ука-
зать какие величины нужно вывести на экран. Отсюда схему перечерчиваем в виде:
Sстар=0
i=1
Вычисление i-го отрезка xi
Sнов. = Sстар. + xi
Sстар. = Sнов.
xi, Sнов
i=i+1
Рис. 1.3. Второй вариант алгоритма
19
1.1 Понятие алгоритма.
____________________________________________________________________
Случается, что когда некоторая последовательность операций закончена,
необходимо бывает вернуться и повторить эти операции. Это называется цик-
лом. На этой схеме виден серьезный недостаток - вычислительный процесс по этой схеме никогда не закончится. Необходимо придумать критерий окончания алгоритма. Пока не совсем все ясно, будем считать, что нам задано число по-
вторений n, а также заданы все исходные данные, тогда блок-схема примет вид:
начало
Ввод d,v1,v2,n,v
Sстар=0
i=1
Вычисление i-го отрезка xi
Sнов. = Sстар. + xi
Sстар. = Sнов.
xi, Sнов.
i=i+1
да
i≤n
нет
конец
Рис. 1.4. Третий вариант алгоритма
20