Разбор задач из ЕГЭ №8 по информатике

8. Анализ программ с циклами

Задачи

  1. Запишите число, которое будет напечатано в результате выполнения программы. Для Вашего удобства программа представлена на пяти языках программирования.
    Бейсик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;
    }
    [Образовательный портал «Решу ЕГЭ», https://ege.sdamgia.ru/, 9160]


    Решение:
    а) Составим трассировочную таблицу.
    Условие (n<15)sn
    +560
    1+503
    2+446
    3+389
    4+3212
    5-2615
    s=26
    б) Так как n в цикле каждый раз увеличивается на 3, то необходимо 5 раз выполнить тело цикла, чтобы условие n < 15 стало ложным. Тогда значение s можно вычислить следующим образом:
    s = 56 – 6 ∙ 5 = 56 – 30 = 26.
    Ответ: 26.
  2. Определите, что будет напечатано в результате выполнения программы, записанной ниже на разных языках программирования.
    БейсикPython
    DIM N, S AS INTEGER
    N = 1
    S = 0
    WHILE N <= 650
        S = S + 20
        N = N * 5
    WEND
    PRINT S
    n = 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;
    }
    [Образовательный портал «Решу ЕГЭ», https://ege.sdamgia.ru/, 9192]
    Решение:
    а) Составим трассировочную таблицу.
    Условие (n650)sn
    +01
    1+205
    2+4025
    3+60125
    4+80625
    5-1003125
    s=100.
    б) Так как n в цикле каждый раз увеличивается в 5 раз, то необходимо 5 раз выполнить тело цикла, чтобы условие n ≤ 15 стало ложным. Тогда значение s можно вычислить следующим образом:
    s = 5 ∙ 20 = 100.
    Ответ: 100
  3. Запишите число, которое будет напечатано в результате выполнения следующей программы. Для Вашего удобства программа представлена на пяти языках программирования.
    БейсикPython
    DIM S, N AS INTEGER
    S = 80
    N = 0
    WHILE S + N < 150
    S = S − 5
    N = N + 15
    WEND
    PRINT N
    s = 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;
    }
    [Образовательный портал «Решу ЕГЭ», https://ege.sdamgia.ru/, 15976]
    Решение:
    а) Составим трассировочную таблицу.
    Условие (s + n < 150)sn
    800
    1+7515
    2+7030
    3+6545
    4+6060
    5+5575
    6+5090
    7-45105
    n = 105.
    б) Цикл while выполняется до тех пор, пока истинно условие s + n < 150, т.е. переменные n и s определяют, сколько раз выполнится цикл.
    Заметим, что сумма s + n каждый шаг увеличивается на 10. На 7 шаге сумма станет равна 150 и условие s + n < 150 перестанет выполняться. Следовательно, n = 0 + 15 · 7 = 105.
    Ответ: 105
  4. Запишите число, которое будет напечатано в результате выполнения
    следующей программы. Для Вашего удобства программа представлена
    на пяти языках программирования.
    Бейсик Python
    DIM S, N AS INTEGER
    S = 900
    N = 30
    WHILE S > 3*N
    S = S - 20
    N = N + 30
    WEND
    PRINT S
    s = 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;
    }
    [Тренировочная работа №4 по информатике, 4 марта 2020 года, Вариант ИН1910402]


    Решение:
    Составим трассировочную таблицу.
    Условие (s > 3 ∙ n)sn
    +90030
    1+88060
    2+86090
    3+840120
    4+820150
    5+800180
    6+780210
    7+760240
    8-740270

    s = 740.
    Ответ: 740.
  5. При каком наибольшем введённом числе k после выполнения программы будет напечатано 52? Для Вашего удобства программа представлена на пяти языках программирования.
    Бейсик 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)
    end
    C++
    #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);
    }
    [Самылкина Н.Н., Синицкая И.В., Соболева В.В., ЕГЭ 2020. Тематические тренировочные задания. — М.: Эксмо, 2019., стр 73, №7]
    Решение:
    По условию задачи программа выводит значение n = 52. Начальное значение n = 7, причем каждый раз n увеличивается на 5.
    Найдем количество шагов цикла:
    Выход из цикла происходит при значении s>1000.
    верхняя граница возможного интервала чисел, поскольку цикл не должен остановиться на 8 шаге.
    k = 124.
    Ответ: 124
  6. При каком наименьшем введённом числе 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


Информационные источники

  1. «ФИПИ. Открытый банк тестовых заданий», http://os.fipi.ru/tasks/5/a
  2. Материалы для подготовки к ЕГЭ по информатике К.Ю. Полякова, http://kpolyakov.spb.ru/school/ege.htm
  3. Образовательный портал «Решу ЕГЭ», https://ege.sdamgia.ru/
  4. Я.Н.Зайдельман , ЕГЭ 2020. Информатика и ИКТ. Подготовка к ЕГЭ в 2020 году. Диагностические работы. ФГОС. — М.: МЦНМО, 2019.
  5. Я. Н. Зайдельман, М. А. Ройтберг, Информатика и ИКТ. Подготовка к ЕГЭ в 2019 году. Диагностические работы. ФГОС.— М.: МЦНМО, 2019.
  6. Е.Л. Теплоухова, Как решать задачи на системы счисления? ЕГЭ. Информатика. Задание №16. - «ЛитРес: Самиздат», 2019
  7. Самылкина Н.Н., Синицкая И.В., Соболева В.В., ЕГЭ 2020. Тематические тренировочные задания. — М.: Эксмо, 2019.