Тема: Блок-схемы алгоритмов. Переменные, присваивание значений. Ветвления. Организация циклов с помощью блока «ветвление».
Что нужно знать:
-
переменная – это именованная область оперативной памяти, в которой хранятся некоторые данные определённого типа; значение переменной может изменяться во время выполнения программы
-
оператор присваивания (в алгоритмическом языке обозначается знаком «=», в Паскале - сочетанием символов «:=») служит для записи нового значения в переменную (для изменения ее значения). При этом старое значение переменной стирается
-
знаки +, -, *, / используются для обозначения арифметических операций
-
запись вида a := a + b; – вид операции присваивания, который выполняется компьютеров за три шага: читается значение переменной a, добавить к нему значение переменной b и записать результат обратно в переменную a»; операцию присваивания такого типа можно называть операцией накапливания
-
для наглядной записи алгоритмов используют блок-схемы; они состоят из блоков разного назначения и соединительных линий со стрелками, которые показывают порядок выполнения блоков
-
в задачах ниже встречаются два блока: процесс (выполнение некоторых действий) и ветвление (условие, в зависимости от которого выполнение алгоритма продолжается по одной или другой «ветке» )
-
с помощью ветвления можно организовать цикл (многократное выполнение одинаковых действий), в этом случае в блок-схеме будет соединительная линия, идущая «в обратном направлении» (петля, замкнутый контур)
-
цикл на рисунке (выделен красным квадратом) закончится только тогда, когда выполнится условие a = 512
Решение данных задач можно выполнять двумя вариантами – ручной прокруткой или анализом алгоритма. Первый способ более подходит для начинающих в программировании, вторым пользуются те, кто уже умеет читать программы и понимать порядок выполнения алгоритмов в них. Удобно решать, объединяя оба эти варианта.
Примеры решения задач
Задача 1. Запишите значение переменной b после выполнения фрагмента алгоритма:
Решение, вариант 1 (ручная прокрутка) + вариант 2(анализ алгоритма).
Ручная прокрутка – это работа программиста вместо компьютера, когда на бумаге шаг за шагом выполняются все действия в порядке, в котором они будут выполняться компьютером, с подстановкой конкретных значений и получением результата.
В начале фрагмента переменным a и b присваиваются начальные значения, равные 1.
Далее в алгоритме цикл (на блок-схеме имеем замкнутый контур), перед выполнением тела которого проверяется условие а = 512, и только при его нарушении (т.е. значение а меньше 512) цикл выполняется, иначе цикл завершается.
Для удобства и безошибочного выполнения ручной прокрутки составим таблицу:
Оператор | Значение a | Значение b |
a:=1; b:=1; | 1 | 1 |
а = 512 ? | нет | |
a:=a*2; b:=b+a; | 2 | 3 |
а = 512 ? | нет | |
a:=a*2; b:=b+a; | 4 | 7 |
а = 512 ? | нет | |
a:=a*2; b:=b+a; | 8 | 15 |
Далее можно просчитать все оставшиеся шаги (их осталось 6), а можно заметить закономерность: при выполнении каждого шага цикла переменная a умножается на 2, т.е. получаем степени двойки, а значение переменной b при этом на 1 меньше следующей степени а. Так как проверяемое в условии значение выхода из цикла а = 512 = 29, то b = 210- 1 = 1023.
Ответ: 1023.
Задача 2. Запишите значение переменной s после выполнения фрагмента алгоритма:
Решение (анализ алгоритма).
В данном фрагменте представлен цикл использованием двух переменных n и s, которым до начала цикла присвоены нулевые значения. Здесь n - счетчик цикла с шагом единица, а s – сумма нечетных чисел. Далее в цикле, условием окончания которого будет значение n ≤ 100, в переменной s накапливается сумма нечетных чисел от 0 до 100 включительно, т.е.
S = 1 + 3 + 5 + … + 95 + 97 + 99.
Такое суммирование легко выполнять вручную, если разбить числа на пары, сумма которых будет одинаковой и равна 100. Это можно сделать, складывая числа первое и последнее, второе и предпоследнее, и т.д. : 1 + 99, 3 + 97, 5 + 95 и так далее.
Всего в сумме участвует 50 чисел, из которых можно составить 25 пар, тогда в всего в сумме нечетных чисел 25 пар получаем 25*100 = 2500.
Ответ: 2500.
Задача 3. Определите значение переменной x после выполнения фрагмента алгоритма.
Решение (анализ алгоритма и ручная прокрутка).
Анализ алгоритма показывает, что здесь в цикле в зависимости от соотношения чисел х и у меняется либо число х, либо число у. Поэтому данная задаче проще и точнее решается в режиме ручной прокрутки.
Составим таблицу:
Оператор | | | Значение х | Значение у |
x:=136; y:=72; | | | 136 | 72 |
x = y ? | | | нет | |
x y ? | | | да | |
x:=x-y | | | 136-72=64 | 72 |
x = y ? | | | нет | |
x y ? | | | нет | |
y:=y-x | | | 64 | 72-64 = 8 |
x = y ? | | | нет | |
x y ? | | | да | |
x:=x-y | | | 64-8 = 56 | 8 |
x = y ? | | | нет | |
x y ? | | | нет | |
y:=y-x | | | 56 | 56-8 = 48 |
x = y ? | | | нет | |
x y ? | | | да | |
x:=x-y | | | 48-8=40 | 48 |
x = y ? | | | нет | |
x y ? | | | нет | |
y:=y-x | | | 40 | 48-8 = 40 |
x = y ? | | | да | |
Таким образом, при выходе из цикла х = у = 40.
Ответ: 40.