Алгодром


01. Введение

Алгоритм и программа

Мы будем решать много задач (не пугайтесь). Ответом в этих задачах будет совсем даже не число, как на уроках математики (физики или химии). Что же тогда является ответом?

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

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

Специальные языки, на которых записывается необходимая последовательность действий, называются языками программирования. Мы будем использовать так называемый школьный алгоритмический язык (да-да: не Turbo Pascal, не C++, не Java, не Perl и даже не BASIC).

Так вот, программы, записанные на этом языке, мы будем называть алгоритмами. (Таким образом, для нас программа и алгоритм — синонимы).

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

Но, все-таки, не умея дать точное определение, попробуем дать несколько приблизительных:
Алгоритм (программа) — это

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

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


Виды предложений

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

Как вам известно, в нашем естественном языке прдложения бывают трех типов:

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

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

1. Утверждение - это предложение, которое можно проверить (оно может оказаться истинным или ложным).

2. Вопрос - это предложение, на которое можно ответить.

3. Предписание (команда)- это предложение, которое можно исполнить.


Cистема команд исполнителя (СКИ)

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

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

И еще:
перечень команд (предписаний), которые исполнитель

а) понимает,
б) умеет выполнять

называется системой команд исполнителя (СКИ).


Законы программирования:

1. Программы состоят из предписаний.

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


Виды ошибок в программах:

  1. Синтаксические:
    нарушены общие правила записи предписаний или использованы команды, которых нет в СКИ.
    В этом случае компьютер, не приступая к выполнению программы, сообщает об ошибке.
  2. Отказы:
    очередную команду программы невозможно выполнить, хотя каждое предписание записано правильно.
    Получив от исполнителя сигнал отказа, компьютер сообщает об ошибке и прекращает выполнение программы.
  3. Логические:
    программу можно исполнить, но она не соответствует заданию.
    Поиск и устранение логических ошибок — дело весьма непрстое, т.к. никаких сообщений об ошибках от компьютера мы не получаем.