370 likes | 849 Views
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ı ***. Amaçlar.
E N D
Yapısal ProgramGeliş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 ifkontrol yapısı • switch Çoklu Seçim Yapısı • for Döngü Yapısı ***
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. • ifve if…elseseçim deyimlerini kullanabilme. • Yapısal programlamayı anlayabilme.
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ı
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 • 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 • 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, veswitch • Döngü yapısı: C de 3 tanedir: while, do…whilevefor
Kontrol yapıları Şekil 3.1 C deki sıralı yapının akış şeması.
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 SeçimDeyimi • 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ırdeyimi 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 veprogram 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.
if SeçimYapı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)veyayanlış (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: inti=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
true false “Geçti” yazdır not >= 60 if SeçimDeyimi • ifdeyimi tek giriş tek çıkışlı bir deyimdir. Bir hesaplama sonucu da karar vermek için kullanılabilir. Eğer sonuç sıfırise – yanlış(false) Sıfır olmayan sayılariçin –doğru(true) Örnek: (3–4) - true
if…else SeçimDeyimi • if • 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 haldeEkrana “kaldı” yazdır. Not: Satır girintilerine dikkat
if…else SeçimDeyimi • 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” );
false true print “Passed” print “Failed” not >= 60 if…else SeçimDeyimi • if…elsedeyiminin akış diyagramı • İçiçeif…elsedeyimi • Bir çok durumuif…elsedeyimi içine yazacağımız başka if…elsedeyimleri ile test edebiliriz. • İlk doğru olanif…elsedeyiminden sonrakiler atlanır.
if…else SeçimDeyimi • İçiçeif…elsedeyiminin pseudocode’u Eğer(If) öğrencinin notu 90’a eşit ya da 90’dan büyükse “A” yazdıraksi takdirdeEğer(If) öğrencinin notu 80’a eşit ya da 80’dan büyükse “B” yazdıraksi takdirde Eğer(If) öğrencinin notu 70’a eşit ya da 70’dan büyükse“C” yazdıraksi 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çimDeyimi • 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:
doğru yanlış doğru yanlış . . . doğru yanlış case a’nın olayları case z’nin olayları case b’nin olayları break break break default olaylar case b case a case z switchÇoklu SeçimYapısı • Switchyapısının akış grafiği
switchÇoklu SeçimYapısı • switch • 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 sericaseyapısıveisteğe bağlıdefaultyapısı kısımlarından oluşur switch ( değer ){ case '1': işlemler case '2': işlemler default: işlemler } • break;ifadeden çıkar
switchÇoklu SeçimYapısı Örnek
forDöngü Yapısı • fordö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
forDöngü Yapısıyla İlgiliNotlarveGözlemler Kontrol değişkeninin değerinin ilk 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)
forDö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 );
forDöngü Yapısıyla İlgiliNotlarveGözlemler • Aritmetik ifadeler • İlk değeri verme, döngü devam koşulu veartırma deyimleri aritmetik operatörler içerebilir. Örneğin,x2vey10olsun 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 ) • forifadesi hakkında notlar: • Arttırmanegatif olabilir (azaltma) • Eğer döngü devam koşulu en baştan yanlışsa(false) • foryapı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
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ındarastgelebirsayıbelirlemesiiçin: #include <math.h> . . . intrandom; . . 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 Tahmininizi artırın Tahmininiz? 68 Tahmininizi artırın Tahmininiz? 70 Tebrikler, 5 tahminde sayıyı bildiniz.
DERS SONU HEPINIZE TESEKKURLER