Yapısal Program Geliştirme – if, if-else Konular Giriş Algoritmalar Pseudocode (Sahte kodlar) Kontrol yapıları ‘If’ Seçim yapısı Koşul İfadeleri ‘If…Else’ Seçim yapısı İç içe if kontrol yapısı switch Çoklu Seçim Yapısı for Döngü Yapısı ***
Bu bölümde öğrenilecekler: Amaçlar Bu bölümde öğrenilecekler: Temel problem çözme tekniklerinin anlaşılması. Tepeden aşağı, adım adım sadeleştirme tekniği ile algoritma geliştirebilme. if ve if…else seçim deyimlerini kullanabilme. Yapısal programlamayı anlayabilme.
Bir program yazmadan önce: Giriş Bir program yazmadan önce: Problem çok iyi anlaşılmalı Problemin çözümü çok iyi planlanmalı Bir program yazarken: Uygun gruplamalar bilinmeli İyi programlama prensipleri kullanılmalı
Problemlerin çözülmesi Algoritmalar Problemlerin çözülmesi Bütün problemler belli işlemlerin uygun sırada yapılması ile çözülebilir. Algoritma: Bir dizi işlemin belirli bir sırada çalıştırılmasıdır.
Pseudocode (Sahte kodlar) Algoritma geliştirmeye yardımcı olan yapay bir dildir. Konuşma diline yakındır. Bilgisayarda çalıştırılmaz. Bir programı yazmadan önce, programın tümünü algılamamıza yardım eder. C programlama diline çevirmek kolaydır. Sadece programın ana komutlarını içerir.
Kontrol yapıları Sıralı çalışma Kontrol transferi Bohm and Jacopini Komutlar programa yazıldıkları sırada teker teker çalışır. Kontrol transferi Sıradaki komutun çalıştırılmayıp başka bir komutun çalıştırılması Bohm and Jacopini Bütün programlar 3 kontrol yapısı ile yazılabilir. Sıra yapısı: C komutları yazıldıkları sırada çalıştırılır. Seçme yapısı: C de 3 tanedir: if, if…else, ve switch Döngü yapısı: C de 3 tanedir: while, do…while ve for
Kontrol yapıları Şekil 3.1 C deki sıralı yapının akış şeması.
Tek-giriş/tek çıkış kontrol yapısı Kontrol yapıları Akış diyagramı Algoritmanın grafiksel gösterimi Özel şekiller birbirine çizgilerle bağlanır ve oklar akış yönünü gösterir. Dikdörtgen şekli (işlem sembolu): Herhangi bir işlemi gösterir. Oval şekil: Programın veya programın bir bölümünün başlangıcını ve sonunu gösterir. Tek-giriş/tek çıkış kontrol yapısı Bir kontrol yapısının çıkışı diğerinin girişine bağlanır. Programın yapılandırılmasını kolaylaştırır.
‘If’ deyimindeki koşul doğru(true) ise if Seçim Deyimi Seçim yapısı: İşlem gruplarından birini seçmek için kullanılır. Pseudocode: Eğer(if) öğrencinin notu, 60dan büyük veya eşit ise Ekrana “Geçti” yazdır. ‘If’ deyimindeki koşul doğru(true) ise Yazdır deyimi yürütülür ve program bir sonraki deyimden devam eder. If koşulu yanlış(false) ise, yazdırma işlemi yaptırılmaz ve program bir sonraki deyimden devam eder. Satır başındaki boşluklar programın anlaşılmasını kolaylaştırmak içindir. C boşlukları ve satır sonlarını dikkate almaz.
Sahte kod (pseudocode): if Seçim Yapısı Sahte kod (pseudocode): C kodu: if ( grade >= 60 ) printf( "Passed\n" ); C programlama pseudocode’a çok yakındır. Baklava sembolü (karar işareti) Karar verme durumunda olduğunu gösterir. Bir koşul içerir ve bu koşul doğru (true) veya yanlış (false) olabilir. Koşulu test eder, uygun yolu izler.
Koşul İfadesi Koşul İfadeleri ilişkisel ve mantıksal operatörler kullanılarak oluşturulur. İlişkisel Operatörler değerlerin karşılaştırılmasında kullanılır.
Koşul İfadesi Mantıksal Operatörler mantıksal işlemleri gerçekleştirmek amacıyla kullanılır. && Operatörü ! Operatörü || Operatörü
Koşul İfadesi Örnek: a=9, b=9 , c=0, d=5, ch=‘E’
Koşul İfadesi Operatörlerin Öncelik Sıralaması
Koşul İfadesi Örnek: int i=5, j=10, k=20; i > 5 * k % 3 && !(k-2!=18) ↓ i > 5 * k % 3 && !(18!=18) i > 5 * k % 3 && !0 i > 5 * k % 3 && 1 i > 100 % 3 && 1 i > 1 && 1 1 && 1 1
if Seçim Deyimi if deyimi tek giriş tek çıkışlı bir deyimdir. true false not >= 60 “Geçti” yazdır Bir hesaplama sonucu da karar vermek için kullanılabilir. Eğer sonuç sıfır ise – yanlış(false) Sıfır olmayan sayılar için – doğru(true) Örnek: (3–4) - true
if…else Seçim Deyimi Psuedocode: if if…else Eğer koşul doğru ise bir işlem yürütür. if…else Koşul doğru ise bir işlem, değilse başka bir işlem yürütür. Psuedocode: Eğer(if) öğrencinin notu, 60dan büyük veya eşit ise Ekrana “Geçti” yazdır. Aksi halde Ekrana “kaldı” yazdır. Not: Satır girintilerine dikkat
Üçlü koşul operatörü (?:) if…else Seçim Deyimi C program parçası: if ( grade >= 60 ) printf( "Passed\n"); else printf( "Failed\n"); Üçlü koşul operatörü (?:) Üç argüman alır (koşul, eğer doğru ise bir değer, eğer yanlış ise başka değer) Aşağıdaki ifade printf( "%s\n", grade >= 60 ? "Passed" : "Failed" ); şöyle de yazılabilir.: grade >= 60 ? printf( “Passed\n” ) : printf( “Failed\n” );
if…else Seçim Deyimi İçiçe if…else deyimi if…else deyiminin akış diyagramı İçiçe if…else deyimi Bir çok durumu if…else deyimi içine yazacağımız başka if…else deyimleri ile test edebiliriz. İlk doğru olan if…else deyiminden sonrakiler atlanır. true false print “Failed” print “Passed” not >= 60
if…else Seçim Deyimi İçiçe if…else deyiminin pseudocode’u Eğer(If) öğrencinin notu 90’a eşit ya da 90’dan büyükse “A” yazdır aksi takdirde Eğer(If) öğrencinin notu 80’a eşit ya da 80’dan büyükse “B” yazdır aksi takdirde Eğer(If) öğrencinin notu 70’a eşit ya da 70’dan büyükse“C” yazdır aksi takdirde Eğer(If) öğrencinin notu 60’a eşit ya da 60’dan büyükse“D” yazdır aksi takdirde “F”yazdır
if…else Seçim Deyimi Birleşik deyim: Birden fazla deyim iki süslü parantez içine alınır. Örnek: if ( grade >= 60 ) printf( “Geçti.\n" ); else { printf( “Kaldı.\n" ); printf( “Dersi yeniden almalısın.\n" ); } Parantezler olmasaydı: printf( “Dersi yeniden almalısın.\n" ); Her durumda çalıştırılacaktı.
İç içe if Durum I:
İç içe if Durum II:
İç içe if Durum III:
İç içe if Örnek:
switch Çoklu Seçim Yapısı Switch yapısının akış grafiği doğru yanlış . case a case a’nın olayları break case b case b’nin olayları case z case z’nin olayları default olaylar
switch Çoklu Seçim Yapısı Bir değişken yada ifadenin ayrı ayrı sabitlerle karşılaştırılması ve buna bağlı olarak farklı işlemlerin yapılması gerektiren durumlarda kullanılır Biçim Bir seri case yapısı ve isteğe bağlı default yapısı kısımlarından oluşur switch ( değer ){ case '1': işlemler case '2': default: } break; ifadeden çıkar
switch Çoklu Seçim Yapısı Örnek
for Döngü Yapısı
for Döngü Yapısı
for Döngü Yapısı Örnek: for döngüsünün biçimi for ( kontol değişkenine ilk değeri atama; döngü devam koşulu; artırım ) ifade Örnek: For(sayici = 1; sayici <= 10; sayici++ ) printf( "%d\n", sayici ); 1 den 10 kadar olan tamsayıları ekrana basar Son ifadeden sonra noktalı virgül(;) yok
for Döngü Yapısıyla İlgili Notlar ve Gözlemler Kontrol değişkeninin ilk değerinin ayarlanması counter = 1 sayici = 1 doğru sayici <= 10 printf( "%d", sayici ); sayici++ Kontrol değişkeninin Kontrol değişkeninin yanlış Döngünün gövdesi artırılması ulaştığı son değere (birkaç ifadeden karar verilmesi oluşabilir)
Kontrol değişkenlerine ilk değeri atama ve arttırım for Döngü Yapısı Kontrol değişkenlerine ilk değeri atama ve arttırım Virgülle ayrılmış listeler şeklinde olabilir Örnek: for (i = 0, j = 0; j + i <= 10; j++, i++) printf( "%d\n", j + i );
for Döngü Yapısıyla İlgili Notlar ve Gözlemler Aritmetik ifadeler İlk değeri verme, döngü devam koşulu ve artırma deyimleri aritmetik operatörler içerebilir. Örneğin, x 2 ve y 10 olsun for ( j = x; j <= 4 * x * y; j += y / x ) yukarıdaki for döngüsü ile aşağıdaki for döngüsü eşdeğerdir. for ( j = 2; j <= 80; j += 5 ) for ifadesi hakkında notlar: Arttırma negatif olabilir (azaltma) Eğer döngü devam koşulu en baştan yanlışsa (false) for yapısının gövdesi tümden atlanır for yapısından sonraki ilk satır çalıştırılır Kontrol değişkeni Döngü gövdesinde sıklıkla yazdırılır ya da işlemlere sokulur
Toplam 2550
Lab Çalışması (100p) Kullanıcının bilgisayarın rastgele belirlediği bir sayıyı (1 ile 100 arasında) tahmin etmeye çalıştığı basit oyunu yazınız. Kullanıcı tahminini girdikçe bilgisayar tahmininizi artırın veya azaltın diye yanıt vermeli ve kullanıcının kaç tahminde sayıyı bulabildiğini ekrana basmalıdır. IPUCU: Bilgisayarın 1 ile 100 arasında rastgele bir sayı belirlemesi için: #include <math.h> . int random; random = srand() % 101; Bilgisayar 1 ile 100 arasında bir sayı tuttu. Tahmininiz? 50 Tahmininizi artırın Tahmininiz? 75 Tahmininizi azaltın Tahmininiz? 62 Tahmininiz? 68 Tahmininiz? 70 Tebrikler, 5 tahminde sayıyı bildiniz.
DERS SONU HEPINIZE TESEKKURLER