Уроки Tcl

Начало Уроки Tk Файлы
Статьи Уроки Tcl Гостевая книга
Предыдущий урок - #09: Цикл while

#10: Цикл for, команда incr

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

Tcl поддерживает ещё одну команду для создания циклов - for. For получает четыре аргумента - инициализация, условие, счетчик, и команда, которая будет выполняться в каждом шаге цикла.

При использовании команды while были те же четыре участка кода, но размещены они были более компактно.

Синтаксис команды for следующий:

for инициализация условие счетчик команда

Выполнение команды for происходит следующими этапами:

  1. Инициализация выполняется один раз, в самом начале. Устанавливается начальное значение счетчика.
  2. Проверка условия
  3. Обрабатывается счетчик.
  4. Переход на шаг 2 и повторение цикла.

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

Условие - вычисляется аналогично команде expr, и как в команде while. Может содержать любое условие.

Счетчик - обычно команда увеличения счетчика цикла, но может содержать любой код, который может выполнить интерпретатор Tcl.

Команда - код, который должен выполняться в цикле.

Так как обычно не требуется, чтобы интерпретатор выполнял заменду до начала выполнения команды for, то все аргументы группируются фигурными скобками. При этом начало новой строки не воспринимается как завершение всей команды. Это облегчает написание многострочных команд. Однако, открывающая фигурная скобка должна быть на одной строчке с командой for, иначе интерпретатор решит, что больше аргументов для for нет, и это вызовет ошибку.

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

Так как команда увеличения встречается достаточно часто, в Tcl для этого предусмотрена специальная команда:

incr имяПеременной ?добавка?

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

Пример:

for {puts "Начало"; set i 0} {$i < 2} {incr i; puts "После команды incr: $i"; } {
	puts "Внутри первого цикла: $i"
}

# Так как условие проверяется до выполнения команды
# этот цикл не выполнит команду

for {puts "Начало"; set i 3} {$i < 2} {incr i; puts "После команды incr: $i"; } {
	puts "Внутри второго цикла: $i"
}

# Цикл while, эквивалентный первому циклу for:

puts "Начало"; set i 0;
while {$i < 2} {
	puts "Внутри первого цикла: $i"
	incr i; 
	puts "После команды incr: $i"; 
}

Следующий урок - #11: Добавление новых команд - proc
Горбачев "Yurez" Юрий  
Хостинг от uCoz