Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Bölüm 2 – Kontrol Yapıları

Benzer bir sunumlar


... konulu sunumlar: "Bölüm 2 – Kontrol Yapıları"— Sunum transkripti:

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) Algoritma Formülasyonu: Tepeden aşağı adımsal sadeleştirme: Durum 2 (Sentinel-kontrollü tekrar) Algoritma Formülasyonu: Tepeden aşağı adımsal sadeleştirme: Durum 3 (içiçe kontrol yapıları) Atama Operatörü Artırma ve Azaltma opratörü Sayaç kontrollü yapının özellikleri for Tekrar yapısı for yapısı ile örnekler

2 Bölüm 2 – Kontrol Yapıları
Outline switch Çoklu seçim yapısı do/while Tekrar Yapısı break and continue Deyimleri Mantık (Lojik) Operatörleri Eşitlik (==) ve Atama (=) Operatörlerinin karıştırılması Yapısal-Programlama Özeti

3 Bir program yazmadan önce
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 2.2 Algoritmalar Hesaplama işlemleri Algoritma Program kontrolü
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 Bilgisayarda çalıştırılamaz
2.3 Pseudocode 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 3 kontrol yapısı (Bohm ve Jacopini)
2.4 Kontrol 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 2.4 Kontrol yapıları C++ keywords Değişken ismi olarak kullanılamazlar

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 2.5 if 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 Örnek Pseudocode’un C++ a çevrilmesi
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 Örnek pseudocode ‘un akış diyagramı
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: true

12 2.6 if/else Yapısı if if/else Pseudocode C++ kodu
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 Üçlü karşılaştırma operatörü (?:)
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 << ( not >= 60 ? “Geçti” : “Kaldı” ); Koşul Doğruysa yapılacak Yanlışsa yapılacak

14 2.6 if/else Yapısı

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 2.6 if/else Yapısı Örnek if ( notu >= 90 ) // 90 ve üstü cout << "A"; else if ( notu >= 80 ) // cout << "B"; else if ( notu >= 70 ) // cout << "C"; else if ( notu >= 60 ) // cout << "D"; else // 60 dan az cout << "F";

17 2.6 if/else Yapısı Birleşik deyim Blok
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 2.7 while yapısı Tekrar yapısı Örnek
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 2.7 while yapısı

20 2.8 sayaç kontrollü döngü Sayaç kontrollü döngü Kesin döngü Örnek
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 fig02_07.cpp (1 of 2) 1 // Fig. 2.7: fig02_07.cpp
// sayac kontrollu döngü ile ortalama bulman program. #include <iostream> 4 using std::cout; using std::cin; using std::endl; 8 9 10 int main() 11 { int toplam; // girilen notların toplamı int sayac; // notların sayacı int notu; // öğrencinin notu int ortalama; // notların ortalaması 16 17 toplam = 0; sayac = 1; 20 fig02_07.cpp (1 of 2)

22 fig02_07.cpp (2 of 2) fig02_07.cpp output (1 of 1)
21 while ( sayac <= 10 ) { // 10 kere dönecek cout << “Notu girin: "; cin >> notu; // kullanıcıdan not okunur toplam = toplam + notu; sayac = sayac + 1; // sayac bir arttırılır } 28 29 ortalama = toplam / 10; // tamsayı bölme 31 // sonucun görüntülenmesi cout << “Sınıf ortalaması : " << ortalama << endl; 34 return 0; 36 37 } fig02_07.cpp (2 of 2) fig02_07.cpp output (1 of 1) 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 Problemi değiştirelim:
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 Programların genelde üç bölümü vardır
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 fig02_09.cpp (1 of 3) 1 // Fig. 2.9: fig02_09.cpp
// Gözcü kontrolü ile ortalama hesaplanması #include <iostream> 4 using std::cout; using std::cin; using std::endl; using std::fixed; 9 10 #include <iomanip> // parameterized stream manipulators 11 12 using std::setprecision; // ekrana yazdırırken formatın ayarlanması 13 14 15 int main() 16 { int toplam; //notların toplamı int sayac; // not sayacı int notu; // öğrencinin notu 20 double ortalama; // ortalama (gerçel sayı olarak) 22 // başlangıç toplam = 0; sayac = 0; fig02_09.cpp (1 of 3)

26 static_cast<double>() toplamı geçici olarak double olarak alır
26 // işlem bölümü // ilk notun kullanıcıdan alınması cout << “Notu girin, cıkıs icin -1 : "; cin >> notu; 31 // gözcü değer girilene kadar tekrar eden döngü while ( notu != -1 ) { toplam = toplam + notu; sayac = sayac + 1; 36 cout << " Notu girin, cıkıs icin -1 : "; cin >> notu; // sıradaki not 39 } // while sonu 41 // son bölüm // eğer kullanıcı en azından bir not girdiyse ... if ( sayac != 0 ) { 45 // girilen tüm notların ortalamasının bulunması ortalama = static_cast< double >( toplam ) / sayac; 48 fig02_09.cpp (2 of 3) static_cast<double>() 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 fig02_09.cpp (3 of 3) fig02_09.cpp output (1 of 1)
// ortalamanın virgülden sonra iki hane ile gösterilmesi cout << “Sınıf ortalaması : " << setprecision( 2 ) << fixed << ortalama << endl; 52 } // if/else ‘ in if kısmının sonu 54 else // hiç not girilmediyse, mesaj yazılır cout << “Hiç not girlmedi.." << endl; 57 return 0; 59 60 } setprecision(2)noktadan sonra 2 rakam yazılmasını sağlar. Yuvarlanmıştır. Setprecision ı kullanmak için <iomanip> include edilmelidir fixed sonucun sabit noktalı formatta verilmesini sağlar (bilimsel gösterimde değil). Fixed <iostream> in içindedir fig02_09.cpp (3 of 3) fig02_09.cpp output (1 of 1) 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

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 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 to Initialize passes to zero Initialize failures to zero Initialize student counter to one

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 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 fig02_11.cpp (1 of 2) 1 // Fig. 2.11: fig02_11.cpp
// Test sonuçları analizi. #include <iostream> 4 using std::cout; using std::cin; using std::endl; 8 9 10 int main() 11 { 12 int gecen = 0; // geçenlerin sayısı int kalan = 0; // kalanların sayısı int ogrenci = 1; // öğrenci sayacı int sonuc; // test sonucu 17 // sayac kontrollü döngü kullanarak 10 sonuc incelenecek while ( ogrenci <= 10 ) { 20 // mesaj yazıp kullanıcıdan test sonucu iste cout << “Sonucu girin (1 = gecti, 2 = kaldı): "; cin >> sonuc; 24 fig02_11.cpp (1 of 2)

33 fig02_11.cpp (2 of 2) 25 // sonuc 1 ise, gecen sayacı artacak
if ( sonuc == 1 ) // while içinde if/else gecen = gecen + 1; 28 else // Eğer sonuc 1 değilse kalan artacak kalan = kalan + 1; 31 // öğrenci sayacı bir artacak ki 10 olduğunda döngü sona ersin ogrenci = ogrenci + 1; 34 } // while’ın sonu 36 // gecen ve kalan sayaclarının ekrana yazdırılması cout << “Gecti " << gecen << endl; cout << “Kaldi " << kalan << endl; 40 41 if ( gecen > 8 ) cout << “Maasi yukseltilecek " << endl; 44 return 0; 46 47 } fig02_11.cpp (2 of 2)

34 fig02_11.cpp output (1 of 1) Sonucu girin (1 = gecti, 2 = kaldı): 1
Kaldi 4 Gecti 9 Kaldi 1 Maasi yukseltilecek fig02_11.cpp output (1 of 1)

35 Atama ifadesinin kısa yazılması
2.11 Atama 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 -= (d = d - 4) e *= (e = e * 5) f /= (f = f / 3) g %= (g = g % 9)

36 2.12 Artı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 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 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 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++; aynıdır

40 fig02_14.cpp (1 of 2) 1 // Fig. 2.14: fig02_14.cpp
// Ön artırma ve son artırma. #include <iostream> 4 using std::cout; using std::endl; 7 8 int main() 10 { int c; 12 // son artırma c = 5; // c ye 5 atama cout << c << endl; // print 5 cout << c++ << endl; // print 5 sonra artır cout << c << endl << endl; // print 6 18 // ön artırma c = 5; // c ye 5 atama cout << c << endl; // print 5 cout << ++c << endl; // önce artır sonra print 6 cout << c << endl; // print 6 fig02_14.cpp (1 of 2)

41 fig02_14.cpp (2 of 2) fig02_14.cpp output (1 of 1)
24 return 0; 26 27 } fig02_14.cpp (2 of 2) fig02_14.cpp output (1 of 1) 5 6

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 fig02_16.cpp (1 of 1) 1 // Fig. 2.16: fig02_16.cpp
// Sayac kontrollü döngü #include <iostream> 4 using std::cout; using std::endl; 7 8 int main() 10 { int sayac = 1; // ilk değer 12 while ( sayac <= 10 ) { // sayac son değer koşulu cout << sayac << endl; // sayacı ekrana yaz sayac; // sayacın arttırılması 16 } // while sonu 18 return 0; 20 21 } fig02_16.cpp (1 of 1)

44 1 2 3 4 5 6 7 8 9 10 fig02_16.cpp output (1 of 1)

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 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 fig02_17.cpp (1 of 1) 1 // Fig. 2.17: fig02_17.cpp
// Sayaç kontrollü döngü. for ile. #include <iostream> 4 using std::cout; using std::endl; 7 int main() 9 { for ( int c = 1; c <= 10; c++ ) cout << c << endl; 12 return 0; 14 15 } fig02_17.cpp (1 of 1)

48 1 2 3 4 5 6 7 8 9 10 fig02_17.cpp output (1 of 1)

49 for döngüleri while ile yazılabilir
2.14 for 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 2.14 for döngüsü

51 fig02_20.cpp (1 of 1) fig02_20.cpp output (1 of 1)
// Fig. 2.20: fig02_20.cpp // for ile toplama. #include <iostream> 4 using std::cout; using std::endl; 7 int main() 10 { int toplam = 0; 12 for ( int num = 2; num <= 100; num += 2 ) toplam += num; 16 cout << “Toplam : " << toplam << endl; return 0; 19 20 } fig02_20.cpp (1 of 1) fig02_20.cpp output (1 of 1) Toplam : 2550

52 2.15 for ile örnekler Birleşik faiz hesabı
Bir kişi hesabına %5 faiz ile $ 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 pow fonksiyonunu kullanmak için <cmath> gereklidir
// Fig. 2.21: fig02_21.cpp // Calculating compound interest. #include <iostream> 4 using std::cout; using std::endl; using std::ios; using std::fixed; 9 10 #include <iomanip> 11 12 using std::setw; 13 using std::setprecision; 14 15 #include <cmath> 16 18 int main() 19 { double miktar; double anapara = ; double faiz = .05; 23 fig02_21.cpp (1 of 2) pow fonksiyonunu kullanmak için <cmath> gereklidir

54 21 karaktere yazılmaını sağlar. Eger sayı 21den az ise sağa yaslar.
// tablo başlıkları cout << "Yıl" << setw( 21 ) << “Miktar" << endl; 26 cout << fixed << setprecision( 2 ); 29 for ( int yil = 1; yil <= 10; yil++ ) { 32 // yila göre miktarın hesaplanması miktar = anapara * pow( oran, yil ); 35 // bir satırın yazılması cout << setw( 4 ) << yil << setw( 21 ) << miktar << endl; 39 } // for sonu 41 return 0; 43 } 21 karaktere yazılmaını sağlar. Eger sayı 21den az ise sağa yaslar. fig02_21.cpp (2 of 2) pow(x,y) = x üzeri y

55 Sayılar setw da verilen degerlere göre saya dayalı yazılmış (4 ve 21).
yil Miktar fig02_21.cpp output (1 of 1) Sayılar setw da verilen degerlere göre saya dayalı yazılmış (4 ve 21).

56 2.16 switch çoklu seçim yapısı
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 default: //eğer değişken hiçbir duruma uymamışsa çalışır. ifadeler break; }

57 2.16 switch çoklu seçim yapısı

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 << “Karakter (" << 'a' << ") değeri " << static_cast< int > ( 'a' ) << endl; Karakter (a) degeri 97

59 fig02_22.cpp (1 of 4) 1 // Fig. 2.22: fig02_22.cpp
// Harf notlarını syaan program. #include <iostream> 4 using std::cout; using std::cin; using std::endl; 8 10 int main() 11 { char not; // bir not int aSay = 0; // A ların sayısı int bSay = 0; int cSay = 0; int dSay = 0; int fSay = 0; 18 cout << “Notu girin." << endl << “Bitirmek için EOF karakterini girin." << endl; 21 fig02_22.cpp (1 of 4)

60 22 while ( ( not = cin.get() ) != EOF ) {
24 switch ( not ) { // switch yapısı while’ın içinde 27 case 'A': case 'a': aSay; break; 32 case 'B': case 'b': bSay; break; 37 case 'C': case 'c': cSay; 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. fig02_22.cpp (2 of 4)

61 default ifadesi diğer tüm durumları kapsar.
case 'D': case 'd': dCount; break; 47 case 'F': case 'f': fCount; break; 52 case '\n': // newline, case '\t': // tab, case ' ': // boşluk break; 57 default: // tüm diğer karakterler için cout << “Yanlış harf notu yazdınız." << " Yeni bir not yazınız." << endl; break; 62 } // switch sonu 64 } // while sonu 66 fig02_22.cpp (3 of 4) Enter tuşuna basıldığında veya boşluk tuşuna basıldığında karakter olarak algılanmaması için yazlıması gerekir default ifadesi diğer tüm durumları kapsar.

62 67 cout << "\n\n Harf notlarının sayısı :" << "\nA: " << aCount << "\nB: " << bCount << "\nC: " << cCount << "\nD: " << dCount << "\nF: " << fCount << endl; 75 return 0; 77 78 } // main sonu fig02_22.cpp (4 of 4)

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

64 2.17 do/while döngüsü while yapısına benzer Yapısı
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 2.17 do/while döngüsü

66 fig02_24.cpp (1 of 1) fig02_24.cpp output (1 of 1)
// Fig. 2.24: fig02_24.cpp // do/while döngüsünün kullanılışı. #include <iostream> 4 using std::cout; using std::endl; 7 int main() 10 { int sayac = 1; // sayacın ilk değeri 12 do { cout << sayac << " "; // sayac yazdırılır } while ( ++sayac <= 10 ); // do/while sonu 16 cout << endl; 18 return 0; 20 21 } fig02_24.cpp (1 of 1) fig02_24.cpp output (1 of 1) Notice the preincrement in loop-continuation test.

67 2.18 break ve continue ifadeleri
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 break e gelindiğinde for dan çıkılır.
// Fig. 2.26: fig02_26.cpp // for yapısında break kullanılması. #include <iostream> 4 using std::cout; using std::endl; 7 int main() 10 { 11 int x; 13 for ( x = 1; x <= 10; x++ ) { 16 if ( x == 5 ) break; // sadece x 5 olduğunda bir sonraki adıma geçer 20 cout << x << " "; // x in yazılması 22 } // for sonu 24 cout << x << " olduğunda cikildi \n" << endl; fig02_26.cpp (1 of 2) break e gelindiğinde for dan çıkılır.

69 fig02_26.cpp (2 of 2) fig02_26.cpp output (1 of 1)
return 0; 28 29 } fig02_26.cpp (2 of 2) fig02_26.cpp output (1 of 1) 5 oldugunda cikildi

70 2.18 break 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 Bir sonraki tekrara geçilir
// Fig. 2.27: fig02_27.cpp // for içinde continue kullanılması. #include <iostream> 4 using std::cout; using std::endl; 7 int main() 10 { for ( int x = 1; x <= 10; x++ ) { 13 // x 5 olduğunda bir sonraki tekrara geçilir if ( x == 5 ) continue;// döngüdeki kalan kısım atlanıp döngü başına geçilir 17 cout << x << " "; 19 } // for sonu 21 cout << "5 atlanarak diğerleri yazılır\n" << endl; 24 return 0; fig02_27.cpp (1 of 2) Bir sonraki tekrara geçilir

72 fig02_27.cpp (2 of 2) fig02_27.cpp output (1 of 1)
26 27 } 5 atlanarak diğerleri yazılır fig02_27.cpp (2 of 2) fig02_27.cpp output (1 of 1)

73 Döngülerde ve if ifadelerinde koşul olarak kullanılır && (lojik AND)
2.19 Mantı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 2.19 Mantı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 2.20 Eş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 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 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 2.21 Yapısal programlama özeti

79 2.21 Yapısal programlama özeti
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 2.21 Yapısal programlama özeti

81 2.21 Yapısal programlama özeti

82 2.21 Yapısal programlama özeti

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


"Bölüm 2 – Kontrol Yapıları" indir ppt

Benzer bir sunumlar


Google Reklamları