Представление о программе
Вид материала | Документы |
СодержаниеРазветвляющийся алгоритм — алгоритм, содержащий структуру ветвления Циклический алгоритм — алгоритм, содержащий типовую конструкцию «цикл». |
- 1 класс по программе Л. В. Занкова. Учитель: Андреева, 52.48kb.
- Пояснительная записка к образовательной программе дополнительного образования детей, 537.46kb.
- Государственным заказчикам Программы (п. 2): Вмесячный срок назначить лиц, ответственных, 1074.41kb.
- Доклад для обн 17 10, 151.56kb.
- Учебный план повышения квалификации по программе "Логистика" в рамках направления "Экономика", 29.84kb.
- Вопросы к экзамену по курсу " ЭВМ и периферийные устройства" для групп К2-121, -122,, 75.03kb.
- Представление данных в ЭВМ, 207.04kb.
- И представление налоговой отчетности, 394.07kb.
- И представление налоговой отчетности, 357.06kb.
- Дать детям представление о речевом этикете, как о правилах поведения в различных ситуациях;, 241.98kb.
Приведем алгоритм решения задачи, представив его в разных формах.
Пример 12.5
Требуется рассчитать необходимое количество рулонов обоев для оклейки комнаты. Заданы параметры комнаты: длина (а), ширина (Ъ) и высота (п). Заданы параметры рулона обоев: длина (I), ширина (d). Считаем, что площадь окон и дверей составляет 15 % от площади стен.
![](images/306108-nomer-m46404650.jpg)
Мы используем для представления алгоритма разные формы: словесно-формульное описание, блок-схему, программу.
Словесно-формульное описание алгоритма «Оклейка обоями» представляется в виде нумерованной последовательности действий, понятных человеку.
Алгоритм «Оклейка обоями»
- Рассчитать периметр комнаты: р=2*(а+Ъ).
- Рассчитать площадь стен с учетом дверей и окон: sl=0,85*p*h.
- Рассчитать площадь одного рулона обоев: s2=l*d.
- Вычислить количество рулонов: k=div(sl/s2)+l, где div — функция определения целой части числа.
- Конец алгоритма
Для описания алгоритма той же задачи может быть использована графическая форма представления, например в виде блок-схемы. Блок-схема, в виде блок-схемы. Блок-схема, алгоритма «Оклейка обоями так же как и словесная форма, должна быть понятна человеку, но в то же время в ней должна быть учтена специфика компьютера, которая часто связана с вводом исходных данных и выводом результатов.
Алгоритм «Оклейка обоями» представлен в виде блок-схемы на рисунке 12.4.
Пояснения к блок-схеме:
- действия, указанные в блоках 1-4, соответствуют действиям, указанным в словесном алгоритме в пп. 1-4;
- дополнительно введены блоки для ввода исходных данных в компьютер и вывода результата вычислений;
- дополнительно введены блоки начала и конца алгоритма.
Приведем форму представления того же алгоритма «Оклейка обоями» в виде программы на школьном алгоритмическом языке в таблице 12.2.
Таблица 12.2. Алгоритм «Оклейка обоями» в виде программы на школьном алгоритмическом языке
Школьный алгоритмический язык | Пояснения |
алг Оклейка обоями | Начало алгоритма |
нач вещ a, b, h, 1, d, p,sl,s2, цел k | Описание типов переменных |
вывод "Введите длину, ширину, высоту комнаты, длину, ширину обоев" | Вывод подсказки на экран |
ввод a, b, h, 1, d | Ввод информации с клавиатуры |
p:=2*(a+b) | Вычисление периметра комнаты |
sl:=0.85*p*h | Вычисление площади стен |
s2:=l*d | Вычисление площади рулона |
k:=div(sl,s2)+l | Вычисление количества рулонов |
вывод k KOH | Вывод ответа на экран Конец алгоритма |
Все алгоритмы, приведенные в качестве примеров, имели одинаковую структуру: в них действия следовали одно за другим. Это самая простая разновидность алгоритмов. Но существуют алгоритмы, в которых последовательность действий может быть нарушена из-за выполнения или невыполнения некоторого условия. Встречаются алгоритмы, в которых некоторая последовательность действий повторяется, причем количество повторений тоже определяется условием.
Любой, даже самый сложный алгоритм, можно представить с помощью трех типовых конструкций (структур): последовательности, ветвления, цикла. Каждая структура имеет один вход и один выход.
На рисунке 12.5 представлены блок-схемы этих базовых структур, из которых видно, что:
- в структуре «последовательность» действия выполняются последовательно, сверху вниз, без возвратов (рис. 12.5, о);
- в структуре «ветвление» выполняется либо одна, либо другая группа действий в зависимости от истинности (выполнения) или ложности (невыполнения) условия (рис. 12.5, б);
- в структуре «цикл» действия повторяются до тех пор, пока выполняется заданное условие (рис. 12.5, в).
![](images/306108-nomer-475bfe17.jpg)
Рис. 12.5. Типовые алгоритмические структуры
Набор типовых структур часто называют алгоритмическими конструкциями, потому что из них, как из конструктора, можно составить алгоритм любой сложности.
В зависимости от того, какие базовые структуры использованы при составлении алгоритмов, различают три основные разновидности алгоритмов: линейный, разветвляющийся, циклический. Рассмотрим их подробнее.
12.4. Линейный алгоритм
В основе линейных алгоритмов лежит структура «последовательность». Покажем это на примерах.
Пример 12.6
В своей книге «Арифметика» Леонтий Филиппович Магницкий привел следующий способ отгадывания задуманного двузначного числа: «Если кто задумает двузначное число, то ты скажи ему, чтобы он увеличил число десятков задуманного числа в 2 раза, к произведению прибавил бы 5 единиц, полученную сумму увеличил в 5 раз и к новому произведению прибавил сумму 10 единиц и числа единиц задуманного числа, а результат произведенных действий сообщил бы тебе. Если ты из указанного тебе результата вычтешь 35, то узнаешь задуманное число».
Представим предлагаемые Л. Ф. Магницким действия в виде алгоритма в словесной форме. В предлагаемом процессе должны участвовать два человека: загадывающий число и отгадывающий его. Поэтому алгоритмов тоже будет два.
![](images/306108-nomer-m3cb6162f.jpg)
Алгоритм для загадывающего число
- Задумайте двузначное число.
- Умножьте число десятков на 2.
- К полученному произведению прибавьте 5.
- Полученную сумму умножьте на 5.
- К полученному произведению прибавьте 10.
- К полученной сумме добавьте количество единиц задуманного числа.
- Сообщите полученное число отгадывающему.
- Конец алгоритма
Алгоритм для отгадывающего число
- Отнимите от сообщенного числа 35.
- Сообщите результат.
- Конец алгоритма
В этих двух алгоритмах действия выполняются в том порядке, в котором записаны.
Пример 12.7
Требуется найти вес любого продукта, который должен быть закуплен для туристического похода.
Для исходных данных алгоритма будем использовать следующие обозначения:
п — норма расхода продукта на человека в сутки;
k — количество участников похода;
о — количество дней.
Результат работы алгоритма (рассчитанный вес продукта) будет занесен в переменную т (рисунок 12.6).
![](images/306108-nomer-69ad3fc.png)
Рис. 12.6. Алгоритм решения задачи «Вес продукта» в двух формах представления: в виде блок-схемы и в виде программы на школьном алгоритмическом языке
№ блока | Программа |
1 | алг Масса продукта нач цел d, k, m, n |
2 | вывод "Введите количество человек, дней, норму расхода на человека" |
3 | ввод k, d, n |
4 | m:=n*d*k |
5 | вывод вес продукта , m |
Приведенные ранее в п. 12.3 алгоритмы разведения костра, приготовления каши, измерения расстояния до предмета являются линейными или последовательными.
Линейный алгоритм — алгоритм, в котором действия выполняются последовательно одно за другим.
12.5. Разветвляющийся алгоритм
Вспомним сюжет из русской сказки. Царевич останавливается у развилки дороги и видит камень с надписью: «Пойдешь направо — коня потеряешь, налево — сам пропадешь...»
![](images/306108-nomer-m7b52674b.jpg)
Подобная ситуация, заставляющая нас принимать решения или делать выводы в зависимости от некоторого условия, постоянно встречается в повседневной жизни. Это отражается и в народных приметах, поговорках и пословицах.
- Если закат красный, то жди ветреной погоды.
- Нет дыма без огня (если есть дым, то ищи источник возгорания).
- Кончил дело — гуляй смело (если работа закончена, то можно отдыхать).
- Если вы нашли в лесу муравейник, то его местоположение относительно дерева указывает на юг.
Здесь условиями, позволяющими делать выводы или влияющими на принятие решений, являются слова, расположенные между «если» и «то»:
- в первом примере — красный закат;
- во втором примере — дым;
- в третьем примере — окончание работы;
- в четвертом примере — муравейник.
Условие может принимать значение «истина», когда оно выполнено, или «ложь», когда оно не выполнено. От значения условия зависит наше дальнейшее поведение. Например, в предложении «Если закат красный, то жди ветреной погоды» условие «закат красный» может быть или истинным, или ложным. Если условие истинно, то следует ждать ветреной погоды, иначе (если условие ложно) ничего о погоде сказать нельзя.
В одних случаях анализ ситуации и сам выбор не вызывают затруднений, а в других сделать это очень трудно. Приходится продумывать каждый возможный вариант и последствия принимаемого решения. Шахматист, перед тем как сделать очередной ход, анализирует позицию на несколько ходов вперед. Компьютерные игры также построены на анализе ситуации и выборе действий.
Рассмотрим примеры алгоритмов, содержащих анализ условия.
Пример 12.8
Существует неписанное правило — собранные грибы должен проверить человек, разбирающийся в грибах.
Алгоритм проверки можно записать так:
Если гриб съедобный, то положить его в котелок для варки, иначе — выбросить в костер.
В приведенной записи в зависимости от значения условия выполняется либо действие, указанное после слова «то» — положить гриб в котелок, либо другое действие, указанное после слова «иначе» — выбросить в костер. На рисунке 12.7 представлен фрагмент блок-схемы алгоритма сортировки грибов для варки супа по признаку съедобный-несъедобный.
![](images/306108-nomer-m779ff3cc.jpg)
Рис. 12.7. Алгоритм проверки грибов, в котором использована полная форма ветвления
Пример 12.9
Вы идете в гости и вам необходимо перевязать коробку с подарком красивой лентой, длина которой d. Но хватит ли этой ленты?
Представим решение этой задачи на школьном алгоритми/ ческом языке. Исходными данными для решения этой задачи являются размеры коробки и длина ленточки. Примем для них следующие обозначения: а, Ъ, с — соответственно длина, ширина и высота коробки; d — длина ленточки.
алг Подарок
нач вещ a,b,c,d
вывод "Введите размеры коробки"
ввод а,Ь,с
вывод "Введите размеры ленты"
вводе!
если (a+b+2*c)*2 <= d
то
вывод "Ленты хватит" иначе
вывод "Ленты не хватит"
все
кон
В примерах 12.8 и 12.9 при описании алгоритмов в виде блок-схемы и программы на школьном алгоритмическом языке использовалась конструкция «ветвление».
![](images/306108-nomer-525f6d1.jpg)
Различают полную и неполную форму ветвления.
При полной форме ветвления действия выполняются в обоих случаях: и при истинности, и при ложности условия. Вспомните кота из сказки А. С. Пушкина: «идет направо — песнь заводит, налево — сказку говорит».
В рассмотренных выше примерах использовалась полная форма ветвления, которой соответствует выражение
если <условие>, то <действие 1>, иначе <действие 2>.
Неполной форме ветвления соответствует выражение
если <условие>, то <действия>.
Неполная форма предполагает отсутствие действий в случае невыполнения условия. Например: среднесуточная температура воздуха ниже +8 °С, приступить к протапливанию помещений.
На рисунке 12.8 представлен фрагмент блок-схемы алгоритма, описывающего поведение участников туристского похода, покидающих стоянку: если костер горит, то необходимо залить его водой.
![](images/306108-nomer-7c2e8ee6.jpg)
Рис. 12.8. Алгоритм тушения костра, в котором используется неполная форма ветвления
Пример 12.10
Известно, что в аэропорту существуют ограничения на бесплатный провоз багажа. Если вес багажа превышает норму, то за каждый килограмм сверх нормы необходимо доплачивать. Исходными данными для решения задачи являются: v — вес багажа; vn — разрешенная норма провоза багажа; st — стоимость килограмма сверх нормы. Результат будем записывать в переменную s — сумму выплат сверх нормы.
Алгоритм «Доплата за багаж» представим на школьном алгоритмическом языке.
алг Доплата за багаж
нач вещ v, vn, st, s
вывод "введите вес багажа, норму, стоимость кг"
ввод v, vn, st
если v>vn
то s:=(v-vn)*st
вывод "Доплата составляет", s
все
кон
![](images/306108-nomer-7beaf588.jpg)
Во всех приведенных алгоритмах анализ условия приводит к выполнению тех или иных действий. Если представить алго/ ритм в виде дороги, ведущей к достижению поставленной цели, то условный блок «если..., то..., иначе...» является развилкой на этой дороге.
На приведенных выше блок-схемах хорошо видны подобные развилки. Они создаются при помощи структуры ветвления, имеющей полную и неполную форму. Подобные алгоритмы называются разветвляющимися.
Разветвляющийся алгоритм — алгоритм, содержащий структуру ветвления
12.6. Циклический алгоритм Общее представление
Многие процессы в окружающем мире основаны на многократном повторении одной и той же последовательности действий.
![](images/306108-nomer-51b5d8bb.jpg)
Каждый год наступают весна, лето, осень и зима. Жизнь растений в течение года проходит одни и те же циклы. Подсчитывая число полных поворотов минутной или часовой стрелки, человек измеряет время.
Алгоритмы, которые содержат описания повторяющихся действий, принято называть циклическими.
Циклические алгоритмы могут содержать разные типы циклов. Классификация типов циклов представлена на рисунке 12.9 и подробно рассмотрена далее.
Циклический алгоритм — алгоритм, содержащий типовую конструкцию «цикл».
Тело цикла — описание действий, повторяющихся в цикле.
![](images/306108-nomer-m233bb345.jpg)
Рис. 12.9. Типы циклов
Цикл с известным числом повторений
Цикл с известным числом повторений часто называют «циклом ДЛЯ». Рассмотрим примеры циклических алгоритмов с известным числом повторений.
Пример 12.11
В различных журналах приводятся упражнения, которые необходимо повторять заданное число раз. Рассмотрим пример упражнения для глаз. Особенно это полезно тем, кто долго сидит за компьютером. Подобные алгоритмы чаще всего представляются в словесной или графической форме.
Алгоритм «Упражнение для глаз»
- Возьмите карандаш.
- Установите его в исходное положение у кончика носа.
- Повторите 10 раз, следя за движением карандаша:
- Переместите карандаш на расстояние вытянутой руки;
- Верните карандаш в исходное положение.
- Положите карандаш.
Конец алгоритма
В этом примере заранее известно число повторений. Цикл закончится, когда действия пунктов а и b повторятся 10 раз. Действия а и Ь, повторяющиеся в цикле, определяют тело цикла.
Пример 12.12
Требуется подвести итоги контрольной работы.
Исходными данными для этой задачи являются: b — балл текущего ученика; п — количество учеников. Расчетные данные: s — сумма баллов; sr — средний балл.
Решение этой задачи представим на школьном алгоритмическом языке в таблице 12.3.
Таблица 12.3. Алгоритм «Итоги» на школьном алгоритмическом языке
Алгоритм | Пояснения | |
алг Итоги | Заголовок алгоритма | |
нач цел i, b, s, n, вещ sr | Описание типов переменных | |
вывод "Введите количество учеников в классе" | Вывод подсказки на экран | |
ввод п | Ввод с клавиатуры количества учеников | |
s:=0 | Начальному значению суммы присваивается 0 | |
нц для i от 1 до п | Начало цикла (повторение действий) для каждого из п учеников | |
вывод "Введите оценку", i, "ученика" | Тело цикла | Вывод подсказки |
ввод b | Ввод оценки каждого ученика | |
s:=s+b | Добавление балла к текущей сумме | |
кц | Конец цикла | |
sr:=s/n | Расчет среднего балла | |
вывод средняя оценка=", sr | Вывод среднего балла на экран | |
кон | Конец алгоритма |
Здесь нц, кц — служебные слова, обозначающие соответственно начало и конец цикла.
В этом примере повторяются следующие операции:
- ввод оценки каждого ученика;
- добавление ее к общей сумме.
Эти операции составляют тело цикла. Число повторений в цикле равно количеству учащихся в классе.