Найти в Дзене
Репетитор IT mentor

Среднее арифметическое чисел от a до b

Оглавление

Основной аудиторией моего блога являются люди за 50+. То есть люди, которые уже давно закончили школу и университет, но, видимо, не потеряли любовь к точным науками. Давайте проведем маленький Challenge. Сможете ли Вы решить задачу по информатике за 8 класс без использования интернета (гугления, библиотек, готовых решений вроде Excel и других математических пакетов, дающих готовые функции) ?

Только Вы, блокнот, черновик и компилятор для проверки :) Готовы и согласны? Тогда ближе к теме...

Сегодня разберем задачу по информатике для 8 класса, которую задал один из участников беседы сообщества Physics.Math.Code. Человек является школьником, поэтому для многих читателей эта задача может показаться несложной. А многим будет полезно вспомнить основы.

Задача

Составить программу для нахождения среднего арифметического чисел в диапазоне от a до b с помощью цикла for. Массив использовать нельзя.
Значения a и b вводятся вручную перед телом цикла с помощью оператора read.

Проблема учащегося по его же словам:

«Проблема в том, что я не особо понимаю зачем в этой программе нужен цикл, если среднее арифметическое можно найти и без него, написав код в несколько строк.»

Решение:

Заметка 1. Итак, задачу можно решить, как минимум двумя способами. Аналитическое решение представляется возможным, если вспомнить свойства суммы арифметических прогрессий. При нахождении среднего арифметического всех чисел (видимо, речь идет о целых числах, если не задан шаг) в диапазоне от a до b, у нас как раз появится сумма чисел, которые будут отличаться на одно и то же число (на единицу). Именно поэтому мы можем применить общую формулу, даже не смотря на то, что мы заранее не знаем количество этих чисел. Получается, что задачу можно решить не то чтобы без массивов, а даже без цикла. В итоге, аналитическое решение задачи будет выглядеть так:

-2

Заметка 2. Мы уже решили задачу аналитически, теперь нужно решить её численно. Зачем?
1. Для тренировки навыков работы с циклическими конструкциями;
2. Для тренировки компьютерного (дискретного) мышления решения какой-либо задачи;
3. Для тренировки навыков работы с каким-либо языком программирования
Мы имеем отличный пример задачи, который можно решить двумя способами. И если эти способы сходятся, то они доказывают правильность друг друга. Именно поэтому я очень люблю и ценю аналитические решения математических задач. Перебор — это хорошо, но если есть возможность записать одну инструкцию и понизить сложность задачи, то это прекрасная оптимизация. Напишите в комментариях ваше мнение на вопрос: нужно ли оптимизировать программы в 2022 году? Или скоростей работы процессоров уже достаточно для быстрого выполнения любого нашего говнокода? :)

В итоге, численное решение задачи будет выглядеть так:

-3

Код решения с помощью цикла ( численное решение ) и с помощью формулы для арифметической прогрессии ( аналитическое решение):

Программа написана на языке Pascal (Совместимость с Object Pascal). Возможные среды программирования: Turbo Pascal, PascalABC, PascalABC.Net, Lazarus и Delphi ( с определенными изменениями в настройках IDE для консольных приложений)
Программа написана на языке Pascal (Совместимость с Object Pascal). Возможные среды программирования: Turbo Pascal, PascalABC, PascalABC.Net, Lazarus и Delphi ( с определенными изменениями в настройках IDE для консольных приложений)

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

Долго, но тоже работает :)
Долго, но тоже работает :)

Понравился разбор задачи ? Поставьте лайк, подпишитесь на канал! Вам не сложно, а мне очень приятно :)

Если Вам нужен репетитор по физике, математике или информатике/программированию, Вы можете написать мне или в мою группу Репетитор IT mentor в VK
Библиотека с книгами для физиков, математиков и программистов
Репетитор IT mentor в Instagram
Репетитор IT mentor в telegram