вентилятор
Хорошего настроения!

ЕГЭ по информатике 2021 - Задание 6 (Циклы)



Добрый день! В этой статье рассмотрим 6 (шестое) задание из Единого Государственного Экзамена (ЕГЭ) по информатике.


В этом задании из ЕГЭ по информатике обычно даётся задача на понимание цикла в программировании.


Перейдём к примерам!


Задача (Классика, степенная зависимость)

Определите, при каком введённом значении переменной s программа выведет число 160. Для Вашего удобства программа представлена на четырёх языках программирования.



ПаскальPython
var n, s: integer;
begin
    readln(s);
    n := 1;
    while n <= 100 do
    begin
        s := s + 30;
        n := n * 3
    end;
    write(s)
end.
s = int(input())
n = 1
while n <= 100:
    s = s + 30
    n = n * 3
print(s)
С++Алгоритмический язык
#include
using namespace std;
int main()
{
    int n, s;
    cin >> s;
    n = 1;
    while (n <= 100)
    {
        s = s + 30;
        n = n * 3;
    }
    cout « s « endl;
}
алг
нач
    цел n, s
    ввод s
    n := 1
    нц пока n <= 100
        s := s + 30
        n := n * 3
    кц
    вывод s
кон

Решение:

Программа написана на 4 языках программирования, но мы будем работать с языком "паскаль".


Рассмотрим "анатомию" нашей программы.



ЕГЭ по информатике - задание 6 (анатомия программы с циклом)

В первой строчке объявляются переменные n и s целого типа данных. В восьмом задании из ЕГЭ по информатике преимущественно даются именно целые числа.


Ключевой слово вegin - обозначает начало программы.


В следующей строчке программа запрашивает число с клавиатуры и кладёт его в переменную s.


В переменную n в начале кладётся значение 1.


Ключевое слово while - задаёт условие цикла. Пока условие верно (истино), выполняется тело цикла! Внутри тела цикла значение переменных изменяются, в результате чего, через некоторое количество повторений уже не будет выполняться условие n <= 100. Значение переменной n будет больше 100. И цикл закончится.


После окончание цикла выполнится последняя команда данной программы write(s). Она выведет на экран значение переменной s.


Программа полностью завершается на команде end..


Ключевые слова begin и end в паскале - показывают границу чего-либо. Например, у нас есть пара команд begin и end, которая показывает область нашей программы. Есть пара begin и end, которая показывает границу тела цикла while. В некоторых других языках подобную функциональность выполняют фигурные скобки.


Приступим непосредственно к решению!


Принимаем во внимание, что в начале переменная n=1, переменная s -неизвестно.


Далее, нам нужно оценить: сколько раз повторится цикл ?


1.После 1-ого повторения циклаn := n * 3 = 1 * 3 = 3
2.После 2-ого повторения циклаn := n * 3 = 3 * 3 = 9
3.После 3-его повторения циклаn := n * 3 = 9 * 3 = 27
4.После 4-ого повторения циклаn := n * 3 = 27 * 3 = 81
5.После 5-ого повторения циклаn := n * 3 = 81 * 3 = 243

После пяти повторений n станет больше 100, значит, цикл прекратится!


Нам нужно узнать, что было в переменной s (sнач.) до начала цикла. Цикл повторился 5 раз.


Следовательно, мы должны прибавить по 30 (тридцать) к первоначальному значению sнач 5 раз. В итоге, должна получится переменная s = 160.


s = sнач. + 30 * 5 = 160
sнач. = 160 - 150 = 10

Это значение и было введено пользователем.


Ответ: 10.



Ещё одна классическая задача из тренировочных вариантов ЕГЭ по информатике.


Задача (Классика, линейная зависимость)

Определите, при каком наименьшем введённом значении переменной s программа выведет число 32. Для Вашего удобства программа представлена на четырёх языках программирования.


ПаскальPython
var k, s: integer;
begin
    Readln(s);
    k:=0;
    while s > 0 do begin
        s := s - 15;
        k := k + 2;
    end;
    write(k);
end.
s = int(input())
k = 0
while s > 0:
    s = s − 15
    k = k + 2
print(k)
С++Алгоритмический язык
#include
using namespace std;
 
int main() {
    int s , k;
    cin >> s;
    k = 0;
    while(s > 0){
        s = s − 15;
        k = k + 2;
    }
    cout << k << endl;
}
алг
нач
    цел s, k
    ввод s
    k := 0
    нц пока s > 0
        s := s − 15
        k := k + 2
    кц
    вывод k
кон


Решение:

В переменной k после выполнения цикла должно быть значение 32. Оценим, сколько раз выполнится цикл.


kнач. + 2 * x = 32

0 + 2 * x = 32

x = 32 / 2 = 16

Здесь kнач. = 0. За x обозначили количество повторений цикла.


Т.е. 16 раз должен повторится цикл.


При выполнении последней итерации (16 проход цикла) от переменной s отнимается в последний раз число 15, и после этого, условие s > 0 должно не сработать. Значит, при последнем проходе цикла в переменной s может быть значение от 1 до 15. Нам нужно найти наименьшее возможное значение переменной s. Поэтому после 15 проходов цикла считаем, что переменная s=1.


Тогда 15 итераций назад, переменная s = 1 + 15 * 15 = 226.


Это и будет ответ.


Ответ: 226



Ещё один частый гость в примерных вариантах ЕГЭ по информатике.


Задача (условие цикла зависит от двух переменных)

Определите, при каком наименьшем введённом значении переменной s программа выведет число 80. Для Вашего удобства программа представлена на пяти языках программирования.


БейсикPython
DIM S, N AS INTEGER
INPUT S
N = 300
WHILE S + N <= 500
S = S + 30
N = N − 20
WEND
PRINT N
s = int(input())
n = 300
while s + n <= 500:
    s = s + 30
    n = n − 20
print(n)
ПаскальАлгоритмический язык
var s, n: integer;
begin
    Readln(s);
    n := 300;
    while s + n <= 500 do
    begin
        s := s + 30;
        n := n − 20;
    end;
    writeln(n)
end.
алг
нач
    цел s, n
    ввод s
    n := 300
    нц пока s + n <= 500
        s := s + 30
        n := n − 20
    кц
    вывод n
кон
Си++
#include
using namespace std;
int main()
{
    int s, n; 
    cin >> s;
    n = 300;
    while (s + n <= 500) {
        s = s + 30;
        n = n − 20;
    }
    cout << n;
    return 0;
}


Решение:

Здесь интересно условие цикла s + n <= 500. Оно зависит сразу от двух переменных.


Переменная n после окончания программы должна равняться 80. Найдём, сколько раз выполнился цикл. Обозначим за x - количество повторений цикла.


300 - x * 20 = 80
-x * 20 = -220
x = 220 / 20 = 11

Цикл повторится 11 раз.


За один проход цикла сумма двух переменных (s + n) увеличивается на 10. Значит, сумма после 10 проходов может быть в диапазоне от 491 до 500. Мы выбираем самое маленькое значение 491, потому что, если сумма будет принимать минимальное значение, то и переменная s будет принимать минимальное значение из всех возможных (ведь переменная n жёстко задана).


Переменная n после 10 проходов будет равна 80 + 20 = 100.


Тогда переменная s = 491 - 100 = 391 (После 10 проходов цикла). "Отмотаем" 10 итераций назад, и мы узнаем первоначальное значение переменной s.


sнач. = 391 - 10 * 30 = 91


Ответ: 91.

На этом всё! Успехов на экзамене по информатике при решении 6 задания нового формата 2021.






01-09-2020 в 19:12:28





Поддержать сайт:


Похожая статья:

ЕГЭ по информатике - Задание 27 (Цепочки чисел)

Привет! Продолжаем готовится к ЕГЭ по информатике. Сегодня решим неско...

Категория: Информатика  Подкатегория: ЕГЭ
Дата: 27-02-2023 в 16:00:04 2


Комментарии:

Спасибо большое за объяснения! Стало понятнее. В 3 задании, немного не понятно почему взяли 491, а не 490 например..
Маша 25-11-2020 в 15:09:53

Маша,у нас не может получится 490,т.к. в учет взято 10 повторений. При 11-ом повторении(финальном) программа выдаст 500,алгоритм будет выполняться и дальше до 12 повтора. Нам же нужно,чтобы алгоритм завершился на 11 повторении,то есть строго больше 500. Подходит диапазон от 491 до 500
Никита 27-11-2020 в 15:34:48

Спасибо! Кратко, понятно и по существу!
Виктор 28-03-2021 в 10:59:23

Спасибо огромное, вы так помогаете, размеренно, спокойно, пошагово объясняете. Надеюсь вы дальше тоже будете разбирать задания из ЕГЭ. Вы прекрасны
Вирсавия 12-04-2021 в 20:09:27

Класс
14-06-2021 в 15:24:14



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



Напишите email, чтобы получать сообщения о новых комментариях (необязательно):


Задача против робота. Расположите картинки горизонтально:




Нажимая кнопку Отправить, Вы соглашаетесь с политикой конфиденциальности сайта.