Главная → Уроки → Информатика 8 класс

§ 5.3. Программирование линейных алгоритмов

Прочитай параграф о линейных программах на Python — стандартных функциях и модулях, целочисленном делении и остатке, строках и срезах, логическом типе и рисовании модулем graph — и ответь на 10 вопросов.

Не получается разобраться? Бесплатный ИИ-репетитор по информатике 8 класс разберёт ошибку по шагам и не даст списать.

Две числовые прямые одна под другой с отметками кратных восьми от -32 до 32. На верхней отмечено число 29: ближайшее кратное восьми слева от него — 24, подписано 29 // 8 = 3, а дуга от 24 до 29 подписана 29 % 8 = 5. На нижней отмечено число -29: ближайшее кратное слева — -32, подписано -29 // 8 = -4, а дуга от -32 до -29 подписана -29 % 8 = 3. Под прямыми равенства 29 = 8 · 3 + 5 и -29 = 8 · (-4) + 3
Рис. 1. Операция // находит ближайшее кратное делителя слева от числа, % — расстояние до него; поэтому -29 // 8 = -4.

Если команды программы выполняются сверху вниз, каждая ровно один раз и без всяких условий, то программа реализует линейный алгоритм. В этом параграфе мы разберём, что Python умеет делать с целыми и вещественными числами, со строками и с логическими значениями, научимся подключать модули с дополнительными функциями и рисовать простые картинки.

Стандартные функции

Функция — это готовое действие, у которого есть имя. В скобках после имени пишут аргумент, а функция возвращает результат. Вызов функции разрешено писать прямо внутри выражения, наравне с числами и переменными: y = 3 * abs(x) - 1. Самые нужные числовые функции такие:

abs(x) — модуль, то есть x без знака минус: abs(-8) равно 8, abs(-2.5) равно 2.5; целое остаётся целым, вещественное — вещественным; round(x) — ближайшее к x целое, результат типа int: round(3.7) равно 4; запись round(x, n) округляет до n цифр после точки, и результат вещественный: round(2.718, 1) равно 2.7; int(x) — целая часть: дробная часть просто отбрасывается, int(7.9) равно 7, а int(-7.9) равно -7; sqrt(x) — квадратный корень, результат всегда вещественный: sqrt(49) равно 7.0; sin(x) — синус угла x, заданного в радианах; random() — вещественное число, выбранное наугад между нулём и единицей; randint(a, b) — случайное целое число n, для которого a ≤ n ≤ b, обе границы входят: randint(1, 6) ведёт себя как игральный кубик.

Сравните int и round на отрицательном числе. Ближайшее к -7.9 целое — это -8, поэтому round(-7.9) равно -8, а int(-7.9) просто стирает дробную часть и даёт -7.

Если дробная часть равна ровно половине, ближайших целых два, и round выбирает из них чётное: round(0.5) равно 0, round(4.5) равно 4, а round(5.5) равно 6. Так половинки уходят то вверх, то вниз примерно поровну, и ошибки округления не копятся в одну сторону. Есть и вторая тонкость: компьютер хранит числа в двоичной системе, и многие десятичные дроби в ней точно не записываются. Дробь 4.35 хранится в памяти как число чуть меньше 4.35, поэтому round(4.35, 1) даёт 4.3, а не 4.4.

Дано: x = -7.5, выполняется оператор print(abs(x), round(x), int(x)).

Решение. Функция abs убирает знак: 7.5. Число лежит ровно посередине между -8 и -7, и round выбирает чётное, -8. Функция int отбрасывает дробную часть: -7.

Ответ: 7.5 -8 -7.

Модули

Функции abs, round и int встроены в язык, их вызывают сразу. Остальные разложены по модулям: функций для Python написано так много, что держать их все в самом языке неудобно. Модуль — это набор функций для задач одной области. Модуль math содержит математические функции, среди них sqrt и sin, модуль random — функции для случайных чисел, модуль graph — команды для рисования. Чтобы пользоваться модулем, его подключают, или импортируют, командой import. Запись from math import * подключает все функции модуля math (звёздочка означает «всё»), а запись from random import randint — только одну функцию randint. После этого функции модуля вызываются так же, как встроенные: y = sqrt(x), z = sin(x). Например, строки x = float(input()) и y = sqrt(x) прочитают число и найдут корень из него. Если подключение забыть, программа остановится с ошибкой NameError: имя sqrt Python незнакомо.

Действия с целыми числами

Целые числа в Python относятся к целочисленному типу int, числа с дробной частью — к вещественному типу float. Над целыми числами Python выполняет сложение +, вычитание -, умножение * и возведение в степень **: 3 ** 4 равно 81. Результат этих действий тоже целое число. А деление / даёт вещественное число при любых операндах: 8 / 4 равно 2.0, хотя 8 делится на 4 без остатка.

Хочешь больше времени в телефоне?

В Family Track телефон открывается за уроки: прочитал параграф, сдал тест и получил минуты. Сколько минут стоит урок, решают родители. Отправь им ссылку, пусть посмотрят.

Отправить родителямПройти урок бесплатно

Вопросы из теста

Правильные ответы и разбор ошибок — в приложении: при пересдаче вопросы меняются, поэтому списать не получится.

Что напечатает оператор, записанный ниже?

Что напечатает оператор, записанный ниже?

Не получается разобраться? Бесплатный ИИ-репетитор по информатике 8 класс разберёт ошибку по шагам и не даст списать.

← § 5.2. Организация ввода и вывода данных§ 5.4. Программирование разветвляющихся алгоритмов →