C++ Statements En küçük çalışabilir birime statement (ifade) denir. Statements semicolon (;) ile sonlandırılır. Yalnız başına ; null statement ifade eder Örnek: while (*str++ = *inbuf++) ; { ve } arasında ifade edilen bir dizi statement bir compound statement (birleşik ifade) oluşturur. Compound statement in ; ile sonlanma zorunluluğu yoktur (fakat sonlanırsabuhatadeğildir). 9/15/2007 Nesneye Yonelik Programlama 2.1
C++ control structures Control structures programınakışını koşula bağlı olarak değiştirir. goto koşulsuz istenilen konuma gitme if koşul doğruysa devamındaki ifadeyi çalıştır if-else İki yollu koşul while koşulu doğru olduğu sürece tekrarlanır for sayaç kontrollü tekrarlama do-while koşul doğruysa tekrarla (en az bir kere) switch çok yollu dallanma 9/15/2007 Nesneye Yonelik Programlama 2.2
goto statement Koşulsuz istenilen konuma gitme (Unconditional jump) goto <statement label> Örnek: count = count + 1; goto exitpoint; exitpoint: return 0; 9/15/2007 Nesneye Yonelik Programlama 2.3
9/15/2007 Nesneye Yonelik Programlama 2.4
Structured programming Structured programming (Yapısal programlama) bir programlama disiplinidir. sadece high-level (yüksek) seviyeli kontrol yapıları kullanılır goto ifadesini kullanmaktan kaçınılır. Boehm ve Jacopini, sadece if-else ve dowhile yapıları kullanılarak programlama yapılabileceğini göstermiştir (1966). 9/15/2007 Nesneye Yonelik Programlama 2.5
if control structure if (grade >= 60) cout << Passed ; if(x>y) { } 9/15/2007 Nesneye Yonelik Programlama 2.6
if-else control structure if (<expression>) <if-statement> else <else-statement> Örnek: if (grade >= 60) cout << Passed ; else cout << Failed ; 9/15/2007 Nesneye Yonelik Programlama 2.7
9/15/2007 Nesneye Yonelik Programlama 2.8
Conditional (?:)) Operator C++ daki tek ternary operator (üçlü operatör) if-else kontrol yapısıyla ilgilidir <expr>? <True-statmt> : <False-statmt> Örnek: cout<< (grade >= 60? Passed : Failed ); Dahaönceverilenif-else örneğiyle aynı işvlevi görür ama fark olarak bir sonuç ürettiğine dikkat edilmelidir. 9/15/2007 Nesneye Yonelik Programlama 2.9
while control structure while (<expression>) statement ; 9/15/2007 Nesneye Yonelik Programlama 2.10
örnekler int product = 2; while (product <=1000) product = 2 * product; int dummy; while (true) { cin >> dummy; cout << dummy * 2 << endl } // end while 9/15/2007 Nesneye Yonelik Programlama 2.11
C++ daki Assignment Operators Syntax Örnek Anlamı += c += 7; c = c + 7; -= d -= 4; d = d 4; *= e *= 5 e = e * 5; /= f /= 3 f = f / 3; %= g %= 9 g = g % 9; 9/15/2007 Nesneye Yonelik Programlama 2.12
Increment ++ ve Decrement -- Operators örnek isim Anlamı ++a Preincrement a yi 1 artır ve sonra a nın (Önceden artır) değerini ifadede kullan b++ Postincrement b nin değerini ifadede (Sonradan artır) kullan ve sonra b yi 1 artır --c d-- Predecrement (Önceden azalt) Postdecrement (Sonradan azalt) 9/15/2007 Nesneye Yonelik Programlama 2.13
for control structure Kullanım şekli: for ( <expr1>; <expr2>; <expr3>) <statement> <expr1> sayaç değişkeninin baslangıçdeğeri atanması <expr2> döngü devamlılık koşulu <expr3> sayaç değişkeninin artım ifadesi Bu ifadenin while karşılığı: <expr1> while ( <expr2>) { <statement> <expr3> } 9/15/2007 Nesneye Yonelik Programlama 2.14
for Kontrol yapısı Örnek: int count; for (count=1; count <= 10; count++) cout << count <<endl; Örnek: for (int i=1; i<=100; i++) for (int i=100; i>=1; i--) for (int i=7; i<=77; i+=7) for (int j=99; j>=0; j-=11) 9/15/2007 Nesneye Yonelik Programlama 2.15
do-while control structure do <statement> while ( <expression>) 9/15/2007 Nesneye Yonelik Programlama 2.16
do-while # include <iostream> using namespace std; int main( ) { int counter = 1; do { cout << counter++ << ; }while (counter <= 10) cout << endl; return 0; } 1 2 3 4 5 6 7 8 9 10 9/15/2007 Nesneye Yonelik Programlama 2.17
continue statement En yakın while, do veya for döngüsünün aktif iterasyonunun sonlanmasına neden olur. while ve do döngüleri kontrol ifadelerinin doğruluğuna göre devam ederler veya sonlandırılırlar. for döngülerinin çalışması <expr2> deki şartın sağlanmasına bağlı olarak yerine getirilir. while (cin >> integer) { if (integer >= 100) continue // process number under 100 } // end while 9/15/2007 Nesneye Yonelik Programlama 2.18
break ifadesi En yakın while, do, for veya switch ifadesini sonlandırır. Program akışı sonlanan döngü ifadesinden sonra gelen ifade ile çalışmaya devam eder. for (int x=1; x <=10; x++) { if (x == 5) break; // process the non-five value of x cout << x << ; } // end for 9/15/2007 Nesneye Yonelik Programlama 2.19
9/15/2007 Nesneye Yonelik Programlama 2.20
switch kontrol yapısı switch ( <expression> ) { case <value_1>: <statement_1> break; case <value_2>: <statement_2> break; case <value_3>: <statement_3> break; default: <default_statement> break; }; // en switch 9/15/2007 Nesneye Yonelik Programlama 2.21
9/15/2007 Nesneye Yonelik Programlama 2.22
Mantıksal Operatörler Koşula bağlı kontrol yapıları koşula bağlı olarak program akışının nereden devam etmesi gerektiğine karar verirler. C++ da 3 tane mantıksal operatör vardır Örnek İsim Öncelik! expr1 Mantısal negatifleme Yüksek expr2 && expr3 Mantıksal VE Orta expr4 expr5 Mantıksal VEYA Düşük 9/15/2007 Nesneye Yonelik Programlama 2.23
!, && ve!expr1 Eğer expr1 false ise,!expr1 true değerini alır expr2 && expr3 Eğer expr2 ve expr3 nin her ikisi de true ise, expr2 && expr3 true olur. Aksi halde false expr4 expr5 Eğer expr4 ve expr5 den en azından biri true ise expr4 expr5 true değeri alır. Aksi halde false 9/15/2007 Nesneye Yonelik Programlama 2.24
Mantıksal İfade Örnekleri! true && false! ( true && false) true false && true false true && false false (false true) && (false true) false true true false true 9/15/2007 Nesneye Yonelik Programlama 2.25
Virgül Operatörü (,) Virgül operatörü birden fazla ifadeyi birleştirmek için kullanılır., ile birbirine bağlanmış ifadelere virgül ifadeleri (comma expression) denir. Virgül ifadelerindeki ifadelerlar soldan sağa doğru işlem görürler. En sağdaki ifadeninin değeri virgül ifadesinin değerine eşittir. Örnek: b = (a=2, a=5, a+2 ); for (i=1, j=20; i<= 19, j-- ) 9/15/2007 Nesneye Yonelik Programlama 2.26
C++ da Data Abstraction Bilgisayarlar donanım destekli, üzerlerinde doğrudan işlem yapılabilen bir kaç tip doğal veri tipine (native data types) sahiptir. Bits, bytes, words, long words Integers, booleans, floating point Diğer veri tipleri bu doğal veri tiplerinden yararlanarak oluşturulurlar (data abstraction) Türetilmiş veri tipleri (Derived data types) (arrays, pointers, structures, classes, ) veri soyutlaştırma (data abstraction) desteğiyle oluşturulurlar. 9/15/2007 Nesneye Yonelik Programlama 2.27
9/15/2007 Nesneye Yonelik Programlama 2.28
9/15/2007 Nesneye Yonelik Programlama 2.29
Tip Deklarasyonu (Type( Declaration) int i, j, k; int i=5, j=7; bool alarm_status = false; char ch1= a, ch2= b ; float sample_mass; const double pi=3.14159265358979 int main( ); float f ( int ); void g (int, float ); 9/15/2007 Nesneye Yonelik Programlama 2.30
Aritmetik Veri Tipleri Integral data types (tamsayı veri tipleri) bool unsigned (char, short, int, long) enumeration (user-defined) signed (char, short, int, long) Floating point data types (kayan nokta veri tipleri) float double long double 9/15/2007 Nesneye Yonelik Programlama 2.31
Boolean Type (bool( bool) Tipi boolean olan bir data, iki değerden birini alablir: true veya false Verilerin Tamsayı (integers) tipinden boolean tipine dönüştürülmeleri halinde (Örneğin, Kontrol yapısındaki aritmetik ifadeler) 0 false Sıfırdan farklı tamsayılar true ya dönüştürülür. 9/15/2007 Nesneye Yonelik Programlama 2.32
Karakter Tipi, Character type (char) char tipi değişkenler karakter katarlarını tutarlar. Karakter katarları harfler (büyük veya küçük harfler), rakamlar, noktalama işaretleri, semboller, keçış karakterleri (örneğin, yeni satır (line-feed), zil sesi (sound the bell)), biçim (örneğin, yatay girinti (tab), satır sonu (end-of-text)) temsil ederler ASCII, 128 taneden oluşan 7 bitlik karakter kodlarının düzenlenmesine imkan verir. 9/15/2007 Nesneye Yonelik Programlama 2.33
Örnek #include <iostream.h> using namespace std; int main ( ) { char c; cin >> c; cout << The value of << c << is << int (c) << endl; } 9/15/2007 Nesneye Yonelik Programlama 2.34
signed ve unsigned char Bilgisayarlar karakterler için 8 bit (1 byte) hafıza bloğu kullanırlar. char 0,, 127 değerlerin karakter karşılıklarını garanti eder. Bu aralığın dışındaki değerler bilgisayarın dizaynına bağlıdır. unsigned char 0,, 255 signed char -128,., 127 9/15/2007 Nesneye Yonelik Programlama 2.35
Character constants char c = a ; char digit = 4 ; char newline = \n ; char tab = \t ; 9/15/2007 Nesneye Yonelik Programlama 2.36
Tamsayı Tipleri - Integer types Üç değişik şekli: int, signed int, unsigned int int -işaretli tamsayı unsigned int -işaretsiz tamsayı (positive) signed int - int le eşanlamlı signed - signed int le eşanlamlı unsigned - unsigned int le eş anlamlı Üç değişik boylu: short int, int, long int short int - en az 16 bit boyunda int - 32 bit olabilir long int - en az 32 bit boyunda short - short int le eş anlamlı long - long int le eş anlamlı 9/15/2007 Nesneye Yonelik Programlama 2.37
Tamsayı Sabitler - Integer constants Decimal Octal Hexadecimal 0 00 0x0 2 02 0x2 63 077 0x3f 83 0123 0x53 L, long int i gösterir 34L U, unsigned int i gösterir 43U 9/15/2007 Nesneye Yonelik Programlama 2.38
Floating-point types C++ üç tip Kayan nokta gösterimine (floating point data type) sahiptir: float - single precision double long double - double precision - extended precision Kayan nokta sabitleri 1.23, 0.23, 1.2e10, 1.23e-13 varsayılan olarak bu sabitlerin tipi double dir. Kayan nokta sabitler f veya F ile belirlenir: 2.05f, 3.14159F 9/15/2007 Nesneye Yonelik Programlama 2.39
Tip Dönüştürme D (static_cast tatic_cast) Hesaplama veya değerlendirme (Evaluation) sırasında bir değişkenin tipinin değiştirilmesi işlemine tip dönüştürme (casting) denir. C de tip dönüştürme daha güçlü olmakla beraber tehlikelidir. Kullanımı: static_cast <tip> (değişken) Örnek: static_cast <float> (total) 9/15/2007 Nesneye Yonelik Programlama 2.40
// Example of static_cast use #include <iostream> #include <iomanip> using namespace std; int main ( ) { int total = 0, gradecounter = 0, grade; float average = 0.0; cout << "Enter grade, -1 to end "; cin >> grade; while ( grade!= -1 ) { total += grade; gradecounter++; cin >> grade; } if ( gradecounter!= 0) { average = static_cast<float>(total) / gradecounter; cout << "Class average is " << setprecision(2) << setiosflags (ios::fixed ios::showpoint) << average <<endl; } else cout << " No grades were entered" << endl; system("pause"); return 0; } 9/15/2007 Nesneye Yonelik Programlama 2.41
Bir tipin in bellekte kapladığı alanı (size) belirlemek Bazen belli bir tipteki verinin bellekte kapladığı alanı belirlemek gerekli olur. C++, bir degiskenin bellekte kapladığı alanı bir karakterin bellekte kapladığı alan cinsinden verebilir. Bunun için C++ sizeof operatörüne sahiptir. sizeof (char ) = 1 sizeof (char ) <= sizeof (short ) <= sizeof ( int ) <= sizeof (long) sizeof ( float ) <= sizeof (double ) <= sizeof (long double ) sizeof ( int ) < = sizeof (signed int ) <= sizeof (unsigned int ) 9/15/2007 Nesneye Yonelik Programlama 2.42
Enumeration Types Bazen sonlu sayıda tamsayı değeri alabilen yeni tipler oluşturmak faydalı olabilir. Örnek: {red, yellow, blue} Bunun için C++ da enumerated data type tanımlamak mümkündür enum color {red, yellow, blue}; Varsayılan olarak 0, 1, 2,. tamsayıları birinci, ikinci, üçüncü,. elemanlarla eşleştirilir. color door_color = color (2); // blue Aritmetik işlemlerinde enumerated tipler tamsayılara dönüştürülür (yellow + 1 == 2) işleminin sonucu true dur. 9/15/2007 Nesneye Yonelik Programlama 2.43