Для единообразной формы записи алгоритмы записываются с
помощью служебных слов и команд.
Служебные слова
·
арг
(аргумент)
·
рез
(результат)
·
нач
(начало)
·
кон
(конец)
·
цел
(целый)
·
вещ
(вещественный)
·
сим
(символьный)
·
лит
(литерный)
·
лог
(логический)
·
таб(таблица)
·
нц
(начало цикла)
·
кц (конец
цикла)
·
длин
(длина)
·
дано
·
надо
·
если
·
то
·
иначе
·
все
·
пока
·
для
·
от
·
до
·
знач
·
и
·
или
·
не
·
да
·
нет
·
при
·
выбор
·
Ввод
·
Вывод
·
утв
Алгоритм
алг имя
нач
тело
алгоритма
кон
Исполнители
СКИ Робот
вверх
вниз
вправо
влево
закрасить
Логические команды обратной связи
снизу свободно
справа свободно
слева свободно
клетка закрашена
радиация
слева стена
справа стена
сверху стена
снизу стена
клетка не закрашена
температура
СКИ Чертежник
опустить перо
поднять перо
сместиться в точка(х,у)
сместиться на вектор(а,б)
Типы переменных
цел - целые числа из диапазона от -32768 до 32767 (2
байта)
вещ - вещественные
числа от -1038 до 1038 (4 байта) Например: 3.14;
0.314е1; 27e-2=0.27
лог
логические переменные (да, нет) (1 байт) (да>нет)
сим –
символьные переменные (‘a’, ‘5’, ‘.’, ‘,’ …) (1 байт)
лит - литерные (строковые) переменные (‘’, ‘мама
мыла раму’) (256 байт)
Описание переменных
цел а,в,с
вещ х,у
Команда присваивания
Имя:=значение;
Имя:=Имя2;
Имя:=значение выражения
Например
а:=5;
b:=a;
c:=a+b;
c:=c+1;
Блок-схема линейного алгоритма
Ветвление
Алгоритм может содержать команду ветвления. Блок-схема команды ветвления.
Команды ветвления
если-то-иначе-все
Общий вид команды:если условие
· то серия 1
· иначе серия 2
все
Серия 2 вместе со служебным словом иначе может отсутствовать. В этом случае команда имеет вид:
если условие
то серия 1
все
При выполнении команды если КуМир сначала проверяет условие, записанное между
если и то. При соблюдении этого условия выполняется серия 1, в противном случае —
серия 2 (если она есть), после чего КуМир переходит к выполнению команд, записанных
после слова все.
Если условие не соблюдается, а серия 2 вместе с иначе отсутствует, то КуМир сразу
переходит к выполнению команд, записанных после слова все.
Пример 1:
если a<b
· то b:=b-a; p:=p+q
· иначе a:=a-b; q:=q+p
все
Пример 2:
если x>m
· то
· · m:=x
· · n:=n+1
все
Выбор-при-иначе-все
Общий вид команды:
выбор· при условие 1 : серия 1
· при условие 2 : серия 2
· ...
· при условие n : серия n
· иначе серия n+1
все
Ключевое слово иначе вместе с соответствующей серией команд может отсутствовать:
выбор· при условие_1 : серия_1
· при условие_2 : серия_2
· ...
· при условие_n : серия_n
все
КуМир сначала проверяет условие 1. Если оно соблюдается, то КуМир выполняет· при условие_2 : серия_2
· ...
· при условие_n : серия_n
все
команды из серии 1, после чего переходит к выполнению команд, записанных после слова
все. В противном случае КуМир делает то же самое с условием 2 и командами из серии 2
и т.д.
Команды, записанные после слова иначе, выполняются в том случае, когда не соблю-
дено ни одно из условий.
В команде выбор всегда выполняется не более одной серии команд, даже если несколько условий окажутся истинными. Выполнение команды выбор заканчивается после того,
как найдено первое (по порядку следования) условие со значением да (и выполнена соответствующая серия команд).
Пример 1:
выбор
· при а>1: i:=i+1
· при а<0: j:=j-1
· иначе t:=i; i:=j; j:=t
все
Цикл с предварительным условием
тело цикла
кц
При выполнении цикла пока КУМИР циклически повторяет следующие действия:
∙ Проверяет записанное после служебного слова пока условие.
∙ Если условие не соблюдается, то выполнение цикла завершается и КуМир начинает
выполнять команды, записанные после кц.
Если же условие соблюдается, то КуМир выполняет тело цикла, снова проверяет
условие и т.д.
Пример:
нц пока а<10
· а := а + 1
кц
В теле цикла может быть использована команда выход. При выполнении
этой команды содержащий ее цикл будет завершен.
Цикл с последующим условием
тело цикла
кц_при условие
При выполнении цикла пока КУМИР циклически повторяет следующие действия:
∙ Проверяет записанное после служебного слова пока условие.
∙ Если условие не соблюдается, то выполнение цикла завершается и КуМир начинает
выполнять команды, записанные после кц.
Если же условие соблюдается, то КуМир выполняет тело цикла, снова проверяет
условие и т.д.
Пример:
нц пока а<10
· а := а + 1
кц
В теле цикла может быть использована команда выход. При выполнении этой команды содержащий ее цикл будет завершен.
Цикл с параметром
Цикл «для»
Общий вид цикла для:
нц для i от i1 до i2· тело_цикла
кц
Здесь i — величина типа цел (она называется параметром цикла), а i1 и i2 — целые
выражения, т. е. выражения типа цел. При выполнении цикла для тело цикла выполняется последовательно для i = i1, i = i1 + 1, . . . , i = i2. Если i1 = i2, то тело цикла
выполнится один раз для i = i1. Если же i1 > i2, то тело цикла не выполнится ни разу.
Общий вид цикла для с шагом:
нц для i от i1 до i2 шаг i3
· тело_цикла
кц
Если шаг i3 (который также должен быть целым выражением) равен положительному
числу d, то тело цикла будет выполняться последовательно для i = i1, i = i1 + d, i =
i1 + 2d, . . . до тех пор, пока значение i удовлетворяет условию i ≤ i2.
Если же шаг i3 отрицателен и равен −d, то тело цикла будет выполняется последовательно для i = i1, i = i1 − d, i = i1 − 2d, . . . до тех пор, пока значение i удовлетворяет
условию i ≥ i1.
В теле любого из циклов может быть использована команда выход. При
выполнении этой команды содержащий ее цикл будет завершен.
Пример 1
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости:
| вверх | вниз | влево | вправо |
При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответственно (по отношению к наблюдателю): вверх ↑, вниз ↓, влево ←, вправо →.
Четыре команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ (также по отношению к наблюдателю):
| сверху свободно | снизу свободно | слева свободно | справа свободно |
Цикл
ПОКА < условие >
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ < условие >
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно)
Если РОБОТ начнёт движение в сторону находящейся рядом с ним стены, то он разрушится и программа прервётся.
Сколько клеток лабиринта соответствуют требованию, что, начав движение в ней и выполнив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка F6)?
НАЧАЛО
ПОКА<справа свободно ИЛИ снизу свободно >
ПОКА < снизу свободно >
вниз
КОНЕЦ ПОКА
ПОКА < справа свободно >
вправо
КОНЕЦ ПОКА
КОНЕЦ ПОКА
КОНЕЦ
1) 14
2) 17
3) 19
4) 21
2) 17
3) 19
4) 21
Пояснения к задаче
В данной программе РОБОТ поступает следующим образом: сперва РОБОТ проверяет свободна ли клетка справа или снизу от него, если это так, то РОБОТ переходит к первому внутреннему циклу. В этом цикле пока у нижней стороны клетки в которой находится РОБОТ нет стены он продолжает двигаться вниз. Как только это условие перестанет выполняться он переходит ко второму внутреннему циклу. Этот внутренний цикл аналогичен первому, только теперь проверяется отсутствие стены у правой стороны клетки.
Проанализировав эту программы приходим к выводу, что РОБОТ будет двигаться вправо или вниз, пока у него есть такая возможность. РОБОТ при данной программе никогда не разобьётся.
Проверив все клетки по выведенному нами правилу движения РОБОТА выясняем, что число клеток, удовлетворяющих условию задачи равно 19.
Правильный ответ указан под номером 3.
Пример 2
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости:
вверх вниз влево вправо
При выполнении этих команд РОБОТ перемещается на одну клетку соответственно: вверх, вниз, влево, вправо.
Четыре команды проверяют истинность условия отсутствия стены у той клетки, где находится РОБОТ:
сверху
свободно снизу
свободно слева
свободно справа
свободно
Цикл
ПОКА < условие> команда
выполняется, пока условие истинно, иначе происходит переход на следующую строку.
Сколько клеток лабиринта соответствуют требованию, что, выполнив предложенную программу, РОБОТ остановится в той же клетке, с которой он начал движение?
НАЧАЛО
ПОКА < снизу свободно > вниз
ПОКА < слева свободно > влево
ПОКА < сверху свободно > вверх
ПОКА < справа свободно > вправо
КОНЕЦ
1) 1
2) 2
3) 3
4) 4
| вверх | вниз | влево | вправо |
При выполнении этих команд РОБОТ перемещается на одну клетку соответственно: вверх, вниз, влево, вправо.
Четыре команды проверяют истинность условия отсутствия стены у той клетки, где находится РОБОТ:
| сверху свободно | снизу свободно | слева свободно | справа свободно |
Цикл
ПОКА < условие> команда
выполняется, пока условие истинно, иначе происходит переход на следующую строку.
Сколько клеток лабиринта соответствуют требованию, что, выполнив предложенную программу, РОБОТ остановится в той же клетке, с которой он начал движение?
НАЧАЛО
ПОКА < снизу свободно > вниз
ПОКА < слева свободно > влево
ПОКА < сверху свободно > вверх
ПОКА < справа свободно > вправо
КОНЕЦ
2) 2
3) 3
4) 4
Пояснение.
Выясним, что необходимо, чтобы РОБОТ остановился в той же клетке, с которой он начал движение. Программа заканчивается командой "ПОКА < справа свободно > вправо", следовательно, для того, чтобы робот остановился в той же клетке, с которой он начал движение, необходимо, чтобы у этой клетки была стенка справа (условие 1). Этому условию удовлетворяют все клетки правой стенки лабиринта и еще пять клеток кроме нее.
Предпоследняя команда: "ПОКА < сверху свободно > вверх", значит у клетки в которой он прекратит выполнение должно быть ограничение стенкой сверху. Кроме того, робот, прекратив выполнение этой команды, должен оказаться на одной строчке с клеткой, с которой он начал движение (условие 2).
Клеток, удовлетворяющих условиям 1 и 2, всего две: Г3 и Д1, если нумеровать цифрами сверху вниз, а буквами слева направо. Представив себе движение робота в том случае когда он стартует из этих клеток, увидим, что в них он и вернется.
Правильный ответ указан под номером 2.
Домашнее задание
Задача 1.
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости, включает в себя 4 команды-приказа и 4 команды проверки условия.
Сколько клеток лабиринта соответствуют требованию, что, начав движение в ней и выполнив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка А1)?
Команды-приказы:
| вверх | вниз | влево | вправо |
При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответственно: вверх ↑, вниз ↓, влево ←, вправо →.
Если РОБОТ начнёт движение в сторону находящейся рядом с ним стены, то он разрушится, и программа прервётся.
Другие 4 команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ:
| сверху свободно | снизу свободно | слева свободно | справа свободно |
Цикл
ПОКА < условие >
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ < условие >
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
НАЧАЛО
ПОКА < слева свободно ИЛИ сверху свободно >
ЕСЛИ < слева свободно >
ТО влево
ИНАЧЕ вверх
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
1) 8
2) 12
3) 17
4) 21
2) 12
3) 17
4) 21
Задача 2.
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости:
| вверх | вниз | влево | вправо |
При выполнении этих команд РОБОТ перемещается на од-ну клетку соответственно: вверх, вниз, влево, вправо.
Четыре команды проверяют истинность условия отсутствия стены у той клетки, где находится РОБОТ:
| сверху свободно | снизу свободно | слева свободно | справа свободно |
Цикл
ПОКА <условие> команда
выполняется, пока условие истинно, иначе происходит переход на следующую строку.
Сколько клеток лабиринта соответствуют требованию, что, выполнив предложенную программу, РОБОТ остановится в той же клетке, с которой он начал движение?
НАЧАЛО
ПОКА <слева свободно> влево
ПОКА <сверху свободно> вверх
ПОКА <справа свободно> вправо
ПОКА <снизу свободно> вниз
КОНЕЦ
1) 1
2) 2
3) 3
4) 4
2) 2
3) 3
4) 4





Комментариев нет:
Отправить комментарий