360 likes | 500 Views
Bölüm 4 – Kontrol İfadeleri :1 .kısım.
E N D
Bölüm 4 – Kontrol İfadeleri:1.kısım Outline4.1 Giriş4.2 Algoritmalar4.3 Pseudocode4.4 Kontrol İfadeleri4.5 iftek-seçimli ifadeler4.6 if elseseçimli ifadeler4.7 whiledöngü ifadeleri4.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örleri4.13 İlkel Tipler
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)
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.
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.
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çimliyapılar • Döngüsel yapılar • Akış diagramı • İş akışını modeller • İşi tanımlayan semboller • İş sırasını gösteren oklar
Java karşılığı:toplam = toplam + not; Sayacı 1 artır Notu toplama ekle Java karşılığı:sayac = sayac + 1; • Fig 4.1 Sıralı akış diyagramı.
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.
4.5 if tek-seçimli durum • Tek-giriş/tek-çıkışkontrol ifadeleri • Şart doğru (true) olduğu zaman komut çalışır.
[not >= 60] [not < 60] print “Geçti” • Fig 4.3 iftek-seçimli durum iş iş akış diyagramı.
4.6 if…elseseç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çeif…elseifadeleri
[not < 60] [not >= 60] print “Geçti” print “Kaldı” • Fig 4.4 if…elseiki seçimli durumlar için akış diyagramı.
4.7 whileTekrarlama İfadeleri • Şart doğru (true) olduğu müddetçe dögüye ait komutları çalıştır.
birleşim karar [ürün <= 1000] Ürün değerinin 2 katını al [ürün > 1000] Java karşılığı:ürün = 2 * ürün; • Fig 4.5 whiletekrarlama ifadelerinin akış dyagramı.
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.javanot ortalamasını hesaplar. • Döngüyü kontrol için sayaç kullanılır.
Toplam değişkenini sıfırlaSayaç değişkenine 1 ataSyaç 10 ‘a eşit yada küçük olduğu müddetçeDiğer notu girToplamı not kadar artırSayacı 1 artırToplamı 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.
Declare variables; gradeCounter is the counter Continue looping as long as gradeCounter is less than or equal to 10 1 // Fig. 4.7: Ortalama1.java 2 // Class-average program with counter-controlled repetition. 3 import javax.swing.JOptionPane; 4 5 public classOrtalama1 { 6 7 public static void main( String args[] ) 8 { 9 int toplam; // sum of grades input by user 10 intnotSayaci; // number of grade to be entered next 11 intnot; // grade value 12 intortalama; // average of grades 13 14 String notString; // grade typed by user 15 16 // initialization phase 17 toplam = 0; // initialize total 18 notSayaci = 1; // initialize loop counter 19 20 // processing phase 21 while (notSayaci <= 10 ) { // loop 10 times 22 23 // prompt for input and read grade from user 24 notString = JOptionPane.showInputDialog( 25 “Sayısal not girişi: " ); 26 27 // convert gradeString to int 28 not = Integer.parseInt( notString ); 29 Average1.javagradeCounterLine 21
30 toplam = toplam + not; // add grade to total 31 notSayaci = notSayaci + 1; // increment counter 32 33 } // end while 34 35 // termination phase 36 ortalama = toplam / 10; // integer division 37 38 // display average of exam grades 39 JOptionPane.showMessageDialog( null, “Sınıf ortalaması" + ortalama, 40 “Sınıf Ortlaması", JOptionPane.INFORMATION_MESSAGE ); 41 42 System.exit( 0 ); // terminate the program 43 44 } // end main 45 46 } // end class Average1 Average1.java
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.javadöngünün sayısı belli değil • Kullanıcı sonlandırıcı değere (-1) basarak döngüyü bitiriyor.
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çeToplamı 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ırelse “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.
1 // Fig. 4.9: Ortalama2.java 2 // Class-average program with sentinel-controlled repetition. 3 import java.text.DecimalFormat; // class to format numbers 4 import javax.swing.JOptionPane; 5 6 public classOrtalama2 { 7 8 public static void main( String args[] ) 9 { 10 int toplam; // sum of grades 11 intnotSayaci; // number of grades entered 12 intnot; // grade value 13 14 doubleortalama; // number with decimal point for average 15 16 String notString; // grade typed by user 17 18 // initialization phase 19 toplam = 0; // initialize total 20 notSayaci = 0; // initialize loop counter 21 22 // processing phase 23 // get first grade from user 24 notString = JOptionPane.showInputDialog( 25 “Not GirişiyadaÇıkış için -1 :" ); 26 27 // convert gradeString to int 28 not = Integer.parseInt( notString ); 29 Average2.java
loop until gradeCounter equals sentinel value (-1) Format numbers to nearest hundredth 30 // loop until sentinel value read from user 31 while ( not != -1 ) { 32 toplam = toplam + not; // add grade to total 33 notSayaci = notSayaci + 1; // increment counter 34 35 // get next grade from user 36 notString = JOptionPane.showInputDialog( 37 " Not GirişiyadaÇıkış için -1 :" ); 38 39 // convert gradeString to int 40 not = Integer.parseInt( notString ); 41 42 } // end while 43 44 // termination phase 45 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 entered 51 ortalama = (double) toplam / notSayaci; 52 53 // display average with two digits of precision 54 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...else 59 Average2.javaLine 31Line 45
60 else// if no grades entered, output appropriate message 61 JOptionPane.showMessageDialog( null, “Not girişi yapılmadı", 62 “Sınıf Ortalaması", JOptionPane.INFORMATION_MESSAGE ); 63 64 System.exit( 0 ); // terminate application 65 66 } // end main 67 68 } // end class Ortalama2 Ortalama2.java
4.10 Algoritmaların Tasarlanması: Örnek Çalışma 3(İçiçe Kontrol Yapıları) • İçiçe kontrol yapıları
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çeSınav sonucu gir Eğer öğrenci geçmiş iseGecenlere 1 ekle elseKalanlara 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.
Loop until student counter is greater than 10 Nested control structure 1 // Fig. 4.11: Analysis.java 2 // 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 declarations 10 intgecenler = 0; // number of passes 11 intkalanlar = 0; // number of failures 12 intsayac = 1; // student counter 13 intsonuc; // one exam result 14 15 String giris; // user-entered value 16 String cikis; // output string 17 18 // process 10 students using counter-controlled loop 19 while ( sayac <= 10 ) { 20 21 // prompt user for input and obtain value from user 22 giris = JOptionPane.showInputDialog( 23 "Enter result (1 = geç, 2 = kal)" ); 24 25 // convert result to int 26 sonuc = Integer.parseInt( giris ); 27 28 // if result 1, increment passes; if...else nested in while 29 if ( sonuc == 1 ) 30 gecenler = gecenler + 1; Analysis.javaLine 19Line 29
31 32 else// if result not 1, increment failures 33 kalanlar = kalanlar + 1; 34 35 // increment studentCounter so loop eventually terminates 36 sayac = sayac + 1; 37 38 } // end while 39 40 // termination phase; prepare and display results 41 cikis = “Geçenler: " + gecenler + "\nKalanlar: " + kalanlar; 42 43 // determine whether more than 8 students passed 44 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 application 52 53 } // end main 54 55 } // end class Analysis Analysis.java
4.11 Birleşik AtamaOperatörleri • Atama Operatörleri • Kısaltılmış atama operatörleri • Herhangi bir atama işlemi • değişken=değişkenoperatörifade; • Şu şekilde de yazılabilir • değişkenoperatör=ifade; • Örneğin toplam atama operatörü+= • c = c + 3 • Şu şekilde de yazılabilir • c += 3
4.12 ArtırmaAzaltma Operatörleri • Bir artırma (++) • Değer 1 artırır. • Bir azaltma (--) • Değeri 1 azaltır • Önceden artırma / önceden azaltmaoperatör • Sonradan artırma / sonradan-azaltma operatör
Line 13 postincrements c Line 21 preincrements c 1 // Fig. 4.14: Increment.java 2 // Preincrementing and postincrementing operators. 3 4 public class Increment { 5 6 public static void main( String args[] ) 7 { 8 int c; 9 10 // demonstrate postincrement 11 c = 5; // assign 5 to c 12 System.out.println( c ); // print 5 13 System.out.println( c++ ); // print 5 then postincrement 14 System.out.println( c ); // print 6 15 16 System.out.println(); // skip a line 17 18 // demonstrate preincrement 19 c = 5; // assign 5 to c 20 System.out.println( c ); // print 5 21 System.out.println( ++c ); // preincrement then print 6 22 System.out.println( c ); // print 6 23 24 } // end main 25 26 } // end class Increment Increment.javaLine 13 postincrementLine 21 preincrement 556566
4.13 İlkel Veri Tipleri • Java da tüm değişkenlerin mutlaka bir veri tipi olması lazımdır. • Java ilkel veri tipleri