Уроки Tcl
#11: Добавление новых команд - proc |
В большинстве языков программирования есть набор команд, о которых знает компилятор, и набор функций, написаных пользователем как часть программы. Команды компилятора жестко заданы, и вы не можете использовать их помимо назначения.
В Tcl нет разницы между функциями или командами. Здесь нет зарезервированных слов как в C, BASIC, PASCAL и т.д. Когда интерпретатор начинает работу, у него есть список известных функций, который он использует для разбора строки. Эти команды Tcl знает по умолчанию. Эти команды включают while, for, set, puts, и т.д.
Команда proc добавляет новую процедуру в список известных команд. Синтаксис команды proc следующий:
proc имяПроцедуры аргументы команда
Когда proc выполняется, она создаёт структуру, определяющую процедуру, и добавляет её и имяПроцедуры в таблицу, которая используется при разборе команд. Если команда с таким именем уже существует, то будет заменена новой версией.
Аргументы это список аргументов, которые будут переданы процедуре. Когда вызывается имяПроцедуры в ней создаются локальные переменный с такими же именами, и в них записываются значения переданных аргументов.
Команда - код, который будет выполняться, при вызове имяПроцедуры.
Значение, которое возвратит процедура может быть задано командой return. Команда return завершает процедуру и возвращает аргумент, как результат выполнения процедуры. Если такой команды нет, то после завершения процедуры управление передаётся обратно основной команде, а возвращается значение последней выполненной команды.
Несколько слово о стиле программирования:
Используйте процедуры. Используйте их часто. Программы Tcl (как и все другие программы) должны содержать очень мало кода в основном коде, и большинство вычислений должно производиться в процедурах. Если вы правильно создаёте процедуры, то позже сможете их использовать в других программах. Основной код сложно разделять на куски и перемещать.
Процедуры облегчают понимание и редактирование кода, упрощают отладку.
proc sum {arg1 arg2} { set x [expr $arg1+$arg2]; return $x } puts " Сумма 2 + 3 равна: [sum 2 3]\n\n" proc for {a b c} { puts "Команда for заменана командой puts"; puts "аргументы: $a\n$b\n$c\n" } for {set i 1} {$i < 10} {incr i} |
Горбачев "Yurez" Юрий |