Tcl, verileri string olarak saklar ve yalnızca hesaplamalar veya karşılaştırmalar için gerektiğinde sayılara dönüştürür.
Tcl’de atama operatörü set
komutudur. Bu komutu özellikle EDA otomasyonunda kullanacağınız parametrelere değer verirken çok kullanacaksınız. O yüzden hadi bu basit bölümü eksiksizce öğrenelim 🙂
set
iki argümanla çağrıldığında, örneğin:
set hayvan "Penguen";
ikinci argümanı (“Penguen”) birinci argümanın (hayvan) referans verdiği bellek alanına yerleştirir. Set
her zaman birinci argümanda belirtilen değişkenin içeriğini döner. Dolayısıyla, set
iki argümanla çağrıldığında, ikinci argümanı birinci argümanın referans verdiği bellek alanına yerleştirir ve ardından ikinci argümanı döner. Daha önce programlama deneyimi az olanların bu konuda deneme yaparak öğrenmesinde yarar olabilir. Eğer kafanıza takılan bir şey olursa bana ulaşabilirsiniz. Sizde bu iş !
Set
komutunun birinci argümanı ya hayvan,meyve
veya pi
gibi tek bir kelime olabilir ya da bir array’in üyesi olabilir. Array konusuna daha sonra daha detaylı olarak göz atacağız, şimdilik sadece birçok verinin tek bir değişken adı altında toplanabileceğini ve bireysel bir veriye bu dizideki indeksiyle erişilebileceğini unutmayın. Vereceğim örnekte konuya aşina olanlar için array’ler de bulunacak. Tcl’de bir diziye indeksleme, değişkenin adından sonra parantez içinde indeks belirtilerek yapılır.
Set
tek bir argümanla da çağrılabilir. Yalnızca bir argümanla çağrıldığında, o argümanın içeriğini döner.
İşte set
komutunun bir özeti. İnceleyin, ardından Örnek Çalıştır düğmesine tıklayın ve bu metni okurken çıktıyı inceleyin.
set varName ?value?
Eğer value
belirtilirse, varName
değişkeninin içeriği value
‘ye eşit olarak ayarlanır.
Eğer varName
yalnızca alfasayısal karakterlerden oluşuyorsa ve parantez içermezse, bu bir skaler değişkendir.
Eğer varName
varName(index)
formundaysa, bu bir ilişkisel dizinin üyesidir.
Set
, varName
değişkeninin değerini döner.
Örnek koda bakarsanız, set
komutunda birinci argümanın yalnızca adıyla yazıldığını, ancak puts
ifadesinde argümanın önüne $
geldiğini fark edeceksiniz.
Bu, Tcl’in verileri alt rutinlere ya referansla ya da değerle geçirmesinden kaynaklanır. Bir değişkenin içeriğini değiştirmeyen komutlar genellikle argümanlarını değerle geçirir. Değerin içeriğini değiştiren komutların ise veriyi referansla geçirmesi gerekir.
Hadi örnek kodumuza bakalım. Koddaki yorum satırlarını takip ederek lütfen kendi kodunuzu yazın ve “Ya şöyle yapsaydık ne olurdu ?” dediğiniz yerler var ise online aracı kullanarak deneyin:
Kullanabileceğiniz her şekilde set komutunu sizlere göstermeye çalıştım. Kodun çıktısını koymak yerine sizlere kodun içinde bulunduğu online aracı da verdim. Orayı kullanarak set komutuyla oynayabilir ve sorularınız varsa bana ulaşabilirsiniz.