8 задание ЕГЭ информатика

Урок посвящен разбору задания 8 ЕГЭ по информатике

Объяснение заданий 8 ЕГЭ по информатике

8-я тема — «Программирование алгоритмов с циклами» — характеризуется, как задания базового уровня сложности, время выполнения – примерно 3 минуты, максимальный балл — 1

Алгоритмические структуры с циклами

В 8 задании ЕГЭ используются алгоритмические структуры с циклами. Рассмотрим их на примере языка Паскаль.

Сумма арифметической прогрессии

Формула для вычисления n-ого элемента арифметической прогрессии:
an = a1 + d(n-1)
Формула для вычисления суммы первых n членов арифметической прогрессии:
суммы первых членов арифметической прогрессии

где:

  • ai – i-ый элемент последовательности,
  • d – шаг (разность) последовательности.

Сумма геометрической прогрессии

Свойство геометрической прогрессии:
bn2 = bn+1 * qn-1
Формула для вычисления знаменателя геометрической прогрессии:

\[ q = \frac {b_{n+1}}{b_n} \]

Формула для вычисления n-ого элемента геометрической прогрессии:
bn = b1 * qn-1
bn = bn-1 * q
Формула для вычисления знаменателя геометрической прогрессии:
Формула для вычисления суммы первых n членов геометрической прогрессии:

\[ S_{n} = \frac {b_1-b_{n}*q}{1-q} \]

\[ S_{n} = b_{1} * \frac {1-q^n}{1-q} \]

где:

  • bi – i-ый элемент последовательности,
  • q – знаменатель последовательности.

Решение заданий 8 ЕГЭ по информатике


ЕГЭ по информатике 2017 задание ФИПИ вариант 15 (Крылов С.С., Чуркина Т.Е.):

Определите, что будет напечатано в результате работы следующего фрагмента программы:

1
2
3
4
5
var k,s:integer;
begin
  s:=512;
  k:=0;
  while s

Похожие задания для тренировки


✍ Решение:

Рассмотрим алгоритм программы:

  • В цикле k увеличивается на единицу (k — счетчик). Соответственно, k будет равно количеству итераций (повторов) цикла. После завершения работы цикла k выводится на экран, т.е. это и есть результат работы программы.
  • В цикле s увеличивается на 64. Для простоты расчетов возьмем начальное s не 512, а 0. Тогда условие цикла поменяется на s < 1536 (2048 — 512 = 1536):
s:=0;
k:=0;
while s < 1536 do
   begin
   ...
  • Цикл будет выполняться пока s<1536, а s увеличивается на 64, отсюда следует что итераций цикла (шагов) будет:
1536 / 64 = 24
  • Соответственно, k = 24.

Результат: 24

Для более детального разбора предлагаем посмотреть видео решения данного 8 задания ЕГЭ по информатике:


10 Тренировочных вариантов экзаменационных работ для подготовки к ЕГЭ по информатике 2017, задание 8, вариант 1 (Ушаков Д.М.):

Определите, что будет напечатано в результате выполнения следующего фрагмента программы:

1
2
3
4
5
6
7
8
9
10
11
var k,s: integer;
begin
  k:=1024;
  s:=50;
  while s&gt;30 do
  begin
    s:=s-4;
    k:=k div 2;
  end;
  write(k)
end.


✍ Решение:

Результат: 32

Подробное решение смотрите на видео:


ЕГЭ 8.3:

При каком наименьшем целом введенном числе d после выполнения программы будет напечатано число 192?

1
2
3
4
5
6
7
8
9
10
11
12
var k,s,d: integer;
begin
  readln (d);
  s:=0;
  k:=0;
  while k &lt; 200 do
  begin
    s:=s+64;
    k:=k+d;
  end;
  write(s);
end.


✍ Решение:

Рассмотрим алгоритм программы:

  • Цикл зависит от переменной k, которая каждую итерацию цикла увеличивается на значение d (вводимое). Цикл закончит «работу», когда k сравняется с 200 или превысит его (k >= 200).
  • Результатом программы является вывод значения переменной s. В цикле s увеличивается на 64.
  • Так как по заданию необходимо, чтобы вывелось число 192, то число повторов цикла определим так:
64 * x = 192
число повторов: x = 192 / 64 = 3  
  • Так как в цикле k увеличивается на значение d, а повторов цикла 3 (при этом цикл завершается при k>=200), составим уравнение:
3 * d = 200 
d = 200/3 ~ 66,66
  • Поскольку число получилось нецелое, то проверим и 66 и 67. Если мы возьмем 66, то:
66 + 66 + 66  = 198  (< 200)

т.е. цикл после трех прохождений еще продолжит работу, что нам не подходит.

  • Для 67:
67 + 67 + 67 = 201 (>200)
  • Данное число 67 нас устраивает, оно наименьшее из возможных, что и требуется по заданию.

Результат: 67

Разбор задания смотрите на видео:


ЕГЭ по информатике задание 8.4 (источник: вариант 3, К. Поляков)

Определите, что будет напечатано в результате работы следующего фрагмента программы:

1
2
3
4
5
6
7
8
9
10
var k, s: integer;
begin
  s:=3;
  k:=1;
  while k &lt; 25 do begin
    s:=s+k;
    k:=k+2;
  end;
  write(s);
end.


✍ Решение:

Разберем листинг программы:

  • Результатом программы является вывод значения s.
  • В цикле s меняется, увеличиваясь на k, при начальном значении s = 3.
  • Цикл зависит от k. Выполнение цикла завершится при k >= 25. Начальное значение k = 1.
  • В цикле k постоянно увеличивается на 2 -> значит, можно найти количество итераций цикла.
  • Количество итераций цикла равно:
n = 25 / 2 ~ 12 

(т.к. k изначально равнялось 1, то в последнее, 12-е прохождение цикла, k = 25; условие цикла ложно)

  • В s накапливается сумма арифметической прогрессии, последовательность элементов которой удобней начать с 0 (а не с 3, как в программе). Поэтому представим, что в начале программы s = 0. Но при этом не забудем, что в конце необходимо будет к результату прибавить 3!
s:=0;
k:=1;
while k < 25 do begin
 ...
  • Тогда арифметическая прогрессия будет выглядеть:
1 + 3 + 5 + 7 ... 
количество членов прогрессии - 12, т.к. 12 итераций цикла
  • Существует формула вычисления суммы арифметической прогрессии:
s = ((2 * a1 + d * (n — 1)) / 2) * n

где a1 — первый член прогрессии,
d — разность,
n — количество членов прогрессии (в нашем случае — кол-во итераций цикла)

  • Подставим значения в формулу:
(2 * 1 + 2 * 11) / 2 * 12 = 144
  • Не забудем, что мы к результату должны прибавить 3:
144+3 = 147
  • Это и есть значение s, которое выводится в результате работы программы.

Результат: 147

Решение данного задания ЕГЭ по информатике видео:


ЕГЭ по информатике задание 8.5 (источник: вариант 36, К. Поляков)

Запишите число, которое будет напечатано в результате выполнения следующей программы:

1
2
3
4
5
6
7
8
9
10
var s, n: integer;
begin
  s := 0;
  n := 0;
  while 2*s*s &lt; 123 do begin
    s := s + 1;
    n := n + 2
  end;
  writeln(n)
end.


✍ Решение:

Разберем листинг программы:

  • В цикле переменная s постоянно увеличивается на единицу (работает как счетчик), а переменная n в цикле увеличивается на 2.
  • В результате работы программы на экран выводится значение n.
  • Цикл зависит от s, причем работа цикла завершится когда 2 * s2 >= 123.
  • Необходимо определить количество прохождений цикла (итераций цикла): для этого определим такое наименьшее возможное s, чтобы 2 * s2 >= 123:
1 шаг: s = 2*12=2
2 шаг: s = 2*22=8
3 шаг: s = 2*32=18
...
7 шаг: s = 2*72=98 (меньше 123, т.е. цикл еще работает)
8 шаг: s = 2*82=128 (больше 123, цикл не работает! )

Либо просто нужно было бы найти такое наименьшее возможное четное число >= 123, которое при делении на 2 возвращало бы вычисляемый корень числа:

s=124/2 = √62 - не подходит!
s=126/2 = √63 - не подходит!
s=128/2 = √64 = 8 - подходит!
  • Таким образом, программа выполнит 8 итераций цикла.
  • Определим n, которая увеличивается каждый шаг цикла на 2, значит:
n = 2 * 8 = 16

Результат: 16

Видео данного задания ЕГЭ доступно здесь:


ЕГЭ по информатике задание 8.6 (источник: вариант 37, К. Поляков со ссылкой на О.В. Гасанова)

Запишите через запятую наименьшее и наибольшее значение числа d, которое нужно ввести, чтобы после выполнения программы было напечатано 153?

1
2
3
4
5
6
7
8
9
10
11
var n, s, d: integer;
begin
  readln(d);
  n := 33;
  s := 4;
  while s &lt;= 1725 do begin
    s := s + d;
    n := n + 8
  end;
  write(n)
end.


✍ Решение:

Разберем листинг программы:

  • Цикл программы зависит от значения переменной s, которая в цикле постоянно увеличивается на значение d (d вводится пользователем в начале программы).
  • Кроме того, в цикле переменная n увеличивается на 8. Значение переменной n выводится на экран в конце программы, т.е. по заданию n к концу программы должно n = 153.
  • Необходимо определить количество итераций цикла (прохождений). Так как начальное значение n = 33, а в конце оно должно стать 153, в цикле увеличиваясь на 8, то сколько раз 8 «поместится» в 120 (153 — 33)? :
120 / 8 = 15 раз (количество итераций цикла)
  • Как мы определили, цикл зависит от s, которая в начале программы s = 4. Для простоты работы примем, что s = 0, тогда изменим и условие цикла: вместо s <= 1725 сделаем s <= 1721 (1725-1721)
...
 s := 0;
 while s <= 1721 do begin
...
  • Найдем d. Так как цикл выполняется 15 раз, то необходимо найти такое целое число, которое при умножении на 15 возвращало бы число большее 1721:
1721 / 15 = 114,733 - не целое, не подходит
1722 / 15 = 114,8 - не целое, не подходит
...
берем кратное 5:
1725 / 15 = 115 - целое, подходит!
  • 115 — это наименьшее d при котором n станет равным 153 (за 15 шагов цикла).
  • Найдем наибольшее d. Для этого надо найти такое число, которое соответствует неравенствам:
14 * d <= 1721 при этом: 15 * d > 1721
  • Найдем:
14 * 122 = 1708 (<=1721) 15 * 122 = 1830 (>1721)
  • Наибольшее d=122

Результат: 115, 122

Смотрите видео данного 8 задания ЕГЭ:


8 задание. Демоверсия ЕГЭ 2018 информатика:

Запишите число, которое будет напечатано в результате выполнения следующей программы.

1
2
3
4
5
6
7
8
9
10
11
var s, n: integer;
begin
s := 260;
n := 0;
while s &gt; 0 do
begin
  s := s - 15;
  n := n + 2
end;
writeln(n)
end.


✍ Решение:

    Рассмотрим алгоритм:

  • Цикл зависит от значения переменной s, которая изначально равна 260. В цикле переменная s постоянно меняет свое значение, уменьшаясь на 15.
  • Цикл завершит свою работу когда s <= 0. Значит, необходимо посчитать сколько чисел 15 «войдет» в число 260, иными словами:
260 / 15 ~ 17,333...
  • Эта цифра должна соответствовать количеству шагов (итераций) цикла. Так как условие цикла строгое — s > 0, то увеличим полученное число на единицу:
17 + 1 = 18 итераций цикла

Проверим:
17 * 15 = 255  (< 260)
18 * 15 = 270 (> 260)
  • Проверим на более простом примере. Допустим, изначально s=32. Два прохождения цикла даст нам s = 32/15 = 2,133... Число 2 больше 0, соответственно, цикл будет работать еще третий раз.
  • В результате работы программа распечатывает значение переменной n (искомый результат). В цикле переменная n, изначально равная 0, увеличивается на 2. Так как цикл включает 18 итераций, то имеем:
n = 18 * 2 = 36

Результат: 36

Подробное решение данного 8 задания из демоверсии ЕГЭ 2018 года смотрите на видео:


Решение 8 задания ЕГЭ по информатике (контрольный вариант № 2 экзаменационной работы 2018 года, С.С. Крылов, Д.М. Ушаков):

Определите, что будет напечатано в результате выполнения программы:

1
2
3
4
5
6
7
8
9
10
11
var s, i: integer;
begin
i := 1;
s := 105;
while s &gt; 5 do
begin
  s := s - 2;
  i := i + 1
end;
writeln(i)
end.


✍ Решение:

  • Рассмотрим алгоритм. Цикл зависит от переменной s, которая уменьшается каждую итерацию цикла на 2.
  • В цикле также присутствует счетчик — переменная i, которая увеличится на единицу ровно столько раз, сколько итераций (проходов) цикла. Т.е. в результате выполнения программы распечатается значение, равное количеству итераций цикла.
  • Поскольку условие цикла зависит от s, нам необходимо посчитать, сколько раз сможет s уменьшиться на 2 в цикле. Для удобства подсчета изменим условие цикла на while s > 0; так как мы s уменьшили на 5, соответственно, изменим и 4-ю строку на s:=100 (105-5):
...
s := 100;
while s > 0 do
begin
...
  • Для того чтобы посчитать, сколько раз выполнится цикл, необходимо 100 разделить на 2, т.к. s каждый шаг цикла уменьшается на 2:
    100 / 2 = 50 -> количество итераций цикла
    
  • В 3-й строке видим, что начальным значением i является 1, т.е. в первую итерацию цикла i = 2. Значит, нам необходимо к результату (50) прибавить 1.
  • 50 + 1 = 51
  • Это значение и будет выведено на экран.

Результат: 51


Решение 8 задания ЕГЭ по информатике 2018 (диагностический вариант экзаменационной работы 2018 года, С.С. Крылов, Д.М. Ушаков, Тренажер ЕГЭ):

Определите значение переменной c после выполнения следующего фрагмента программы. Ответ запишите в виде целого числа.

1
2
3
4
5
6
7
a:=-5;
c:=1024;
while a&lt;&gt;0 do
begin
  c:=c div 2;
  a:=a+1
end;


✍ Решение:

Результат: 32

Смотрите видеоразбор задания:


Государственный выпускной экзамен ГВЭ 2019 (информатика ГВЭ ФИПИ, № 15):

Запишите число, которое будет напечатано в результате выполнения программы:

Паскаль:

1
2
3
4
5
6
7
8
9
10
11
var n, s: integer;
begin
n := 1;
s := 0;
while n <= 1000 do
  begin
  s := s + n;
  n := n * 2
  end;
write(s)
end.


✍ Решение:

    Рассмотрим алгоритм:

  • Условие цикла зависит от переменной n, которая изменяется в цикле согласно получению степеней двойки:
  • 1  2  4  8  16  32  64  128  256  512  1024
    
  • Когда переменная n принимает значение 1024 (11-й шаг цикла), условие цикла становится ложным и цикл перестает работать. На экран выводится значение s.
  • Переменная s — это сумма элементов геометрической прогрессии, т.к. в ней аккумулируются значения n (числовой ряд, представляющий собой геометрическую прогрессию).
  • Вспомним формулы суммы геометрической прогрессии:
  • 1.

    \[ S_{n} = \frac {b_1-b_{n}*q}{1-q} \]

    2.

    \[ S_{n} = b_{1} * \frac {1-q^n}{1-q} \]

  • В нашем случае знаменатель q = 2, первый элемент прогрессии b1 = 1. Обратим внимание, что на последнем шаге к сумме добавляется значение 512, т.е. n = 10, а bn = 512. Только после этого n еще раз увеличивается в 2 раза и становится = 1024.
  • Вычислим s по формуле, подставив необходимые значения:
  • \[ S_{n} = \frac {1-512*2}{1-2} =1023 \]

  • Проверим по второй формуле:
  • \[ S_{n} = 1 * \frac {1-2^{10}}{1-2}=1023 \]

  • Так как в результате на экран выводится s, то ответ 1023.

Результат: 1023


Разбор 8 задания ЕГЭ вариант № 1, 2019 Информатика и ИКТ Типовые экзаменационные варианты (10 вариантов), С.С. Крылов, Т.Е. Чуркина:

Запишите число, которое будет напечатано в результате выполнения следующей программы:

Паскаль:

1
2
3
4
5
6
7
8
9
10
11
var s, n: integer;
begin
s := 522;
n := 400;
while s - n > 0 do
  begin
  s := s - 20;
  n := n - 15
  end;
write(s)
end.


✍ Решение:

  • В алгоритме присутствует цикл. Для того, чтобы разобраться в алгоритме, выполним трассировку начальных итераций цикла:
  • № шага условие цикла s n
    1 522-400=122
    122 > 0
    522-20=502 400-15=385
    2 502-385=117
    117 > 0
    502-20=482 385-15=370
    3 482-370=112
    112 > 0
  • Видим, что в условии разница между значениями составляет 5:
  • 122 - 117 = 5
    117 - 112 = 5
    ...
    
  • Таким образом, чтобы определить количество итераций (шагов) цикла, необходимо значение условия цикла, полученное в первой итерации, разделить на 5:
  • 122 / 5 = 24,4
    
    24 * 5 = 120 (120 + 2 = 122)
    

    Это значит, что на 24-й итерации цикла переменные s и n получили такие значения, после которых условие еще осталось истинным: 2 > 0. На 25-м шаге выполняется это условие:

    № шага условие цикла s n
    25 2 > 0 s-20=… n-15=…
  • В конце выполнения 25-й итерации, получаем условие для 26-й итерации:
  • 25 * 5 = 125 (125 - 3 = 122)
    
    № шага условие цикла s n
    25 2 > 0 s-20=… n-15=…
    26 3 < 0 не выполняется не выполняется
  • Значит, всего в цикле присутствует 25 итераций, в каждой из которых s уменьшается на 20. Посчитаем, на сколько уменьшится значение s в общем:
  • 25 * 20 = 500 (за 25 итераций)
    
    522 - 500 = 22 (вычитаем из исходных данных)
    

Результат: 22

Предлагаем посмотреть видео решения задания:

Поделитесь уроком с коллегами и друзьями:
5 комментариев

    Alex

    Спасибо за видео! Пригодилось)

      admin

      очень приятно:)

    Данил

    В задании 8.3 ответ письменно 67, на видео 201, кто ошибся?

      admin

      да, спасибо! это на видео ошибка, там уже исправлено

    Nikolay

    Очень хорошие объяснения. Спасибо!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*
*

Вставить формулу как
Блок
Строка
Дополнительные настройки
Цвет формулы
Цвет текста
#333333
Используйте LaTeX для набора формулы
Предпросмотр
\({}\)
Формула не набрана
Вставить