Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
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Ü
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.