Bölüm 4 – Kontrol İfadeleri :1 .kısım

36
Outline 4.1 Giriş 4.2 Algoritmalar 4.3 Pseudocode 4.4 Kontrol İfadeleri 4.5 if tek-seçimli ifadeler 4.6 if else seçimli ifadeler 4.7 while döngü ifadeleri 4.8 Algoritmaların Tasarımı : Örnek Çalışma 1(Sayaç - Kontrollü Döngüler) 4.9 Algoritmaların Tasarımı: Örnek Çalışma 2 (Sonlandırcı- Kontrollü Döngüler) 4.10 Algoritmaların Tasarımı: Örnek Çalışma 2 (İçiçe Kontrollü Yapılar) 4.11 Birleşik Atama Operatörleri 4.12 Artırma ve Azaltma Operatörleri 4.13 İlkel Tipler Bölüm 4 – Kontrol İfadeleri:1.kısım

description

Bölüm 4 – Kontrol İfadeleri :1 .kısım. - PowerPoint PPT Presentation

Transcript of Bölüm 4 – Kontrol İfadeleri :1 .kısım

Page 1: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Outline4.1 Giriş4.2 Algoritmalar4.3 Pseudocode4.4 Kontrol İfadeleri4.5 if tek-seçimli ifadeler 4.6 if else seçimli ifadeler 4.7 while döngü ifadeleri 4.8 Algoritmaların Tasarımı : Örnek Çalışma 1(Sayaç - Kontrollü Döngüler) 4.9 Algoritmaların Tasarımı: Örnek Çalışma 2 (Sonlandırcı- Kontrollü Döngüler) 4.10 Algoritmaların Tasarımı: Örnek Çalışma 2 (İçiçe Kontrollü Yapılar)4.11 Birleşik Atama Operatörleri 4.12 Artırma ve Azaltma Operatörleri 4.13 İlkel Tipler

Bölüm 4 – Kontrol İfadeleri:1.kısım

Page 2: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

4.1  Giriş

• Bu bölümde Kontrol İfadelerini öğreneceğiz.– Yapısal programlama prensibi

– Kontrol ifadeleri objelerin yapımına yardım eder. (Chapter 8)

Page 3: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

4.2 Algoritmalar

• Algoritma– Belli bir sırada takip edilen işler

• İşler gerçekleştirilir.

• Sıra, hangi işin gerçekleştireceğini tespit eder.

• Program kontrolü– Kontrol ifadeleri bu sıranın oluşumuna yardım eder.

Page 4: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

4.3 Pseudocode

• Pseudocode (Program tasarımı)– Algoritma geliştirmek için kullanılan esnek bir dil

– Bilgisayarda çalıştırılamaz

– Algoritmayı yapanlara kurallardan bağımsız ifade etmeyi sağlar.

Page 5: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

4.4 Kontrol İfadeleri

• Sıralı çalışma– Program kodları baştan başlayıp satır satır çalışır.

• Kontrolün transferi– 3 tip kontrol ifadesi bu kodlar arasında transfer sağlar.

• Sıralı yapılar

• Seçimli yapılar

• Döngüsel yapılar

• Akış diagramı– İş akışını modeller

• İşi tanımlayan semboller

• İş sırasını gösteren oklar

Page 6: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Fig 4.1 Sıralı akış diyagramı.

Notu toplama ekle

Sayacı 1 artır

Java karşılığı:toplam = toplam + not;

Java karşılığı:sayac = sayac + 1;

Page 7: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

J ava Keywords abstract assert boolean break byte case catch char class continue default do double else extends final finally float for if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while Keywords that are reserved, but not currently used const goto Fig. 4.2 J ava keywords.

Page 8: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

4.4 Kontrol İfadeleri

• Java sıralı akışa sahiptir.• Java 3 farklı seçim komutu sağlar.

– if– If…else– switch

• Java 3 farklı döngü komutu sağlar.– while– do…while– do

• Bu komutların herbiri ayrılmış kelimelerdir.

Page 9: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

4.5 if tek-seçimli durum

• Tek-giriş/tek-çıkış kontrol ifadeleri• Şart doğru (true) olduğu zaman komut çalışır.

Page 10: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Fig 4.3 if tek-seçimli durum iş iş akış diyagramı.

[not >= 60]

[not < 60]

print “Geçti”

Page 11: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

4.6 if…else seçimli durum

• Şart doğru (true) olduğu zaman komut çalışır.• Şart yanlış (false) olduğu zaman başka bir

komut çalışır.• Şart operatörü (?:)• İçiçe if…else ifadeleri

Page 12: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Fig 4.4 if…else iki seçimli durumlar için akış diyagramı.

[not >= 60][not < 60]print “Kaldı” print “Geçti”

Page 13: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

4.7 while Tekrarlama İfadeleri

• Şart doğru (true) olduğu müddetçe dögüye ait komutları çalıştır.

Page 14: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Fig 4.5 while tekrarlama ifadelerinin akış dyagramı.

[ürün <= 1000]

[ürün > 1000]

Ürün değerinin 2 katını al

birleşim

karar

Java karşılığı:ürün = 2 * ürün;

Page 15: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

4.8 Algoritmaların Tasarlanması: Örnek Çalışma 1 (Kontrollü Sayaç

Döngüsü)• Sayaç

– İfadelerin kaç defa tekrar ettiğini kontrol eden değişken

• Ortalama1.java not ortalamasını hesaplar.– Döngüyü kontrol için sayaç kullanılır.

Page 16: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

 Toplam değişkenini sıfırlaSayaç değişkenine 1 ata

Syaç 10 ‘a eşit yada küçük olduğu müddetçeDiğer notu girToplamı not kadar artırSayacı 1 artır

Toplamı 10 ‘a bölerek sınıf ortalamasına ataSınıf ortalamasını yazdır

Fig. 4.6 Pseudocode algoritması : sınıf ortalamasını bulmak için kontrollü sayaç döngüsü kullanılır.

Page 17: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Average1.java gradeCounter

Line 21

1 // Fig. 4.7: Ortalama1.java2 // Class-average program with counter-controlled repetition.3 import javax.swing.JOptionPane;4 5 public class Ortalama1 {6 7 public static void main( String args[] ) 8 {9 int toplam; // sum of grades input by user10 int notSayaci; // number of grade to be entered next11 int not; // grade value12 int ortalama; // average of grades13 14 String notString; // grade typed by user15 16 // initialization phase17 toplam = 0; // initialize total18 notSayaci = 1; // initialize loop counter19 20 // processing phase21 while (notSayaci <= 10 ) { // loop 10 times22 23 // prompt for input and read grade from user24 notString = JOptionPane.showInputDialog(25 “Sayısal not girişi: " );26 27 // convert gradeString to int28 not = Integer.parseInt( notString );29

Declare variables; gradeCounter is the counter

Continue looping as long as gradeCounter is less than or

equal to 10

Page 18: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Average1.java

30 toplam = toplam + not; // add grade to total31 notSayaci = notSayaci + 1; // increment counter32 33 } // end while34 35 // termination phase36 ortalama = toplam / 10; // integer division37 38 // display average of exam grades39 JOptionPane.showMessageDialog( null, “Sınıf ortalaması" + ortalama,40 “Sınıf Ortlaması", JOptionPane.INFORMATION_MESSAGE );41 42 System.exit( 0 ); // terminate the program43 44 } // end main45 46 } // end class Average1

Page 19: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Ortalama1.java

Page 20: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

4.9 Algoritmaların Tasarlanması: Örnek Çalışma 2 (Sonlandırıcı-

Kontrollü Döngüler)• Sonlandırıcı değer

– Veri girişini sonlandırmak amaçlı kullanılır.

• Ortalama2.java döngünün sayısı belli değil– Kullanıcı sonlandırıcı değere (-1) basarak döngüyü

bitiriyor.

Page 21: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Toplam değişkenini sıfırlaSayaç değişkenine 1 ata

İlk not girişi yap (sonlandırıcı değer de mümkün)

Kullanıcı sonlandırıcı değer girmediği müddetçe Toplamı not değeri kadar artırSayacı 1 artırYeni notu gir(sonlandırcı değer de mümkün)

Eğer sayaç 0 eşit değilseOrtalamayı toplamı sayaca bölerek bulOrtalamayı yazdır

else“Hiçbir not girilmedi” yazdır

Fig. 4.8 Pseudocode algoritması : sınıf ortalamasını bulmak için sonlandırıcı kontrollü döngüs kullanılır.

Page 22: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Average2.java

1 // Fig. 4.9: Ortalama2.java2 // Class-average program with sentinel-controlled repetition.3 import java.text.DecimalFormat; // class to format numbers4 import javax.swing.JOptionPane;5 6 public class Ortalama2 {7 8 public static void main( String args[] )9 {10 int toplam; // sum of grades11 int notSayaci; // number of grades entered12 int not; // grade value13 14 double ortalama; // number with decimal point for average15 16 String notString; // grade typed by user17 18 // initialization phase19 toplam = 0; // initialize total20 notSayaci = 0; // initialize loop counter21 22 // processing phase23 // get first grade from user 24 notString = JOptionPane.showInputDialog(25 “Not Girişi yada Çıkış için -1 :" );26 27 // convert gradeString to int 28 not = Integer.parseInt( notString ); 29

Page 23: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Average2.java

Line 31

Line 45

30 // loop until sentinel value read from user31 while ( not != -1 ) { 32 toplam = toplam + not; // add grade to total33 notSayaci = notSayaci + 1; // increment counter34 35 // get next grade from user 36 notString = JOptionPane.showInputDialog(37 " Not Girişi yada Çıkış için -1 :" );38 39 // convert gradeString to int 40 not = Integer.parseInt( notString ); 41 42 } // end while43 44 // termination phase45 DecimalFormat ikiDigit = new DecimalFormat( "0.00" );46 47 // if user entered at least one grade...48 if ( notSayaci != 0 ) {49 50 // calculate average of all grades entered51 ortalama = (double) toplam / notSayaci; 52 53 // display average with two digits of precision54 JOptionPane.showMessageDialog( null,55 “Sınıf Ortalaması " + ikiDigit.format( ortalama ),56 “Sınıf Ortalaması", JOptionPane.INFORMATION_MESSAGE );57 58 } // end if part of if...else59

loop until gradeCounter equals sentinel value (-1)

Format numbers to nearest hundredth

Page 24: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Ortalama2.java

60 else // if no grades entered, output appropriate message61 JOptionPane.showMessageDialog( null, “Not girişi yapılmadı",62 “Sınıf Ortalaması", JOptionPane.INFORMATION_MESSAGE );63 64 System.exit( 0 ); // terminate application65 66 } // end main67 68 } // end class Ortalama2

Page 25: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

4.10 Algoritmaların Tasarlanması: Örnek Çalışma 3 (İçiçe

Kontrol Yapıları)• İçiçe kontrol yapıları

Page 26: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Gecenler ‘e 0 ilk değeri verKalanlar’ a 0 ilk değeri verOgrenci ‘ye 1 ilk değer ver 

Sayac 10 ‘a eşit yada küçük olduğu müddetçe Sınav sonucu gir

Eğer öğrenci geçmiş ise Gecenlere 1 ekle

else Kalanlara 1 ekle

  Sayacı 1 artır

Kaç kişi geçtiğini yazdırKaç kişi kaldığını yazdır

Eğer 8 kişiden fazla kişi geçmiş ise “Öğretim başarılı” yazdır

Fig 4.10 Pseudocode :sınav sonucu problemi için.

Page 27: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Analysis.java

Line 19

Line 29

1 // Fig. 4.11: Analysis.java2 // Analysis of examination results.3 import javax.swing.JOptionPane;4 5 public class Analysis {6 7 public static void main( String args[] ) 8 {9 // initializing variables in declarations10 int gecenler = 0; // number of passes 11 int kalanlar = 0; // number of failures12 int sayac = 1; // student counter 13 int sonuc; // one exam result14 15 String giris; // user-entered value16 String cikis; // output string17 18 // process 10 students using counter-controlled loop19 while ( sayac <= 10 ) {20 21 // prompt user for input and obtain value from user22 giris = JOptionPane.showInputDialog(23 "Enter result (1 = geç, 2 = kal)" );24 25 // convert result to int26 sonuc = Integer.parseInt( giris );27 28 // if result 1, increment passes; if...else nested in while29 if ( sonuc == 1 ) 30 gecenler = gecenler + 1;

Loop until student counter is greater than 10

Nested control structure

Page 28: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Analysis.java

31 32 else // if result not 1, increment failures 33 kalanlar = kalanlar + 1; 34 35 // increment studentCounter so loop eventually terminates36 sayac = sayac + 1; 37 38 } // end while39 40 // termination phase; prepare and display results41 cikis = “Geçenler: " + gecenler + "\nKalanlar: " + kalanlar;42 43 // determine whether more than 8 students passed44 if ( gecenler > 8 )45 cikis = cikis + "\nÖğretim Başarılı";46 47 JOptionPane.showMessageDialog( null, cikis,48 "Analysis of Examination Results",49 JOptionPane.INFORMATION_MESSAGE );50 51 System.exit( 0 ); // terminate application52 53 } // end main54 55 } // end class Analysis

Page 29: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

4.11 Birleşik Atama Operatörleri

• Atama Operatörleri– Kısaltılmış atama operatörleri

– Herhangi bir atama işlemi• değişken = değişken operatör ifade;

– Şu şekilde de yazılabilir• değişken operatör = ifade;

– Örneğin toplam atama operatörü +=• c = c + 3

– Şu şekilde de yazılabilir• c += 3

Page 30: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Assignment operator

Sample expression

Explanation Assigns

Assume: int c = 3, d = 5, e = 4, f = 6, g = 12;

+= c += 7 c = c + 7 10 to c -= d -= 4 d = d - 4 1 to d *= e *= 5 e = e * 5 20 to e /= f /= 3 f = f / 3 2 to f %= g %= 9 g = g % 9 3 to g Fig. 4.12 Arithmetic assignment operators.

Page 31: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

4.12 Artırma Azaltma Operatörleri

• Bir artırma (++)– Değer 1 artırır.

• Bir azaltma (--)– Değeri 1 azaltır

• Önceden artırma / önceden azaltma operatör• Sonradan artırma / sonradan-azaltma operatör

Page 32: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Operator Called Sample expression

Explanation

++ preincrement ++a Increment a by 1, then use the new value of a in the expression in which a resides.

++ postincrement a++ Use the current value of a in the expression in which a resides, then increment a by 1.

-- predecrement --b Decrement b by 1, then use the new value of b in the expression in which b resides.

-- postdecrement b-- Use the current value of b in the expression in which b resides, then decrement b by 1.

Fig. 4.13 The increment and decrement operators.

Page 33: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Increment.java

Line 13 postincrement

Line 21 preincrement

1 // Fig. 4.14: Increment.java2 // Preincrementing and postincrementing operators.3 4 public class Increment {5 6 public static void main( String args[] )7 {8 int c;9 10 // demonstrate postincrement11 c = 5; // assign 5 to c12 System.out.println( c ); // print 513 System.out.println( c++ ); // print 5 then postincrement14 System.out.println( c ); // print 6 15 16 System.out.println(); // skip a line17 18 // demonstrate preincrement19 c = 5; // assign 5 to c20 System.out.println( c ); // print 521 System.out.println( ++c ); // preincrement then print 622 System.out.println( c ); // print 6 23 24 } // end main25 26 } // end class Increment

556 

566

Line 13 postincrements c

Line 21 preincrements c

Page 34: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Operators Associativity Type ++ -- right to left unary postfix ++ -- + - (type) right to left unary * / % left to right multiplicative + - left to right additive < <= > >= left to right relational == != left to right equality ?: right to left conditional = += -= *= /= %= right to left assignment Fig. 4.15 Bu zamana kadar öğrendiğimiz tüm operatörler.

Page 35: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

4.13 İlkel Veri Tipleri

• Java da tüm değişkenlerin mutlaka bir veri tipi olması lazımdır.

• Java ilkel veri tipleri

Page 36: Bölüm  4 –  Kontrol İfadeleri :1 .kısım

Type Size in bits Values Standard boolean true or false

[Note: The representation of a boolean is specific to the Java Virtual Machine on each computer platform.]

char 16 '\u0000' to '\uFFFF' (0 to 65535)

(ISO Unicode character set)

byte 8 –128 to +127 (–27 to 27 – 1)

short 16 –32,768 to +32,767 (–215 to 215 – 1)

int 32 –2,147,483,648 to +2,147,483,647 (–231 to 231 – 1)

long 64 –9,223,372,036,854,775,808 to +9,223,372,036,854,775,807 (–263 to 263 – 1)

float 32 Negative range: –3.4028234663852886E+38 to –1.40129846432481707e–45 Positive range: 1.40129846432481707e–45 to 3.4028234663852886E+38

(IEEE 754 floating point)

double 64 Negative range: –1.7976931348623157E+308 to –4.94065645841246544e–324 Positive range: 4.94065645841246544e–324 to 1.7976931348623157E+308

(IEEE 754 floating point)

Fig. 4.16 The J ava primitive types.