Информатика и ИКТ
9 класс

§ 3.4. Основные алгоритмические конструкции

Ключевые слова:

  • следование
  • ветвление
  • повторение
  • линейные алгоритмы
  • разветвляющиеся алгоритмы
  • циклические алгоритмы

Человеку в жизни и практической деятельности приходится решать множество различных задач. Решение каждой из них описывается своим алгоритмом, и разнообразие этих алгоритмов очень велико. Вместе с тем для записи любого алгоритма достаточно трёх основных алгоритмических конструкций (структур): следования, ветвления, повторения. Это положение выдвинул и доказал Э. Дейкстра в 70-х гг. прошлого века.

3.4.1. Следование

Следование — алгоритмическая конструкция, отображающая естественный, последовательный порядок действий. Алгоритмы, в которых используется только структура «следование», называются линейными алгоритмами.

Графическое представление алгоритмической конструкции «следование» приведено на рис. 3.8.

Рис. 3.8.
Алгоритмическая конструкция «следование»

Пример 1. Линейный алгоритм приготовления отвара шиповника.

Обратите внимание, что многие из предписание того алгоритма могут потребовать детализации — представления виде некоторой совокупности более мелких предписаний.

Пример 2. У исполнителя Робот есть четыре команды перемещения (вверх, вниз, влево и вправо), при выполнении каждой из них Робот перемещается на одну клетку в соответствующем направлении. По команде закрасить Робот закрашивает клетку, в которой он находится. Запишем линейный алгоритм, исполняя который Робот нарисует на клетчатом поле следующий узор и вернётся в исходное положение:

Пример 3. Дан фрагмент линейного алгоритма:

    х:=2
    у:=х*х
    У:=У*У
    х:=у*х
    s:=х+у

Выясним, какое значение получит переменная s после выполнения этого фрагмента алгоритма. Для этого составим таблицу значений переменных, задействованных в алгоритме:

Составленная нами таблица значений переменных моделирует работу исполнителя этого алгоритма.

Пример 4. Некоторый исполнитель может выполнять над целыми числами кроме операций сложения, вычитания, умножения и деления ещё две операции: с помощью операции div вычисляется целое частное, с помощью операции mod — остаток.

Например, 5 div 2 = 2,5 mod 2 = 1,2 div 5 = 0,2 mod 5 = 2. Покажем, как с помощью этих операций можно реализовать алгоритм работы кассира, выдающего покупателю сдачу (s) наименьшим количеством банкнот по 500 (k500), 100 (k100), 50 (k50) и 10 (k10) рублей.

    k500:=s div 500
    s:=s mod 500
    klOO:=s div 100
    s:=s mod 100
    k50:=s div 50
    s:=s mod 50
    klO:=s div 10

Ознакомьтесь с модулем для коллективной работы «Линейные алгоритмы» (http://school-collection.edu.ru/). Совместно с товарищами постарайтесь составить алгоритмы для имеющихся в модуле задач. Пройдите тестирование.

3.4.2. Ветвление

Ветвление — алгоритмическая конструкция, в которой в зависимости от результата проверки условия («да» или «нет») предусмотрен выбор одной из двух последовательностей действий (ветвей). Алгоритмы, в основе которых лежит структура «ветвление», называют разветвляющимися.

Блок-схема ветвления представлена на рис. 3.9. Каждая ветвь может быть любой степени сложности (рис. 3.9, а), а может вообще не содержать предписаний (рис. 3.9,б).


На алгоритмическом языке команда ветвления записывается так:

Полная форма ветвления:

Пример 5

Сокращённая форма ветвления:

Пример 6

Для записи условий, по которым разветвляется алгоритм, используются операции сравнения:

    А<В — А меньше B;
    А<=В — А меньше или равно В;
    А=В —А равно B;
    А>В —А больше B;
    А>=В — А больше или равно B;
    А<>В —А не равно B.

Здесь буквы А и B можно заменять на любые переменные, числа и арифметические выражения. Приведённые операции сравнения допускаются и для символьных переменных.

Пример 7. Алгоритм вычисления функции f(x) = |х| для произвольного числа х.

Обратите внимание на второй блок этой блок-схемы. В нём представлены имена и типы величин (данных), обрабатываемых в алгоритме.

Условия, состоящие из одной операции сравнения, называются простыми. В качестве условий при организации ветвлений можно использовать и составные условия. Составные условия получаются из простых с помощью логических связок and (и), or (или), not (не): and означает одновременное выполнение всех условий, OR — выполнение хотя бы одного условия, a not означает отрицание условия, записанного за словом not.

Пример 8. Алгоритм определения принадлежности точки X отрезку [А; Б]. Если точка X принадлежит данному отрезку, то выводится ответ 'ДА', в противном случае — 'НЕТ'.

Существует достаточно много ситуаций, в которых приходится выбирать не из двух, а из трёх и более вариантов. Есть разные способы построения соответствующих алгоритмов. Один из них — составить комбинацию из нескольких ветвлений.

Пример 9. Алгоритм, в котором переменной Y присваивается значение большей из трёх величин А, В и С.

Пример 10. Алгоритм решения линейного уравнения ах + b = 0.

Пример 11. Исполнитель Робот может выполнять ту или иную последовательность действий в зависимости от выполнения следующих простых условий:

    справа свободно
    справа стена
    слева свободно
    слева стена
    сверху свободно
    сверху стена
    снизу свободно
    снизу стена
    клетка чистая
    клетка закрашена

Также Робот может действовать в зависимости от выполнения составных условий. Подумайте, в какую клетку переместится Робот при выполнении следующего фрагмента алгоритма.

Ознакомьтесь с модулем для коллективной работы «Алгоритмы с ветвящейся структурой» (http://school-collection.edu.ru/). Совместно с товарищами постарайтесь составить алгоритмы для имеющихся в модуле задач. Пройдите тестирование.

3.4.3. Повторение

Повторение — алгоритмическая конструкция, представляющая собой последовательность действий, выполняемых многократно. Алгоритмы, содержащие конструкцию повторения, называют циклическими или циклами. Последовательность действий, многократно повторяющаяся в процессе выполнения цикла, называется телом цикла.

В зависимости от способа организации повторений различают три типа циклов:

  1. цикл с заданным условием продолжения работы;
  2. цикл с заданным условием окончания работы;
  3. цикл с заданным числом повторений.

Цикл с заданным условием продолжения работы (цикл-ПОКА, цикл с предусловием). Логика работы этой конструкции описывается схемой, показанной на рис. 3.10.

Рис. 3.10.
Цикл с предусловием

На алгоритмическом языке эта конструкция записывается так:

Выполняется цикл-ПОКА следующим образом: 1) проверяется условие (вычисляется значение логического выражения); 2) если условие удовлетворяется (Да), то выполняется тело цикла и снова осуществляется переход к проверке условия; если же условие не удовлетворяется, то выполнение цикла заканчивается. Возможны случаи, когда тело цикла не будет выполнено ни разу.

Пример 12. Алгоритм, по которому из всех имеющихся кирпичей отбираются целые кирпичи и складываются в машину.


Пример 13. Правее Робота расположен коридор неизвестной длины. Необходимо, чтобы Робот закрасил все клетки этого коридора.

Пока будет выполняться условие справа свободно, Роботу следует выполнять команды:

    вправо
    закрась

Соответствующий алгоритм для Робота будет иметь вид:

Пример 14. Требуется, не пользуясь операцией деления, получить частное q и остаток r от деления целого числа х на целое число у.

Представим операцию деления как последовательность вычитания делителя из делимого. Причём вычитать будем до тех пор, пока результат вычитания не станет меньше вычитаемого (делителя). В этом случае количество вычитаний будет частным от деления q, а последняя разность — остатком от деления r.

Исполним этот алгоритм для х = 23 и у = 5.

Ознакомьтесь с модулем для коллективной работы «Циклические алгоритмы с предусловием» (http://school-collection.edu.ru/). Совместно с товарищами постарайтесь составить алгоритмы для имеющихся в модуле задач. Пройдите тестирование:

Цикл с заданным условием окончания работы (цикл-ДО, цикл с постусловием). Логика работы этой конструкции описывается схемой, показанной на рис. 3.11.

Рис. 3.11.
Цикл с постусловием

На алгоритмическом языке эта конструкция записывается так:

Выполняется цикл-ДО следующим образом: 1) выполняется тело цикла; 2) проверяется условие (вычисляется значение логического выражения); если условие не удовлетворяется (Нет), то снова выполняется тело цикла и осуществляется переход к проверке условия; если же условие удовлетворяется, то выполнение цикла заканчивается. В любом случае тело цикла будет выполнено хотя бы один раз.

Пример 15. Алгоритм по выучиванию наизусть четверостишия.

Пример 16. Вычислим значение переменной b согласно следующему алгоритму:

Составим таблицу значений переменных, задействованных в алгоритме:

Ответ: b — 255.

Пример 17. Спортсмен приступает к тренировкам по следующему графику: в первый день он должен пробежать 10 км; каждый следующий день следует увеличивать дистанцию на 10% от нормы предыдущего дня. Как только дневная норма достигнет или превысит 25 км, необходимо прекратить её увеличение и далее пробегать ежедневно ровно 25 км. Начиная с какого дня спортсмен будет пробегать 25 км?

Пусть х — количество километров, которое спортсмен пробежит в некоторый i-й день. Тогда в следующий (i + 1)-й день он пробежит х + 0,1х километров (О,х — это 10% от х).

Ознакомьтесь с модулем для коллективной работы «Циклические алгоритмы с постусловием» (http://school-collection.edu.ru/). Совместно с товарищами постарайтесь составить алгоритмы для имеющихся в модуле задач. Пройдите тестирование.

Цикл с заданным числом повторений (цикл-ДЛЯ, цикл с параметром). Логика работы этой конструкции описывается схемой, показанной на рис. 3.12.

Рис. 3.12.
Цикл с параметром

На алгоритмическом языке эта конструкция записывается так:

В цикле-ДЛЯ всегда есть параметр цикла — величина целого типа, изменяющаяся в ходе выполнения цикла от своего начального значения до конечного значения.

Выполняется цикл-ДЛЯ следующим образом: 1) параметру цикла присваивается начальное значение; 2) параметр цикла сравнивается с конечным значением; если параметр цикла не превышает конечное значение, то выполняется тело цикла, увеличивается значение параметра цикла и снова осуществляется проверка параметра цикла; если же параметр цикла превышает конечное значение, то выполнение цикла заканчивается.

В отличие от двух предыдущих конструкций (цикл-ПОКА, цикл-ДО) цикл-ДЛЯ имеет строго фиксированное число повторений, что позволяет избежать зацикливания, т. е. ситуации, когда тело цикла выполняется бесконечно.

Пример 18. Алгоритм переправы через реку воинского отряда из пяти человек. Солдаты могут воспользоваться помощью двух мальчиков — хозяев небольшой лодки, в которой может переправиться или один солдат, или два мальчика.


Пример 19. Составим алгоритм вычисления степени с натуральным показателем n для любого вещественного числа а.

По определению:

При составлении алгоритма воспользуемся единой формулой, в которой число умножений равно показателю степени:

Исполним этот алгоритм для а = 4 и n = 3.

Пример 20. Для исполнителя Робот цикл с известным числом повторений реализуется с помощью следующей конструкции:

Так, если правее Робота не встретится препятствий, то, выполнив приведённый ниже алгоритм, он переместится на пять клеток вправо и закрасит эти клетки:

Пример 21. В некотором населённом пункте N домов. Известно, сколько людей проживает в каждом из домов. Составим алгоритм подсчёта жителей населённого пункта.

Исходные данные (количество жильцов) представим с помощью линейной таблицы А, содержащей N элементов: А[1] — количество жильцов дома 1, А[2] — количество жильцов дома 2, A[N] — количество жильцов дома N. В общем случае A[i] — количество жильцов дома i, где i принимает все значения от 1 до n (i = 1,n). Результат работы алгоритма обозначим через s.

Ознакомьтесь с модулем для коллективной работы «Циклические алгоритмы с параметром» (http://school-collection.edu.ru/). Совместно с товарищами постарайтесь составить алгоритмы для имеющихся в модуле задач. Пройдите тестирование.

Самое главное

Для записи любого алгоритма достаточно трёх основных алгоритмических конструкций (структур): следования, ветвления, повторения.

Следование — алгоритмическая конструкция, отображающая естественный, последовательный порядок действий. Алгоритмы, в которых используется только структура «следование», называются линейными.

Ветвление — алгоритмическая конструкция, в которой в зависимости от результата проверки условия (да или нет) предусмотрен выбор одной из двух последовательностей действий (ветвей). Алгоритмы, в основе которых лежит структура «ветвление», называют разветвляющимися.

Повторение — алгоритмическая конструкция, представляющая собой последовательность действий, выполняемых многократно. Алгоритмы, содержащие конструкцию «повторение», называют циклическими или циклами. Последовательность действий, многократно повторяющаяся в процессе выполнения цикла, называется телом цикла. В зависимости от способа организации повторений различают три типа циклов:

  1. цикл с заданным условием продолжения работы;
  2. цикл с заданным условием окончания работы;
  3. цикл с заданным числом повторений.

Вопросы и задания

  1. Какие алгоритмы называются линейными?
  2. Приведите пример линейного алгоритма из повседневной жизни.
  3. Запишите линейный алгоритм, исполняя который Робот нарисует на клетчатом поле следующий узор и вернётся в исходное положение:

  4. По алгоритму восстановите формулу.


  5. Какое значение получит переменная у после выполнения фрагмента алгоритма?

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

  6. Для заданного количества суток (t/h) требуется определить количество часов (h), минут (m) и секунд (с).
  7. Известно, что 1 миля = 7 вёрст, 1 верста = 500 саженей, 1 сажень = 3 аршина, 1 аршин = 28 дюймов, 1 дюйм = 25,4 мм. Пользуясь этой информацией, составьте линейный алгоритм перевода расстояния X миль в километры.
  8. Исходное данное — целое трёхзначное число х. Выполните для х=125 следующий алгоритм.

    Чем является результат s этого алгоритма?

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

  10. Какие алгоритмы называют разветвляющимися?
  11. Приведите пример разветвляющегося алгоритма из повседневной жизни.
  12. Дополните алгоритм из примера 9 так, чтобы с его помощью можно было найти наибольшую из четырёх величин А, B, С и D.
  13. Составьте алгоритм, с помощью которого можно определить, существует ли треугольник с длинами сторон а, Ь, с.
  14. Составьте алгоритм, с помощью которого можно определить, является ли треугольник с заданными длинами сторон а, Ь, с равносторонним.
  15. Составьте алгоритм возведения чётного числа в квадрат, а нечётного — в куб.
  16. Какая задача решается с помощью следующего алгоритма?

  17. Запишите алгоритм определения количества чётных чисел среди заданных целых чисел А, В и С.
  18. Запишите алгоритм определения принадлежности точки X отрезку [А; В] (пример 8) с использованием комбинации из двух ветвлений.
  19. Запишите алгоритм правописания приставок, начинающихся с буквы «з» («с»).
  20. Известно, что 31 января 2011 года приходится на понедельник. Какие значения должны быть присвоены литерной переменной у в алгоритме, определяющем день недели для любого числа (ichislo) января 2011 года?


  21. Даны две точки на плоскости. Определите, какая из них находится ближе к началу координат.
  22. Определите, есть ли среди цифр заданного целого трёхзначного числа одинаковые.
  23. Приведите пример циклического алгоритма:
      а) из повседневной жизни;
      б) из литературного произведения;
      в) из любой предметной области, изучаемой в школе.
  24. Напишите алгоритм, под управлением которого Робот обойдёт прямоугольную область, обнесённую стеной, по периметру и закрасит угловые клетки. Размеры области неизвестны.

  25. Запас рыбы в пруду оценён в А тонн. Ежегодный прирост рыбы составляет 15%. Ежегодный план отлова — В тонн. Наименьший запас рыбы составляет С тонн. (Запас ниже С тонн уже не восстанавливается.) Составьте блок-схему алгоритма для подсчёта количества лет, в течение которых можно выдерживать заданный план.
  26. Дана последовательность 5, 9, 13, 17, ... . Составьте блок-схему алгоритма для подсчёта числа слагаемых, сумма которых равна 324.
  27. Составьте алгоритм для определения количества цифр в записи произвольного натурального числа.
  28. Сумма 10 000 рублей положена в сберегательный банк, при этом прирост составляет 5% годовых. Составьте алгоритм, определяющий, через какой промежуток времени первоначальная сумма увеличится в два раза.
  29. Одноклеточная амёба каждые три часа делится на 2 клетки. Составьте алгоритм вычисления времени, через которое будет X амёб.
  30. Определите значения переменных n и m после выполнения фрагмента алгоритма.

  31. Составьте алгоритм нахождения произведения z двух натуральных чисел х и у без использования операции умножения.
  32. Население города Н увеличивается на 5% ежегодно. В текущем году оно составляет 40 000 человек. Составьте блок-схему алгоритма вычисления предполагаемой численности населения города через 3 года. Составьте таблицу значений переменных, задействованных в алгоритме.
  33. Каждая бактерия делится на две в течение 1 минуты. В начальный момент имеется одна бактерия. Составьте блок-схему алгоритма вычисления количества бактерий через 10 минут. Исполните алгоритм, фиксируя каждый его шаг в таблице значений переменных.
  34. Объявлен набор в школьную баскетбольную команду. Известен рост каждого из N учеников, желающих попасть в эту команду. Составьте алгоритм подсчёта количества претендентов, имеющих шанс попасть в команду, если рост игрока команды должен быть не менее 170 см.


Рейтинг@Mail.ru