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

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

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

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

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

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

Ответ: 24

Показать решение:

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

  • В цикле 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.

📹 Видео


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>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 < 200 do
  begin
    s:=s+64;
    k:=k+d;
  end;
  write(s);
end.

Ответ: 67

Показать решение:

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

  • Цикл зависит от переменной 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 нас устраивает, оно наименьшее из возможных, что и требуется по заданию.

📹 Видео


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

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

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

Ответ: 147

Показать решение:

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

  • Результатом программы является вывод значения 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, которое выводится в результате работы программы.

📹 Видео


ЕГЭ по информатике задание 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 < 123 do begin
    s := s + 1;
    n := n + 2
  end;
  writeln(n)
end.

Ответ: 16

Показать решение:

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

  • В цикле переменная 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

📹 Видео


ЕГЭ по информатике задание 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 <= 1725 do begin
    s := s + d;
    n := n + 8
  end;
  write(n)
end.

Ответ: 115, 122

Показать решение:

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

  • Цикл программы зависит от значения переменной 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

📹 Видео



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

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

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

Ответ: 36

Показать решение:

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

  • Цикл зависит от значения переменной 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

📹 Видео


Решение 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 > 5 do
begin
  s := s - 2;
  i := i + 1
end;
writeln(i)
end.


Ответ: 51

Показать решение:

  • Рассмотрим алгоритм. Цикл зависит от переменной 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
  • Это значение и будет выведено на экран.

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

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

1
2
3
4
5
6
7
a:=-5;
c:=1024;
while a<>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.

Ответ: 1023

Показать решение:

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

  • Условие цикла зависит от переменной 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.

Разбор 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.

Ответ: 22

Показать решение:

  • В алгоритме присутствует цикл. Для того, чтобы разобраться в алгоритме, выполним трассировку начальных итераций цикла:
  • № шага условие цикла 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

📹 Видео


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

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

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

*
*

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