Контрольная
работа №4 «Управление и алгоритмы»
1
вариант
Часть А
1. Исполнитель Чертёжник перемещается на координатной плоскости,
оставляя след в виде линии. Чертёжник может выполнять команду Сместиться
на (a, b) (где a, b — целые числа), перемещающую
Чертёжника из точки с координатами (x, у) в точку с координатами (x
+ а, у + b). Если числа a, b положительные, значение
соответствующей координаты увеличивается; если отрицательные, уменьшается.
Например,
если Чертёжник находится в точке с координатами (4, 2), то команда
Сместиться на (2, −3) переместит Чертёжника в точку (6, −1).
Запись
Повтори k
раз
Команда1
Команда2 КомандаЗ
Конец
означает, что последовательность
команд Команда1 Команда2 КомандаЗ повторится k раз.
Чертёжнику был дан
для исполнения следующий алгоритм:
Повтори 2
раз
Команда1
Сместиться на (3, 2) Сместиться на (2, 1) Конец
Сместиться
на (−6, −4)
После выполнения
этого алгоритма Чертёжник вернулся в исходную точку. Какую команду
надо поставить вместо команды Команда1?
1) Сместиться на
(−2, −1)
2) Сместиться на
(1, 1)
3) Сместиться на
(−4, −2)
4) Сместиться на
(2, 1)
2. В алгоритме, записанном ниже, используются переменные a и b.
Символ «:=» обозначает оператор присваивания, знаки «+», «-», «*» и
«/» — соответственно операции сложения, вычитания, умножения и
деления. Правила выполнения операций и порядок действий соответствуют
правилам арифметики. Определите значение переменной a после выполнения
алгоритма:
а := 1
b := 2
b := 3 + a*b
а := b/5*a*4
В ответе укажите одно
целое число — значение переменной a.
3. Запишите значение переменной k, полученное в результате работы
следующей программы. Текст программы приведён на трёх языках
программирования.
Алгоритмический язык
|
Бейсик
|
Паскаль
|
алг
нач
цел k, i
k := 4
нц для i
от 1 до 3
k := i + 2*k
кц
вывод k
кон
|
DIM i, k AS
INTEGER
k = 4
FOR i = 1 TO 3
k = i + 2*k
NEXT i
PRINT k
|
Var k, i:
integer;
Begin
k := 4;
For i := 1 to 3
do
k := i + 2*k;
Writeln(k);
End.
|
4. В таблице
Dat хранятся данные о количестве сделанных заданий учениками
(Dat[1] заданий сделал первый ученик, Dat[2] — второй и т. д.).
Определите, какое число будет напечатано в результате работы следующей
программы. Текст программы приведён на трёх языках программирования.
Алгоритмический язык
|
Бейсик
|
Паскаль
|
алг
нач
целтаб
Dat[1:10]
цел к, m,
n
Dat[1] := 7
Dat[2] := 9
Dat[3] := 10
Dat[4] := 5
Dat[5] := 6
Dat[6] := 7
Dat[7] := 9
Dat[8] := 8
Dat[9] := 6
Dat[10] := 9
m := 10;
n: = 0
нц для к
от 1 до 10
если
Dat[к] < m то
m : = Dat[к]
n: = к
все
КЦ
вывод n
КОН
|
DIM Dat(10) AS
INTEGER
DIM k,m,n AS
INTEGER
Dat[1] = 7
Dat[2] = 9
Dat[3] = 10
Dat[4] = 5
Dat[5] = 6
Dat[6] = 7
Dat[7] = 9
Dat[8] = 8
Dat[9] = 6
Dat[10] = 9
m = 10; n = 0
FOR k := 1 TO 10
IF Dat(k) <
m THEN
m =Dat[k]
n = k
ENDIF
NEXT k
PRINT n
|
Var k, m, n:
integer;
Dat:
array[1..10] of integer;
Begin
Dat[1] := 7;
Dat[2] := 9;
Dat[3] :=
10;
Dat[4] := 5;
Dat[5] := 6;
Dat[6] := 7;
Dat[7] := 9;
Dat[8] := 8;
Dat[9] := 6;
Dat[10] := 9;
m := 10; n: = 0;
for k := 1 to 10
do
if Dat[k] < m
then
begin
m := Dat[k];
n := k
end;
writeln(n);
End.
|
5. У исполнителя Делитель две команды, которым присвоены номера:
1. раздели на 2
2. вычти 3
Первая из них уменьшает
число на экране в 2 раза, вторая уменьшает его на 3. Исполнитель работает
только с натуральными числами. Составьте алгоритм получения из числа 76 числа
5, содержащий не более 5 команд. В ответе запишите только номера команд. (Например,
21211 — это алгоритм: вычти 3, раздели на 2, вычти 3, раздели на 2,
раздели на 2, который преобразует число 33 в 3.) Если таких алгоритмов
более одного, то запишите любой из них.
6. Автомат получает на вход четырёхзначное десятичное число. По полученному
числу строится новое десятичное число по следующим правилам.
1. Вычисляются два
числа — сумма первой и второй цифр и сумма третьей и четвёртой цифр заданного
числа.
2. Полученные два числа
записываются друг за другом в порядке невозрастания (без
разделителей).
Пример. Исходное
число: 2177. Поразрядные суммы: 3, 14. Результат: 143.
Определите, сколько из
приведённых ниже чисел могут получиться в результате работы автомата.
1915
10 110 1516 1211 316 1519 116 1515
В ответе запишите только количество чисел.
Часть В
(выполняется на компьютере)
7. Исполнитель
Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой
на клетки. Между соседними (по сторонам) клетками может стоять стена,
через которую Робот пройти не может. У Робота есть девять команд. Четыре
команды — это команды-приказы:
вверх
вниз влево вправо
При выполнении любой из
этих команд Робот перемещается на одну клетку соответственно: вверх ↑
вниз ↓, влево ← , вправо →. Если Робот получит команду передвижения
сквозь стену, то он разрушится. Также у Робота есть команда закрасить,
при которой закрашивается клетка, в которой Робот находится в настоящий
момент.
Ещё четыре
команды — это команды проверки условий. Эти команды проверяют,
свободен ли путь для Робота в каждом из четырёх возможных направлений:
сверху
свободно снизу свободно слева свободно справа свободно
Эти команды можно использовать
вместе с условием «если», имеющим следующий вид:
если условие
то
последовательность команд
все
Здесь условие — одна
из команд проверки условия. Последовательность команд — это
одна или несколько любых команд-приказов. Например, для передвижения на
одну клетку вправо, если справа нет стенки, и закрашивания клетки можно
использовать такой алгоритм:
если справа свободно то
вправо
закрасить
все
В одном условии можно использовать
несколько команд проверки условий, применяя логические связки и,
или, не, например:
если (справа свободно) и (не снизу
свободно) то
вправо
все
Для повторения последовательности
команд можно использовать цикл «пока», имеющий следующий вид:
нц пока условие
последовательность команд
кц
Например, для движения
вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц
Выполните задание.
На бесконечном поле
есть горизонтальная и вертикальная стены. Правый конец горизонтальной
стены соединён с верхним концом вертикальной стены. Длины стен неизвестны.
В каждой стене есть ровно один проход, точное место прохода и его ширина
неизвестны. Робот находится в клетке, расположенной непосредственно
под горизонтальной стеной у её левого конца. На рисунке указан один
из возможных способов расположения стен и Робота (Робот обозначен
буквой «Р»).
Напишите для Робота
алгоритм, закрашивающий все клетки, расположенные непосредственно
ниже горизонтальной стены и левее вертикальной стены. Проходы должны
остаться незакрашенными. Робот должен закрасить только клетки, удовлетворяющие
данному условию. Например, для приведённого выше рисунка Робот должен закрасить
следующие клетки (см. рисунок).
При исполнении алгоритма
Робот не должен разрушиться, выполнение алгоритма должно завершиться.
Конечное расположение Робота может быть произвольным. Алгоритм должен
решать задачу для любого допустимого расположения стен и любого
расположения и размера проходов внутри стен. Алгоритм может быть выполнен
в среде формального исполнителя или записан в текстовом редакторе.
Сохраните алгоритм в текстовом файле.
Контрольная
работа №4 «Управление и алгоритмы»
2
вариант
Часть А
1.Исполнитель Чертёжник перемещается на координатной плоскости,
оставляя след в виде линии. Чертёжник может выполнять команду Сместиться
на (a, b) (где a, b — целые числа), перемещающую
Чертёжника из точки с координатами (x, у) в точку с координатами (x
+ а, у + b). Если числа a, b положительные, значение соответствующей
координаты увеличивается; если отрицательные, уменьшается.
Например, если
Чертёжник находится в точке с координатами (4,
2), то команда Сместиться на (2, −3) переместит Чертёжника в
точку (6, −1).
Запись
Повтори k раз
Команда1 Команда2 КомандаЗ
Конец
означает, что последовательность команд
Команда1 Команда2 КомандаЗ повторится k раз.
Чертёжнику был дан для исполнения
следующий алгоритм:
Повтори 4 paз
Команда1 Сместиться
на (3, 3) Сместиться на (1,−2) Конец
Сместиться на (−8, 12)
После выполнения этого
алгоритма Чертёжник вернулся в исходную точку. Какую команду надо поставить
вместо команды Команда1?
1) Сместиться на (−2, −4)
2) Сместиться на (4,−13)
3) Сместиться на (2, 4)
4) Сместиться на (−8, −16)
2. В алгоритме, записанном ниже, используются переменные a и b.
Символ «:=» обозначает оператор присваивания, знаки «+», «-», «*» и
«/» — соответственно операции сложения, вычитания, умножения и
деления. Правила выполнения операций и порядок действий соответствуют
правилам арифметики. Определите значение переменной a после выполнения
алгоритма:
а := 1
b := 2 + a
b := a + b
а := b/2*2*a - 3
В ответе укажите одно целое число — значение
переменной a.
3. Запишите значение
переменной y, полученное в результате работы следующей программы.
Текст программы приведён на трёх языках программирования.
Алгоритмический язык
|
Бейсик
|
Паскаль
|
алг
нач
цел y, i
y := 0
нц для i
от 1 до 3
y := y + 4*i
кц
вывод y
кон
|
DIM i, y AS INTEGER
y = 0
FOR i = 1 TO 3
y = y + 4*i
NEXT i
PRINT y
|
Var y,i:
integer;
Begin
y := 0;
For i := 1 to 3
do
y := y + 4*i;
Writeln(y);
End.
|
4. В таблице Dat хранятся данные о количестве самолётов, отправляющихся
из аэропорта города на юг в первой декаде августа (Dat[1] — количество
самолётов первого числа, Dat[2] — количество самолётов второго
числа и т. д.). Определите, что будет напечатано в результате выполнения
следующего алгоритма, записанного на трёх алгоритмических языках.
Алгоритмический
язык
|
Бейсик
|
Паскаль
|
алг
нач
целтаб
Dat[1:10]
цел k, m,
day
Dat[1] := 2
Dat[2] := 2
Dat[3] := 3
Dat[4] := 3
Dat[5] := 4
Dat[6] := 4
Dat[7] := 5
Dat[8] := 5
Dat[9] := 6
Dat[10] := 6
day:=1;
m := Dat[1]
нц для k
от 2 до 10
если
Dat[k] >= m то
m:=
Dat[k]
day := k
все
КЦ
вывод
day
КОН
|
DIM Dat(10) AS
INTEGER
Dat[1] = 2
Dat[2] = 2
Dat[3] = 3
Dat[4] = 3
Dat[5] = 4
Dat[6] = 4
Dat[7] = 5
Dat[8] = 5
Dat[9] = 6
Dat[10] = 6
day = 1: m =
Dat(1)
FOR k = 2 TO 10
IF Dat(k) >=
m THEN
m = Dat(k)
day = k
END IF
NEXT k
PRINT day
END
|
Var k, m, day:
integer;
Dat:
array[1...10] of integer;
Begin
Dat[1] := 2;
Dat[2] := 2;
Dat[3] := 3;
Dat[4] := 3;
Dat[5] := 4;
Dat[6] := 4;
Dat[7] := 5;
Dat[8] := 5;
Dat[9] := 6;
Dat[10] := 6;
day:=1; m :=
Dat[1];
for k := 2 to 10
do
if Dat[k] >=
m then
begin
m:= Dat[k];
day := k;
end;
write(day);
End.
|
5. У исполнителя Квадратор
две команды, которым присвоены номера:
1. возведи в квадрат
2. прибавь 1
Первая из них возводит
число на экране во вторую степень, вторая — прибавляет к числу 1.
Исполнитель работает только с натуральными числами. Составьте алгоритм
получения из числа 1 числа 26, содержащий не более 5 команд. В ответе
запишите только номера команд. (Например, 21221 — это алгоритм:
прибавь 1, возведи в квадрат, прибавь 1, прибавь 1, возведи в квадрат,
который преобразует число 1 в 36.) Если таких алгоритмов более
одного, то запишите любой из них.
6. Автомат получает на вход два двузначных десятичных числа. По
полученным числам строится новое десятичное число по следующим
правилам.
1. Вычисляются два
числа — сумма цифр первого числа и сумма цифр второго числа.
2. Полученные два числа
записываются друг за другом в порядке неубывания (без разделителей).
Пример. Исходные числа: 73 и 45. Сумма цифр первого
числа: 10, сумма цифр второго числа: 9. Результат: 910.
Определите, сколько из приведённых ниже чисел могут получиться
в результате работы автомата:
211
1717 1817 1718 1719 219 21 10
В ответе запишите только количество чисел.
Часть В (выполняется
на компьютере)
7.
Исполнитель Робот умеет перемещаться по лабиринту, начерченному на
плоскости, разбитой на клетки. Между соседними (по сторонам) клетками
может стоять стена, через которую Робот пройти не может. У Робота есть девять
команд. Четыре команды — это команды-приказы:
вверх
вниз влево вправо
При выполнении любой из
этих команд Робот перемещается на одну клетку соответственно: вверх ↑
вниз ↓, влево ← , вправо →. Если Робот получит команду передвижения
сквозь стену, то он разрушится. Также у Робота есть команда закрасить,
при которой закрашивается клетка, в которой Робот находится в настоящий
момент.
Ещё четыре
команды — это команды проверки условий. Эти команды проверяют,
свободен ли путь для Робота в каждом из четырёх возможных направлений:
сверху
свободно снизу свободно слева свободно справа свободно
Эти команды можно использовать
вместе с условием «если», имеющим следующий вид:
если условие
то
последовательность команд
все
Здесь условие — одна
из команд проверки условия. Последовательность команд — это
одна или несколько любых команд-приказов. Например, для передвижения на
одну клетку вправо, если справа нет стенки, и закрашивания клетки можно
использовать такой алгоритм:
если справа свободно то
вправо
закрасить
все
В одном условии можно использовать
несколько команд проверки условий, применяя логические связки и,
или, не, например:
если (справа свободно) и (не снизу
свободно) то
вправо
все
Для повторения последовательности
команд можно использовать цикл «пока», имеющий следующий вид:
нц пока условие
последовательность команд
кц
Например, для движения
вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц
Выполните задание.
На бесконечном поле
есть горизонтальная и вертикальная стены. Левый конец горизонтальной
стены соединён с нижним концом вертикальной стены. Длины стен неизвестны.
В каждой стене есть ровно один проход, точное место прохода и его ширина
неизвестны. Робот находится в клетке, расположенной непосредственно
над горизонтальной стеной у её левого конца. На рисунке указан один из
возможных способов расположения стен и Робота (Робот обозначен буквой
«Р»).
Напишите для Робота
алгоритм, закрашивающий все клетки, расположенные непосредственно
выше горизонтальной стены и правее вертикальной стены. Проходы должны
остаться незакрашенными. Робот должен закрасить только клетки, удовлетворяющие
данному условию. Например, для приведённого выше рисунка Робот должен закрасить
следующие клетки (см. рисунок).
При исполнении алгоритма
Робот не должен разрушиться, выполнение алгоритма должно завершиться.
Конечное расположение Робота может быть произвольным. Алгоритм должен
решать задачу для любого допустимого расположения стен и любого
расположения и размера проходов внутри стен. Алгоритм может быть выполнен
в среде формального исполнителя или записан в текстовом редакторе.
Сохраните алгоритм в текстовом файле.
Ответы
|
1
вариант
|
|
2
вариант
|
1.
|
1) Сместиться на (−2, −1)
|
1.
|
1) Сместиться на
(−2, −4)
|
2.
|
4
|
2.
|
1
|
3.
|
43
|
3.
|
24
|
4.
|
4
|
4.
|
10
|
5.
|
11212
|
5.
|
21212
|
6.
|
5
|
6.
|
3
|
7.
|
Задание
на ПК
|
7.
|
Задание
на ПК
|
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.