Найти тему

День 6. Функции и модульность

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

Вчера я не закончил знакомство с функциями, поэтому потрачу на это выходной.

На повестке дня вопрос - модульность и организация кода: как разбивать программу на функции для удобства сопровождения.

ChatGPT подобрал мне следующий материал:

Модульность - как строительные блоки

Модульность в программировании - это как разбивка большой задачи на маленькие, самодостаточные блоки. Это подобно тому, как вы строите дом из кирпичей. Вместо того чтобы пытаться создать весь дом за один раз, вы создаете отдельные комнаты и части дома, а затем объединяете их вместе. Таким образом, модульность помогает упростить и организовать код.

Почему модульность важна?

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

2.
Повторное использование: Модульность позволяет использовать одни и те же функции в разных частях программы. Это как использование кирпичей для строительства разных домов.

3.
Коллаборация: Когда вы работаете в команде, модульный код легче совместно разрабатывать. Разные разработчики могут работать над разными модулями, не затрагивая друг друга.

Как разбивать программу на функции?

1.
Идентификация задач: Определите, какие конкретные задачи выполняет ваша программа. Это могут быть действия, которые можно выделить в отдельные функции.

2.
Создание функций: Для каждой идентифицированной задачи создайте отдельную функцию. Функция должна выполнять только одну конкретную задачу.

3.
Передача параметров: Если функция нуждается в данных для работы, передавайте эти данные в виде параметров.

4.
Возвращение результатов: Если функция должна вернуть результат, используйте `return` для возврата этого значения.
Пример:

В этом примере функции `calculate_total` и `print_receipt` разбивают задачи на вычисление общей суммы и вывод чека.
В этом примере функции `calculate_total` и `print_receipt` разбивают задачи на вычисление общей суммы и вывод чека.
Итак, модульность - это как разбивка программы на небольшие, самодостаточные блоки (функции), чтобы облегчить понимание, сопровождение и повторное использование кода. Выделите задачи, создайте функции для каждой из них, передавайте параметры и возвращайте результаты. Это поможет вам создавать более организованный и легко сопровождаемый код.

С модульностью вроде всё понятно, теперь нужно выполнить "домашку":

Задание: Реализовать программу для подсчета факториала числа с использованием функции.

Не буду делать вид, будто помню, что такое факториал. Посмотрю в интернете: Факториал числа - этот произведение всех натуральных чисел от 1 до данного числа. Факториал 3 это 1*2*3=6.

Попробую написать код, вот что получилось:

-2

Я объявил функцию factorial с аргументом n. Аргумент и будет числом, факториал которого нужно вычислить. Переменной result изначально присвою значение n. Вычисления будут производится при помощи цикла while, который будет выполнятся до тех пор n больше единицы. Каждую итерацию n будет уменьшаться на единицу, а переменная result будет переписываться произведением ее предыдущего значения на n.

Таким образом в первую итерацию result будет равен n * (n - 1), во вторую n * (n - 1) * (n - 2) и так далее до конца цикла. Я проверил программу - высчитывает факториал верно.

Я думаю, точнее уверен, что в Python есть инструменты для более простого выполнения данного действия, но я пока с ними не знаком. Для чистоты эксперимента я не стал искать в поисковиках решение этой задачи, а выполнил её самостоятельно, хотя может и не самым оптимальным способом.

А сейчас я порошу chatGPT выполнить это же задание и посмотрю, как он с ним справится:

-3

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

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