Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Bölüm 7 İfadeler ve atamalar.

Benzer bir sunumlar


... konulu sunumlar: "Bölüm 7 İfadeler ve atamalar."— Sunum transkripti:

1 Bölüm 7 İfadeler ve atamalar

2 7. Bölüm konuları Giriş Aritmetik ifadeler
Çok anlamlı (overloaded) operatörler Tip dönüşümleri (conversions) İlişkisel ve Boolean İfadeler Kısa-devre hesaplama Atama komutları Karışık-mod atamalar Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

3 Giriş İfadeler programlama dillerinde temel hesap gösterim yolu
İfadeleri doğru anlamak için operatör önceliğini ve işlenenlerin (operand) hangi sırada işlendiğini bilmek lazım Komutlu dillerde atamanın rolü büyüktür Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

4 Aritmetik ifadeler Aritmetik hesap yapma ilk programlama dillerindeki motivasyonlardan biri Arithmetic ifadeler operatörlerden, işlenenlerden (operands) (operatörlerin parametrelerinden), parantezlerden ve fonksiyon çağırmalarından oluşur. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

5 Aritmetik ifadelerin tasarım problemleri
Operatör öncelik kuralları Operatör birleşebilirlik (associativity) kuralları İşlenen hesaplanma sırası kuralları (order of operand evaluation) İşlenen hesaplamasının yan etkileri Çok anlamlı operatörler (Operator overloading) İfadelerde değişik tiplerin olması Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

6 Aritmetik ifadeler: operatörler
Tekli (unary) İkili (binary) Üçlü (ternary) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

7 Aritmetik ifadeler: Operatör önceliği kuralları
Ayni ifade içinde farklı operatörlerden hangisin daha önce işleme konulacağını belirtir Tipik öncelik seviyeleri parantezler tekli operatörler ** (üs operatörü) *, / +, - Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

8 Aritmetik ifadeler: Operatör birleşebilirlik kuralları
İki tane ayni operatörün yanyana kullanıldığı durumlarda hangisinin önce işleme gireceğini belirleyen kurallar. Tipik birleşebilirlik kuralları Soldan sağa, ** hariç (sağdan sola) Tekli operatörler bazen sağdan sola APL farklı; tüm operatörler eşit öncelikte ve sağdan sola birleşirler Parantez kullanarak öncelik ve birleşebilirlik kurallarını geçersiz kılabiliriz Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

9 Aritmetik ifadeler: Şartlı ifadeler
C-tabanlı diller (ör: C, C++) Örnek average = (count == 0)? 0 : sum / count Aşağıdaki ile ayni if (count == 0) average = 0 else average = sum /count Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

10 Aritmetik ifadeler: Yan etkiler
Fonksiyonel yan etkiler: fonksiyon giriş-çıkış parametresini veya lokal olmayan değişkeni değiştirdiğinde meydana gelir Yan etkilerin olumsuz neticeleri: Bir fonksiyon içinde bulunduğu ifadenin değişkenini değiştirise işlenenlerin (operand) işlenme sırası önem kazanır a = 10; /* fun’ın parametresini değiştirdiğini farzedelim */ b = a + fun(a); Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

11 Çok amaçlı (overloaded) operatörler
Birden çek amaç için kullanılan operatörler Yaygın olarak kullanılan lara örnek: tamsayı ve kayan nokta için + C++, Ada, Fortran 95, ve C# kullanıcı- tanımlı çok amaçlı operatör tanımlanmasına olanak sağlarlar Olası problem: Okunabilirlik zaafiyete uğrayabilir. Ayni görünen operatörler farklı işler yapıyor. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

12 Tip dönüşümleri Daraltan dönüşüm: yeni tipin değerleri eski tipin altkümesi. ör: float’ dan int’e Genişleten dönüşüm: : eski tipin değerleri yeni tipin altkümesi. ör: int’ den float’a Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

13 Tip dönüşümleri: Karışık mod
Karışık mod ifade: içinde değişik türden işlenen var Zorlama: derleyicinin otomatik olarak yaptığı tip dönüşümü Zorlamaların dezavantajı: Derleyicinin tip hatalarını bulma yeteneğini azaltır Birçok dilde sayısal tipler zorlama yolu ile daha geniş tiplere dönüştürülürler Ada dilinde hemen hemen hiç zorlama yoktur. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

14 Açık tip dönüşümleri Kullanıcı tarafından yapılır
Kalıplama (casting) diye adlandırılır Örnekler C: (int)angle Ada: Float (Sum) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

15 Tip dönüşümleri: ifadelerde hatalar
Sebepler Aritmetiğin kendi sınırları (sıfırla bölme vs.) Bilgisayar aritmetiğinin sınırları (taşma vs.) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

16 İlişkisel ve Boolean ifadeler
<, >, >=, <=, !=, ==, .NE., <> Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

17 İlişkisel ve Boolean ifadeler...
İşlenenler ve netice Boolean Örnek operatörler FORTRAN 90 C Ada and && and or || or not ! not xor Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

18 İlişkisel ve Boolean ifadeler: C dilinde Boolean yok
C dilinde 0=yanlış, 0 dışında bir değer: doğru a < b < c ifadesinin anlamı ne? Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

19 Kısa devre hesaplama Tüm operatörleri ve işlenenleri kullanmadan neticeyi bulma Örnek: (13*a) * (b/13–1) a sıfır ise (b/13-1) değerini hesplamaya gerek yok Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

20 Kısa devre hesaplama ... C, C++, ve Java dillerinde: && ve || kısa devre olarak hesaplanır, bit operatörleri & ve | ise tam olarak hesaplanır Kısa devre hesaplamanın yanetkiler ile etkileşimini iyi düşünmek gerekir ör: (a > b) || (b++ / 3) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

21 Atama ifadeleri Genel sentaks Atama operatörü
<hedef_değişken> <atama_operatörü> <ifade> <expression> Atama operatörü = FORTRAN, BASIC, ve C-tabanlı diller := ALGOL, Pascal, Ada Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

22 Atama ifadeleri: şartlı hedefler
Perl dilinde ($flag ? $total : $subtotal) = 0 Eşdeğeri if ($flag){ $total = 0 } else { $subtotal = 0 } Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

23 Atama ifadeleri: Bileşik operatörler
a = a + b yerine a += b Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

24 Atama ifadeleri: Tekli atama operatörleri
Artırma ve atama işlemlerini birleştirir Örnekler sum = ++count (önce-artırma) sum = count++ (sonra-artırma) count++ -count++ (count önce artırma, sonra eksi) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

25 İfade olarak atama komutu
C, C++, ve Java dillerinde atama işlemi netice verebilir ve bu netice işlenen olarak kullanılabilir Örnek: while ((ch = getchar())!= EOF){…} Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

26 Liste atamaları Perl ve Ruby dillerinde:
($first, $second, $third) = (20, 30, 40); Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

27 Karışık mod atama Örnek int a, b; float c; c = a / b;
Fortran, C, ve C++ dillerinde herhagi nümerik değer herhangi nümerik tipteki değişkene atanabilir Java dilinde sadece genişleten atama zorlamaları var Ada dilinde atama zorlaması yok Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

28 Özet İfadeler Operatör önceliği ve birleşebilirliği
Çok amaçlı operatörler Karışık-tip ifadeler Değişik atama türleri Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ


"Bölüm 7 İfadeler ve atamalar." indir ppt

Benzer bir sunumlar


Google Reklamları