Компания ALT Linux
Опубликован: 05.04.2015 | Доступ: свободный | Студентов: 2524 / 484 | Длительность: 05:48:00
ISBN: 978-5-905167-02-7
Специальности: Программист, Преподаватель
Лекция 2:

Основные алгоритмы и их реализация на Python

< Лекция 1 || Лекция 2: 12345 || Лекция 3 >

2.2 Ветвления и оператор выбора

В решениях задач по алгоритмизации одним из важнейших элементов является так называемое "ветвление", которое хорошо описывается сказочной формулой "Направо пойдёшь — голову потеряешь, прямо пойдёшь — коня потеряешь...", а проще говоря, ситуация "если ..., то ..., иначе ...". Типовая блок-схема алгоритма с ветвлением (проверкой условия) показана на рис. 2.5.

Типовая схема алгоритма с ветвлением

Рис. 2.5. Типовая схема алгоритма с ветвлением

Если условие, указанное в блоке "Условие", выполняется, то далее производятся действия, соответствующие "ветви ДА" ("Действия ДА"), иначе выполняются действия, соответствующие "ветви НЕТ" (Действия НЕТ"). Условия нужно составлять так, чтобы результат проверки любого условия допускал только два исхода — условие либо выполняется, либо не выполняется.

В случае, когда одной проверкой не удаётся охватить все варианты, используются "вложенные" условия, как показано на рис. 2.6. Условия могут быть вложены друг в друга любое количество раз (уровень вложенности не ограничен). Такая ситуация также называется "выбор".

В языках программирования для обеспечения проверки условий используется специальный составной оператор IF ("если"). В этом операторе указывается условие, которое нужно проверить, и действия для ветвей "ДА" и "НЕТ".

Чтобы понять, как работает оператор IF, рассмотрим типичные задачи на проверку условий и выбор.

Блок-схема алгоритма выбора

увеличить изображение
Рис. 2.6. Блок-схема алгоритма выбора

Задача 1. Составить программу ввода значения температуры воздуха t и выдачи текста "Хорошая погода!", если t > 10 градусов и текста "Плохая погода!", если t \le 10 градусов2Источник: В.А.Молодцов, Н.Б.Рыжикова. Информатика: тесты, задания, лучшие методики. Ростов-на-Дону: Феникс, 2009..

Постановка задачи: Исходными данными является значение t, необходимо сформировать строку s. При t < 10 s='Плохая погода!', иначе s='Хорошая погода!'.

Блок-схема алгоритма показана на рис. 2.7.

Текст программы на "псевдоязыке":

ввод t
если (t <10) то
	s='Плохая погода!'
иначе
	s='Хорошая погода!'
конец если
вывод s
Блок-схема алгоритма задачи про погоду

Рис. 2.7. Блок-схема алгоритма задачи про погоду

Текст на Python:

# -*- coding: utf-8 -*-

#

t=input('Введите температуру в градусах: ')

if t <10:

s='Плохая погода!'

else:

s='Хорошая погода!'

print s

Начало каждой "ветви" программы обозначается символом ":". Условие в операторе IF ("если") записывается без скобок. Как таковое окончание оператора IF отсутствует. Python считает, что следующий оператор начинается в строке без отступа. Таким образом, в Python отступы играют важную роль.

Задача 2 (источник тот же). Составить программу ввода оценки P, полученной учащимся, и выдачи текста "Молодец!", если P=5, "Хорошо!", еслиP=4 и "Лентяй!", если P \le 3.

Постановка задачи: Дано значение P, которое является натуральным числом и не может быть больше 5. В зависимости от величины P нужно сформировать строку s по правилам, указанным в условии. Необходимо выполнить две последовательные проверки значения P.

Блок-схема алгоритма показана на рис. 2.8.

Блок-схема алгоритма к задаче про оценки

Рис. 2.8. Блок-схема алгоритма к задаче про оценки

Текст программы на "псевдоязыке":

ввод P
если (P=5) то
	s='Молодец!'
иначе если (P=4)
	s='Хорошо!'
иначе
	s='Лентяй!'
конец если
вывод s

Программа на Python:

# -*- coding: utf-8 -*-

#

P=input('Ваши баллы? ')

if P==5:

s='Молодец!'

elif P==4:

s='Хорошо!'

else:

s='Лентяй!'

print s

Ключевое слово elif в Python является сокращением от else if ("иначе если") и используется для организации вложенных условий (алгоритмов выбора).

2.2.1 Задачи для самостоятельного решения

  1. Дано натуральное число. Определить, будет ли это число: чётным, кратным 4.
  2. Дано натуральное число. Определить, будет ли это число: нечётным, кратным 5.
  3. Дано натуральное число. Определить, будет ли это число: нечётным, кратным 7.
  4. Дано натуральное число. Определить, будет ли это число: чётным, кратным 10.
  5. Имеется коробка со сторонами: A \times B \times C. Определить, пройдёт ли она в дверь с размерами M \times K.
  6. Дано вещественное число. Определить, какое это число: положительное, отрицательное, ноль.
  7. Можно ли из бревна, имеющего диаметр поперечного сечения D, выпилить квадратный брус шириной A?
  8. Можно ли в квадратном зале площадью S поместить круглую сцену радиусом R так, чтобы от стены до сцены был проход не менее K?
  9. Дан номер места в плацкартном вагоне. Определить, какое это место: верхнее или нижнее, в купе или боковое.
  10. Известна денежная сумма. Разменять её купюрами 500, 100, 10 и монетой 2 руб., если это возможно.
  11. Имеются две ёмкости: кубическая с ребром A, цилиндрическая с высотой H и радиусом основания R. Определить, поместится ли жидкость объёма M в первую ёмкость, во вторую, в обе.
  12. Имеются две ёмкости: кубическая с ребром A, цилиндрическая с высотой H и радиусом основания R. Определить, можно ли заполнить жидкостью объёма M первую ёмкость, вторую, обе.
  13. Даны вещественные числа: X, Y, Z. Определить, существует ли треугольник с такими длинами сторон и, если существует, будет ли он прямоугольным.
  14. Дано число X. Определить, принадлежит ли это число заданному промежутку [a,b].
  15. Определить значение функции Z=1/(XY) при произвольных X и Y.
  16. Даны вещественные числа: A, B, C. Определить, выполняются ли неравенства A < B < C или A \ge B \ge C и какое именно неравенство выполняется.
  17. Даны вещественные числа X и Y. Вычислить Z. Z=\sqrt{X*Y} при X > Y, Z=\ln(X + Y) в противном случае.
  18. Даны вещественные положительные числа a, b, c, d. Выясните, может ли прямоугольник со сторонами a,b уместиться внутри прямоугольника со сторонами c,d так, чтобы каждая сторона внутреннего прямоугольника была параллельна или перпендикулярна стороне внешнего прямоугольника.
  19. Дано вещественное число A. Вычислить f(A), если f(x)=x^2 + 4x + 5, при x \le 2; в противном случае f(x)=1/(x^2 + 4x + 5).
  20. Дано вещественное число A. Вычислить f(A), если f(x)=0, при x \le 0; f(x)=x при 0 < x \le 1, в противном случае f(x)=x^4.
  21. Дано вещественное число A. Вычислить f(A), если f(x)=0 при x \le 0;f(x)=x^2 - x при 0 < x \le 1, в противном случае f(x)=x^2 - \sin (\pi x^2).
  22. Составить алгоритм и программу для реализации логических операций "И" и "ИЛИ" для двух переменных.
  23. Известен ГОД. Определить, будет ли этот год високосным, и к какому веку этот год относится.

Указание. При вычислении корней и логарифмов используйте функции sqrt() и log() модуля math. В этом же модуле определена константа pi (math.pi).

< Лекция 1 || Лекция 2: 12345 || Лекция 3 >
Ольга Курыло
Ольга Курыло
Александр Кудлаев
Александр Кудлаев

Ознакомился с курсом "Практика по алгоритмизации и программированию на Python". Хотел сдать экзамен. Вместо традиционного тестирования было предложено написать курсовую работу. Написал. Отослал.Ответ на следующий день: "Задание не прверено". Сколько ожидать результата проверки работы?