yapısal program geliştirme – if, if-else
DESCRIPTION
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. - PowerPoint PPT PresentationTRANSCRIPT
Yapısal Program Geliştirme – if, if-else
Konular
GirişAlgoritmalarPseudocode (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
• 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.
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, 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ı.
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ç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.
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
&& Operatörü
|| Operatörü
! Operatörü
Mantıksal Operatörler mantıksal işlemleri gerçekleştirmek amacıyla kullanılı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
• 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ç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 ifadeprintf( "%s\n", grade >= 60 ? "Passed" : "Failed" );
– şöyle de yazılabilir.:grade >= 60 ? printf( “Passed\n” ) : printf( “Failed\n” );
if…else Seçim 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.
truefalse
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:
Durum II:
İç içe if
Durum III:
İç içe if
0,0
0,0
0,0
),(
yxxy
yxyx
yxxy
yxf
Örnek:
İç içe if
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ı
break
yanlış
yanlış
case z case z’nin olayları
break
doğru
doğru
default olaylar
switch Çoklu Seçim Yapı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 seri case yapısı ve isteğe bağlı default yapısı
kısımlarından oluşurswitch ( değer ){
case '1':işlemler
case '2':işlemler
default:işlemler
}
– break; ifadeden çıkar
switch Çoklu Seçim YapısıÖrnek
1 /* for yapısı ile sayıcı kontrollü döngü */
2
3 #include <stdio.h>
4
5 int main()
6 {
7 int sayici;
8
9 /* ilk değer ataması, döngü koşulu, ve artırmanın
10 hepsi birden for yapısının başlığı içindedir */
11 for ( sayici = 1; sayici <= 10; sayici++ )
12 printf( "%d\n", sayici );
13
14 return 0;
15 }
for Döngü Yapısı
for Döngü Yapısı
• for döngüsünün biçimifor ( 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ı
counter = 1
sayici <= 10doğru
yanlış
sayici = 1
sayici++
Kontrol değişkeninin ilk değerininayarlanması
Kontrol değişkeninin ulaştığı son değerekarar verilmesi
Döngünün gövdesi(birkaç ifadeden oluşabilir)
Kontrol değişkenininartırılması
printf( "%d", sayici );
for Döngü Yapısıyla İlgili Notlar ve Gözlemler
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 olsunfor ( 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
1 /* for ile toplama */
2
3 #include <stdio.h>
4
5 int main()
6 {
7 int toplam = 0, sayi;
8
9 for ( sayi = 2; sayi <= 100; sayi += 2 )
10 toplam += sayi;
11
12 printf( "Toplam %d\n", toplam );
13
14 return 0;
15 }
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.
Bilgisayar 1 ile 100 arasında bir sayı tuttu.Tahmininiz? 50Tahmininizi artırınTahmininiz? 75Tahmininizi azaltınTahmininiz? 62Tahmininizi artırınTahmininiz? 68Tahmininizi artırınTahmininiz? 70Tebrikler, 5 tahminde sayıyı bildiniz.
IPUCU: Bilgisayarın 1 ile 100 arasında rastgele bir sayı belirlemesi için:
#include <math.h>...int random;..random = srand() % 101;
DERS SONU
HEPINIZE
TESEKKURLER