ИНФОРМАТИКА · 8 КЛАСС
Программирование · Интерактивный конспект

§ 19. Использование основных алгоритмических конструкций для решения практических задач

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

Попробовать на модели ↓
Разбираемся в теме

Основные пункты параграфа

1

Последовательности, счётчики и суммы

Счётчик хранит количество, а накопитель суммы — общий результат.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Сумма и последовательность

Учебное выполнение готовых алгоритмов: пройдите по шагам и проверьте значения переменных. Это модель, а не компилятор.

Последовательность может задаваться формулой номера или правилом перехода. Например, aₙ = 2n задаёт чётные положительные числа. В последовательности Фибоначчи 1, 1, 2, 3, 5 каждый следующий член равен сумме двух предыдущих. Для перехода нужно сохранить оба прежних значения.

Счётчик подходящих элементов начинают с 0 и увеличивают на 1 при выполнении условия. Сумму также начинают с 0, но прибавляют само слагаемое. Для суммы n³/(n³ − n + 1) при n от 1 до m вычисляют каждую дробь отдельно и добавляют к s. Случайные 100 чисел не обязаны содержать ровно 20 кратных пяти.

Если выводят члены Фибоначчи меньше заданного предела, сначала проверяют даже первые единицы. При пределе 1 и строгом сравнении вывод должен быть пустым. Проверка границ относится не только к циклу, но и к подготовительным командам.

Главная мысль: Счётчик хранит количество, а накопитель суммы — общий результат.
2

Произведение, степень и таблица функции

Для произведения начальное значение равно 1; шаг таблицы зависит от числа промежутков.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Степень и таблица

Учебное выполнение готовых алгоритмов: пройдите по шагам и проверьте значения переменных. Это модель, а не компилятор.

Степень aⁿ при натуральном n можно вычислить повторным умножением: p := 1, затем n раз p := p * a. Для n = 0 результат 1 при ненулевом a. Отрицательный показатель требует обратного значения, а нуль в отрицательной степени недопустим. В учебной модели 0⁰ рассматривается как отдельно не заданный случай.

Таблица функции связывает каждое значение x с y. Для y = (x + 2)/(x² + 3) знаменатель положителен при любом вещественном x. Если нужно k равномерных точек от a до b включительно и k > 1, шаг h = (b − a)/(k − 1): между k точками k − 1 промежутков. Например, от −3 до 3 в семи точках шаг равен 1.

В формате вывода x:7:2 число 7 задаёт минимальную ширину поля, а 2 — число знаков после десятичного разделителя. Это формат представления, а не изменение математического значения исходной переменной.

Главная мысль: Для произведения начальное значение равно 1; шаг таблицы зависит от числа промежутков.
3

Обработка цифр

mod 10 получает последнюю цифру, а div 10 удаляет её у неотрицательного целого числа.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Цифры справа налево

Учебное выполнение готовых алгоритмов: пройдите по шагам и проверьте значения переменных. Это модель, а не компилятор.

Для n = 472 операция n mod 10 даёт 2, а n div 10 — 47. Повторяя эти действия, получают цифры справа налево: 2, 7, 4. Для суммы цифр начинают с 0 и прибавляют выделенную цифру. Для количества цифр увеличивают счётчик.

Если исходное число нужно позже, работайте с его копией. Отрицательное число сначала можно заменить модулем, если задача относится к цифрам без знака. Нуль требует внимания: цикл while n > 0 не выполнится, хотя запись числа 0 содержит одну цифру. Для обращения числа обновляют r := 10 * r + digit; ведущие нули результата как числа не сохраняются.

Рабочее nn mod 10Следующее n div 10Накопленная сумма
5088508
50058
55013
Главная мысль: mod 10 получает последнюю цифру, а div 10 удаляет её у неотрицательного целого числа.
4

Наибольший общий делитель

Алгоритм Евклида заменяет пару чисел более простой парой с тем же НОД.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Алгоритм Евклида

Учебное выполнение готовых алгоритмов: пройдите по шагам и проверьте значения переменных. Это модель, а не компилятор.

Для положительных a и b можно вычитать меньшее из большего до их равенства. Это равное значение и есть НОД. Например, (42; 24) → (18; 24) → (18; 6) → (12; 6) → (6; 6), ответ 6. Вариант с вычитанием нужно применять именно к положительным числам, иначе возможно отсутствие продвижения.

Более быстрый вариант использует остаток: пока b <> 0, вычисляют r := a mod b, затем a := b; b := r. При завершении НОД равен a. Если НОД равен 1, числа взаимно простые. Для трёх чисел используют НОД(НОД(a, b), c).

while b <> 0 do
begin
  r := a mod b;
  a := b;
  b := r;
end;
writeln(a);
Главная мысль: Алгоритм Евклида заменяет пару чисел более простой парой с тем же НОД.
Интерактивная практика

Исследуйте и примените

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

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Лаборатория: исследуйте свой вариант

Учебное выполнение готовых алгоритмов: пройдите по шагам и проверьте значения переменных. Это модель, а не компилятор.

Соберём главное

Шесть выводов

01

Счётчик хранит количество, а накопитель суммы — общий результат.

02

Для произведения начальное значение равно 1; шаг таблицы зависит от числа промежутков.

03

mod 10 получает последнюю цифру, а div 10 удаляет её у неотрицательного целого числа.

04

Алгоритм Евклида заменяет пару чисел более простой парой с тем же НОД.

05

Отдельно обрабатывайте нулевой показатель, число 0 и пустую последовательность.

06

Проверяйте математическую формулу до перевода её в программу.

Самопроверка

Тест: 10 вопросов

Один верный ответ. За ответ — 0,5 балла. Откройте и проверьте себя.

1. С чего начинают накопление суммы?

2. С чего начинают накопление произведения?

3. Следующее число после 1, 1, 2, 3, 5…

4. Что прибавляет счётчик подходящих элементов?

5. Шаг для k точек на [a; b], k > 1…

6. Чему равно 472 mod 10?

7. Чему равно 472 div 10?

8. В каком порядке выделяются цифры через mod 10 и div 10?

9. Чему равен НОД(42, 24)?

10. Когда числа взаимно простые?

ВыводыТестВ началоВсе параграфы
↑

Загрузка прогресса…