Home Map Index Search News Archives Links About LF
[Top bar]
[Bottom bar]
convert to palmConvert to GutenPalm
or to PalmDoc

[Photo of the Author]
tarafından Brent B. Welch

Yazar hakkında:
Brent Welch, Tcl ile ilgili URL'lerin(Tcl Kaynak merkezi) açıklamalı bir veritabanını ve Tcl ürünü için e-ticaret altyapısı içeren, www.scriptics.com websitesini oluşturmaktadır.Aynı zamanda TclHttp ağ sunucusu(www.scriptics.com sitesinde kullanılan), Exmh mail kullanıcı arayüzü ve webtk HTML editörü içeren çeşitli geniş Tcl/Tk uygulamaları geliştirmiş olup, "Tcl ve Tk'de Uygulamalı Programlama" kitabının da yazarıdır. Welch, 1982'de Colorado Üniversitesi'nde uzay mühendisliği eğitimi aldıktan sonra 1986'da Berkeley, California Üniversitesi'nde bilgisayar mühendisliğinde yüksek lisans eğitimi gördü. 1990'da gene aynı yerde doktorasını tamamladı.Welch, yakın bir zamana kadar Xerox PARCH'da araştırma görevlisiydi. Daha sonra, Sun Mikrosistem Laboratuvarları'nda Tcl/Tk takımında görev aldı.Şu an ACM ve IEEE Bilgisayar Güvenliği kuruluşunun bir üyesidir. Home Page: http://www.beedub.com/
İçerik:

Tcl Sözdizimi

Çeviri : Hasan Serhan Akın

[Ilustration]

Özet:

Bu makale Tcl dilinin temel kavramlarını ve sözdizimini açıklamaktadır.



 

Tcl Sözdizimine Giriş

Bir betik dili için, Tcl basit bir sözdizimi yapısına sahiptir.

cmd arg arg arg
Bir Tcl komutu boşluklarla ayrılmış kelimelerden oluşur.İlk kelime komutun ismi, geriye kalanlar ise komutun argümanlarıdır.
$foo
Dolar ($) işareti bir değişkenin değerinin yerini alır. Bu örnekte ise, değişken ismi foodur.
[clock seconds]
Köşeli parantezler içiçe komutları çalıştırır. Mesela, bir komutun sonucunu diğerine bir argüman olarak geçirmek istiyorsanız bu yapıyı kullanabilirsiniz. Örnekte iç komut "clock seconds" olup şu anki zamanı saniye şeklinde verir.
"some stuff"
Çift tırnak işareti kelime gruplarını bir komuta tek bir argüman gibi gösterir.Dolar ve köşeli parantez işaretleri çift tırnak işareti içinde de anlamlandırılır.
{some stuff}
Yaylı parantez de kelime gruplarını tek bir argüman gibi gösterir. Ancak bu durumda parantezlerin arasındaki değişkenler anlamlandırılamaz.
\
Ters bölü işareti (\) (Frenkçesi ters slash:) ) özel karakterlerin kullanılmasında işe yarar. Örneğin, \n satırbaşı durumunu üretir. Ters bölü işareti; dolar işareti,tırnak işareti,köşeli ve yaylı parantezlerin anlamlarının değerlendirilmemesi gerektiğinde de işe yarar.
 

Küçük bir örnek

Aşağıdaki, şu anki zamanı çıktı olarak veren bir Tcl komutudur. Burada üç Tcl komutu kullnılmaktadır: set, clock, veputs. set komutu değişkeni atama işlemini yapar. clock komutu zaman değerini hesaplar. puts komutu ise değerleri çıktı olarak verir.

set seconds [clock seconds] puts "The time is [clock format $seconds]"

$ işaretinin atama işleminde kullanılmadığına dikkat edin.Sadece bir değer vermek istediğimizde $ işaretini kullanıyoruz. seconds değişkeni önceki örnekte gerekli değildi.Şu anki zamanı tek bir komutla yazdırabiliriz:

puts "The time is [clock format [clock seconds]]"

 

Gruplama ve Yer Değiştirme

Tcl sözdizimi, "Tcl parser"a üç safhada yol göstermekde kullanılır:argüman gruplama, sonucun değişimi ve komut gönderimi.

  1. Argüman Gruplama. Tcl, argümanların komutlarda nasıl düzenleneceğinin saptanmasına ihtiyaç duyar. En basitiyle, boşluklar argümanları ayırır.Daha önce söylendiği gibi, tırnak ve parantez işaretleri birden fazla sözcüğü tek bir argüman gibi gruplamaya yarar. Önceki örnekte çift tırnak işareti içindekileri puts komutuna tek bir argüman olarak gruplamada kullanıldı.

  2. Sonucun Değişimi. Argümanlar gruplandıktan sonra, Tcl string değişimini yapar. Yani, $foo, değişkenin değeri foo ile ve parantez içindeki komutlar da sonuçlarıyla yerdeğiştirir. Bu değişim gruplama önemli olduktan sonra yapılır. Böylelikle bu sıra alışılmadık değerlerin komutun yapısını karıştırmamasını sağlar.

  3. Komut Ayrımı. Değişimden sonra, Tcl gönderim tablosundaki komutları anahtar olarak kullanır. Tabloda tanımlanan C işlemi çağrılır ve C işlemi komutu icra eder. Aynı zamanda Tcl'de komut işlemleri yazılabilir.Ayrıca, argüman geçirmede ve hataları ele almada basit gelenekler vardır.
 

Başka Bir Örnek

Bu da başka bir örnek:

set i 0 while {$i < 10} { puts "$i squared = [expr $i*$i]" incr i }

Burada, süslü parantezler hiç bir değişiklik yapmadan argümanları gruplamada kullanılmıştır.Tcl parser, while komutu hakkında özel hiç birşey bilmez ve diğer komutlarda yaptığını burada da yapar. while komutunun icrasında ilk argüman ifade, ikincisi ise Tcl komutlarıdır. Parantezler iki argümanı gruplar:döngüyü kontrol eden boolean ifadesi ve döngü bloğu içerisindeki komutlar.

Aynı zamanda iki matematiksel ifade görmekteyiz: boolean karşılaştırması ve çarpım. while komutu otomatik olarak ilk argümanını bir ifade olarak değerlendirir. Diğer durumlarda matematiksel değerlendirme için kesin olarak expr komutunu kullanmalısınız.  

Komut Gönderimi

Son olarak, Tcl zor işi yapmak için başka bir şey çağırır. Tcl'nin matematiksel fonksiyonları kullanmak için expr, çıktı fonksiyonları için puts ve değişken atamaları için set komutlarını kullandığını gördük. Bu Tcl komutları, bir C işlemi tarafından icra edilir. C komut işlemleri string argümanını Tcl komutundan alır ve sonuç olarak yeni bir stringe döner. C komut işlemlerini yazmak çok kolaydır ki bunlarla veritabanlarına ulaşımdan grafiksel kullanıcı arayüzlerine kadar her şey yapılabilir. Tcl dili gerçektende ne yapıldığını bilmez. Sadece argümanları gruplar, sonuçları değşirir ve komutları yollar.  

Son Bir Örnek

Faktoriyel işlemi:

proc fac {x} {
    if {$x < 0} {
        error "Invalid argument $x: must be a positive integer"
    } elseif {$x <= 1} {
        return 1
    } else {
        return [expr $x * [fac [expr $x-1]]]
    }
}


 

Daha fazla bilgi için

Bu makalenin kaynağı: Scriptics  

Bu yazı için görüş bildiriminde bulunabilirsiniz

Her yazı kendi görüş bildirim sayfasına sahiptir. Bu sayfaya yorumlarınızı yazabilir ve diğer okuyucuların yorumlarına bakabilirsiniz.
 talkback page 

Görselyöre sayfalarının bakımı, LinuxFocus Editörleri tarafından yapılmaktadır
© Brent B. Welch, FDL
LinuxFocus.org

Burayı klikleyerek hataları rapor edebilir ya da yorumlarınızı LinuxFocus'a gönderebilirsiniz
Çeviri bilgisi:
en -> -- Brent B. Welch
en -> tr Hasan Serhan Akın

2001-03-17, generated by lfparser version 2.9