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

Slides:



Advertisements
Benzer bir sunumlar
Bölüm 4 Seçme Komutları Koşul İfadesi if Komutu Bileşik Komut
Advertisements

Karar Verme: Eşitlik ve Karşılaştırma Operatörleri
Dersin Adı:ALGORİTMA GELİŞTİME TEKNİKLERİ Dersin Kodu:YBS506 Konu:Kontrol Yapıları(if / if-else) 2.HAFTA.
Bölüm 4 Seçme Komutları Koşul İfadesi if Komutu Bileşik Komut
Değişkenler ve bellek Değişkenler
JavaScript Birinci Hafta.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
BİLEŞİK ATAMA VE DÖNGÜLER
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Kontrol İfadeleri : 2.Kısım
KOŞUL İFADELERİ onbirc.com/133.
Kontrol Çevrimleri FOR WHILE DO-WHILE IF-ELSE SWITCH-CASE-DEFAULT
Bölüm 5 – Kontrol İfadeleri : 2.Kısım
Yrd. Doç.Dr. Nilgün GÜLER BAYAZIT
Bölüm 4 – Kontrol İfadeleri:1.kısım
Bölüm 5 – Kontrol İfadeleri : 2.Kısım
4 Kontrol Yapıları: 1.Bölüm.
Bölüm 2: Program Denetimi
EDUTIME Java Day 4 Serdar TÜRKEL.
BPR151 ALGORİTMA VE PROGRAMLAMA - I
Karar ifadeleri ve Döngüler
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Bölüm 5 Döngü Komutları while Komutu Diğer Operatörler Bileşik Komut
Operatörler.
Bölüm 3 – Yapısal Programlama
T-SQL-2.Konu Akış Kontrolleri.
Yapısal Program Geliştirme – if, if-else
 2006 Pearson Education, Inc. All rights reserved. Görsel C# ile Windows Programlama Güz 2009 (5. Hafta)
Operatörler ve Denetim Yapıları
Veri Yapıları ve Algoritmalar
Outline 4.1 Giriş 4.2 Algoritmalar 4.3 Pseudocode 4.4 Kontrol İfadeleri 4.5 if tek-seçimli ifadeler 4.6 if else seçimli ifadeler 4.7 while döngü ifadeleri.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Döngü Yapıları.
Bölüm 5 Döngü Komutları while Komutu Diğer Operatörler Bileşik Komut
Koşul İfadeleri ve Akış Kontrolü Yazdığımız uygulamanın hangi koşulda nasıl davranacağını belirterek bir akış kontrolü oluşturabilmek için koşul ifadelerini.
Akış Kontrol Mekanizmaları
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Gelişmiş Envanter Uygulaması.
Kontrol Yapıları ve Döngüler
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
 2006 Pearson Education, Inc. All rights reserved Kontrol İfadeleri: 2. Bölüm.
Chapter 4: Making Decisions
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Bu derste şunları öğreneceğiz: –CheckBox es kullanımı.
Çoklu dallanma seçimi: switch
Mantıksal Operatörler ve Denetim Yapıları
Bölüm 4 – C’de Program Kontrolü
PHP'de Program Denetimi
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Faiz Hesaplama Uygulaması Amaçlar Bu derste öğrenilecekler:
Veri Yapıları ve Algoritmaları ders_1
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Tutorial 9 – Araba Ödeme Hesaplaması Uygulaması Bu.
PROGRAM DENETİM DEYİMLERİ
4. KONTROL VE DÖNGÜ KOMUTLARI
String class String karakterler dizisidir
Outline 4.1 Giriş 4.2 Algoritmalar 4.3 Pseudocode 4.4 Kontrol İfadeleri 4.5 if tek-seçimli ifadeler 4.6 if else seçimli ifadeler 4.7 while döngü ifadeleri.
KOŞUL İFADELERİ.
Akış Kontrolü ve Döngüler
Bugünkü Konular Döngüler ve Akış Diyagramları C de Döngü Tanımlama
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
YAPISAL PROGRAMLAMA KAVRAMI
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
O R T L G İ M A A Ve Akış şemaları.
İnternet Programlama - 2
C Programlama Yrd.Doç.Dr. Ziynet PAMUK BMM211-H04
BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ
4- OPERATÖR – koşul - döngü Nesne Yönelimli Programlama - i
YAPISAL PROGRAMLAMA Hafta-4
Bölüm 2: Program Denetimi
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

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

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

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ı

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

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

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

2.4 Kontrol yapıları C++ keywords Değişken ismi olarak kullanılamazlar

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

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

Ö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ış  

Ö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: 3 - 4 true

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ı";

Üç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

2.6 if/else Yapısı

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”

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

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.

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;  

2.7 while yapısı

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.

fig02_07.cpp (1 of 2) 1 // Fig. 2.7: fig02_07.cpp 2 // sayac kontrollu döngü ile ortalama bulman program. 3 #include <iostream> 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 fig02_07.cpp (1 of 2)

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 } 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

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

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ı

fig02_09.cpp (1 of 3) 1 // Fig. 2.9: fig02_09.cpp 2 // Gözcü kontrolü ile ortalama hesaplanması 3 #include <iostream> 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 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 { 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; fig02_09.cpp (1 of 3)

static_cast<double>() toplamı geçici olarak double olarak alır 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< 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.

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 } 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

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.

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

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

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

fig02_11.cpp (1 of 2) 1 // Fig. 2.11: fig02_11.cpp 2 // Test sonuçları analizi. 3 #include <iostream> 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 fig02_11.cpp (1 of 2)

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 } fig02_11.cpp (2 of 2)

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)

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 -= 4 (d = d - 4) e *= 5 (e = e * 5) f /= 3 (f = f / 3) g %= 9 (g = g % 9)

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.

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

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

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

fig02_14.cpp (1 of 2) 1 // Fig. 2.14: fig02_14.cpp 2 // Ön artırma ve son artırma. 3 #include <iostream> 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 fig02_14.cpp (1 of 2)

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

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ı

fig02_16.cpp (1 of 1) 1 // Fig. 2.16: fig02_16.cpp 2 // Sayac kontrollü döngü 3 #include <iostream> 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 } fig02_16.cpp (1 of 1)

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

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

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

fig02_17.cpp (1 of 1) 1 // Fig. 2.17: fig02_17.cpp 2 // Sayaç kontrollü döngü. for ile. 3 #include <iostream> 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 } fig02_17.cpp (1 of 1)

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

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;

2.14 for döngüsü

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 <iostream> 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 } fig02_20.cpp (1 of 1) fig02_20.cpp output (1 of 1) Toplam : 2550

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

pow fonksiyonunu kullanmak için <cmath> gereklidir 1 // Fig. 2.21: fig02_21.cpp 2 // Calculating compound interest. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 using std::ios; 8 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 { 20 double miktar; 21 double anapara = 1000.0; 22 double faiz = .05; 23 fig02_21.cpp (1 of 2) pow fonksiyonunu kullanmak için <cmath> gereklidir

21 karaktere yazılmaını sağlar. Eger sayı 21den az ise sağa yaslar. 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 } 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

Sayılar setw da verilen degerlere göre saya dayalı yazılmış (4 ve 21). 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 fig02_21.cpp output (1 of 1) Sayılar setw da verilen degerlere göre saya dayalı yazılmış (4 ve 21).

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; }

2.16 switch çoklu seçim yapısı

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

fig02_22.cpp (1 of 4) 1 // Fig. 2.22: fig02_22.cpp 2 // Harf notlarını syaan program. 3 #include <iostream> 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 fig02_22.cpp (1 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. fig02_22.cpp (2 of 4)

default ifadesi diğer tüm durumları kapsar. 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 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.

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 fig02_22.cpp (4 of 4)

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)

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 );

2.17 do/while döngüsü

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 <iostream> 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 } fig02_24.cpp (1 of 1) fig02_24.cpp output (1 of 1) Notice the preincrement in loop-continuation test. 1 2 3 4 5 6 7 8 9 10

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

break e gelindiğinde for dan çıkılır. 1 // Fig. 2.26: fig02_26.cpp 2 // for yapısında break kullanılması. 3 #include <iostream> 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; fig02_26.cpp (1 of 2) break e gelindiğinde for dan çıkılır.

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

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

Bir sonraki tekrara geçilir 1 // Fig. 2.27: fig02_27.cpp 2 // for içinde continue kullanılması. 3 #include <iostream> 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; fig02_27.cpp (1 of 2) Bir sonraki tekrara geçilir

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 fig02_27.cpp (2 of 2) fig02_27.cpp output (1 of 1)

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;

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;

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

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

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

2.21 Yapısal programlama özeti    

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    

2.21 Yapısal programlama özeti

2.21 Yapısal programlama özeti

2.21 Yapısal programlama özeti

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