BMT 101 Algoritma ve Programlama I 7. Hafta Yük. Müh. Köksal Gündoğdu 1
C++ Program Denetimi Yük. Müh. Köksal Gündoğdu 2
Program Denetimi Bir program, belirli deyim satırlarından oluşur ve genellikle bu deyimler sırayla işlem görür. Programın işlem görme sırasını değiştirmek mümkündür. Bu sayede, program deyimleri kontrol altına alınır. Kontrol deyimleri programın akışını değiştiren, yönünü belirleyen deyimlerdir. Kontrol deyimleri aynı zamanda döngü deyimleri ile iç içe kullanılabilmektedir. Bir C++ programında denetim deyimleri, aşağıda belirtilen işlemlerde kullanılır: Karşılaştırma işlemleri Döngüler if if-else switch - case for while, do-while goto Bu deyimlerle kullanılan bazı özel deyimler de şunlardır break continue Yük. Müh. Köksal Gündoğdu 3
if-else karar yapısı if deyimi parametre olarak aldığı değer doğru ise kendisinden sonra gelen fonksiyonu yada fonksiyonları gerçekleştirir. Eğer birden fazla deyim kullanılacak ise {} blok içerisine alınır. Blok içine alma { } süslü parantez arasına alma anlamına gelmektedir. Birkaç çeşit kullanımı vardır. Sadece if kullanımı İf else kullanımı İf- else if else if else kullanımı Yük. Müh. Köksal Gündoğdu 4
1. Sadece if Kullanımı: if ( [ifade] ) [deyim1]; [deyim2]; if-else karar yapısı Eğer ifade doğru ise deyim1 ve deyim2 çalışır. Yanlış ise deyim1 çalışmaz, sadece deyim2 çalışır. Bu kullanım şekli if 'ten sonra sadece bir adet deyim çalıştırmak içindir. İf akış şeması aşağıda verilmiştir. Yük. Müh. Köksal Gündoğdu 5
1. Sadece if Kullanımı: (Devam 1) if-else karar yapısı Eğer birçok deyim çalıştırmak istiyorsanız aşağıdaki gibi bir kod bloğu açmalısınız. if ( [ifade] ) { [deyim1]; [deyim2];. } if kelimesinin Türkçe karşılığı eğer anlamına gelmektedir. Eğer if ile verilen ifade doğruysa if'ten sonraki bloktaki fonksiyonları gerçekleştir. Doğru değilse if ten sonraki bloğu atla (yok say). Yük. Müh. Köksal Gündoğdu 6
2. if-else Kullanımı: if-else karar yapısı if ( [ifade] ) { [deyim1];. } else( [ifade] ) { [deyim1];. } [deyim3]; Soldaki kodda ifade doğru ise deyim1 ve deyim3 yanlış ise deyim2 ve deyim3 işlenir. Yük. Müh. Köksal Gündoğdu 7
if-else karar yapısı 3. if-else if - else Kullanımı: if ( [ifade] ) { [deyim1];. } else if( [ifade] ) { [deyim1];. }.. else( [ifade] ) // bazı kodlarda else kullanılmayabilir { [deyim1];. } Yük. Müh. Köksal Gündoğdu 8
Örnek Uygulamalar Örnek 1:Girilen iki sayıdan büyük olan bulan programın akış şemasını çizerek C++ kodlarını yazınız. Yük. Müh. Köksal Gündoğdu 9
Örnek Uygulamalar Yük. Müh. Köksal Gündoğdu 10
Örnek Uygulamalar Çözüm 1:Girilen iki sayıdan büyük olan bulan program? Yük. Müh. Köksal Gündoğdu 11
Örnek Uygulamalar Örnek :Girilen vize ve final notlarına göre öğrencinin dersten geçip geçmediğini bulan programın akış şemasını çizip C++ kodlarını yazınız Yük. Müh. Köksal Gündoğdu 12
Örnek Uygulamalar Yük. Müh. Köksal Gündoğdu 13
Örnek Uygulamalar Yük. Müh. Köksal Gündoğdu 14
Örnek Uygulamalar Örnek: ax²+bx+c=0 şeklinde verilen 2. derece denklemin köklerini bulan programın akış diyagramını çizip, C++ program kodlarını yazınız. Yük. Müh. Köksal Gündoğdu 15
Örnek Uygulamalar Yük. Müh. Köksal Gündoğdu 16
if-else karar yapısı Çözüm 2:İkinci dereceden denklem köklerini bulan program? Yük. Müh. Köksal Gündoğdu 17
if-else karar yapısı Örnek 3:Dışarıdan girilen bir notu okuduktan sonra aşağıdaki not değerlendirme sistemine göre sınıflayan bir program yazınız. Yük. Müh. Köksal Gündoğdu 18
if-else karar yapısı Çözüm 3:Dışarıdan girilen bir notu okuduktan sonra aşağıdaki not değerlendirme sistemine göre sınıflayan bir program yazınız. Yük. Müh. Köksal Gündoğdu 19
Blok Blok C++ da {} arası demektir. Kontrol komutlarında(if,swtich/case v.s) birden fazla deyim ve ifade yazılacağı durumlarda blok kullanıldığı gibi, doğrudan blok kullanılabilir. Bu durumda değişken tanımlamaları sadece ait oldukları blok içerisinde geçerlidir. Aşağıdaki örnek blok kullanımını göstermektedir. Yük. Müh. Köksal Gündoğdu 20
Örnek Uygulamalar Örnek: Klavyeden girilen sayının pozitif ya da negatif olduğunu bulan programın akış şemasını çizerek C++ program kodlarını yazınız. Yük. Müh. Köksal Gündoğdu 21
Örnek Uygulamalar Yük. Müh. Köksal Gündoğdu 22
Örnek Uygulamalar Yük. Müh. Köksal Gündoğdu 23
Örnek Uygulamalar Örnek: Klavyeden girilen a sayısının yine klavyeden girilen b sayısına tam bölünüp bölünemediğini hesaplayan programın akış diyagramını hazırlayıp C++ program kodlarını yazınız. Yük. Müh. Köksal Gündoğdu 24
Örnek Uygulamalar Başla a, b a mod b=0 Evet a, sayısı,b, sayısına tam bölünüyor Hayır a, sayısı,b, sayısına tam bölünmüyor Dur Yük. Müh. Köksal Gündoğdu 25
Örnek Uygulamalar Yük. Müh. Köksal Gündoğdu 26
Örnek Uygulamalar Örnek: Klavyeden girilen iki sayı için seçilen işlem türüne göre (toplamaçıkarma- çarpma- bölme) sonuç üreten programın akış diyagramını çizip, C++ program kodlarını yazınız. Yük. Müh. Köksal Gündoğdu 27
Başla sayi1,sayi2 1- Toplama 2- Çıkarma 3- Çarpma 4-Bölme sec sec=1 E sayi1+sayi2 H sec=2 E sayi1-sayi2 sec=3 H E sayi1*sayi2 H sayi1/sayi2 Dur Yük. Müh. Köksal Gündoğdu 28
Örnek Uygulamalar Yük. Müh. Köksal Gündoğdu 29
Switch-Case karar yapısı Son örnekte görüldüğü gibi eğer kontrol edilmesi gereken işlem sayısı çok fazla ise if,else if ve else deyimlerini takip etmek zorlaşmaktadır. İşte switch/ case bir değişkenin çeşitli değerlerine göre program kontrolünü yönlendiren bir ifadedir. Kullanımı aşağıda verilmiştir. switch (değişken) { case deger1:. break; case deger2:.. break;.. case deger_n:. break; default:. break; } Yük. Müh. Köksal Gündoğdu 30
Switch-Case karar yapısı Örnek 4:İki kenarı girilen bir dik üçgende çeşitli hesaplamalar aynı programda yapılmak istensin. 4 farklı seçenek olsun. 1. Hipotenüs hesabı 2. Alan hesabı 3. Üçgenin açıları hesabı 4.Çıkış olsun. Bu programı yazınız. Yük. Müh. Köksal Gündoğdu 31
Çözüm 4: Switch-Case karar yapısı Yük. Müh. Köksal Gündoğdu 32
Switch-Case karar yapısı Örnek 5:Switch/Case ile dört işlem yapan bir program yazınız. Dışarıdan 1. Sayi operatör ve 2. Sayi girildiğinde operatöre göre işlem yapılacak. Yük. Müh. Köksal Gündoğdu 33
Çözüm 5: Switch-Case karar yapısı Yük. Müh. Köksal Gündoğdu 34
Goto deyimi Koşulsuz olarak yanında belirtilen etiketin bulunduğu yere dallanmayı sağlar. Çok fazla kullanılması tercih edilmez. Program karmaşasına ve performans kaybına neden olabilir. Ama bazı spesifik çıkmazlarda hayat kurtarıcı olabilir. Kullanımı: goto etiket; Yük. Müh. Köksal Gündoğdu 35
Goto deyimi Örnek 6:Tek basamaklı sayıların okunuşunu veren program. Yük. Müh. Köksal Gündoğdu 36
Çözüm 6: Goto deyimi Yük. Müh. Köksal Gündoğdu 37