TCL Serisi Bölüm 7 – Bir Komutun Sonuçları , MAT 101

expr komutu matematiksel işlemler yapmak için kullanılır. Aşağıdaki tartışma expr komutunun man sayfasından alınmış ve uyarlanmıştır. Daha ayrıntılı bilgi için oraya göz atmanızı tavsiye edebilirim.

expr, arg’leri birleştirir (aralarına boşluk ekleyerek), sonucu bir Tcl ifadesi olarak değerlendirir ve değeri döndürür. Tcl ifadelerinde izin verilen operatörler tüm standart matematiksel fonksiyonları içerir. İfadeler neredeyse her zaman sayısal sonuçlar (tam sayı veya floating point değerleri) verir.

OPERANDLAR

Bir Tcl ifadesi, operandlar, operatörler ve parantezlerin bir kombinasyonundan oluşur. Beyaz boşluk operandlar, operatörler ve parantezler arasında kullanılabilir; ifade işleyici tarafından göz ardı edilir. Mümkün olduğunda, operandlar tam sayı değerleri olarak yorumlanır. Tam sayı değerleri ondalık (normal durum), Octal (operandın ilk karakteri 0 ise) veya hexadecimal (operandın ilk iki karakteri 0x ise) olarak belirtilebilir.

Octal ve hexadecimal dönüşümün expr komutunda Tcl yerine koyma aşamasından farklı şekilde gerçekleştiğine dikkat edin. Substitution aşamasında, \x32 bir ASCII “2” ye dönüştürülürken, expr komutu 0x32’yi ondalık 50’ye dönüştürecektir (16^1 * 3 + 16^0 * 2 = 48+2=50 . Zaten çip sektöründeyseniz benden iyi biliyorsunuzdur 😀 ).

Bir operand yukarıda verilen tam sayı formatlarından birine sahip değilse, bu mümkünse bir floating point sayı olarak işlenir. floating point sayıları, ANSI uyumlu bir C derleyicisi tarafından kabul edilen herhangi bir şekilde belirtilebilir. Örneğin, aşağıdakilerin tümü geçerli kayan nokta sayılarıdır: 2.1, 3., 6e4, 7.91e+16. Hiçbir sayısal yorumlama mümkün değilse, bir operand bir string olarak bırakılır (ve yalnızca sınırlı sayıda operatör buna uygulanabilir).

Operandlar aşağıdaki şekillerde belirtilebilir:

  • Sayısal bir değer olarak, ya tam sayı ya da floating point.
  • Standart $ notasyonu kullanarak bir Tcl değişkeni olarak. Değişkenin değeri operand olarak kullanılacaktır.

OPERATÖRLER

Geçerli operatörler, “azalan öncelik sırasına göre” aşağıda listelenmiştir:

  • ~ ! Unary eksi, unary artı, bit-wise NOT, logical NOT. Bu operatörlerin hiçbiri string operandlara uygulanamaz ve bit-wise NOT yalnızca tam sayılara uygulanabilir.
  • / % Çarpma, bölme, kalan. Bu operatörlerin hiçbiri string operandlara uygulanamaz ve kalan yalnızca tam sayılara uygulanabilir. Kalan her zaman bölenle aynı işarete sahip olacak ve bölenin mutlak değerinden daha küçük olacaktır.

Toplama ve çıkarma. Herhangi bir sayısal operand için geçerlidir.

<< >> Sol ve sağ kaydırma. Yalnızca tam sayı operandlar için geçerlidir.

& Bit-wise AND. Yalnızca tam sayı operandlar için geçerlidir.

^ Bit-wise exclusive OR. Yalnızca tam sayı operandlar için geçerlidir.

| Bit-wise OR. Yalnızca tam sayı operandlar için geçerlidir.

&& Mantıksal AND. Her iki operand da sıfır değilse 1 sonucu verir, aksi takdirde 0. Yalnızca sayısal operandlar için geçerlidir (tam sayılar veya kayan nokta).

|| Mantıksal OR. Her iki operand da sıfırsa 0 sonucu verir, aksi takdirde 1. Yalnızca sayısal operandlar için geçerlidir (tam sayılar veya kayan nokta).

x?y:z C’deki gibi if-then-else. x sıfır değilse, sonuç y’nin değeri olur. Aksi takdirde sonuç z’nin değeri olur. x operandı sayısal bir değere sahip olmalıdır.

Öncelik sırasını bilmek işinize yarayacaktır ama benim tavsiyem bol bol parantez kullanarak önceliklerden emin olmanızdır. Ayrıca basit bir txt editor ile çalışıp terminalden ” tclsh ” çağırmak yerine bir IDE kullanmanızı tavsiye ederim. Bazen kodda kaybolabiliyor insan 🙂

MATEMATİKSEL FONKSİYONLAR

Tcl ifadelerinde aşağıdaki matematiksel fonksiyonları destekler:

acos, cos, hypot, sinh, asin, cosh, log, sqrt, atan, exp, log10, tan, atan2, floor, pow, tanh, ceil, fmod, sin

TİP DÖNÜŞÜMLERİ

Tcl, bir sayının bir temsilden diğerine dönüştürülmesi için aşağıdaki fonksiyonları destekler:

abs, double, int, round

Bu kadar fazla fonksiyonu tek örnekte göstermek zor olacaktır bu yüzden örnek kodla oynayıp ihtiyacınız olacağını düşündüğünüz fonksiyonları denemenizi tavsiye ederim. İşte örnek kodumuz :


Ve bununla birlikte bir dersimizin daha sonuna geldik. Bir sonraki derste stringleri karşılaştırmayı öğreneceğiz.Görüşmek üzere 🙂

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Scroll to Top