Программирование на алгоритмическом языке КуМир
.pdf
Условие часто содержит знак сравнения. Эти знаки записываются следующим образом:
<= |
|
меньше или равно, |
< |
меньше, |
|
|||
>= |
|
больше или равно, |
> |
больше, |
|
|||
<> |
|
не равно, |
|
|
= |
равно. |
|
|
Неполная форма записи команды |
|
|
|
|
||||
если |
условие |
|
|
|
|
|
|
|
то |
|
|
|
|
|
|
|
|
все |
|
|
|
|
|
|
|
|
 |
неполной |
форме |
может |
|
|
|
|
|
быть опущен раздел иначе. Òîã- |
|
|
|
|
||||
äà ïðè |
невыполнении |
условия |
|
|
|
нет |
||
управление передается |
следую- |
|
|
Условие |
||||
щему оператору, стоящему за ко- |
|
|
выполнено? |
|
||||
мандой ветвления. |
|
|
|
|
|
|||
Кроме сравнений, в качестве |
|
|
да |
|
||||
условия |
могут использоваться |
|
|
|
||||
|
|
|
|
|||||
команды-вопросы |
исполнителя |
|
|
|
|
|||
|
|
|
|
|||||
или логические выражения. |
|
|
Действие |
|
||||
Условия могут быть простые |
|
|
|
|
||||
|
|
|
|
|||||
и сложные, состоящие из двух |
|
|
|
|
||||
или более простых условий. Если |
|
|
|
|
||||
надо чтобы выполнялись одно- |
|
|
|
|
||||
временно все условия, то они со- |
|
|
|
|
||||
единяются союзами и. Союзом или |
объединяются условия, когда |
|||||||
должно выполняться хотя бы одно из перечисленных условий.
Разберем следующие примеры:
1.Составьте программу, которая вводит два различных числа и выводит наибольшее из них.
алг сравнение чисел
нач цел À, Â
вывод “введите значения двух чисел“
ввод A,B
если А> B
то вывод нс,“ Наибольшее из чисел А=“, A иначе вывод нс, “Наибольшее из чисел В =“, B
все
кон
21
начало
ввод А, В
нет
A>B |
вывод А |
да
вывод В
конец
Строка с условием выбирает один из двух вариантов: если введенное значение переменой А окажется больше переменной В, то в результате будет напечатано значение А, иначе значение В.
2. Составьте программу для вычисления значения функции y = |
3x |
. |
|
||
Значение переменной x ввести с клавиатуры. |
x + 5 |
|
При решении этой задачи необходимо учесть область определения функции. Надо помнить, что на 0 делить нельзя. При x = –5 знаменатель дроби равен 0, следовательно, в этой точке функция не существует. При выполнении условия необходимо выполнить два действия: вычислить значение и напечатать результат.
Блок-схема:
алг вычисление функции
нач вещ õ,ó
вывод “введите значение х“
ввод õ если õ<> 5
то
ó:= (3*õ)/(õ+5)
вывод нс, “ó= “, ó
22
иначе вывод нс, “Нет решения“
все
кон
начало |
|
|||
ввод X |
|
|||
|
|
нет |
вывод |
|
x ≠ −5 |
«нет решения» |
|||
|
|
|
|
|
да |
|
|||
|
|
|
|
|
y = |
3 x |
|
|
|
x + 5 |
|
|
||
|
|
|
||
|
|
|
|
|
вывод x,y
конец
Для построения разветвляющихся алгоритмов существует также команда выбор, которая имеет следующий вид
выбор при условие: операторы 1
при условие: операторы 2 при условие: операторы 3
…
иначе
все
Условия записываются так же, как и в команде если. Слово иначе может быть опущено.
23
Разберем задачи
1. Составьте программу и блок схему для вычисления значений функции в зависимости от заданного с клавиатуры значения Х:
|
20 |
ïðè Õ<= -20 |
Y= |
x ïðè –20 < X <=30 |
|
|
30 |
ïðè Õ > 30 |
алг вычисление функции
нач вещ õ, y
вывод “введите значения аргумента х“
ввод x
выбор
при x<=-20: y:=20
при x>-20 è x<=30: y:=sqrt(x) при x>30: y:=30
все
вывод нс, “значение функции =“,y
кон
начало
ввод X
x<= –20 |
+ |
y:=30 |
|
– |
|
–20<x<=30 |
+ |
y:=30 |
|
– |
|
y:=30 |
|
вывод x,y |
|
конец |
|
24
2. По введенному номеру дня недели, выведите его название
алг день недели нач öåë ä
вывод “введите номер дня недели “
ввод ä
выбор при д=1: вывод нс, “понедельник“
при д=2: вывод нс, “вторник“ при д=3: вывод нс, “среда“ при д=4: вывод нс, “четверг“ при ä=5: вывод нс, “пятница“ при д=6: вывод нс, “суббота“
при д=7: вывод нс, “воскресенье“
все
кон
3. Составьте алгоритм округления вещественных чисел из диапазона от 0 до 5.
алг округление
нач вещ ÷ вывод “введите положительное число не превышающее 5 “
ввод ÷
выбор при ÷ >=0 è ÷ < 0.5: вывод нс, 0
при ÷ >=0.5 è ÷ < 1.5: вывод нс, 1 при ÷ >=1.5 è ÷ < 2.5: вывод нс, 2 при ÷ >=2.5 è ÷ < 3.5: вывод нс, 3 при ÷ >=3.5 è ÷ < 4.5: вывод нс, 4 при ÷ >=4.5 è ÷ <=5: вывод нс, 5
иначе вывод нс, “число вне диапазона“
все
кон
ЭТО НАДО ЗНАТЬ
Полная форма записи команды ветвления
если условие то иначе
все
Неполная форма записи команды ветвления если условие
то
все
25
Для составления сложных условий используются союзы и, или
выбор при условие: операторы 1
при условие: операторы 2 при условие: операторы 3
…
иначе
все
ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ
1.Какие две формы команды ветвления Вы знаете?
2.Чем отличается одна форма команды ветвления от другой?
3.В каких алгоритмах используются команды ветвления?
4.Какой фигурой на блок-схемах обозначается команды ветвления ?
5.Какое значение S будет на экране в результате выполнения следующего алгоритма:
|
|
|
A:=6 |
B:=4 |
|
|
|
|
|
|
|
|
|
|
|
|
нет |
|
да |
||||
|
|
|
A>=B |
||||
|
|
|
|
|
|
|
|
S:=A/B |
|
|
|
|
S:=A*B |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S
ВЫПОЛНИТЕ ЗАДАНИЯ
1. Составьте программы и блок-схемы для следующих задач
а) Введите числа а, b и N. Если оба числа больше N, то напеча- тайте слово “БОЛЬШЕ”, если меньше N, то напечатайте “МЕНЬШЕ”, иначе напечатайте “N в промежутке межу a и b”.
б) Введите число. Выдайте информацию о его знаке (отрицательное, положительное или равно нулю).
26
Операторы цикла
Очень часто при составлении алгоритмов некоторую последовательность команд приходится выполнять многократно. Для решения таких задач применяют циклический алгоритм.
В языке КуМир есть специальные команды для организации программы с циклическим алгоритмом.
Существует три основных типа команд, с помощью которых можно реализовать циклы в алгоритмах. В КуМире они называются
команды повторения.
Цикл ê ðàç
Первой и самой простой конструкцией является вариант организации цикла к раз
Общий вид команды:
нц |
к раз |
Начало цикла |
операторы |
Тело цикла |
|
кц |
|
Конец цикла |
|
|
|
Такой цикл будет повторяться указанное число раз, которое задается величиной к. Оператор или группу операторов, которые должны повторяться, часто называют телом цикла.
Разберем пример
Необходимо повторить вывод фразы 5 раз.
алг повторение
нач нц 5 раз
вывод нс,“фраза “
кц
кон
Из данного примера видно, что необходимо повторяющиеся команды записать между служебными словами НЦ è КЦ, а в начале цикла указать количество повторений с помощью целого числа.
Еще одна команда повторения — это цикл с постусловием èëè
öèêë “äî òåõ ïîð“
27
Общий вид цикла до тех пор:
нц
· тело_цикла кц_при условие
В нем проверка условия производится после того, как будет осуществлен проход по телу цикла. При выполнении цикла до тех пор циклически повторяются следующие действия:
•Выполняется тело цикла.
•Проверяется записанное после служебного слова кц_при условие.
•Если условие соблюдается, то выполнение цикла завершается и начинают выполняться команды, записанные после кц_при. Если же условие не соблюдается, то КуМир выполняет тело цикла, снова проверяет условие и т.д.
Разберем пример:
Необходимо с помощью цикла получить значение х, которое превысит 100.
алг
нач
нц
· x := 2*x
кц_при x>100
кон
В этом примере не стоит задумываться о том, сколько раз необходимо выполнять цикл, т.к. КуМир сам примет необходимое решение при соблюдении условия.
Общий вид блок–схемы для цикла с постусловием будет выглядеть следующим образом:
операторы
Если одна циклическая конструкция находится внутри другой, то такое построение называется вложенными циклами.
нет
условие?
да
28
Разберем пример
Необходимо составить алгоритм вывода на экран номер этажа и номер квартир, находящихся на данном этаже, для пятиэтажного дома, если на каждом этаже 4 квартиры.
алг äîì нач цел õ,ó
x:=1 y:=1
нц 5 раз
вывод нс,“ýòàæ “,y
нц раз
вывод “квартира “,х х:=x+1
кц
y:=y+1
кц
кон
Описание используемых величин
Присваивание величине х значение равное 1(номер квартиры), а величине у=1(номер этажа ) Задать цикл по количеству этажей Вывести номер этажа
Задать цикл по количеству квартир на этаже Вывести номер квартиры
Увеличить номер квартиры на 1
Закончить цикл по количеству квартир Увеличить номер этажа на 1
Закончить цикл по количеству этажей Конец алгоритма
Внешний цикл определяет номер этажа и работает 5 раз. Внутренний цикл определяет номер квартиры на этаже, и поэтому данный цикл будет работать каждый раз при смене номера этажа. Т. е. будет осуществлять вывод номера квартиры 4 раза и отработает пять таких циклов.
Цикл по условию
Цикл по условию используется в программах, когда известно, что группа операторов должна выполняться, пока справедливо некоторое условие. Эта конструкция в общем виде выглядит так:
нц |
пока условие |
Начало цикла |
|
Операторы |
Тело цикла |
кц |
|
Конец цикла |
|
|
29
Сначала проверяется условие. Åñ- |
|
||||
ли оно справедливо, то выполняют- |
|
||||
ся операторы, составляющие |
òåëî |
нет |
|||
цикла. Затем осуществляется возврат |
|||||
на начало цикла и повторяется про- |
условие? |
||||
|
|||||
верка условия, и так до тех пор, по- |
|
||||
ка условие не нарушится. |
|
|
да |
||
Общий вид блок-схемы для цик- |
|
||||
ла по условию будет выглядеть сле- |
операторы |
||||
дующим образом: |
|
|
|||
|
|
|
|||
Ïðè |
программировании |
цикла |
|
||
ПОКА нужно следить, чтобы условие |
|
||||
цикла было конечно. То есть, в теле |
|
||||
цикла обязательно должен содер- |
|
||||
жаться оператор, в котором осу- |
|
||||
ществляется |
изменение |
значения |
|
||
переменной цикла. Если условие при первой же проверке неверно, |
|||||
то операторы тела цикла не выполняются ни одного раза. |
|||||
Разберем примеры
1. Начав тренировки, спортсмен в первый день пробежал 10 км, каждый следующий день он увеличивал дневную норму на 10% от нормы предыдущего дня. Необходимо составить программу, которая определяет на какой день пробег превысит 15 км.
алг определения номера дня |
|
нач цел Ä, вещ S |
Описание переменных |
Ä:=1 |
Величина Д –порядковый номер дня |
S:=10 |
S –значение пути в первый день |
|
тренировок |
нц пока S<=15 |
Условие по пробегу пути |
S:=S+S*0,1 |
Формула подсчета пути |
Ä:=Ä+1 |
Увеличение номера дня на 1 |
кц |
Закончить цикл |
вывод нс, “Ä=”, Ä |
Вывести номер дня |
кон |
Конец алгоритма |
В данном алгоритме переменная величина Д подсчитывает порядковый номер дня, а переменная S — длину пути, которую спортсмен пробегает в этот день. Как только условие не будет выполняться, цикл закончит свою работу и перейдет к оператору, распо-
30
