Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_Информатика-344 готовый.doc
Скачиваний:
36
Добавлен:
30.04.2019
Размер:
4.96 Mб
Скачать
  1. Алгоритмизация и программирование.

    1. Понятие и свойства алгоритма.

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

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

    4. Основные понятия программирования

    5. Этапы разработки программного обеспечения

    6. Технологии разработки программного обеспечения

    7. Структурное программирование

    8. Объектно-ориентированное программирование

§6.1. Понятие и свойства алгоритма

Как научить компьютер решать те задачи, которые изначально он не умеет решать самостоятельно? Или что следует сделать, если нужно привлечь к решению задачи человека (назовем его «исполнитель»), не знакомого с ее решением? В общем виде последовательность действий здесь следующая:

  1. выбрать способ (метод) решения задачи и изучить его во всех подробностях;

  2. сообщить исполнителю выбранный метод в абсолютно понятном для него виде.

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

Второй этап значительно сложнее. Дело в том, что если способ решения задачи описан произвольно, то нет гарантии, что он будет верно понят исполнителем.

Попробуйте, например, небольшую игру. Попросите товарища (подругу) на время забыть все, что он знает, например, о процессе варки картофеля. Если же выбранный помощник еще никогда не варил картошку, то эксперимент будет максимально «чистым». Опишите ему процесс приготовления этого нехитрого блюда и попросите его приготовить, точно следуя вашим инструкциям. После чего удалитесь с кухни и подождите результата в другой комнате. Ну как картошечка? Надеюсь, вы не забыли сказать другу, чтобы он предварительно ее почистил?

Именно поэтому описание метода следует выполнять в соответствии с определенными правилами:

  • выделить исходные величины для задачи;

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

  • указать порядок выполнения этапов;

  • указать признак окончания процесса решения задачи;

  • указать, что является результатом решения задачи (во всех случаях).

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

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

  2. Очистить картофель с помощью ножа.

  3. Промыть картофель водой.

  4. Нарезать картофель дольками.

  5. Поместить картофель в кастрюлю.

  6. Залить содержимое кастрюли водой.

  7. Посолить.

  8. Довести воду до кипения.

  9. Убавить огонь.

  10. Варить картофель до готовности (около 20 минут).

  11. Снять кастрюлю с огня и слить воду.

  12. Прекратить процесс, так как картофель готов.

Вообще слово «алгоритм» (алгорифм) произошло от algorithmi, algorismus – латинской формы написания имени великого среднеазиатского математика аль-Хорезми1, который сформулировал правила выполнения арифметических действий над многозначными числами в десятичной (позиционной) системе счисления. Эти правила и назвали алгоритмами. В дальнейшем это понятие стало использоваться вообще для обозначения последовательности действий, приводящих к решению поставленной задачи.

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

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

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

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

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

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

  • определенность (детерминированность) – каждая команда алгоритма должна быть однозначно истолкована и понятна исполнителю, чтобы он мог решить задачу по этому алгоритму. Например, в алгоритме не должно быть указано, что надо взять 10 – 20 литров бензина. Какого бензина, сколько точно литров необходимо?;

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

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

Рассмотрим приведенный выше алгоритм варки картофеля с точки зрения его свойств.

1) Алгоритм дискретен, так как весь процесс разбит на отдельные шаги (в нашем случае их оказалось 12).

2) Алгоритм определен, так как каждая команда описана коротко и достаточно понятно для исполнителя. Команды даны именно в той последовательности, которая необходима для решения данной задачи. Попробуйте, например, поменять местами пункты 6 и 8 алгоритма – вряд ли в этом случае вы получите нужный результат.

3) Алгоритм результативен, так как при его точном исполнении вы сможете отведать вполне приемлемый вареный картофель.

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

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