August 22, 2023

Расчёт суммы цифр в промежутке на Leo feat. ChatGPT.

Привет! В данной статье мы напишем несколько программ на языке программирования Leo, которые находят сумму чисел в данном промежутке. Если вы не читали мои предыдущие статьи и видео, рекомендую с ними ознакомиться. У меня много контента по языку Leo, а также по проекту Aleo.

Данная статья есть в видео-формате по ссылке.

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

Открываем Aleo Studio и создаем новую программу.

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

transition main(n: u32) -> u32 {

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

let f: u32 = 0u32;

По умолчанию присвоим ей значение 0.

Далее создаем цикл for. С помощью него мы и будем считать сумму цифр

for i: u32 in 0u32..3u32 {

Последнее число, в данном случае 3, определяет до какого числа мы будем считать. Если мы указываем 3, то будет сумма 1 и 2, то есть 3 в этот диапазон не входит.

Теперь осталось прописать оператор сложения.

f = f + i;

Возвращаем переменную f и всё, можно запускать программу.

return f;

Например, при диапазоне от 0 до 5, на выходе мы получим 10 (сумма цифр от 0 до 4).

Финальный код выглядит так:

program sum_2.aleo { transition main(n: u32) -> u32 { let f: u32 = 0u32; for i: u32 in 0u32..3u32 { f = f + i; } return f; } }

Теперь давайте посчитаем только четные числа

Для этого добавялем условный оператор if. Если остаток от деления на 2 равен 0 (то есть число четное), тогда мы выполняем сложение, иначе пропускаем данное действие.

if i.rem(2u32) == 0u32 {

Если же мы считаем не четные числа, тогда пишем не равен 0:

if i.rem(2u32) != 0u32 {

Теперь давайте попросим ChatGPT объяснить этот код.

  1. program sum.aleo: Это объявление программы с именем "sum".
  2. transition main(n: u32) -> u32 {: Это объявление функции (перехода) с именем main, которая принимает один аргумент типа u32 (беззнаковое 32-битное целое число) и возвращает значение типа u32.
  3. let f: u32 = 0u32;: Объявляется переменная f типа u32 (беззнаковое 32-битное целое число) и инициализируется значением 0.
  4. for i: u32 in 0u32..3u32 {: Начинается цикл for, который будет перебирать значения переменной i от 0 до 2 (включительно). Обратите внимание, что верхний предел (3u32) не включается.
  5. if i.rem(2u32) != 0u32 {: Здесь производится проверка на нечетное значение i, используя метод .rem() (остаток от деления) для переменной i на 2. Если остаток не равен 0, то выполняется следующий блок кода.
  6. f = f + i;: Если значение i нечетное, то к переменной f добавляется значение i.
  7. return f;: По завершении цикла возвращается значение переменной f.

Таким образом, эта программа вычисляет сумму всех нечетных чисел от 0 до 2 (включительно) и возвращает эту сумму. В данном случае, сумма нечетных чисел от 0 до 2 равна 1 (1 + 0).

Вывод.

Надеюсь, наш тандем с ChatGPT достаточно подробно объяснил принцип действий при реализации данной задачи. До встречи в следующей статье!