yapısal program geliştirme – if, if-else

37
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ı ***

Upload: gerek

Post on 14-Jan-2016

156 views

Category:

Documents


1 download

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 Presentation

TRANSCRIPT

Page 1: Yapısal Program Geliştirme  – if, if-else

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ı ***

Page 2: Yapısal Program Geliştirme  – if, if-else

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.

Page 3: Yapısal Program Geliştirme  – if, if-else

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ı

Page 4: Yapısal Program Geliştirme  – if, if-else

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.

Page 5: Yapısal Program Geliştirme  – if, if-else

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.

Page 6: Yapısal Program Geliştirme  – if, if-else

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

Page 7: Yapısal Program Geliştirme  – if, if-else

Kontrol yapıları

Şekil 3.1 C deki sıralı yapının akış şeması.

Page 8: Yapısal Program Geliştirme  – if, if-else

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.

Page 9: Yapısal Program Geliştirme  – if, if-else

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.

Page 10: Yapısal Program Geliştirme  – if, if-else

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.

Page 11: Yapısal Program Geliştirme  – if, if-else

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.

Page 12: Yapısal Program Geliştirme  – if, if-else

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.

Page 13: Yapısal Program Geliştirme  – if, if-else

Koşul İfadesi

Örnek: a=9, b=9 , c=0, d=5, ch=‘E’

Page 14: Yapısal Program Geliştirme  – if, if-else

Koşul İfadesi

Operatörlerin Öncelik Sıralaması

Page 15: Yapısal Program Geliştirme  – if, if-else

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

Page 16: Yapısal Program Geliştirme  – if, if-else

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

Page 17: Yapısal Program Geliştirme  – if, if-else

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

 

Page 18: Yapısal Program Geliştirme  – if, if-else

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

Page 19: Yapısal Program Geliştirme  – if, if-else

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

Page 20: Yapısal Program Geliştirme  – if, if-else

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

Page 21: Yapısal Program Geliştirme  – if, if-else

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ı.

Page 22: Yapısal Program Geliştirme  – if, if-else

İç içe if

Durum I:

Page 23: Yapısal Program Geliştirme  – if, if-else

Durum II:

İç içe if

Page 24: Yapısal Program Geliştirme  – if, if-else

Durum III:

İç içe if

Page 25: Yapısal Program Geliştirme  – if, if-else

0,0

0,0

0,0

),(

yxxy

yxyx

yxxy

yxf

Örnek:

İç içe if

Page 26: Yapısal Program Geliştirme  – if, if-else

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

Page 27: Yapısal Program Geliştirme  – if, if-else

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

 

Page 28: Yapısal Program Geliştirme  – if, if-else

switch Çoklu Seçim YapısıÖrnek

 

Page 29: Yapısal Program Geliştirme  – if, if-else

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ı

Page 30: Yapısal Program Geliştirme  – if, if-else

for Döngü Yapısı

Page 31: Yapısal Program Geliştirme  – if, if-else

• 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ı

Page 32: Yapısal Program Geliştirme  – if, if-else

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

Page 33: Yapısal Program Geliştirme  – if, if-else

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

Page 34: Yapısal Program Geliştirme  – if, if-else

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

Page 35: Yapısal Program Geliştirme  – if, if-else

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

Page 36: Yapısal Program Geliştirme  – if, if-else

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;

Page 37: Yapısal Program Geliştirme  – if, if-else

DERS SONU

HEPINIZE

TESEKKURLER