in last 10 minutes
Tutorial j. Tcl na potrzeby zajęć ALR
dokumentacja:
Tcl/Tk man,
spis komend,
tematyczny Tcl man/
Tk man,
docs 1,
docs 2,
wiki,
devel,
konf
książki/opisy:
tutorial,
sop121/E,
krótki tut. ALR,
12 zasad,
spis tut.,
-2-,
-3-,
-4-,
-5-,
-6-,
-7-,
-8-;
GUI w Tk: TkDocs,
-1-,
-2-
dokumentacje pakietów:
dict,
http,
tls,
tcllib,
tklib,
tdom,
udp,
Thread,
java,
TclX,
expect,
blt,
snack,
vfs;
OOP:
Itcl,
snit/faq,
XOTcl,
TclOO/book,
nx+nsf
inne dokumentacje: dbms:
sqlite
(sql),
metakit;
ser. www:
tclhttpd,
NaviSer,
wapp,
wibble (src);
checker: nagelfar
interpretery tclkit j. Tcl v8.4:
win32 tclkit.exe,
lin32 tclkit,
lin32 tclkit_2
tclkit_2 zawiera b. wiele pkg... np. tls, udp, sqlite, tcllib, tklib, ...
interpretery tclkit j. Tcl v8.6:
lin32 tclkit8.6b1,
lin32 tclkit8.6.9,
lin64 tclkit8.6.3,
win64 tclkit8.6.3.exe
tcl v8.6: używa nowych fontów pod lin, posiada cmd dict oraz pkg: Thread, TDBC, Itcl, TclOO, ...
interpretery vanilla j. Tcl v8.6 dla wielu platform
są tutaj,
lin32 vanillatclsh
30MB, zip, zawierają b. dużo pkg, m.in. tcllib
biblioteka tcllib (tcllib.tar.gz) zawiera przydatne, czysto-skryptowe pakiety Tcl-a
ulepszona konsola konsola2c.tcl, uruchamiać: ./tclkit konsola2c.tcl; pamiętać o "chmod u+x tclkit" na linux-ie
klawisze w konsoli:
ctrl+enter = uruchomienie zaznaczonego kodu lub kodu w linii, w której jest kursor;
shift+ins = Paste; ctrl+ins = Copy; ctrl+o = Open; ctrl+s = Save; ctrl+z = UnDo
urządzenia mobilne: Tcl/Tk dla Androida - androwish.org (cmd: borg, sdltk; lista pkg)
# eksperymenty z Tcl-em w konsoli... # wygodnie jest uzywac konsoli konsola2c.tcl uruchamiac tak (linux): ./tclkit konsola2c.tcl lub: ./tclkit konsola2c.tcl mojskrypt.tcl uwaga - prawo wykonania mozna nadać tak: chmod u+x tclkit specjalne klawisze konsoli2c: Ctrl+Enter - uruchomienie zaznaczonego kodu lub kodu w linii, w której jest kursor, Ctrl+O Open - wczytuje plik zrodlowy do konsoli w miejsce kursora, Ctrl+S Save, Ctrl+Z UnDo specjalne komendy konsoli2c: _puts tekst - wyswietla tekst w oknie "output" kons_font liczba - zmienia rozmiar czcionki konsoli (liczba to np. 15) # komentarze # # tekst ... kod tclowy; # tekst ... Uwaga na ";" przed "#" !!! # zmienne, wyrazenia # set x1 1 set x2 2 set x3 [expr {$x1+$x2}] # wynik: 3, tak sie oblicza wyrazenia arytmetyczne set x3a $x1+$x2 # wynik: 1+2, bo to nie dodawanie tylko string!! # substytucje zmiennych $zm i komend [kod] oraz cytowanie # set z1 "$x1+$x2=$x3" # wynik: 1+2=3 set z2 {$x1+$x2=$x3} # wynik: $x1+$x2=$x3 bo nawiasy klamrowe "silnie cytuja" set z3 "$x1, $x2, [expr {$x1+$x2}]" # nawiasy kwadratowe to tzw substytucja komend # wynik: 1, 2, 3 # instrukcje sterujace # if {$x<=15} { _puts "$x jest mniejsze od 15" } else { _puts "$x jest mniejsze od 15" } # Uwaga: KONIECZNIE uzywac { } dokladnie tak jak w tych przykadach, # tj nie mozna przenosic { do nastepnej linii !!! # if jest bowiem zwykla komenda ktorej parametrami sa stringi z kodem, # a komendy pisze sie w 1 linii (znak \n jest ukryty w {...}) set i 1 while {$i<10} { _puts "i=$i" set i [expr {$i+1}] # lub po prostu: incr i } for {set i 0} {$i<5} {incr i} {_puts $i} foreach x {qqq www eee} {_puts $x} # procedury # # definicja procedury proc mojaproc {a b} { global c; # deklaracja zm. globalnej return "$a,$b,$c" } set c 123; # zmienna globalna # wywołanie procedury mojaproc 11 22 # wynik: 11,22,123 # procedura tworząca zmienną o nazwie podanej przez arg # proc utworzZm {nazwa} { upvar $nazwa x set x 123 return "" } utworzZm a # po wykonaniu tej proc istnieje zm. "a" o wartości 123 # operacje na stringach (komenda string) # set x "12345" set y [string range $x 2 end-1] # wynik: 34 # operacje na listach (komendy l*, np. list, lrange, lset, lindex, lappend) # + listy mogą być dowolnie zagnieżdżone! # set q {1 2 3 4} lindex $q 2 # wynik: 3 set q1 [lrange $q 2 3] # wynik: 3 4 lset q 2 33 # efekt dzialania: $q == "1 2 33 4" lappend q 5 # wynik: 1 2 33 4 5 # operacje na słownikach (komenda dict) # + słowniki mogą być dowolnie zagnieżdżone! # set d1 {a 111 b 222} # wynik: a 111 b 222 dict get $d1 a # wynik: 111 dict set d1 c 333 # wynik: a 111 b 222 c 333 # jak "zdjąć" z listy pierwszy element ? # set li1 {1 2 3} set x [lindex $li1 0] # wynik: 1; pierwszy element jest w zm. "x" set li1 [lreplace $li1 0 0] # wynik: 2 3; zastąpiliśmy pierwszy elem. niczym