MENU
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
TCL скриптинг
corundДата: Воскресенье, 23.10.2011, 13:50 | Сообщение # 1
Полковник
Группа: Заблокированные
Сообщений: 195
Статус: Offline
Попытаюсь заносить сюда разные сведения, которые помогут освоить этот язык.

 
corundДата: Воскресенье, 23.10.2011, 14:01 | Сообщение # 2
Полковник
Группа: Заблокированные
Сообщений: 195
Статус: Offline
Переменные.

Для присвоения значений переменной используется команда set.

Этой команде передаются два параметра: имя переменной и значение.
Имя переменной может быть любой длины; регистр символов учитывается.
В составе имени допустимы любые символы.

При написании Tcl-программ нет необходимости объявлять переменные перед их использованием.

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

Code
set var 5      
=> 5      
set b $var      
=> 5


Вторая команда set, содержащаяся в листинге, присваивает переменной b
значение переменной var. (Это называется подстановка).


 
corundДата: Воскресенье, 23.10.2011, 14:06 | Сообщение # 3
Полковник
Группа: Заблокированные
Сообщений: 195
Статус: Offline
Подстановка может осуществляться несколько другими,
более эффективными способами, что очень важно в том случае, когда
значением переменной является длинная строка.

Подстановка команд.

Помимо подстановки переменных, в Tcl используется подстановка команд.
Вложенные команды помещаются в квадратные скобки.
Интерпретатор Tcl воспринимает любую последовательность символов,
находящуюся между открывающей и закрывающей квадратной скобкой, как команду.

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

Code
set len [string length foobar]
=> 6


В листинге приведенное ниже выражение представляет собой вложенную команду.
string length foobar
Данная команда возвращает длину строки "foobar".
(string length - Длина строки "foobar", или кол-во букв в слове "foobar", равное "6", как я понимаю)

При выполнении выражения в первую
очередь выполняется вложенная команда. Затем осуществляется подстановка,
в результате чего внешняя команда приобретает следующий вид:

Code
set len 6


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


 
corundДата: Воскресенье, 23.10.2011, 14:52 | Сообщение # 4
Полковник
Группа: Заблокированные
Сообщений: 195
Статус: Offline
Математические выражения.

Для разбора и вычисления значений математических выражений используется команда expr.

expr 10/4
=> 2.5

Команда expr обрабатывает целые числа, числа с плавающей точкой и логические значения.
Результатом выполнения логических операций является значение 0 (false)
либо 1 (true). По необходимости целые числа преобразуются в значения
с плавающей точкой. Восьмеричные числа начинаются с нуля (например,
значение 033 равно целому числу 27). Шестнадцатеричные значения
начинаются с символов Ох.

Пример вложенной команды:

Code
set x 7
set len [expr [string length foobar] + $x]
=> 13


Тут сначала высчитывается выражение [string length foobar] (оно равно 6), затем + то, что присвоено переменной x, то есть 6+7=13


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

Code
expr {7.2 / 4}  
set len [expr {[string length foobar] + $x}]  
set pi [expr {2*asin(l.0)}]


 
corundДата: Воскресенье, 23.10.2011, 14:55 | Сообщение # 5
Полковник
Группа: Заблокированные
Сообщений: 195
Статус: Offline
Использование встроенных математических функций.

Code
set pi [expr 2*asin(1.0)]     
=> 3.1415926535897931


acos(x) Арккосинус х
asin(x) Арксинус х
atan(x) Арктангенс х
atan2(y,x) При преобразовании прямоугольных координат (х,у) в полярные (r,th) atan2 дает th
ceil(x) Наименьшее целое значение, большее или равное х
cos(x) Косинус х
cosh(x) Косинус гиперболический х
ехр(х) Экспонента, ех
floor(х) Наибольшее целое значение, меньшее или равное х
fmod(x,y) Остаток от деления х/у с плавающей точкой
hypot(x,y) Возвращает sqrt(x*x + у*у), т.е. компонент г полярных координат
log(x) Натуральный логарифм х
loglO(x) Логарифм по основанию 10 от х
pow(x,y) х в степени у, или ху
sin(x) Синус х
sinh(x) Синус гиперболический х
sqrt(x) Квадратный корень из х
tan(x) Тангенс х
tanh(x) Тангенс гиперболический х
abs (x) Абсолютное значение х
double (х) Преобразование х в формат с плавающей точкой
int(x) Усечение х до целочисленного значения
round(х) Округление х до целочисленного значения
rand () Возвращает случайное число с плавающей точкой в интервале от 0.0 до 1.0
srand(x) Определяет х как значение, используемое для инициализации генератора случайных чисел
wide(x) Преобразует х в 64-битовое значение wide integer(Tcl 8.4)


 
corundДата: Четверг, 03.11.2011, 17:18 | Сообщение # 6
Полковник
Группа: Заблокированные
Сообщений: 195
Статус: Offline
Пример скрипта - по команде !обр [слово] выводит его наоборот:

Code

bind pub - !обр pub:ddd

proc pub:ddd {nick uhost hand chan text} {
set dlina [string length $text];#ляля
set endd [string index $text end];#ляля
while {$dlina > 0} {;#ляля
append endd [string index $text $dlina-2];#ляля
incr dlina -1;#ляля
}
set endd [string tolower $endd 0 end]
putserv "privmsg $chan : 4,8Полученное слово - $endd"
}


 
  • Страница 1 из 1
  • 1
Поиск: