Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

 2003 Prentice Hall, Inc. All rights reserved. 1 Bölüm 2 – Kontrol Yapıları Outline 2.1 Giriş 2.2 Algoritmalar 2.3 Pseudocode 2.4 Kontrol Yapıları 2.5.

Benzer bir sunumlar


... konulu sunumlar: " 2003 Prentice Hall, Inc. All rights reserved. 1 Bölüm 2 – Kontrol Yapıları Outline 2.1 Giriş 2.2 Algoritmalar 2.3 Pseudocode 2.4 Kontrol Yapıları 2.5."— Sunum transkripti:

1  2003 Prentice Hall, Inc. All rights reserved. 1 Bölüm 2 – Kontrol Yapıları Outline 2.1 Giriş 2.2 Algoritmalar 2.3 Pseudocode 2.4 Kontrol Yapıları 2.5 if Seçim Yapısı 2.6 if/else Seçim Yapısı 2.7 while Tekrar Yapısı 2.8 Algoritma Formülasyonu: Durum 1 (Sayaç kontrollu tekrar) 2.9 Algoritma Formülasyonu: Tepeden aşağı adımsal sadeleştirme: Durum 2 (Sentinel-kontrollü tekrar) 2.10 Algoritma Formülasyonu: Tepeden aşağı adımsal sadeleştirme: Durum 3 (içiçe kontrol yapıları) 2.11 Atama Operatörü 2.12 Artırma ve Azaltma opratörü 2.13 Sayaç kontrollü yapının özellikleri 2.14 for Tekrar yapısı 2.15 for yapısı ile örnekler

2  2003 Prentice Hall, Inc. All rights reserved. 2 Bölüm 2 – Kontrol Yapıları Outline 2.16 switch Çoklu seçim yapısı 2.17 do/while Tekrar Yapısı 2.18 break and continue Deyimleri 2.19 Mantık (Lojik) Operatörleri 2.20 Eşitlik (==) ve Atama (=) Operatörlerinin karıştırılması 2.21 Yapısal-Programlama Özeti

3  2003 Prentice Hall, Inc. All rights reserved. 3 2.1 Giriş Bir program yazmadan önce –Problem iyi anlaşılmalı –Çözüm için dikkatli bir plan yapılmalı Bir programı yazarken –Çözüm bloklara ayrılıp, blokların içinde ne olacağı iyi belirlenmeli –İyi programlama prensipleri kullanılmalı

4  2003 Prentice Hall, Inc. All rights reserved. 4 2.2Algoritmalar Hesaplama işlemleri –Sırayla birtakım hesaplar yapılarak asıl problem çözülür Algoritma –Yürütülecek işlemleri belirler –İşlemlerin sırasını belirler –Örnek: reçete Program kontrolü –O sırada hangi işlemin yürütüleceğini belirler

5  2003 Prentice Hall, Inc. All rights reserved. 5 2.3Pseudocode Pseudocode –Yapay, informal dil, algoritma geliştirmek için kullanılır. –Konuşma ingilizcesine benzer. Bilgisayarda çalıştırılamaz –Program kodunu yazmadan programı tasarlamaya yarar Kolayca C++ programına çevrilir. –Sadece yürütülecek deyimler yazılır Değişken tanımlamaya gerek yoktur

6  2003 Prentice Hall, Inc. All rights reserved. 6 2.4Kontrol yapıları Sıralı yürütme –Deyimler sırayla yürütülür Kontrol transferi –Sıradaki deyimin değilde başka deyimin çalıştırılmasını sağlar 3 kontrol yapısı (Bohm ve Jacopini) –Sıralı yapı Programlar yürütülürken içindeki sıra takip edilir –Seçim yapısı if, if/else, switch –Tekrar yapısı while, do/while, for

7  2003 Prentice Hall, Inc. All rights reserved. 7 2.4 Kontrol yapıları C++ keywords –Değişken ismi olarak kullanılamazlar

8  2003 Prentice Hall, Inc. All rights reserved. 8 2.4 Kontrol yapıları Akış Diyagramı –Algoritmanın grafiksel gösterimi –Bazı şekillerin oklarla birleştirilmesinden oluşur –Dikdörtgen (işlem) Herhangi bir işlem –Oval şekil Programın başlangıç veya bitişini gösterir, daire şekli bölüm başlangıcını veya bitişini gösterir

9  2003 Prentice Hall, Inc. All rights reserved. 9 2.5if Yapısı Seçim Yapısı –Karşılaştırmanın sonucuna göre farklı işlemleri yapmayı sağlar –Pseudocode örneği: Eğer öğrencinin notu 60 dan büyük veya eşitse “Geçti” yaz –Eğer koşul doğru ise ( true) Yazdırma işlemi yapılır, program bir sonraki komuttan devam eder. –Eğer koşul yanlış ise ( false) Yazdırma işlemi atlanıp diğer komuttan devam edilir. –Boşluklar programın okunmasını kolaylaştırır C++ da boşlukların etkisi olmaz

10  2003 Prentice Hall, Inc. All rights reserved. 10 2.5 if Yapısı Örnek Pseudocode’un C++ a çevrilmesi Eğer öğrencinin notu 60 dan büyük veya eşitse “Geçti” yaz if ( not >= 60 ) cout << “Geçti"; Baklava şekli –Karar verme işlemi yapılacağını gösterir –Doğru veya yanlış olabilen bir önerme içerir Koşul test edilip uygun yol takip edilir. if yapısı –Tek giriş / tek çıkış

11  2003 Prentice Hall, Inc. All rights reserved. 11 2.5 if Yapısı Örnek pseudocode ‘un akış diyagramı Herhangi bir ifadeye göre de karar verilebilir sıfır - yanlış (false) Sıfırdan farklı – doğru (true) Örnek: 3 - 4 true

12  2003 Prentice Hall, Inc. All rights reserved. 12 2.6 if/else Yapısı if –Eğer koşul doğruysa ilgili komutu çalıştırır if/else –Koşul doğruysa ilgili komutu, yanlışsa başka komutu çalıştırır Pseudocode Eğer öğrencinin notu 60 dan büyük veya eşitse “Geçti” yaz else “Kaldı” yaz C++ kodu if ( not >= 60 ) cout << “Geçti"; else cout << “Kaldı";

13  2003 Prentice Hall, Inc. All rights reserved. 13 2.6 if/else Yapısı Üçlü karşılaştırma operatörü ( ?: ) –Üç argümanı vardır (koşul, doğruysa yapılacak işlem, yanlışsa yapılacak işlem) Kod aşağıdaki gibi olur: cout = 60 ? “Geçti” : “Kaldı” ); KoşulDoğruysa yapılacak Yanlışsa yapılacak

14  2003 Prentice Hall, Inc. All rights reserved. 14 2.6 if/else Yapısı

15  2003 Prentice Hall, Inc. All rights reserved. 15 2.6 if/else Yapısı içiçe if/else yapısı –Birçok durum birden test edilir –if koşulu doğruysa, else’deki komut atlanır if öğrenci notu 90 dan büyük veya eşitse “A” yaz else if öğrenci notu 80 den büyük veya eşitse “B” yaz else if öğrenci notu 70 den büyük veya eşitse Print “C” else if öğrenci notu 60 dan büyük veya eşitse Print “D” else Print “F”

16  2003 Prentice Hall, Inc. All rights reserved. 16 2.6 if/else Yapısı Örnek if ( notu >= 90 ) // 90 ve üstü cout = 80 ) // 80-89 cout = 70 ) // 70-79 cout = 60 ) // 60-69 cout << "D"; else // 60 dan az cout << "F";

17  2003 Prentice Hall, Inc. All rights reserved. 17 2.6 if/else Yapısı Birleşik deyim –Komutların küme içinde guruplanması if ( notu >= 60 ) cout << “Gecti.\n"; else { cout << “Kaldı.\n"; cout << “Bu dersi yeniden almak zorundasın.\n"; } –Küme parantezi olmasaydı, cout << " Bu dersi yeniden almak zorundasın.\n"; Her zaman çalıştırılacaktı. Blok –Küme parantezleri ile bloklanmış bir grup komutdan oluşur.

18  2003 Prentice Hall, Inc. All rights reserved. 18 2.7while yapısı Tekrar yapısı –Bir koşul doğru kaldığı sürece aynı işlemler tekrar tekrar yapılır. –Psuedocode while alışveriş listem bitmediği sürece devam et listede sırası geleni al ve üzerini çiz –while döngüsü koşul yanlış olana kadar devam eder Örnek int carpim = 2; while ( carpim <= 1000 ) carpim = 2 * carpim;

19  2003 Prentice Hall, Inc. All rights reserved. 19 2.7 while yapısı

20  2003 Prentice Hall, Inc. All rights reserved. 20 2.8sayaç kontrollü döngü Sayaç kontrollü döngü –Sayaç belli bir sayıya ulaşana kadar döngü tekrar edilir Kesin döngü –Döngü sayısı bilinir. Örnek 10 öğrencinin katıldığı bir quizde notlar 0 ile 100 arasındadır. Quizin ortalamasını bulunuz.

21  2003 Prentice Hall, Inc. All rights reserved. Outline 21 fig02_07.cpp (1 of 2) 1 // Fig. 2.7: fig02_07.cpp 2 // sayac kontrollu döngü ile ortalama bulman program. 3 #include 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 9 10 int main() 11 { 12 int toplam; // girilen notların toplamı 13 int sayac; // notların sayacı 14 int notu; // öğrencinin notu 15 int ortalama; // notların ortalaması 16 17 18 toplam = 0; 19 sayac = 1; 20

22  2003 Prentice Hall, Inc. All rights reserved. Outline 22 fig02_07.cpp (2 of 2) fig02_07.cpp output (1 of 1) 21 22 while ( sayac <= 10 ) { // 10 kere dönecek 23 cout << “Notu girin: "; 24 cin >> notu; // kullanıcıdan not okunur 25 toplam = toplam + notu; 26 sayac = sayac + 1; // sayac bir arttırılır 27 } 28 29 30 ortalama = toplam / 10; // tamsayı bölme 31 32 // sonucun görüntülenmesi 33 cout << “Sınıf ortalaması : " << ortalama << endl; 34 35 return 0; 36 37 } Notu girin: 98 Notu girin: 76 Notu girin: 71 Notu girin: 87 Notu girin: 83 Notu girin: 90 Notu girin: 57 Notu girin: 79 Notu girin: 82 Notu girin: 94 Sınıf ortalaması : 81

23  2003 Prentice Hall, Inc. All rights reserved. 23 2.9 Gözcü kontrollü döngü Problemi değiştirelim: Not ortalaması bulan programı sayısı belli olmayan öğrenciler için hesaplayacak şekilde yazın. –Öğrenci sayısı belli değil –Program son öğrenci girildiğini nasıl anlayacak? Gözcü değer –Bilgi girişinin sonuna gelindiğini gösterir. –Gözcü değer girildiğinde döngü durur –Giriş değerleri ile karıştırılmayacak bir gözcü değer seçilir. Bu problem için -1

24  2003 Prentice Hall, Inc. All rights reserved. 24 2.9 Gözcü kontrollü döngü Programların genelde üç bölümü vardır –Başlangıç Program değişkenlerine ilk değerleri verilir –İşlem Bilgi girişi, değişkenlerin ayarlanması,döngülerin kurulması –Son Hesaplamaların yapılması ve sonucun ekrana yazılması

25  2003 Prentice Hall, Inc. All rights reserved. Outline 25 fig02_09.cpp (1 of 3) 1 // Fig. 2.9: fig02_09.cpp 2 // Gözcü kontrolü ile ortalama hesaplanması 3 #include 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 using std::fixed; 9 10 #include // parameterized stream manipulators 11 12 using std::setprecision; // ekrana yazdırırken formatın ayarlanması 13 14 15 int main() 16 { 17 int toplam; //notların toplamı 18 int sayac; // not sayacı 19 int notu; // öğrencinin notu 20 21 double ortalama; // ortalama (gerçel sayı olarak) 22 23 // başlangıç 24 toplam = 0; 25 sayac = 0;

26  2003 Prentice Hall, Inc. All rights reserved. Outline 26 fig02_09.cpp (2 of 3) 26 27 // işlem bölümü 28 // ilk notun kullanıcıdan alınması 29 cout << “Notu girin, cıkıs icin -1 : "; 30 cin >> notu; 31 32 // gözcü değer girilene kadar tekrar eden döngü 33 while ( notu != -1 ) { 34 toplam = toplam + notu; 35 sayac = sayac + 1; 36 37 cout << " Notu girin, cıkıs icin -1 : "; 38 cin >> notu; // sıradaki not 39 40 } // while sonu 41 42 // son bölüm 43 // eğer kullanıcı en azından bir not girdiyse... 44 if ( sayac != 0 ) { 45 46 // girilen tüm notların ortalamasının bulunması 47 ortalama = static_cast ( toplam ) / sayac; 48 static_cast () toplamı geçici olarak double olarak alır İki tamsayının bölünmesi durumunda ondalık kısmı silinir sayac değişkeni int olmasına rağmen bu kez double olarak alınır.

27  2003 Prentice Hall, Inc. All rights reserved. Outline 27 fig02_09.cpp (3 of 3) fig02_09.cpp output (1 of 1) 49 // ortalamanın virgülden sonra iki hane ile gösterilmesi 50 cout << “Sınıf ortalaması : " << setprecision( 2 ) 51 << fixed << ortalama << endl; 52 53 } // if/else ‘ in if kısmının sonu 54 55 else // hiç not girilmediyse, mesaj yazılır 56 cout << “Hiç not girlmedi.." << endl; 57 58 return 0; 59 60 } Notu girin, cıkıs icin -1 : 75 Notu girin, cıkıs icin -1 : 94 Notu girin, cıkıs icin -1 : 97 Notu girin, cıkıs icin -1 : 88 Notu girin, cıkıs icin -1 : 70 Notu girin, cıkıs icin -1 : 64 Notu girin, cıkıs icin -1 : 83 Notu girin, cıkıs icin -1 : 89 Notu girin, cıkıs icin -1 : -1 Sınıf ortalması : 82.50 setprecision(2) noktadan sonra 2 rakam yazılmasını sağlar. Yuvarlanmıştır. Setprecision ı kullanmak için include edilmelidir fixed sonucun sabit noktalı formatta verilmesini sağlar (bilimsel gösterimde değil). Fixed in içindedir

28  2003 Prentice Hall, Inc. All rights reserved. 28 2.10 İçiçe kontrol yapıları Problem Bir sınıfın test sonuçları geçti-kaldı şeklindedir ve 10 öğrenci için analiz yapılacaktır. (1 = geçti, 2 = kaldı) Sonuçları analiz eden bir program yazın. Eğer 8 den fazla öğrenci geçtiyse “Maaşı yükselecek“ yazılacaktır. Dikkat edilecekler –Programda 10 öğrencinin sonucu işlenecek Sabit sayı, sayac kontrollü döngü kullanılacak –İki sayac kullanılacak Biri geçenler için Diğeri kalanlar için –Her test sonucu 1 veya 2 dir Eğer 1 değilse 2 kabul edilir.

29  2003 Prentice Hall, Inc. All rights reserved. 29 2.10 İçiçe kontrol yapıları Top level outline Analyze exam results and decide if tuition should be raised First refinement Initialize variables Input the ten quiz grades and count passes and failures Print a toplammary of the exam results and decide if tuition should be raised Refine Initialize variables to Initialize passes to zero Initialize failures to zero Initialize student counter to one

30  2003 Prentice Hall, Inc. All rights reserved. 30 2.10 İçiçe kontrol yapıları 10 test sonucunu gir ve geçenleri kalanları say (While) öğrenci sayacı 10 dan küçük ve eşit iken Bir sonraki test sonucunu girin (If)Eğer öğrenci geçtiyse Geçenler sayacına bir ekle (Else)değilse Kalanlar sayacına bir ekle Öğrenci sayacına bir ekle

31  2003 Prentice Hall, Inc. All rights reserved. 31 2.10 Nested Control Structures Refine Print a toplammary of the exam results and decide if tuition should be raised to Print the number of passes Print the number of failures If more than eight students passed Print “Raise tuition” Program next

32  2003 Prentice Hall, Inc. All rights reserved. Outline 32 fig02_11.cpp (1 of 2) 1 // Fig. 2.11: fig02_11.cpp 2 // Test sonuçları analizi. 3 #include 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 9 10 int main() 11 { 12 13 int gecen = 0; // geçenlerin sayısı 14 int kalan = 0; // kalanların sayısı 15 int ogrenci = 1; // öğrenci sayacı 16 int sonuc; // test sonucu 17 18 // sayac kontrollü döngü kullanarak 10 sonuc incelenecek 19 while ( ogrenci <= 10 ) { 20 21 // mesaj yazıp kullanıcıdan test sonucu iste 22 cout << “Sonucu girin (1 = gecti, 2 = kaldı): "; 23 cin >> sonuc; 24

33  2003 Prentice Hall, Inc. All rights reserved. Outline 33 fig02_11.cpp (2 of 2) 25 // sonuc 1 ise, gecen sayacı artacak 26 if ( sonuc == 1 ) // while içinde if/else 27 gecen = gecen + 1; 28 29 else // Eğer sonuc 1 değilse kalan artacak 30 kalan = kalan + 1; 31 32 // öğrenci sayacı bir artacak ki 10 olduğunda döngü sona ersin 33 ogrenci = ogrenci + 1; 34 35 } // while’ın sonu 36 37 // gecen ve kalan sayaclarının ekrana yazdırılması 38 cout << “Gecti " << gecen << endl; 39 cout << “Kaldi " << kalan << endl; 40 41 42 if ( gecen > 8 ) 43 cout << “Maasi yukseltilecek " << endl; 44 45 return 0; 46 47 }

34  2003 Prentice Hall, Inc. All rights reserved. Outline 34 fig02_11.cpp output (1 of 1) Sonucu girin (1 = gecti, 2 = kaldı): 1 Sonucu girin (1 = gecti, 2 = kaldı): 2 Sonucu girin (1 = gecti, 2 = kaldı): 1 Sonucu girin (1 = gecti, 2 = kaldı): 2 Sonucu girin (1 = gecti, 2 = kaldı): 1 Sonucu girin (1 = gecti, 2 = kaldı): 2 Gecti 6 Kaldi 4 Sonucu girin (1 = gecti, 2 = kaldı): 1 Sonucu girin (1 = gecti, 2 = kaldı): 2 Sonucu girin (1 = gecti, 2 = kaldı): 1 Gecti 9 Kaldi 1 Maasi yukseltilecek

35  2003 Prentice Hall, Inc. All rights reserved. 35 2.11Atama operatörleri Atama ifadesinin kısa yazılması –Toplama atama operatörü c = c + 3; Kısaltılmış atama c += 3; Kısaltmanın formatı değişken = değişken operatör ifade; Kısaltılmış ifade: değişken operatör= ifade; Diğer atama opratörleri d -= 4 (d = d - 4) e *= 5 (e = e * 5) f /= 3 (f = f / 3) g %= 9 (g = g % 9)

36  2003 Prentice Hall, Inc. All rights reserved. 36 2.12Artırma ve azaltma operatörleri Artırma operatörü ( ++ ), c+=1 yerine kullanılabilir Azaltma operatörü ( -- ), c-=1 yerine kullanılabilir –Ön artırma Değişkenin önüne operatör yazılır ( ++c veya --c ) Önce değişken artırılır sonra işleme konur. –Son artırma Operatör değişkenden sonra yazılır ( c++ veya c-- ) Önce işlem yapılır sonra değişken artırılır.

37  2003 Prentice Hall, Inc. All rights reserved. 37 2.12 Artırma ve azaltma operatörleri Artırma operatörü ( ++ ) –Değişkeni bir artırır –c++ c+=1 ile aynıdır Azaltma operatörü ( -- ) –Değişkeni bir azaltır –c-- C-=1 ile aynıdır

38  2003 Prentice Hall, Inc. All rights reserved. 38 2.12 Artırma ve azaltma operatörleri Eğer c = 5, ise –cout << ++c; c nin değeri 6 oldu, şimdi yazılır –cout << c++; önce 5 olur ( cout artırmadan önce çalıştırılır). c sonra 6 olur

39  2003 Prentice Hall, Inc. All rights reserved. 39 2.12 Artırma ve azaltma operatörleri Değişken işlem içinde değilse –Ön artırma ve son artırma etkisi aynıdır ++c; cout << c; ve c++; cout << c; aynıdır

40  2003 Prentice Hall, Inc. All rights reserved. Outline 40 fig02_14.cpp (1 of 2) 1 // Fig. 2.14: fig02_14.cpp 2 // Ön artırma ve son artırma. 3 #include 4 5 using std::cout; 6 using std::endl; 7 8 9 int main() 10 { 11 int c; 12 13 // son artırma 14 c = 5; // c ye 5 atama 15 cout << c << endl; // print 5 16 cout << c++ << endl; // print 5 sonra artır 17 cout << c << endl << endl; // print 6 18 19 // ön artırma 20 c = 5; // c ye 5 atama 21 cout << c << endl; // print 5 22 cout << ++c << endl; // önce artır sonra print 6 23 cout << c << endl; // print 6

41  2003 Prentice Hall, Inc. All rights reserved. Outline 41 fig02_14.cpp (2 of 2) fig02_14.cpp output (1 of 1) 24 25 return 0; 26 27 } 556 566556 566

42  2003 Prentice Hall, Inc. All rights reserved. 42 2.13 Sayac kontrollü döngülerin kuralları Sayac kontrollü döngüde olması gerekenler –Sayac ismi –Sayacın ilk değeri –Sayacın son değerini test eden koşul –Döngü sırasında sayacın artırılması veya azaltılması

43  2003 Prentice Hall, Inc. All rights reserved. Outline 43 fig02_16.cpp (1 of 1) 1 // Fig. 2.16: fig02_16.cpp 2 // Sayac kontrollü döngü 3 #include 4 5 using std::cout; 6 using std::endl; 7 8 9 int main() 10 { 11 int sayac = 1; // ilk değer 12 13 while ( sayac <= 10 ) { // sayac son değer koşulu 14 cout << sayac << endl; // sayacı ekrana yaz 15 ++sayac; // sayacın arttırılması 16 17 } // while sonu 18 19 return 0; 20 21 }

44  2003 Prentice Hall, Inc. All rights reserved. Outline 44 fig02_16.cpp output (1 of 1) 1 2 3 4 5 6 7 8 9 10

45  2003 Prentice Hall, Inc. All rights reserved. 45 2.13 Sayac kontrollü döngülerin kuralları Tanımlamanın sağladıkları int sayac = 1; –isim verilmesi sayac –sayac ın ‘integer’ olması –sayac için bellekte yer ayrılması –sayac a ilk değer olarak 1 verilmesi

46  2003 Prentice Hall, Inc. All rights reserved. 46 2.14for döngüsü for döngüsünün genel formatı for ( ilk deger; döngü devam koşulu;artım ) ifade; Örnek for( int c = 1; c <= 10; c++ ) cout << c << endl; –1den 10 a kadar olan sayıları yazar. For satırının sonuna ; konulmaz

47  2003 Prentice Hall, Inc. All rights reserved. Outline 47 fig02_17.cpp (1 of 1) 1 // Fig. 2.17: fig02_17.cpp 2 // Sayaç kontrollü döngü. for ile. 3 #include 4 5 using std::cout; 6 using std::endl; 7 8 int main() 9 { 10 for ( int c = 1; c <= 10; c++ ) 11 cout << c << endl; 12 13 return 0; 14 15 }

48  2003 Prentice Hall, Inc. All rights reserved. Outline 48 fig02_17.cpp output (1 of 1) 1 2 3 4 5 6 7 8 9 10

49  2003 Prentice Hall, Inc. All rights reserved. 49 2.14for döngüsü for döngüleri while ile yazılabilir İlk değer; while ( Döngü devam koşulu){ ifade artım; } İlk değer ve artım –Birden fazla değişken için virgül ayıracı kullanılır for (int i = 0, j = 0; j + i <= 10; j++, i++) cout << j + i << endl;

50  2003 Prentice Hall, Inc. All rights reserved. 50 2.14 for döngüsü

51  2003 Prentice Hall, Inc. All rights reserved. Outline 51 fig02_20.cpp (1 of 1) fig02_20.cpp output (1 of 1) 1 // Fig. 2.20: fig02_20.cpp 2 // for ile toplama. 3 #include 4 5 using std::cout; 6 using std::endl; 7 8 int main() 10 { 11 int toplam = 0; 12 13 for ( int num = 2; num <= 100; num += 2 ) 15 toplam += num; 16 17 cout << “Toplam : " << toplam << endl; 18 return 0; 19 20 } Toplam : 2550

52  2003 Prentice Hall, Inc. All rights reserved. 52 2.15 for ile örnekler Birleşik faiz hesabı Bir kişi hesabına %5 faiz ile 1000.00 $ koyuyor. Her yıl için biriken faizi ekrana yazarak 10 yıllık bir tablo yazınız. Faiz hesabı için aşağıdaki formül kullanılacaktır. a = p(1+r) p anapara r yıllık faiz oranı n yılları gösteren sayac a anaparaya faiz eklendikten sonra n.yıldaki durum n

53  2003 Prentice Hall, Inc. All rights reserved. Outline 53 fig02_21.cpp (1 of 2) 1 // Fig. 2.21: fig02_21.cpp 2 // Calculating compound interest. 3 #include 4 5 using std::cout; 6 using std::endl; 7 using std::ios; 8 using std::fixed; 9 10 #include 11 12 using std::setw; 13 using std::setprecision; 14 15 #include 16 18 int main() 19 { 20 double miktar; 21 double anapara = 1000.0; 22 double faiz =.05; 23 pow fonksiyonunu kullanmak için gereklidir

54  2003 Prentice Hall, Inc. All rights reserved. Outline 54 fig02_21.cpp (2 of 2) 24 // tablo başlıkları 25 cout << "Yıl" << setw( 21 ) << “Miktar" << endl; 26 28 cout << fixed << setprecision( 2 ); 29 30 for ( int yil = 1; yil <= 10; yil++ ) { 32 33 // yila göre miktarın hesaplanması 34 miktar = anapara * pow( 1.0 + oran, yil ); 35 36 // bir satırın yazılması 37 cout << setw( 4 ) << yil 38 << setw( 21 ) << miktar << endl; 39 40 } // for sonu 41 42 return 0; 43 } pow(x,y) = x üzeri y 21 karaktere yazılmaını sağlar. Eger sayı 21den az ise sağa yaslar.

55  2003 Prentice Hall, Inc. All rights reserved. Outline 55 fig02_21.cpp output (1 of 1) yil Miktar 1 1050.00 2 1102.50 3 1157.63 4 1215.51 5 1276.28 6 1340.10 7 1407.10 8 1477.46 9 1551.33 10 1628.89 Sayılar setw da verilen degerlere göre saya dayalı yazılmış (4 ve 21).

56  2003 Prentice Hall, Inc. All rights reserved. 56 2.16switch çoklu seçim yapısı switch –Bir değişkeni birçok değer ile karşılaştırma –case durumları ve default durumu switch ( değişken ) { case değer1: // eğer değişken == değer1 ifadeler break; case değer2: case değer3: // eğer değişken == değer2 veya == değer3 ifadeler break; default: //eğer değişken hiçbir duruma uymamışsa çalışır. ifadeler break; }

57  2003 Prentice Hall, Inc. All rights reserved. 57 2.16 switch çoklu seçim yapısı

58  2003 Prentice Hall, Inc. All rights reserved. 58 2.16 switch çoklu seçim yapısı Örnek –Kullanıcıdan notlar okunur (A-F) –Her bir nottan kaçtane girilmiş sayılır Karakterler –Tek karakterler char tipindedir. char 1-byte’lık tamsayılardır, char’ lar tamsayı olarak da kaydedilebilir. –Karakterler int veya char olarak düşünülebilir 97 sayısı ‘a’ karakterinin tamsayı karşılığıdır (ASCII) Aşağıdaki şekilde her karakterin tamsayı değeri yazdırılabilir cout ( 'a' ) << endl; Karakter (a) degeri 97

59  2003 Prentice Hall, Inc. All rights reserved. Outline 59 fig02_22.cpp (1 of 4) 1 // Fig. 2.22: fig02_22.cpp 2 // Harf notlarını syaan program. 3 #include 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 10 int main() 11 { 12 char not; // bir not 13 int aSay = 0; // A ların sayısı 14 int bSay = 0; 15 int cSay = 0; 16 int dSay = 0; 17 int fSay = 0; 18 19 cout << “Notu girin." << endl 20 << “Bitirmek için EOF karakterini girin." << endl; 21

60  2003 Prentice Hall, Inc. All rights reserved. Outline 60 fig02_22.cpp (2 of 4) 22 while ( ( not = cin.get() ) != EOF ) { 24 26 switch ( not ) { // switch yapısı while’ın içinde 27 28 case 'A': 29 case 'a': 30 ++aSay; 31 break; 32 33 case 'B': 34 case 'b': 35 ++bSay; 36 break; 37 38 case 'C': 39 case 'c': 40 ++cSay; 41 break; 42 cin.get() nokta kullanılır (6.bölümde açıklanacak). Bu fonksiyon kullanıcıdan 1 karakter okur ve not’a kaydedilir. cin.get() çalıştığında eğer EOF(end-of-file) karakteri girildiyse EOF karakterini döndürür, bu da girişlerin bittiğini belirler. EOF karakteri ctrl-z dir.

61  2003 Prentice Hall, Inc. All rights reserved. Outline 61 fig02_22.cpp (3 of 4) 43 case 'D': 44 case 'd': 45 ++dCount; 46 break; 47 48 case 'F': 49 case 'f': 50 ++fCount; 51 break; 52 53 case '\n': // newline, 54 case '\t': // tab, 55 case ' ': // boşluk 56 break; 57 58 default: // tüm diğer karakterler için 59 cout << “Yanlış harf notu yazdınız." 60 << " Yeni bir not yazınız." << endl; 61 break; 62 63 } // switch sonu 64 65 } // while sonu 66 default ifadesi diğer tüm durumları kapsar. Enter tuşuna basıldığında veya boşluk tuşuna basıldığında karakter olarak algılanmaması için yazlıması gerekir

62  2003 Prentice Hall, Inc. All rights reserved. Outline 62 fig02_22.cpp (4 of 4) 67 68 cout << "\n\n Harf notlarının sayısı :" 69 << "\nA: " << aCount 70 << "\nB: " << bCount 71 << "\nC: " << cCount 72 << "\nD: " << dCount 73 << "\nF: " << fCount 74 << endl; 75 76 return 0; 77 78 } // main sonu

63  2003 Prentice Hall, Inc. All rights reserved. Outline 63 fig02_22.cpp output (1 of 1) Notu girin. Bitirmek için EOF karakterini girin. a B c C A d f C E Yanlis harfnotu yazdınız. Yeni bir not yazınız D A b ^Z Harf notlarının sayısı : A: 3 B: 2 C: 3 D: 2 F: 1

64  2003 Prentice Hall, Inc. All rights reserved. 64 2.17do/while döngüsü while yapısına benzer –do/while döngüsünde devam koşuluna sonunda bakılır, while’da ise döngünün başındadır. –do/while yapısında döngüdeki ifadeler en az bir kez yürütülür Yapısı do { ifadeler } while ( koşul );

65  2003 Prentice Hall, Inc. All rights reserved. 65 2.17do/while döngüsü

66  2003 Prentice Hall, Inc. All rights reserved. Outline 66 fig02_24.cpp (1 of 1) fig02_24.cpp output (1 of 1) 1 // Fig. 2.24: fig02_24.cpp 2 // do/while döngüsünün kullanılışı. 3 #include 4 5 using std::cout; 6 using std::endl; 7 8 int main() 10 { 11 int sayac = 1; // sayacın ilk değeri 12 13 do { 14 cout << sayac << " "; // sayac yazdırılır 15 } while ( ++sayac <= 10 ); // do/while sonu 16 17 cout << endl; 18 19 return 0; 20 21 } 1 2 3 4 5 6 7 8 9 10 Notice the preincrement in loop-continuation test.

67  2003 Prentice Hall, Inc. All rights reserved. 67 2.18break ve continue ifadeleri break –Döngülerden hemen çıkmak için kullanılır, while, for, do/while, switch –Program döngü yapısından sonraki ilk ifadeden devam eder. Ortak kullanım –Döngüden erken çıkmak için –switch yapısında, break ’den sonraki bölümü atlamak için

68  2003 Prentice Hall, Inc. All rights reserved. Outline 68 fig02_26.cpp (1 of 2) 1 // Fig. 2.26: fig02_26.cpp 2 // for yapısında break kullanılması. 3 #include 4 5 using std::cout; 6 using std::endl; 7 9 int main() 10 { 11 12 int x; 13 15 for ( x = 1; x <= 10; x++ ) { 16 18 if ( x == 5 ) 19 break; // sadece x 5 olduğunda bir sonraki adıma geçer 20 21 cout << x << " "; // x in yazılması 22 23 } // for sonu 24 25 cout << x << " olduğunda cikildi \n" << endl; break e gelindiğinde for dan çıkılır.

69  2003 Prentice Hall, Inc. All rights reserved. Outline 69 fig02_26.cpp (2 of 2) fig02_26.cpp output (1 of 1) 26 27 return 0; 28 29 } 1 2 3 4 5 oldugunda cikildi

70  2003 Prentice Hall, Inc. All rights reserved. 70 2.18break ve continue ifadeleri continue ifadesi –while, for, do/while döngüleri içinde kullanılır –Döngü yapısındaki continue’dan sonraki kısım yapılmaz –Daha sonra sayac artırılıp döngüye devam edilir while ve do/while yapısı –continue ifadesinden hemen sonra döngü devam koşulu test edilir for yapısı –sayac artımı yapılır –daha sonra döngü devam koşulu test edilir

71  2003 Prentice Hall, Inc. All rights reserved. Outline 71 fig02_27.cpp (1 of 2) 1 // Fig. 2.27: fig02_27.cpp 2 // for içinde continue kullanılması. 3 #include 4 5 using std::cout; 6 using std::endl; 7 9 int main() 10 { 12 for ( int x = 1; x <= 10; x++ ) { 13 14 // x 5 olduğunda bir sonraki tekrara geçilir 15 if ( x == 5 ) 16 continue;// döngüdeki kalan kısım atlanıp döngü başına geçilir 17 18 cout << x << " "; 19 20 } // for sonu 21 22 cout << "5 atlanarak diğerleri yazılır\n" 23 << endl; 24 25 return 0; Bir sonraki tekrara geçilir

72  2003 Prentice Hall, Inc. All rights reserved. Outline 72 fig02_27.cpp (2 of 2) fig02_27.cpp output (1 of 1) 26 27 } 1 2 3 4 6 7 8 9 10 5 atlanarak diğerleri yazılır

73  2003 Prentice Hall, Inc. All rights reserved. 73 2.19Mantık operatörleri Döngülerde ve if ifadelerinde koşul olarak kullanılır && (lojik AND ) –doğru eğer her iki koşul da doğru’ ysa if ( cins == 1 && yas >= 65 ) ++bayan; || (lojik OR ) –doğru eğer koşullardan biri doğru’ ysa if ( ort >= 90 || final >= 90 ) cout << “Ogrencinin notu A" << endl;

74  2003 Prentice Hall, Inc. All rights reserved. 74 2.19Mantık operatörleri ! (lojik DEĞİL ) –Eğer koşul yanlış ’ sa sonuç doğru olur, if ( !( not == gozcu ) ) cout << “Bir sonraki not " << not << endl; –Eğer koşul doğru ’ysa sonuç yanlış olur if ( not != gozcu ) cout << " Bir sonraki not " << not << endl;

75  2003 Prentice Hall, Inc. All rights reserved. 75 2.20Eşitlik (==) ve Atama(=) Operatörleri Genellikle yapılan bir hatadır –Sentaks hatası vermez Sorun –Karar verme ifadelerinde atama yoktur sıfır : yanlışı, sıfırdan başka bir değer : doğru yu gösterir –Atama işlemleri bir değer ataması yapar

76  2003 Prentice Hall, Inc. All rights reserved. 76 2.20 Eşitlik (==) ve Atama(=) Operatörleri Örnek if ( pay == 4 ) cout << "bonus kazandınız!" << endl; –Eğer pay 4 ise, bonus verilir Eğer == ile = yer değiştirirse if ( pay = 4 ) cout << "bonus kazandınız!" << endl; –Pay 4 yapılır(önceki değeri önemli değil ) –İfade doğru olur (4 sıfırdan farklı bir değer olduğu için) –Her ne durumda olursa olsun bonus verilir

77  2003 Prentice Hall, Inc. All rights reserved. 77 2.20 Eşitlik (==) ve Atama(=) Operatörleri Soldaki değerler –Eşitliğin sol tarafına yazılabilen değerler –Değeri değişir x = 4; Sağdaki değerler –Sadece eşitliğin sağ tarafına yazılabilirler –Sabitler, sayılar (örneğin 4 = x; yazılmaz) Sol değerler sağa yazılabilir ancak, sağ değerler sola yazılamaz

78  2003 Prentice Hall, Inc. All rights reserved. 78 2.21Yapısal programlama özeti

79  2003 Prentice Hall, Inc. All rights reserved. 79 2.21 Yapısal programlama özeti Yapısal programlama –Anlaşılması, test edilmesi, hata düzeltilmesi kolaydır Yapısal programlamanın kuralları –Sadece tek-giriş tek-çıkışlı kontrol yapıları kullanılır –Kurallar 1) Basit bir “akış diyagramı” ile başlar 2) Her dikdörtgen kendi içinde iki dikdörtgene ayrılabilir 3) Her dikdörtgen herhangi bir kontrol yapısıyla yer değiştirebilir (sıralı, if, if/else, switch, while, do/while or for) 4) Kural 2 ve 3 herhangi bir sırada ve bir çok kez uygulanabilir

80  2003 Prentice Hall, Inc. All rights reserved. 80 2.21 Yapısal programlama özeti

81  2003 Prentice Hall, Inc. All rights reserved. 81 2.21 Yapısal programlama özeti

82  2003 Prentice Hall, Inc. All rights reserved. 82 2.21 Yapısal programlama özeti

83  2003 Prentice Hall, Inc. All rights reserved. 83 2.21 Yapısal programlama özeti Tüm programlar aşağıdaki yapılardan ibarettir –Sıralı ifade –Seçim if, if/else, veya switch Her seçim ifadesi if’ lerle yazılabilir –Döngü while, do/while veya for Her döngü ifadesi while ile yazılabilir


" 2003 Prentice Hall, Inc. All rights reserved. 1 Bölüm 2 – Kontrol Yapıları Outline 2.1 Giriş 2.2 Algoritmalar 2.3 Pseudocode 2.4 Kontrol Yapıları 2.5." indir ppt

Benzer bir sunumlar


Google Reklamları