Уроки Tcl

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

#08: Сравнение чисел - if

Команда switch позволяет вам сравнивать строку с другими. Другая особенность компьютерных языков - возможность выбора одного из двух вариантов действий на основе сравнения чисел. Как и большинство языков, Tcl предоставляет такую возможность коммандой if.

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

if условие1 ?then? команда1 elseif условие2 ?then? команда2 elseif ... ?else? командаN

Слова then и else не обязательны, вы можете писать их, если думаете, что они улучшат читаемость вашего кода, или пропускать, если вам так больше нравится.

Когда поступает команда if, интерпретатор Tcl вычисляет условие с помощью команды expr. Если результат - истина, то выполняется команда1. Если получилась ложь - проверяется слово после команды1. Если следующее слово elseif, тогда проверяется следующее условие, а если следующее слово else, тогда выполняется последняя команда.

Условие должно возвращать одно из следующих значений:

ЛожьИстина
число0все остальные значения
yes/nonoyes
true/falsefalsetrue

Если условие возвращает строку вида "yes", "no", "true" или "false", регистр букв не проверяется. "True", "FALSE", "YeS" или "nO" интерпретируются нормально.

Условие следующее за if может быть заключено в двойные кавычки или фигурные скобки. Если условие заключено в кавычки, то в фазе подстановки произойдёт замена, а затем при выполнении команды if выполнится ещё одна замена.

Так как условие в if выполняется так же, как и в команде expr, шестнадцатеричные строки вида 0xNN будут преобразованы в числовой эквивалент перед вычислением. Условие в if проверяется так же, как работает команда expr.

if {$i == 1} {puts "РАВНО"}

эквивалентно следующему:

if {[expr $i == 1]} {puts "РАВНО"}

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

Выполните пример. Попробуйте поменять значение x на 2.

Пример:

set x 1;

if {$x == 2} {puts "$x равно 2"} else {puts "$x не равно 2"}

if {$x != 1} {
	puts "$x != 1 (не равно)"
} else {
	puts "$x равно 1"
}

if $x==1 {puts "Получили 1"}

;# На тестовой строке будут проведены две фазы подстановки
;#  Первая фаза заменит $y на x
;#  При выполнении команды if, $x будет заменён на 1

set y x;
if "$$y != 1" {
	puts "$$y != 1"
} else {
	puts "$$y равно 1"
}

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