Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_na_ekzamen_po_informatike.doc
Скачиваний:
16
Добавлен:
02.04.2015
Размер:
3.42 Mб
Скачать

2.2. Формы записи алгоритма

На практике наиболее распространены следующие формы представления алгоритмов:

  • словесная – запись на естественном (“человеческом”) языке;

  • графическая – изображение команд в виде графических символов;

  • программная – текст на языке программирования.

Словесный способ записи алгоритмов. Это <TBODY>описание последовательных этапов (шагов) обработки данных. Алгоритм задается в произвольном изложении на естественном языке. </TBODY>

Пример 2.1. Записать алгоритм нахождения наибольшего общего делителя (НОД) двух натуральных чисел.

Предлагается следующий алгоритм – алгоритм Евклида.

1. Задать два числа.

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

3. Заменить большее из чисел разностью большего и меньшего из чисел.

4. Повторить алгоритм с шага 2.

Описанный алгоритм применим к любым натуральным числам и должен приводить к решению поставленной задачи. Убедимся в этом, определив с помощью этого алгоритма наибольший общий делитель чисел 125 и 75:

1. m = 125, n = 75.

2. m > n, значит

3. Новое m = 125 – 75 = 50, n = 75. Возврат к 2.

2. n > m, значит

3. Новое n = 75 – 50 = 25, m = 50. Возврат к 2.

2. m > n, значит

3. Новое m = 50 – 25 = 25, n = 25. Возврат к 2.

2. m = n. Значит ОТВЕТ = 25.

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

  • описания не формализованы (нет строгих правил);

  • страдают многословностью записей;

  • допускают неоднозначность толкования отдельных предписаний.

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

Таблица 2.1.

<TBODY>Название

символа

Обозначение и пример

заполнения

Пояснение

Процесс

Вычислительное действие или последовательность действий

Решение

Проверка условий

Модификация

Начало цикла

Ввод-вывод

Ввод-вывод в общем виде

Пуск-останов

Начало или конец алгоритма

<TBODY>При графическом представлении алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий.</TBODY> Такое представление называется блок-схемой алгоритма.

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

В таблице 2.1. приведены наиболее часто употребляемые символы.

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

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

Блок "модификация" используется для организации циклических конструкций. Слово модификация означает видоизменение, преобразование. Внутри блока записывается параметр цикла, для которого указываются его начальное значение, граничное условие и шаг изменения значения параметра для каждого повторения. На рис. 2.1. приведена блок-схема алгоритма решения задачи примера 2.1.

Блок-схема: знак завершения 168

Прямая соединительная линия 167

Блок-схема: данные 166

Прямая соединительная линия 165

Прямая соединительная линия 164Прямая соединительная линия 163Прямая соединительная линия 162Прямая соединительная линия 161

Да

Блок-схема: решение 158Блок-схема: данные 160Блок-схема: знак завершения 157

Прямая соединительная линия 155Прямая соединительная линия 156

Нет

Прямая соединительная линия 154

Блок-схема: решение 152Блок-схема: процесс 150Блок-схема: процесс 151

Прямая соединительная линия 149Прямая соединительная линия 148

Да

Нет

Прямая соединительная линия 147

Рис. 2.1. Блок-схема алгоритма Евклида

комбинацией трех базовых (основных) структур: следование, ветвление, цикл.

1. Базовая структура “следование. Образуется из последовательности действий, следующих строго одно за другим.

Например, требуется вычислить величину y по формуле y = ax2 + bx при произвольных a, b, x. Блок-схема соответствующего алгоритма имеет вид, приведенный на рис 2.2. В данном случае алгоритм состоит из простой последовательности действий (блоков). Значит, </TBODY>он соответствует структуре “следование”.

Блок-схема: знак завершения 180

Прямая соединительная линия 179

Блок-схема: данные 178

Прямая соединительная линия 177

Блок-схема: процесс 176

Прямая соединительная линия 175

Блок-схема: данные 174

Прямая соединительная линия 173

Блок-схема: знак завершения 172

Рис. 2.2. Алгоритм вычисления по формуле y = ax2 + bx

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

Структура “ветвление” существует в двух основных вариантах:

если – то:

если – то – иначе.

В алгоритме примера 2.1 присутствуют оба варианта этой структуры. После блока “m = n ?” в случае положительного ответа выполняется действие “Вывести n”, а в случае отрицательного – работа алгоритма продолжается далее. Таким образом, реализована структура “если – то”. После блока “m > n ?” в случае положительного ответа выполняется действие “m = m – n”, а в случае отрицательного (т.е. иначе) – действие “n = n – m”,. Таким образом реализована структура “если – то – иначе”.</TBODY>

3. Базовая структура “цикл”. Обеспечивает многократное выполнение некоторой совокупности действий, которая называется телом цикла.

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

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

1. Оба мальчика переправляются на левый берег.

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

3. Первый боец переправляется на левый берег, а первый мальчик остается на правом.

4. Второй мальчик переправляется на правый берег.

5. Оба мальчика переправляются на левый берег.

6. Один мальчик возвращается на правый берег, второй – остается на левом.

7. Второй боец переправляется на левый берег.

8. Второй мальчик переправляется на правый берег.

Заметим, что шаги 1 – 4 почти совпадают с шагами 5 – 8, разница только в номере переправляемого бойца. Очевидно, что с помощью подобного алгоритма можно переправить любое количество N бойцов, а не только двоих. Для этого надо выполнить следующий алгоритм.

1. Положить k = 1.

2. Оба мальчика переправляются на левый берег.

3. Один мальчик возвращается на правый берег, второй – остается на левом.

4. k-й боец переправляется на левый берег, а первый мальчик остается на правом.

5. Второй мальчик переправляется на правый берег.

6. Увеличить k на 1.

7. Если k = N, то СТОП, иначе перейти к 2.

Это будет циклический алгоритм, тело которого составляют шаги 2 – 7. Другой вариант циклической структуры дан в примере 2.1. В нем телом цикла являются шаги 2 – 4.

Вопрос №7

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