Разбор задач из ЕГЭ №8 по информатике
8. Анализ программ с циклами
Задачи
- Запишите число, которое будет напечатано в результате выполнения программы. Для Вашего удобства программа представлена на пяти языках программирования.
[Образовательный портал «Решу ЕГЭ», https://ege.sdamgia.ru/, №9160]Бейсик Python DIM S, N AS INTEGER
S = 56
N = 0
WHILE n < 15
S = S - 6
N = N + 3
WEND
PRINT(S)s = 56
n = 0
while n < 15:
s = s - 6
n = n + 3
print(s)Паскаль Алгоритмический язык var s, n: integer;
begin
s := 56;
n := 0;
while n < 15 do
begin
s := s - 6;
n := n + 3;
end;
writeln(s)
end.алг
нач
цел s, n
s := 56
n := 0
нц пока n < 15
s := s - 6
n := n + 3
кц
вывод s
кон#include <iostream>
using namespace std;
int main() {
int s, n;
s = 56;
n = 0;
while (n < 15) {
s = s - 6;
n = n + 3;
}
cout << s << endl;
}
Решение:
а) Составим трассировочную таблицу.
s=26№ Условие (n<15) s n + 56 0 1 + 50 3 2 + 44 6 3 + 38 9 4 + 32 12 5 - 26 15
б) Так как n в цикле каждый раз увеличивается на 3, то необходимо 5 раз выполнить тело цикла, чтобы условие n < 15 стало ложным. Тогда значение s можно вычислить следующим образом:
s = 56 – 6 ∙ 5 = 56 – 30 = 26.
Ответ: 26. - Определите, что будет напечатано в результате выполнения программы, записанной ниже на разных языках программирования.
[Образовательный портал «Решу ЕГЭ», https://ege.sdamgia.ru/, №9192]Бейсик Python DIM N, S AS INTEGER
N = 1
S = 0
WHILE N <= 650
S = S + 20
N = N * 5
WEND
PRINT Sn = 1
s = 0
while n <= 650:
s = s + 20
n = n * 5
print(s)Паскаль Алгоритмический язык var n, s: integer;
begin
n := 1;
s := 0;
while n <= 650 do
begin
s := s + 20;
n := n * 5
end;
write(s)
end.алг
нач
цел n, s
n := 1
s := 0
нц пока n <= 650
s := s + 20
n := n * 5
кц
вывод s
конСи++ #include <iostream>
using namespace std;
int main() {
int n, s;
n = 1;
s = 0;
while (n <= 650) {
s = s + 20;
n = n * 5;
}
cout « s « endl;
return 0;
}
Решение:
а) Составим трассировочную таблицу.
s=100.№ Условие (n ≤ 650) s n + 0 1 1 + 20 5 2 + 40 25 3 + 60 125 4 + 80 625 5 - 100 3125
б) Так как n в цикле каждый раз увеличивается в 5 раз, то необходимо 5 раз выполнить тело цикла, чтобы условие n ≤ 15 стало ложным. Тогда значение s можно вычислить следующим образом:
s = 5 ∙ 20 = 100.
Ответ: 100 - Запишите число, которое будет напечатано в результате выполнения следующей программы. Для Вашего удобства программа представлена на пяти языках программирования.
[Образовательный портал «Решу ЕГЭ», https://ege.sdamgia.ru/, №15976]Бейсик Python DIM S, N AS INTEGER
S = 80
N = 0
WHILE S + N < 150
S = S − 5
N = N + 15
WEND
PRINT Ns = 80
n = 0
while s + n < 150:
s = s − 5
n = n + 15
print(n)Паскаль Алгоритмический язык var s, n: integer;
begin
s := 80;
n := 0;
while s + n < 150 do
begin
s := s − 5;
n := n + 15;
end;
writeln(n)
end.алг
нач
цел s, n
s := 80
n := 0
нц пока s + n < 150
s := s − 5
n := n + 15
кц
вывод n
конСи++ #include <iostream>
using namespace std;
int main(){
int s = 80, n = 0;
while (s + n < 150) {
s = s − 5;
n = n + 15;
}
cout << n;
return 0;
}
Решение:
а) Составим трассировочную таблицу.
n = 105.№ Условие (s + n < 150) s n 80 0 1 + 75 15 2 + 70 30 3 + 65 45 4 + 60 60 5 + 55 75 6 + 50 90 7 - 45 105
б) Цикл while выполняется до тех пор, пока истинно условие s + n < 150, т.е. переменные n и s определяют, сколько раз выполнится цикл.
Заметим, что сумма s + n каждый шаг увеличивается на 10. На 7 шаге сумма станет равна 150 и условие s + n < 150 перестанет выполняться. Следовательно, n = 0 + 15 · 7 = 105.
Ответ: 105 - Запишите число, которое будет напечатано в результате выполнения
следующей программы. Для Вашего удобства программа представлена
на пяти языках программирования.
[Тренировочная работа №4 по информатике, 4 марта 2020 года, Вариант ИН1910402]Бейсик Python DIM S, N AS INTEGER
S = 900
N = 30
WHILE S > 3*N
S = S - 20
N = N + 30
WEND
PRINT Ss = 900
n = 30
while s > 3*n:
s = s - 20
n = n + 30
print(s)Алгоритмический язык Паскаль алг
нач
цел s, n
s := 900
n := 30
нц пока s > 3*n
s := s - 20
n := n + 30
кц
вывод s
конvar s, n: integer;
begin
s := 900;
n := 30;
while s > 3*n do begin
s := s - 20;
n := n + 30
end;
writeln(s)
end.C++ #include <iostream>
using namespace std;
int main() {
int s = 900, n = 30;
while (s > 3*n) {
s = s - 20;
n = n + 30;
}
cout << s;
return 0;
}
Решение:
Составим трассировочную таблицу.№ Условие (s > 3 ∙ n) s n + 900 30 1 + 880 60 2 + 860 90 3 + 840 120 4 + 820 150 5 + 800 180 6 + 780 210 7 + 760 240 8 - 740 270
s = 740.
Ответ: 740. - При каком наибольшем введённом числе k после выполнения программы будет напечатано 52? Для Вашего удобства программа представлена на пяти языках программирования.
[Самылкина Н.Н., Синицкая И.В., Соболева В.В., ЕГЭ 2020. Тематические тренировочные задания. — М.: Эксмо, 2019., стр 73, №7]Бейсик Python DIM S, N AS INTEGER
S = 8
N =7
WHILE S <=1000
S = S + K
N = N + 5
WEND
PRINT(N)s = 8
n = 7
while s <=1000:
s = s + k
n = n + 5
print(n)Алгоритмический язык Паскаль алг
нач
цел s, n, k
ввод k
s:=8
n:=7
нц пока s <=1000
s:= s + k
n:= n + 5
кц
вывод n
конvar n, s, k: integer;
begin
readln(k);
s := 8;
n := 7;
while s <= 1000 do begin
s := s + k;
n := n + 5
end;
writeln(n)
endC++ #include<stdio.h>
int main() {
int s, n, k;
s = 0;
n = 4;
while (n <=1000) {
s = s + k;
n = n + 5; }
printf(“%d\n”, n);
}
Решение:
По условию задачи программа выводит значение n = 52. Начальное значение n = 7, причем каждый раз n увеличивается на 5.
Найдем количество шагов цикла:
Выход из цикла происходит при значении s>1000.
верхняя граница возможного интервала чисел, поскольку цикл не должен остановиться на 8 шаге.
k = 124.
Ответ: 124 - При каком наименьшем введённом числе k после выполнения программы будет напечатано 71? Для Вашего удобства программа представлена на пяти языках программирования.
Бейсик | Python |
DIM S, N AS INTEGER S = 116 N =8 WHILE S >=5 S = S — K N = N + 9 WEND PRINT(N) | s = 116 n = 8 while s >=5: s = s — k n = n + 9 print(n) |
Алгоритмический язык | Паскаль |
алг нач цел s, n, k ввод k s:=116 n:=8 нц пока s>=5 s:= s - k n:= n + 9 кц вывод n кон | var n, s, k: integer; begin readln(k); s := 116; n := 8; while s >= 5 do begin s := s — k; n := n + 9 end; writeln(n) end. |
C++ | |
#include<stdio.h> int main() { int s, n, k; s = 116; n = 8; while (s >=5) { s = s — k; n = n + 9 ; } printf(“%d\n”, n); } |
[Самылкина Н.Н., Синицкая И.В., Соболева В.В., ЕГЭ 2020. Тематические тренировочные задания. — М.: Эксмо, 2019., стр 74, №8]
Решение:
По условию задачи программа выводит значение n = 71. Начальное значение n = 8, причем каждый раз n увеличивается на 9.
Найдем количество шагов цикла:
Выход из цикла происходит при значении s ≥ 5.
Ответ: 16
Информационные источники
- «ФИПИ. Открытый банк тестовых заданий», http://os.fipi.ru/tasks/5/a
- Материалы для подготовки к ЕГЭ по информатике К.Ю. Полякова, http://kpolyakov.spb.ru/school/ege.htm
- Образовательный портал «Решу ЕГЭ», https://ege.sdamgia.ru/
- Я.Н.Зайдельман , ЕГЭ 2020. Информатика и ИКТ. Подготовка к ЕГЭ в 2020 году. Диагностические работы. ФГОС. — М.: МЦНМО, 2019.
- Я. Н. Зайдельман, М. А. Ройтберг, Информатика и ИКТ. Подготовка к ЕГЭ в 2019 году. Диагностические работы. ФГОС.— М.: МЦНМО, 2019.
- Е.Л. Теплоухова, Как решать задачи на системы счисления? ЕГЭ. Информатика. Задание №16. - «ЛитРес: Самиздат», 2019
- Самылкина Н.Н., Синицкая И.В., Соболева В.В., ЕГЭ 2020. Тематические тренировочные задания. — М.: Эксмо, 2019.