ACS. Циклы.

Циклы нужны для выполнения одной последовательности действий много, много, раз. Вообще существует множество типов циклов, но мы будем использовать только цикл while. Подробнее о циклах на официальном вики. Цикл for я не использую скоро объясню почему.

Цикл While

Синтаксис цикла while следующий

while(условие_выхода_из_цикла)
{
  ...
  команды
  ...
}

В качестве условия выхода из цикла можно задать переменная < 10 цикл будет повторятся пока переменная не будет равна 10

Пример

int n=0;
while(n<10)
{
  print(i:n);
}

Стоит условие n<10, но вот проблема, оно никогда не станет выполненным, потому что значение n не изменяется. Исправим.

int n=0;
while(n<10)
{
  print(i:n);
  n++;
}

Помимо условия < есть и другие условия:

  • n < 15 — истина когда n меньше 15, 15 уже ложь
  • n > 15 — истина когда n больше15, 15 уже ложь
  • n <= 15 — истина когда n меньше или равно 15, то-есть 15 тоже истина
  • n >= 15 — истина когда n больше или равно 15, то-есть 15 тоже истина
  • n == 15 — истина когда n равно 15
  • n != 15 — истина когда n не-равно 15

Добавим задержку(Delay) чтобы мы успевали увидеть изменение сообщения

int n=0;
while(n<10)
{
  print(i:n);
  n++;
  Delay(5);
}

Комманда(функция) Delay устанавливает временную задержку, в качестве аргумента принимает количество тиков. Синтаксис комманды Delay, представлен ниже

Delay(Количество_тиков);

35 тиков = 1 секунда, зная это правило вы сможете подобрать нужную вам задержку.

А теперь проверим этот скрипт в действии.

Итоговый результат

Число на экране возросло с 1 до 9, прямо на наших глазах.

А теперь я объясню почему я не использую цикл for в ACS.

Цикл For в ACS и сломанное пространство имен

Введите следующий скрипт и запустите

#include "zcommon.acs"

script 1 (void)
{
  for(int n=0;n<10;n++)
  {
    print(i:n);
    Delay(5);
  }
  Delay(35*7);
  print(i:n);
}

Переменная n, все еще существует в зоне видимости script 1, хотя не должна. По идее эта последняя команда

  Delay(35*7);
  print(i:n); <-- Вот она

Должна была выдать ошибку, так как переменной n, не существует, она существует только внутри блока for (фигурных скобок {…} for)

В итоге главное преимущество цикла for теряется, и уже нет разницы, что while что for оба одинаковы.

Пожалуйста отключи блокировщик рекламы, или внеси сайт в белый список!

Please disable your adblocker or whitelist this site!