Taal

Tcl is een zeer eenvoudige programmeertaal. Als je al eerder hebt geprogrammeerd, kun je genoeg leren om binnen een paar uur interessante TCL-programma ‘ s te schrijven. Deze pagina geeft een snel overzicht van de belangrijkste functies van Tcl. Na het lezen van dit zal je waarschijnlijk in staat zijn om te beginnen met het schrijven van eenvoudige TCL scripts op uw eigen; echter, werd aanbevolen dat u een van de vele beschikbare TCL boeken te raadplegen voor meer complete informatie.

basis syntaxis

TCL scripts bestaan uit commando ’s gescheiden door newlines of puntkomma’ s., Commando ‘ s hebben allemaal dezelfde basisvorm, geïllustreerd door het volgende voorbeeld:

expr 20 + 10

Dit commando berekent de som van 20 en 10 en geeft het resultaat terug, 30.U kunt dit voorbeeld en alle andere op deze pagina uitproberen door ze te typen naar een TCL toepassing zoals tclsh; nadat een commando is voltooid, tclsh print het resultaat.

elk TCL-Commando bestaat uit een of meer woorden, gescheiden door spaties., In dit voorbeeld zijn er vier woorden: expr,20, +, en 10. Het eerste woord is de naam van een commando en de andere woorden zijn argumenten voor dat Commando. Alle TCL commando ’s bestaan uit woorden, maar verschillende commando’ s behandelen hun argumenten anders.Het expr Commando behandelt al zijnargumenten samen als een rekenkundige uitdrukking, berekent het resultaat van die expressie, en geeft het resultaat terug als een string., In het expr commando is de verdeling in woorden niet significant: je had net zo goed hetzelfde commando kunnen aanroepen als

expr 20+10

echter, voor de meeste commando ‘ s is de woordstructuur belangrijk, waarbij elk woord voor een ander doel wordt gebruikt.

alle TCL-opdrachten retourneren resultaten. Als een commando geen zinvol resultaat heeft, geeft het een lege string terug als zijn resultaat.met

variabelen

Tcl kunt u waarden opslaan in variabelen en de waarden laterin commando ‘ s gebruiken. Het set commando wordt gebruikt om te schrijven en readvariables., Het volgende commando wijzigt bijvoorbeeld de variabelex om de waarde 32te behouden:

set x 32

het commando geeft de nieuwe waarde van de variabele terug. U kunt de waarde van een variabele lezen door set aan te roepen met slechts een enkelargument:

set x

u hoeft geen variabelen te declareren in Tcl: een variabele wordt automatisch aangemaakt de eerste keer dat deze wordt ingesteld. TCL variabelen hebben geen typen: elke variabele kan elke waarde bevatten.,

om de waarde van een variabele in een opdracht te gebruiken, gebruik variablesubstitution zoals in het volgende voorbeeld:

expr $x*3

wanneer een $ verschijnt in een opdracht, behandelt Tcl de letters en cijfers die erop volgen als een variabele naam, en vervangt de waarde van de variabele in plaats van de naam. In dit voorbeeld zal het door het commando expr ontvangen argument32*3 zijn (aangenomen dat de variabele x was ingesteld als in het vorige voorbeeld)., U kunt variabele substitutie gebruiken in elk woord van een commando, of zelfs meerdere keren in een woord:

set cmd exprset x 11$cmd $x*$x

Command substitutie

U kunt ook het resultaat van een commando gebruiken in een argument voor een ander commando. Dit wordt opdrachtvervanging genoemd:

set a 44set b 

wanneer een als een geneste TCL-opdracht.Tcl evalueert het geneste commando en vervangt het resultaat in het omsluitende commando in plaats van de tekst tussen haakjes., In het voorbeeld hierboven zal het tweede argument van het tweede set Commando 176zijn.

aanhalingstekens en accolades

met dubbele aanhalingstekens kunt u woorden opgeven die spaties bevatten. Denk bijvoorbeeld aan het volgende script:

set x 24set y 18set z "$x + $y is "

nadat deze drie commando ‘ s zijn geëvalueerd variabele z zal de waarde 24 + 18 is 42hebben. Alles tussen de quotesis doorgegeven aan de set commando als een enkel woord., Merk op dat (a) command en variable substituties worden uitgevoerd op de tekst tussen de aanhalingstekens, en (b) de aanhalingstekens zelf niet worden doorgegeven aan het commando.Als de aanhalingstekens niet aanwezig waren, zou het commando set 6 argumenten hebben ontvangen, wat een fout zou hebben veroorzaakt.

accolades bieden een andere manier om informatie in woorden te groeperen.,Ze verschillen van aanhalingstekens omdat er geen substituties worden uitgevoerd op de tekst tussen de accolades:

set z {$x + $y is }

Dit commando stelt variabele z in op de waarde”$x + $y is “.

Besturingsstructuren

Tcl biedt een complete set besturingsstructuren inclusief commando ‘ s voor voorwaardelijke uitvoering, looping en procedures. Tcl controlestructuren zijn slechts commando ‘ s die TCL scripts als argumenten nemen.,Het voorbeeld hieronder maakt een TCL procedure genaamd power,die een basis verhoogt tot een integer vermogen:

proc power {base p} { set result 1 while {$p > 0} { set result set p } return $result}

Dit script bestaat uit een enkel commando, proc. Hetproc commando heeft drie argumenten: de naam van een procedure,een lijst met argumentnamen, en de body van de procedure, die een TCL script is. Merk op dat alles tussen de krullende brace aan het einde van de eerste regel en de krullende brace op de laatste regel wordt doorgegeven Verbatim naar proc als een enkel argument., Het commando procmaakt een nieuw TCL Commando aan met de naam power dat twee argumenten bevat. U kunt dan power aanroepen met de volgende commando ‘ s:

power 2 6power 1.15 5

wanneer power wordt aangeroepen, wordt de procedure geëvalueerd.Terwijl het lichaam aan het uitvoeren is, kan het zijn argumenten benaderen als variabelen:base zal het eerste argument bevatten en p zal het tweede argument bevatten.,

de inhoud van de procedure power bevat drie TCL-opdrachten:set, while, en return. Hetwhile commando doet het meeste werk van de procedure.It neemt twee argumenten, een expressie ($p > 0) en abody, dat is een ander TCL script. Het commando while evalueert zijn expressieargument met behulp van regels die vergelijkbaar zijn met die van de programmeertaal C en als het resultaat waar is (nonzero) dan evalueert het de body als een TCL script., Het herhaalt dit proces over and over totdat uiteindelijk de uitdrukking evalueert naar false (nul). In dit geval heeft de inhoud van het commando while de resultaatwaarde vermenigvuldigd met base en vervolgens decrements p. Wanneerp nul bereikt, bevat het resultaat het gewenste vermogen vanbase. Het commando return veroorzaakt de procedure om af te sluiten met de waarde van variabele result als resultaat van de procedure.

waar komen commando ‘ s vandaan?,

zoals je hebt gezien, worden alle interessante functies in Tcl gepresenteerd door commando ‘ s. Statements zijn commando ‘s, expressies worden geëvalueerd door het uitvoeren van commando’ s, controlestructuren zijn commando ‘s,en procedures zijn commando’ s.

TCL commando ‘ s worden op drie manieren aangemaakt. Een groep commando ‘ s wordt geleverd door de TCL interpreter zelf. Deze commando ’s worden gebouwde commando’ s genoemd. Ze bevatten alle commando ‘ s die je tot nu toe hebt gezien en nog veel meer (zie hieronder). De ingebouwde commando ‘ s zijn aanwezig in alle TCL toepassingen.

de tweede groep commando ‘ s wordt gemaakt met behulp van de TCL extension mechanism., Tcl biedt API ‘ s waarmee u een nieuwe opdracht kunt maken door een opdrachtprocedure in C of C++ te schrijven die de opdracht implementeert. Vervolgens registreer je de commando procedure met decl interpreter door Tcl de naam te geven van het commando dat de procedure implementeert. In de toekomst, wanneer die specifieke naam wordt gebruikt voor een TCL commando, zal Tcl je commando procedure aanroepen om het commando uit te voeren. De ingebouwde commando ‘ s worden ook geà mplementeerd met behulp van hetzelfde uitbreidingsmechanisme; hun commando procedures zijn eenvoudig onderdeel van de TCL bibliotheek.,

wanneer Tcl in een toepassing wordt gebruikt, neemt de toepassing zijn belangrijkste functies op in Tcl met behulp van het uitbreidingsmechanisme. Dus de set van beschikbare TCL commando ‘ s varieert van toepassing tot toepassing.Er zijn ook tal van uitbreidingspakketten die kunnen worden opgenomen in elke TCL-toepassing. Een van de bekendste uitbreidingen is Tk,die krachtige faciliteiten biedt voor het bouwen van grafische gebruikersinterfaces. Andere extensies bieden objectgeoriënteerde programmering, toegang tot de database,meer grafische mogelijkheden en een verscheidenheid aan andere functies., Een van de grootste voordelen van Tcl voor integratietoepassingen voor gebouwen is de mogelijkheid om het uit te breiden met nieuwe functies of met andere middelen te communiceren.

de derde groep commando ‘ s bestaat uit procedures die zijn aangemaakt met het proc commando, zoals het powercommando dat hierboven is aangemaakt. Typisch, worden de uitbreidingen gebruikt voor functies op lager niveau waar de programmering van C geschikt is, en de procedures worden gebruikt voor functies op hoger niveau waar het gemakkelijker is om in Tcl te schrijven.,

andere functies

Tcl bevat vele andere commando ‘ s dan die welke in de voorbeelden worden gebruikt. Hier is een sampler van enkele van de functies die door de ingebouwde TCL commando ‘ s worden geleverd:

  • meer besturingsstructuren, zoals if, for,foreach, en switch.
  • stringmanipulatie, inclusief een krachtige reguliere expressionmatching faciliteit. Willekeurige lengte strings kunnen worden doorgegeven rond en gemanipuleerd net zo gemakkelijk als getallen.,
  • I / O, inclusief bestanden op schijf, netwerk sockets en apparaten zoals seriële poorten. Tcl biedt bijzonder eenvoudige faciliteiten voorzakcommunicatie via het Internet.
  • Bestandsbeheer: Tcl biedt verschillende commando ‘ s voor het manipuleren van bestandsnamen, het lezen en schrijven van bestandskenmerken, het kopiëren van bestanden,het verwijderen van bestanden, het maken van mappen, enzovoort.
  • Subprocess aanroep: u kunt andere toepassingen uitvoeren met hetexec commando en met hen communiceren terwijl ze worden uitgevoerd.,
  • lijsten: Tcl maakt het eenvoudig om verzamelingen van waarden (lijsten)aan te maken en deze op verschillende manieren te manipuleren.
  • Arrays: u kunt gestructureerde waarden maken die bestaan uit naam-valuepairs met willekeurige tekenreekswaarden voor de namen en waarden.
  • tijd-en datummanipulatie.
  • Events: Tcl staat scripts toe om te wachten op bepaalde gebeurtenissen, zoals een verstreken tijd of de beschikbaarheid van invoergegevens op een netwerk socket.,

voorbeelden

  • een eenvoudig commandoregelgereedschap
  • een eenvoudige netwerkserver

Tutorial

heb je enige tijd om iets verder in de taal te duiken?De TCL Tutorialis een geweldige manier om meer te leren over de verschillende commando ‘ s en taal functies van Tcl.

Share

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *