Циклы нужны для выполнения одной последовательности действий много, много, раз. Вообще существует множество типов циклов, но мы будем использовать только цикл 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 оба одинаковы.