
Задача 1: «Волк, коза и капуста»:
“Крестьянину нужно перевезти через реку волка, козу и капусту. Но лодка такова, что в ней может поместиться только крестьянин, а с ним или волк, или коза, или капуста. Но если оставить волка с козой, то волк съест козу, а если оставить козу с капустой, то коза съест капусту. Как перевез свой груз крестьянин?”
Словесный способ алгоритма решения задачи 1:
-
перевезти козу
-
вернуться к волку и капусте
-
перевезти волка к козе
-
перевезти козу к капусте
-
перевезти капусту к волку
-
вернуться
-
перевезти козу
Словесный способ не имеет широкого распространения в информатике:
-
такие описания строго не формализуемы;
-
страдают многословностью записей;
-
допускают неоднозначность толкования отдельных предписаний.
Словесно-формульный способ записи алгоритмов использует ограниченный набор слов и математические формулы. Алгоритм разбивается на шаги, т.е. структурируется. Его часто называют структурированным или пошаговым.
Рассмотрим этот способ записи алгоритма на примере нахождения действительных корней полного квадратного уравнения:
Задача 2. Решить квадратное уравнение: a·x2 +b·x + c = 0.
Исходными данными для алгоритма являются коэффициенты a, b, с. Причем a≠0 и b≠0. Результат: два или ни одного действительных корней.
Словесно-формульный способ записи задачи 2:
1) Задать (численные значения коэффициентов) a, b, c.
2)
Вычислить (дискриминант): .
3) Если D≥0, то вычислить (действительные корни по формулам)
Иначе «Записать ответ: нет действительных корней».
4) Закончить решение.
Такой способ записи алгоритма очень часто используется в математике для описания небольших алгоритмов и совмещает использование определенного набора слов.
Одним из его недостатков является то, что для сложных задач трудно увидеть структуру алгоритма (нет наглядности). Этот недостаток преодолен в графическом (блок-схемном) способе описания алгоритма. Рассмотрим его.
На языке блок-схем каждый шаг алгоритма описывается с помощью соответствующей фигуры, а последовательность выполнения шагов определяется линиями-связями.
Блок схемы читаются сверху вниз и слева направо. Блок-схемы полезны тем, что обеспечивают легкую «читаемость» алгоритма. Они, как и любые схемы, наглядны.
Однако это не всегда так: стоит попытаться нарисовать блок-схему для более-менее сложного алгоритма, как она разрастается до невероятных размеров и теряет все свое наглядное преимущество. Поэтому блок-схемы хороши в структурном программировании для описания коротких алгоритмов. Язык блок-схем прост (хотя существуют его расширенные варианты):
Элемент блок-схемы |
Наименование |
Содержание |
|
Блок вычислений (вычислительный блок) |
Вычислительные действия или последовательность действий |
|
Логический блок (блок условия) |
Выбор направления выполнения алгоритма в зависимости от некоторого условия |
|
Блок ввода-вывода данных |
Общее обозначения ввода (вывода) данных (вне зависимости от физического носителя) |
|
Начало (конец) |
Начало или конец алгоритма, вход или выход в подпрограмме |
|
Процесс пользователя (подпрограмма) |
Вычисление по стандартной программе или подпрограмме |
|
Блок модификации |
Функция выполняет действия, изменяющие пункты (например, заголовок цикла) алгоритма |
|
Безусловный переход |
Переход к следующему блоку |
Вывод: Алгоритмизация - один из основных этапов решения задач с помощью компьютера. Понятие алгоритма является достаточно «молодым» и дополняется по мере использования его в сфере информационных технологий и программирования, не смотря на то, что в математике оно было известно еще до нашей эры. При описании свойств алгоритма разные авторы используют множество подходов и классификаций. Мы попытались обобщить их и выделить наиболее значимые: детерминированность, дискретность, конечность, массовость и результативность. Среди множества способов описания алгоритмов самым наглядным является графический метод, который реализуется с помощью блок-схемы алгоритма.