April 7

Урок 6: Работа с циклами в BAS

Добро пожаловать на урок, посвящённый циклам! Сегодня мы разберём, что такое циклы, для чего они нужны и какие их виды существуют. В BAS существует 3 типа циклов.

остальные уроки найдете тут


Что такое циклы?

Цикл — это заранее подготовленное последовательность действий, которая выполняется определённое количество раз. Циклы используются в логике скриптов, чтобы автоматизировать повторяющиеся операции. Например, если вам нужно несколько раз выполнить обмен одной монеты на другую (скажем, 5 раз), для этого как раз и применяются циклы.

В нашем базовом наборе есть три основных вида циклов:

  1. While — цикл с условием.
  2. For — цикл с заданным количеством повторений.
  3. Forage — цикл для последовательного перебора элементов.

Давайте разберём каждый из них подробно.


Виды циклов и их применение

1. Цикл for

Описание

Цикл for используется, когда нужно выполнить операцию заданное количество раз. Он работает с верхней и нижней границами:

  • Верхняя граница — начальное значение (от какого числа начинаем).
  • Нижняя граница — конечное значение (до какого числа выполняем).

Пример

Предположим, мы хотим, чтобы цикл работал от 1 до 100 повторений:

  • Устанавливаем верхнюю границу = 1.
  • Устанавливаем нижнюю границу = 100.
  • Цикл выполнит операцию 100 раз.

Практика

  1. Создаём функцию CycleFunction (название может быть любым).
  2. Внутри функции добавляем цикл for с границами от 1 до 100.
  3. Запускаем скрипт и видим в логе, как счётчик доходит до 100, после чего цикл завершается.

Особенности

  • Переменная, которая хранит текущее значение (например, 1, 2, 3... 100), называется Cycle_Index.
  • Чтобы использовать значения внутри цикла, обращайтесь к CycleIndex.

Применение

Цикл for подходит для задач вроде:

  • Обмена токенов (свапалок).
  • Фарминга.
  • Любых активностей, где нужно повторить действие фиксированное число раз.

2. Цикл while

Описание

Цикл while работает на основе условия. Он выполняется, пока условие истинно. Если условие становится ложным, цикл завершается.

Пример 1: Бесконечный цикл

  • Устанавливаем условие true.
  • Цикл будет работать бесконечно, пока его не прервёт внешнее условие или событие.
  • Используется, когда нужно что-то выполнять без остановки (например, получать данные с задержками).

Пример 2: Условный цикл

Предположим, у нас есть значение газа (gas), которое обновляется в базе данных. Мы хотим, чтобы цикл работал, пока gas >= 10:

  • Пока условие выполняется (gas >= 10), цикл активен, и мы ничего не делаем.
  • Как только gas становится меньше 10 (например, 9), цикл завершается, и начинается основная работа.

Практика

  1. Создаём функцию cycle_function.
  2. Добавляем блок для получения значения газа из базы (таблица gaschecker):
    • Обращаемся к таблице gaschecker.
    • Сохраняем значение в переменную gas (например, gas = 10).
  3. Настраиваем цикл while с условием gas >= 10:
    • Внутри цикла обновляем значение gas из базы.
  4. Запускаем скрипт:
    • Пока gas >= 10, цикл работает.
    • Меняем значение в базе на 9 — цикл завершается.

Применение

  • Ожидание определённых условий (например, нужного значения газа).
  • Бесконечные операции с возможностью прерывания.

3. Цикл forage

Описание

Цикл forage используется для последовательного перебора элементов в списке. Он не требует числовых границ, а работает с массивом данных (например, списком сайтов или протоколов).

Пример

Допустим, у нас есть список сайтов:

  • PancakeSwap
  • Oneinch.io
  • Biswap

Мы хотим последовательно зайти на каждый сайт.

Практика

  1. Создаём список site_list с элементами:
    • PancakeSwap
    • 1inch.io
    • Biswap

2. Добавляем цикл forage и указываем переменную site_list.

3. Внутри цикла:

    • Используем действие «Браузер → Загрузить».
    • Указываем переменную ForageData (она хранит текущий элемент списка, например, PancakeSwap).

4. Добавляем задержку (например, 5 секунд) между загрузками.

5. Запускаем скрипт:

    • Браузер последовательно загружает PancakeSwap → 1inch → Biswap.

Особенности

  • Цикл проходит элементы строго последовательно.

Применение

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

Практическое применение циклов: свап

Теперь давайте применим цикл for для выполнения нескольких операций обмена (свапов) на примере обмена BNB на USDT через 1inch.

Задача

  • Поменять BNB на USDT 2 раза.
  • Использовать случайные суммы в диапазоне (например, 0.035–1.86 долларов).

Шаги

  1. Создаём функцию swap:
    • Нажимаем «Сохранить изменения».
  2. Загружаем сайт:
  3. Генерируем случайную сумму:
    • Используем модуль инструменты -> «Случайное число»:
      • первое число сохраняем в переменную randomint - ставим от 1 до 2
      • Второе сохраняем в переменную random_float, ставим от 100000 до 999999.
        это делается из-за того, что нам доступны только целочисленные значения. далее из этих двух переменных создаем одно случайное число
    • Преобразуем в строку и комбинируем в random_number (например, 0.035).
      для этого используем модуль строка -> в строку
      логика скрипта -> установить переменную
  1. Вводим сумму:
    • Очищаем поле ввода.
      с селекторами уже умеете работать
    • Вставляем randomchislo в поле ввода.
  2. Выполняем обмен:
    • Ждём полной загрузки страницы.
    • Оборачиваем в «Игнор ошибок», чтобы избежать сбоев.
    • Нажимаем кнопку «Swap» (селектор: button[match="swap"]).
  3. Подтверждаем транзакцию:
    • Проверяем наличие кнопки «Sign and Proceed»:
      • Если есть, кликаем (селектор: match="sign and proceed").
    • Переключаемся на кошелёк:
      • Нажимаем «Sign and Create».
      • Нажимаем «Confirm».
    • Если появляется «Ignore All», нажимаем (селектор: match="ignore all").
    • Возвращаемся на вкладку 0 (обменник).

4. Повторяем операцию через цикл for:

    • Устанавливаем границы: от 1 до 2 (2 итерации).
    • Помещаем все действия внутрь цикла.

5. Добавляем задержки:

    • Между действиями: 1–2 секунды.
    • После подтверждения: 5 секунд.

6. Используем ресурс:

    • Создаём ресурс quantity_swaps (например, 3 по умолчанию).
    • В цикле for вместо 2 указываем quantity_swaps.

Результат

  • Скрипт выполнит 2 (или заданное в quantity_swaps) обмена BNB на USDT с разными случайными суммами.

Итоги

Мы рассмотрели три основных цикла:

  • for — для фиксированного числа повторений (например, свапы, фарминг).
  • while — для работы с условиями (бесконечные циклы или ожидание событий).
  • forage — для перебора списков (например, сайтов или протоколов).

Теперь вы готовы применять циклы на практике! Удачи в освоении!

=ЧАО ПОКА=