**Tcl** (algul *Tool Command Language,* kirjutatakse enamasti ikka "Tcl", mitte "TCL" ja hääldatakse [tikl]) on skriptimiskeel, mille töötas 1988. aasta kevadel välja California Ülikooli õppejõud John Ousterhout. 

Ajal, mil Tcl loodi, polnud graafilised kasutajaliidesed veel levinud ja enamikku operatsioone tehti lihtsalt käske sisestades. Tcl'i looja kirjutas tol ajal mitu rakendust, mille käivitamiseks oli vaja käske. Kuna käsud iseenesest olid rakenduse endaga võrreldes vähem tähtsad, ei pööratud nendele tähelepanu ja nii kirjutati iga rakenduse jaoks uued käsud, mis muutusid väga spetsiifiliseks ja süntaktiliselt lohakaks. John Ousterhout aga otsustas luua lihtsa skriptimiskeele, mis oleks kergesti ülekantav ja mida oleks seega võimalik kasutada paljude rakenduste loomisel. Tcl'i loomisel oli põhieesmärgiks lihtsus. Lihtne rakendus pidi tähendama ka lihtsat (ja võimalikult lühikest) koodi.

Tcl võimaldab luua ka lihtsaid graafilisi kasutajaliideseid ja selle jaoks on Tcl'i juures Tk (Tool Kit), mis kätkeb endas graafikatööriistu. Tcl'it koos graafiliste tööriistadega nimetatakse **Tcl/Tk**.

Tcl'i kasutusvaldkonnad
-----------------------

Kuna Tcl on ülesehituselt väga paindlik, siis saab seda kasutada mitmes valdkonnas. Tcl'is on kirjutatud veebirakendusi, veebiserverite tarkvara andmebaasidega tegelemiseks, vahendeid opereerimaks tavaliste andmebaasidega, graafilisi kasutajaliideseid, testprogramme testimaks näiteks Tcl'is või mõnes teises keeles kirjutatud programmide tööd, samuti peidetakse Tcl'i erinevatesse rakendustesse (näiteks Cisco võrgutooted, TiVo jms) ja palju muud.

Süntaks
-------

Käske saab proovida, sisestades UNIX-i keskkonnas, kuhu on installitud Tcl, käsu "tclsh", mille peale käivitatakse interaktiivne keskkond. Tcl'i käsud on eraldi ridadel või semikooloniga eraldatud. Näiteks summa arvutamiseks sobib käsk

```
expr 20 + 10
```

milles esimene sõna ("expr") on käsk ja järgnevad ("20", "+" ja "10") on selle käsu argumendid.

Hello world programm näeb Tcl'is eestikeelsena välja nii:

```
puts "Tere, maailm!"
```

### Muutujad

Muutujaid pole Tcl'i koodis vaja eelnevalt deklareerida. Muutuja luuakse selle esimesel väärtustamisel. Näiteks muutuja x väärtustamiseks arvuga 36 piisab, kui sisestada käsk

```
set x 36
```

kusjuures muutuja väärtustamisel ei ole oluline muutuja andmetüüp. Sama muutuja väärtuseks võib anda ka sõne. Muutuja väärtuse kasutamisel avaldises tuleb muutuja nime ette panna dollarimärk ($)

```
expr 14 + $x
```

### If-lause

Tingimuslik if-lause koos "**else if**" abil seotud lisatingimusega näeb välja järgmiselt:

```
if {$x == 0} {
  puts "X on võrdne nulliga"
} elseif {$x < 0} {
  puts "X on nullist väiksem"
} else {
  puts "X on nullist suurem"
}
```

See koodilõik kontrollib, kas muutuja x väärtus on nulliga võrdne, väiksem või suurem, ja väljastab vastavasisulise teate.

### Tsüklid

Tcl toetab ka tsükleid. Realiseeritud on nii for- kui ka while-tsükkel. Tsüklid on tavapärase ehitusega. For-tsükli alguses sisaldub tsüklimuutuja algväärtustamine, lõputingimus ja tsüklisamm. While-tsükli päises sisaldub ainult lõputingimus – täidetakse, kuni tingimus on tõene. Tsüklimuutuja suurendamine ühevõrra käib käsuga "**incr**". Näidiseks sobib for-tsükkel

```
for {set i 0} {$i < 5} {incr i} {
  puts "$i ruudus on [expr $i * $i]"
}
```

Eelpool defineeritud tsükkel väljastab arvude 1, 2, 3 ja 4 ruudud kasvavas järjestuses.

### Protseduur

Alamprogramm ehk **protseduur** on Tcl'is tähistatud märksõnaga "**proc**"

```
proc korrutis {a b} {
  expr $a * $b
}
```

See protseduur tagastab etteantud arvude korrutise. Protseduuri väljakutsumiseks argumentidel 3 ja 5 tuleb sisestada

```
korrutis 3 5
```

Vaata ka
--------

* CGI veebitehnoloogia
* Programmeerimiskeel
* Skriptimiskeel

Välislingid
-----------

* 
* 
* 
* 

|  |  |
| --- | --- |
|  | Pildid, videod ja helifailid Commonsis: **Tcl** |