Уроки Tcl

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

#09: Цикл while

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

Tcl включает две команды для циклов, while и for. Как и if, они проверяют условие тем же способом, что и expr. В этом уроке рассматривается команда while, а в следующем - for. В большинстве случаев одна команда может заменить другую.

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

while условие команда

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

Break и continue являются двумя командами, которые могут изменять ход цикла. Когда встречается break, интерпретатор выходит из цикла на следующую после цикла строку кода. Когда в теле цикла встречается continue, интерпретатор возвращается к проверке условия и не выполняет оставшуюся часть тела цикла.

В Tcl всё единообразно, поэтому везде проходит фаза подстановки. По этой причине условие нужно помещать в фигурные скобки. Если условие поместить в двойные кавычки, то в фазе подстановки в команде while все переменные будут заменены на числа, и в ходе выполнения цикла их значения не будут проверяться, результат будет всё время один и тот же, получится бесконечный цикл и программа "зависнет".

Посмотрите на второй цикл в примере, если бы не было команды break, цикл бы выполнялся бесконечно.

Пример:

set x 1;
while {$x < 5} {puts "значение x = $x"; set x [expr $x + 1]}
puts "Первый цикл закончился при X равном $x\n"

# Сколько раз выполнится этот цикл?
# Почему он не выводит значение каждый раз?

set x 0;
while "$x < 5" {
	set x [expr $x + 1]
	if {$x > 6} break;
 	if "$x > 3" continue;
	puts "значение x = $x"; 
}

puts "Второй цикл завершился при X равном $x\n"

Следующий урок - #10: Цикл for, команда incr
Горбачев "Yurez" Юрий  
Хостинг от uCoz