КОПИЛКА ЗНАНИЙСайт учителя физики и информатики МБОУ "Лицей №17" Назаренко О.Г.
Главная » 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<2048dobegin
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>30dobegin
s:=s-4;
k:=k div2;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;beginreadln(d);
s:=0;
k:=0;while k < 200dobegin
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 < 25dobegin
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;while2*s*s < 123dobegin
s := s +1;
n := n +2end;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;beginreadln(d);
n :=33;
s :=4;while s <=1725dobegin
s := s + d;
n := n +8end;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 > 0dobegin
s := s -15;
n := n +2end;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 > 5dobegin
s := s -2;
i := i +1end;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 после выполнения следующего фрагмента программы. Ответ запишите в виде целого числа.