Блок-схемы алгоритмов. Переменные, присваивание значений. Ветвления. Организация циклов с помощью блока «ветвление»
© К. Поляков, 2009-2011
B2 (базовый уровень, время – 3 мин)
Тема: Блок-схемы алгоритмов. Переменные, присваивание значений. Ветвления. Организация циклов с помощью блока «ветвление».
Что нужно знать:
переменная – это величина, которая имеет имя, тип и значение; переменная может изменяться во время выполнения программы
оператор присваивания (в Паскале обозначается сочетанием символов «:=») служит для записи нового значения в переменную (для изменения ее значения)
если в переменную записывают новое значение, старое стирается
знаки +, -, *, / используются для обозначения операций сложения, вычитания, умножения и деления
запись вида a := a + 2; – это не уравнение, а команда «прочитать текущее значение переменной a, добавить к нему 2 и записать результат обратно в переменную a»;
для наглядной записи небольших алгоритмов используют блок-схемы; они состоят из блоков разного назначения и соединительных линий со стрелками, которые показывают порядок выполнения блоков
в задачах ЕГЭ встречаются два блока: процесс (выполнение некоторых действий) и ветвление (условие, в зависимости от которого выполнение алгоритма продолжается по одной или другой «ветке» )


с помощью ветвления можно организовать цикл (многократное выполнение одинаковых действий), в этом случае в блок-схеме будет соединительная линия, идущая «в обратном направлении» (петля, замкнутый контур)
цикл на рисунке (выделен зеленым фоном) закончится только тогда, когда выполнится условие a = 256

Пример задания:
Запишите значение переменной b после выполнения фрагмента алгоритма:

Решение (вариант 1, ручная прокрутка):
по схеме видим, что алгоритм содержит цикл (есть петля, контур)
ручную прокрутку удобнее всего выполнять в виде таблицы, в первом столбце будем записывать выполняемые команды, во втором и третьем – изменение значений переменных
a и b
после выполнения первого блока получаем
-
a
b
a:=1;
1
?
b:=1;
1
знак вопроса означает, что после выполнения первого оператора значение b не определено
затем выполняется проверка условия; поскольку а не равно 256, ответ на вопрос «a = 256?» будет «нет»:
a
b
a:=1;
1
?
b:=1;
1
a = 256?
нет
далее алгоритм уходит на выполнение тела цикла; здесь сначала меняется переменная a, а потом – b, причем нужно помнить, что для вычисления b используется новое значение a, равное 2, поэтому новое значение b равно 1 + 2 = 3:
a
b
a:=1;
1
?
b:=1;
1
a = 256?
нет
a:=a*2;
2
b:=b+a;
3
после этого по стрелке переходим на проверку условия; поскольку a = 2, ответ на вопрос «a = 256?» снова будет «нет», и выполняется очередной шаг цикла:
a
b
a:=1;
1
?
b:=1;
1
a = 256?
нет
a:=a*2;
2
b:=b+a;
3
a = 256?
нет
a:=a*2;
4
b:=b+a;
7
аналогично можно выполнить вручную все шаги цикла, результаты последнего из них выглядят так:
-
a
b
a:=a*2;
256
b:=b+a;
511
a = 256?
да
как только значение a стало равно 256, цикл завершает работу
таким образом, верный ответ – 511 .
-
Возможные проблемы:
таблица получается длинной, много вычислений, можно запутаться
нужно не забыть, что при выполнении двух операторов в теле цикла к значению b добавляется уже новое значение a, полученное в предыдущей строке
не перепутайте переменную, значение которой нужно определить (можно по ошибке вписать в ответ полученное значение a)
Решение (вариант 2, анализ алгоритма):
«прокрутив» начало алгоритма, можно заметить, что последовательные значения a – это степени двойки
a = 1, 2, 4, 8, … 256
поскольку оператор b:=b+a означает «взять текущее значение b, прибавить к нему текущее значение a и результат записать обратно в b», изменение b сводится к тому, что эти степени двойки складываются:
b = 1 + 2 + 4 + 8 + … + 256
теперь можно, конечно, сложить эти числа вручную (их всего 9), но можно заметить (или вспомнить), что сумма всех последовательных степеней двойки, начиная с 1, на единицу меньше, чем следующая степень двойки1 (первая, не вошедшая в сумму, здесь – 512); это легко проверяется по начальной части таблицы
таким образом, верный ответ 512 – 1 = 511 .
-
Возможные проблемы:
для такого анализа требуется некоторое напряжение ума, здесь не обойтись формальным выполнением каких-то заученных действий
не всегда удается найти короткое решение, «свернув» алгоритм таким образом (в этом случае поможет ручная прокрутка)
Еще пример задания:
Запишите значение переменной s после выполнения фрагмента алгоритма:

Решение (анализ алгоритма):
«прокрутив» начало алгоритма, можно заметить, что в переменной s суммируются все четные числа от 0 до 100 включительно:
s = 0 + 2 + 4 + ... + 98 + 100
теперь можно подсчитать эту сумму вручную, но можно легко ошибиться в расчетах
попробуем сгруппировать числа по парам2:
0 и 100, 2 и 98, 4 и 96, ..., 48 и 52
без пары остается только число 50
заметим, что сумма двух чисел в каждой паре равна 100
очевидно, что таких пар – 25 штук (первое число изменяется от 0 до 48 с шагом 2, это все равно, что от 0 до 24 с шагом 1)
теперь остается перемножить 24 на 100 и добавить 50
таким образом, верный ответ 10025+50=2550.
заметим, что можно было составить пары иначе:
2 и 100, 4 и 98, 6 и 96, ..., 50 и 52
сумма чисел в каждой паре – 102, всего 25 пар, поэтому сумма равна 10225=2550.
-
Возможные проблемы:
если использовать ручную прокрутку при большом количестве шагов цикла, велик шанс ошибиться в арифметике; в этом случае нужно постараться найти способ «свернуть» вычисления, свести их к формуле или как-то сгруппировать слагаемые
Задачи для тренировки3:
Определите значение переменной m после выполнения фрагмента алгоритма.

Определите значение переменной a после выполнения фрагмента алгоритма.

Определите значение переменной x после выполнения фрагмента алгоритма.

Определите значения переменных x и y после выполнения фрагмента алгоритма.

В ответ запишите номер правильного варианта:
1) x=15, y=16 2) x=20, y=13 3) x=16, y=15 4) x=13, y=20
Определите значение переменной a после выполнения фрагмента алгоритма.

Определите значение переменной n после выполнения фрагмента алгоритма.

Определите значения переменных x и y после выполнения фрагмента алгоритма.

В ответ запишите номер правильного варианта:
1) x=25, y=25 2) x=20, y=30 3) x=30, y=20 4) x=30, y=30
Определите значение переменной x после выполнения фрагмента алгоритма.

Определите значения переменных x и y после выполнения фрагмента алгоритма.

В ответ запишите номер правильного варианта:
1) x=5, y=15 2) x=3, y=12 3) x=10, y=5 4) x=9, y=15
Определите значение переменной b после выполнения фрагмента алгоритма.

Определите значение переменной b после выполнения фрагмента алгоритма.

Определите значение переменной k после выполнения фрагмента алгоритма.

Определите значение переменной s после выполнения фрагмента алгоритма.

Определите значение переменной b после выполнения фрагмента алгоритма.

Запишите значение переменной s после выполнения фрагмента алгоритма:

Определите значение переменной b после выполнения фрагмента алгоритма:

Определите значение переменной b после выполнения фрагмента алгоритма:

Определите значение переменной b после выполнения фрагмента алгоритма.

Определите значение переменной b после выполнения фрагмента алгоритма.

Определите значение переменной b после выполнения фрагмента алгоритма.

Определите значение переменной b после выполнения фрагмента алгоритма.

Определите значения переменной a после выполнения фрагмента алгоритма.

Определите значение переменной a после выполнения фрагмента алгоритма.

Определите значение переменной b после выполнения фрагмента алгоритма.

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

Определите значение переменной b после выполнения фрагмента алгоритма.

Определите значение переменной a после выполнения фрагмента алгоритма.

Определите значение переменной a после выполнения фрагмента алгоритма.

Определите значение переменной x после выполнения фрагмента алгоритма.

Определите значение переменной z после выполнения фрагмента алгоритма.

Определите значение переменной b после выполнения фрагмента алгоритма.

Определите значение переменной a после выполнения фрагмента алгоритма.

Определите значение переменной a после выполнения фрагмента алгоритма.

Определите значение переменной s после выполнения фрагмента алгоритма.

Определите значение переменной C после выполнения фрагмента алгоритма.

1 Попробуйте доказать это, используя знания по теме «Двоичная система счисления».
2 Согласно легенде, такой прием использовал, будучи школьником, великий немецкий математик К.Ф. Гаусс. Составители ЕГЭ считают, что вы так же талантливы.
3 Источники заданий:
Демонстрационные варианты ЕГЭ 2004-2011 гг.
Гусева И.Ю. ЕГЭ. Информатика: раздаточный материал тренировочных тестов. — СПб: Тригон, 2009.
Крылов С.С., Лещинер В.Р., Якушкин П.А. ЕГЭ-2010. Информатика. Универсальные материалы для подготовки учащихся / под ред. В.Р. Лещинера / ФИПИ. — М.: Интеллект-центр, 2010.
Якушкин П.А., Ушаков Д.М. Самое полное издание типовых вариантов реальных заданий ЕГЭ 2010. Информатика. — М.: Астрель, 2009.
Самылкина Н.Н., Островская Е.М. ЕГЭ 2011. Информатика. Тематические тренировочные задания. — М.: Эксмо, 2010.
Якушкин П.А., Лещинер В.Р., Кириенко Д.П. ЕГЭ 2011. Информатика. Типовые тестовые задания. — М.: Экзамен, 2011.
http://kpolyakov.narod.ru
страница 1
скачать
Другие похожие работы: