Вариант 1 Самостоятельная работа 23 ГДЗ Самостоятельные и контрольные работы Босова 8 класс (Информатика)
ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ
ВАРИАНТ 1
1. Для каждой записи в левом столбце подберите соответствующее ей составное условие из правого столбца.
2. Квадраты при игре в крестики-нолики пронумерованы, как показано на рисунке:
1 2 3
4 5 6
7 8 9
Заданы номера трёх квадратов: N1, N2, N3, причём N1 < N2 < N3. Напишите программу, проверяющую, лежат ли квадраты на одной вертикали.
var
N1, N2, N3: integer;
begin
write('Введи N1 < N2 < N3 > > ‘);
readln(N1, N2, N3);
if(N2 — N1 = 3) and (N3 — N2 = 3)
then writeln(‘На одной вертикали’)
else writeln(‘Не на одной вертикали’)
end.
Окно вывода:
Введи N1 < N2 < N3 > > 1 5 8
Не на одной вертикали
Введи N1 < N2 < N3 > > 2 5 8
На одной вертикали
Python
print(‘Введи N1 < N2 < N3 > > ‘)
N1,N2,N3=map(int,(input().split()))
if (N2-N1==3) and (N3-N2==3):
print(‘На одной вертикали’)
else:
print(‘Не на одной вертикали’)
Окно вывода:
Введи N1 < N2 < N3 > >
2 5 8
На одной вертикали
Для издания 2025 года:
3. Дополнительное задание. На изучаемом языке программирования запишите программу преобразования исходных данных в соответствии с алгоритмом, представленным блок-схемой.
Паскаль
var
a: integer;
begin
write(‘Введи a > > ‘);
readln(a);
if a > = 0 then
if a = 0 then a := 18 else a := a + 1
else a := a — 6;
writeln(a);
end.
Python
a=int(input())
if a > =0:
if a==0:a=18
else: a=a+1
else: a=a-6
print(a)
Для издания 2018 года:
3. Дополнительное задание. Сколько ошибок допущено в программе?
program zadacha;
var a: integer;
begin
writein(‘Введите число a’)
readln(a);
if a > =0 then
if a=0 then a:=18 else a:=a+l;
else a:=a-6;
writein (a);
readln
end.
Найдите все ошибки и исправьте их. Опишите на естественном языке или с помощью блок-схемы алгоритм преобразования исходных данных, используемый в данной программе.
Ошибки отмечены красным цветом и комментарием
var
a: integer;
begin
write(‘Введи a > > ‘);
readln(a);
if a > = 0 then
if a = 0 then a := 18 else a := a + 1 //;
else a := a — 6;
writeln(a);
//readln
end.
Вводится целое число, если оно положительное или равно 0, то если оно равно 0, числу присваивается значение 18, иначе к числу прибавляется 1.
Если число отрицательное, то его значение уменьшается на 6
1) Соответствие составных условий:
- x не кратно 4 — $$x \bmod 4 \ne 0$$
- $$-5 < x < -2$$ — $$(x>-5)\ \text{and}\ (x<-2)$$
- $$x \in [-1;5]$$ — $$(x>=-1)\ \text{and}\ (x<=5)$$
2) Квадраты на одной вертикали в поле 3×3 отличаются на 3:
$$N_2-N_1=3 \quad \text{и} \quad N_3-N_2=3$$
Тогда программа проверяет условие и выводит нужное сообщение.
var
N1, N2, N3: integer;
begin
write(‘Введи N1<N2<N3>> ‘);
readln(N1, N2, N3);
if (N2 — N1 = 3) and (N3 — N2 = 3)
then writeln(‘На одной вертикали’)
else writeln(‘Не на одной вертикали’);
end.
print(‘Введи N1<N2<N3>>’)
N1, N2, N3 = map(int, input().split())
if (N2 — N1 == 3) and (N3 — N2 == 3):
print(‘На одной вертикали’)
else:
print(‘Не на одной вертикали’)
3) Алгоритм преобразования числа:
если $$a \ge 0$$, то при $$a=0$$ присваивается $$18$$, иначе $$a:=a+1$$; если $$a<0$$, то $$a:=a-6$$.
var
a: integer;
begin
write(‘Введи a>> ‘);
readln(a);
if a >= 0 then
if a = 0 then a := 18 else a := a + 1
else a := a — 6;
writeln(a);
end.
a = int(input())
if a >= 0:
if a == 0:
a = 18
else:
a = a + 1
else:
a = a — 6
print(a)
Для проверки:
| Входные данные | Выходные данные |
|---|---|
| -10 | -16 |
| 0 | 18 |
| 10 | 11 |
Ответ
1) $$x \bmod 4 \ne 0$$; $$(x>-5)\ \text{and}\ (x<-2)$$; $$(x>=-1)\ \text{and}\ (x<=5)$$.
2) Программа проверяет, что $$N_2-N_1=3$$ и $$N_3-N_2=3$$.
3) Если $$a=0$$, то $$a:=18$$; если $$a>0$$, то $$a:=a+1$$; если $$a<0$$, то $$a:=a-6$$.