Главная » 2017 » Ноябрь » 27 » консультация №7 информатика "Алгоритмизация и программирование"
18:47
консультация №7 информатика "Алгоритмизация и программирование"

Тематический блок «Алгоритмизация и программирование» А8

А8 характеризуется, как задания базового уровня сложности, время выполнения – примерно 3 минуты

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

В 8 задании ЕГЭ используются алгоритмические структуры с циклами. Вам могут пригодиться формулы для работы с последовательностью элементов а(n) в виде прогрессии:

an = a1 + d(n-1)

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

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

ЕГЭ по информатике 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.

Решение:

Рассмотрим программу:
  • В цикле k увеличивается на единицу. После работы цикла k выводится, т.е. это результат. Соответственно, k будет равно количеству итераций (повторов) цикла.
  • В цикле s увеличивается на 64. Для простоты расчетов возьмем начальное s не 512, а 0. Тогда условие цикла поменяется на s<1536 (2048-512=1536).
  • Цикл будет выполнятся пока 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>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.

Решение:

Рассмотрим алгоритм программы:
64*x = 192
число повторов: x = 192/64 = 3 
3*d = 200 
d = 200/3 ~ 66,66
66 + 66 + 66 = 198 (<200)

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

67 + 67 + 67 = 201 (>200)
  • Цикл зависит от переменной k, которая каждую итерацию цикла увеличивается на значение d (вводимое). Цикл закончит "работу", когда k сравняется с 200 или превысит его.
  • Результатом программы является вывод значения переменной s. В цикле s увеличивается на 64.
  • Так как по заданию необходимо, чтобы вывелось число 192, то число повторов цикла определим так:
  • Так как в цикле k увеличивается на значение d, а повторов цикла 3 (при этом цикл завершается при k>=200), составим уравнение:
  • Поскольку число получилось нецелое, то проверим и 66 и 67. Если мы возьмем 66, то:
  • Для 67:
  • Данное число 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 < 25 do begin
 s:=s+k;
 k:=k+2;
 end;
 write(s);
end.

Решение:

Разберем листинг программы: 
n=25/2 ~ 12 

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

1 + 3 + 5 + 7 ... количество членов прогрессии - 12, т.к. 12 прохождений цикла
s = ((2*a1+d*(n-1))/2)*n

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

(2*1 + 2*11)/ 2 * 12 = 144

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

  • Результатом программы является вывод значения s
  • В цикле s меняется, увеличиваясь на k, при начальном значении s=3
  • Цикл зависит от k -> завершится цикл при k>=25, при начальном значении k=1
  • В цикле k постоянно увеличивается на 2 -> значит можно найти количество итераций цикла
  • Количество итераций цикла равно:
  • В s накапливается сумма арифметической прогрессии, последовательность которой удобней начать с 0 (а не с 3, как в программе). Поэтому представим, что в начале программы s = 0. Но при этом не забудем, что в конце нам необходимо будет к результату прибавить 3!
  • Тогда арифметическая прогрессия будет выглядеть:
  • Существует формула вычисления суммы арифметической прогрессии:
  • Подставим значения:
  • Не забудем, что мы к результату должны прибавить 3: 144+3 = 147.

Результат: 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 < 123 do begin
 s := s + 1;
 n := n + 2
 end;
 writeln(n)
end.

Решение:

Разберем листинг программы:
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 - подходит!
n = 2*8 = 16
  • В цикле переменная s постоянно увеличивается на единицу (работает как счетчик), а переменная n в цикле увеличивается на 2
  • В результате работы программы на экран выводится значение n
  • Цикл зависит от s, причем работа цикла завершится когда 2*s2>=123
  • Необходимо определить количество прохождений цикла (итераций цикла): для этого определим такое наименьшее возможное s, чтобы 2*s2>=123:
  • Таким образом программа выполнит 8 итераций цикла.
  • Определим n, которая увеличивается каждый шаг цикла на 2:

Результат: 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.

Решение:

Разберем листинг программы:
120 / 8 = 15 раз (количество итераций цикла)
1721 / 15 = 114,733 - не целое, не подходит
1722 / 15 = 114,8 - не целое, не подходит
...
берем кратное 5:
1725 / 15 = 115 - целое, подходит!
14*d<=1721
при этом:
15*d>1721

Найдем:

14*122 = 1708 (<=1721)
15*122 = 1830 (>1721)
  • Цикл программы зависит от значения переменной s, которая в цикле постоянно увеличивается на значение d (d вводится пользователем в начале программы).
  • Кроме того, в цикле переменная n увеличивается на 8. Значение переменной n выводится на экран в конце программы, т.е. по заданию n к концу программы должно n=153.
  • Необходимо определить количество итераций цикла (прохождений). Так как начальное значение n = 33, а в конце оно должно стать 153, в цикле увеличиваясь на 8, то сколько раз 8 "поместится" в (153 - 33) ? :
  • Как мы определили, цикл зависит от s, которая в начале программы s = 4. Для простоты работы примем, что s = 0, тогда изменим и условие цикла: вместо s <= 1725 сделаем s <= 1721 (1725-1721)
  • Найдем d. Раз цикл выполняется 15 раз, то необходимо найти такое целое число, которое при умножении на 15 возвращало бы число большее 1721:
  • 115 - это наименьшее d при котором n станет равным 153 (за 15 шагов цикла)
  • Найдем наибольшее d. Для этого надо найти такое число, которое:
  • Наибольшее 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 > 0 do
begin
 s := s - 15;
 n := n + 2
end;
writeln(n)
end.

Решение:

260 / 15 ~ 17,333...
17+1 = 18 шагов цикла
n = 18*2 = 36
  • Рассмотрим алгоритм:

    Цикл зависит от значения переменной s, которая изначально равна 260. В цикле переменная s постоянно меняет свое значение, уменьшаясь на 15.

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

Результат: 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 > 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).
  • Для того, чтобы посчитать, сколько раз выполнится цикл, необходимо 100 разделить на 2, т.к. s каждый шаг цикла уменьшается на 2. Получим 50 - количество итераций цикла.
  • В 3-й строке видим, что начальным значением i является 1, т.е. в первую итерацию цикла i = 2. Значит нам необходимо к результату (50) прибавить 1. Получим 51. Это значение и будет выведено на экран.

Результат: 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

Просмотров: 2128 | Добавил: NazaR | Рейтинг: 0.0/0
Всего комментариев: 0
avatar