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

1.1. Алгоритм и алгоритмические конструкции

 В 7-м классе вы познакомились с основами программирования на языке Python. Для решения задач по программированию были выделены основные этапы (пример 1.1).

Напомним определения основных понятий, изученных в 6-м и 7-м классах.

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

Исполнитель — человек (группа людей) или техническое устройство, которое способно правильно выполнять команды алгоритмов. Набор команд одного исполнителя называют системой команд исполнителя.

Последовательность команд, исполнителем которой является компьютер, называется программой. Программа — это алгоритм, записанный на некотором формальном языке — языке программирования.

Все алгоритмы, которые составляет человек, рассчитаны на конкретного исполнителя. В дальнейшем будем рассматривать только исполнитель-устройство с ограниченным набором команд.

Все команды исполнителя делят на группы:

  1. Команды, которые непосредственно выполняет исполнитель.
  2. Команды, изменяющие порядок выполнения других команд исполнителя, которые называют командами управления (управляющими конструкциями). К ним относят команды повторение и ветвление.

Любой алгоритм может быть записан с использованием трёх базовых алгоритмических конструкций: следование, повторение и ветвление (форзац 1).
Командами в языке программирования считают (пример 1.2):

  • операторы (оператор присваивания, оператор ветвления, оператор цикла и др.);
  • вызовы встроенных и пользовательских вспомогательных алгоритмов (функций). 

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

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

В 7 классе, изучая язык Python, вы использовали следующие команды (пример 1.3):

  • команду для ввода данных;
  • команду для вывода данных;
  • оператор присваивания.

Для ввода данных предназначена команда input(). В скобках можно написать текст, поясняющий, что необходимо ввести.

Для вывода данных используют команду print(). Она позволяет выводить текстовые сообщения и числовые значения. Текстовые сообщения записываются в кавычках, выводятся в виде последовательности символов так, как записаны, и не анализируются при выполнении.

Команда print() может содержать аргументы, управляющие выводом (пример 1.4).

Оператор присваивания предназначен для того, чтобы:

    • задавать значения переменным;
    • вычислять значение выражения
      (результат будет записан как значение переменной).

Формат записи оператора присваивания:

<имя переменной> =<выражение>

В записи арифметического выражения используются знаки математических операций (пример 1.5).

Напомним, что операция деления (/) применяется для данных типа float, для данных типа int используются операции // и %.

При вычислениях часто используются различные математические функции. Эти функции реализованы как встроенные вспомогательные алгоритмы и могут применяться при записи арифметических выражений. Для применения этих функций в программе нужно подключить библиотеку math.
Аргументы функций всегда записываются в скобках.

Список всех математических функций языка Python можно найти в справочной системе (пример 1.6). Справка устанавливается вместе с языком Python. Найти справку можно в меню Пуск: Пуск → Все → Python 3.* → Python 3.* Manuals. Некоторые из функций приведены в примере 1.7

Аргументом функции может быть число, переменная, выражение или другая функция: sqrt(fabs(-16)), pow(x,1/4).

Пример 1.8. Задана длина стороны квадрата a. Написать программу нахождения площади квадрата и длины его диагонали.

Этапы выполнения задания.
I. Исходные данные: длина стороны, переменная а.
II. Результат: переменные S (площадь) и d (длина диагонали).
III. Алгоритм решения задачи:
1. Ввод исходных данных.
2. Вычисление площади по формуле S = a2.
3. Вычисление длины диагонали по формуле d = a√2.
4. Вывод результата.
IV. Описание переменных: переменные, определённые для решения задачи, имеют тип float.

Правильность вычислений можно проверить на калькуляторе.

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

Нередко в одной программе приходится выполнять одну и ту же последовательность команд несколько раз. В этом случае удобно использовать вспомогательный алгоритм, который можно выполнять нужное число раз, обращаясь к его названию. Вспомогательные алгоритмы вы использовали при написании программ для учебных компьютерных исполнителей Черепаха и Робот (пример 1.9).

Пример 1.9. Написать программу для исполнителя Робот, который должен закрасить отмеченные клетки на поле.

Изображение, которое должен нарисовать Робот, состоит из двух одинаковых фигур. Для рисования фигуры оформим вспомогательный алгоритм — функцию krest. С помощью этой функции будут закрашиваться клетки на поле Робота в соответствии с изображением фигуры.

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

Вспомогательный алгоритм решает некоторую часть основной задачи. Вызов вспомогательного алгоритма является командой, которая может заменить несколько команд.

В этом учебном году вам предлагается работать с языком программирования Python в среде разработки Visual Studio Code (VS Code). Данное приложение (пример 1.10) является бесплатным и используется для написания и отладки кода на различных языках программирования. Некоторые сведения о работе с данной средой приведены в Приложении 1.

Программирование — это искусство создания ПО от сайтов до искусственного интеллекта. Оно требует сочетания логики, творчества и технических навыков, развивая особый тип мышления, необходимый для решения сложных задач.
Одним из самых известных белорусских ИТ-продуктов, получивших мировую известность, является Viber. Сегодня в 193 странах более 460 млн человек активно применяют популярный мессенджер, который был запущен в 2010 г. Этот сервис предоставляет широкий спектр функций, включая голосовые и видеозвонки через Интернет, а также возможность отправки и получения различных типов сообщений.

Пример 1.1. Этапы решения задачи по программированию.

В процессе решения задачи некоторые этапы приходится повторять до тех пор, пока анализ результатов не покажет, что задача решена верно. Для поиска ошибок можно использовать средства отладки.

В 1966 г. математики Корра до Бём (1923–2017) и Джузеппе Джакопини (1936–2001) доказали, что любой исполняемый алгоритм можно привести к структурированному виду, т. е. виду, когда ход выполнения алгоритма определяется при помощи трёх базовых алгоритмических конструкций. Полностью концепция структурного программирования была разработана в 1970-х гг. при участии Эдгера Дейкстры.

Пример 1.2. Известные из 6-го и 7-го классов команды языка Python:

  • операторы: for, while, if;
  • вызовы функций: forward(), setpos(), input(), print().

Пример 1.3. Использование команд ввода, вывода, присваивания.

Даны x, y. Написать программу для вычисления значения выражения

Этапы выполнения задания.

I. Определение исходных данных: переменные x, y.

II. Определение результатов:  переменная a

III. Алгоритм решения задачи.
1. Ввод исходных данных.

2. Вычисление значения выражения.

3. Вывод результата.

IV. Описание переменных: все переменные, определенные для решения задачи, имеют тип float.

V. Программа:

VI. Тестирование программы: Запустить программу и ввести значения x = 3.8, y = 2.7. Результат:

VII. Правильность вычислений проверить на калькуляторе.

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

  • ввод значений переменных;
  • команда присваивания;
  • вывод результата.

Пример 1.4. Управление выводом.

  • sep — задаёт текст-разделитель при выводе нескольких различных значений в одной команде. По умолчанию — пробел;
  • end — задаёт текст, который появится на экране после вывода всех значений одной команды. По умолчанию — перевод строки.

Пример 1.5. Арифметические операции.

Пример 1.6. Раздел математических функций math — Mathematical functions.Пример 1.7. Математические функции.

Пример 1.8.

V. Программа:

from pyrob.api import *

a = float(input(«введи a = «))
s = pow(a, 2)
d = a * sqrt(2)
print(«s =», s)
print(«d =», d)

VI. Запустить программу и ввести значение a=5.7. Результат:

Пример 1.9. Вспомогательный алгоритм krest закрашивает клетки одной фигуры. Программа для исполнителя Робот:

from pyrob.api import *

@task
def prim_1_4_8():
      def krest():
            fill_cell(), move_left()
            fill_cell(), move_left()
            fill_cell(), move_down(), move_right()
            fill_cell()
            fill_cell(), move_up()
            fill_cell(), move_up(), fill_cell()
      move_left()
      krest()
      move_right(5), move_down()
      krest()
      move_left(2)
      move_down()

run_tasks()

Пример 1.10. Редактор кода Visual Studio Code (VS Code).

1. Что такое алгоритм?
2. Перечислите основные алгоритмические конструкции.
3. Какая команда используется в языке Python для ввода данных?
4. Какие команды используется в языке Python для вывода данных?
5. Для чего нужна команда присваивания?

Упражнения

1. Расставьте команды программы в правильном порядке, так чтобы можно было вычислить значение выраженияЕсть ли в программе команды, место которых в программе определяется не однозначно?

  1. z = x * x + 4
  2. c = 2 * x
  3. print(«a =», a)
  4. x = float(input(«введи x = «))
  5. a = c / z

2. Как можно возвести число в квадрат не используя функцию pow, как это было сделано в примере 1.8?

3. Дано x. Измените программу примера 1.3 так, чтобы вычислялось значение выражения4. Рассмотрите программы, которые находят целую и дробную части частного от деления x на y. Проверьте, одинаковые ли результаты будут выдавать программы. Проверьте случаи, когда x, y оба положительные, оба отрицательные, имеют разные знаки. Объясните результаты.

* Измените одну из программ так, чтобы результат ее работы соответствовал математическому определению целой и дробной частей (дробная часть не может быть отрицательной).

5. Заданы три числа. Напишите программу для поиска среднего арифметического этих чисел.
6. Диаметр колеса велосипеда равен а см. Длина окружности C находится по формуле: C = 2pR, где p = 3,1415…, R — радиус. Велосипедист проехал на велосипеде x м. Напишите программу, которая вычислит количество полных оборотов, которые сделало колесо велосипеда. Значение константы p хранится в библиотеке math под именем pi.
7. Заданы два числа. Напишите программу для поиска частного от деления первого числа на второе и округлите результат до ближайшего целого.
8. *Заданы два числа. Напишите программу для поиска частного этих чисел. Округлите результат до десятых, оставив в дробной части одну цифру.

Проверь себя