Sunuyu indir
1
Bölüm 4 – Kontrol İfadeleri:1.kısım
Outline Giriş Algoritmalar Pseudocode Kontrol İfadeleri if tek-seçimli ifadeler if else seçimli ifadeler while döngü ifadeleri Algoritmaların Tasarımı : Örnek Çalışma 1(Sayaç - Kontrollü Döngüler) Algoritmaların Tasarımı: Örnek Çalışma 2 (Sonlandırcı- Kontrollü Döngüler) Algoritmaların Tasarımı: Örnek Çalışma 2 (İçiçe Kontrollü Yapılar) Birleşik Atama Operatörleri Artırma ve Azaltma Operatörleri İlkel Tipler
2
Bu bölümde Kontrol İfadelerini öğreneceğiz.
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)
3
4.2 Algoritmalar Algoritma Program kontrolü
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
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.
5
4.4 Kontrol İfadeleri Sıralı çalışma Kontrolün transferi Akış diagramı
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
6
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; Fig 4.1 Sıralı akış diyagramı.
8
Java sıralı akışa sahiptir. Java 3 farklı seçim komutu sağlar.
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.
9
4.5 if tek-seçimli durum Tek-giriş/tek-çıkış kontrol ifadeleri Şart doğru (true) olduğu zaman komut çalışır.
10
Fig 4.3 if tek-seçimli durum iş iş akış diyagramı.
[not >= 60] [not < 60] print “Geçti” Fig 4.3 if tek-seçimli durum iş iş akış diyagramı.
11
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
12
Fig 4.4 if…else iki seçimli durumlar için akış diyagramı.
[not >= 60] [not < 60] print “Kaldı” print “Geçti” Fig 4.4 if…else iki seçimli durumlar için akış diyagramı.
13
4.7 while Tekrarlama İfadeleri
Şart doğru (true) olduğu müddetçe dögüye ait komutları çalıştır.
14
Ürün değerinin 2 katını al
birleşim karar Java karşılığı: ürün = 2 * ürün; Fig 4.5 while tekrarlama ifadelerinin akış dyagramı.
15
Ortalama1.java not ortalamasını hesaplar.
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.
16
Toplam değişkenini sıfırla Sayaç değişkenine 1 ata Syaç 10 ‘a eşit yada küçük olduğu müddetçe Diğer notu gir Toplamı not kadar artır Sayacı 1 artır Toplamı 10 ‘a bölerek sınıf ortalamasına ata Sınıf ortalamasını yazdır Fig Pseudocode algoritması : sınıf ortalamasını bulmak için kontrollü sayaç döngüsü kullanılır.
17
Average1.java gradeCounter Line 21
1 // Fig. 4.7: Ortalama1.java 2 // Class-average program with counter-controlled repetition. 3 import javax.swing.JOptionPane; 4 5 public class Ortalama1 { 6 public static void main( String args[] ) { int toplam; // sum of grades input by user int notSayaci; // number of grade to be entered next int not; // grade value int ortalama; // average of grades 13 String notString; // grade typed by user 15 // initialization phase toplam = 0; // initialize total 18 notSayaci = 1; // initialize loop counter 19 // processing phase while (notSayaci <= 10 ) { // loop 10 times 22 // prompt for input and read grade from user notString = JOptionPane.showInputDialog( “Sayısal not girişi: " ); 26 // convert gradeString to int not = Integer.parseInt( notString ); 29 Average1.java gradeCounter Line 21 Declare variables; gradeCounter is the counter Continue looping as long as gradeCounter is less than or equal to 10
18
Average1.java 30 toplam = toplam + not; // add grade to total
notSayaci = notSayaci + 1; // increment counter 32 } // end while 34 // termination phase ortalama = toplam / 10; // integer division 37 // display average of exam grades JOptionPane.showMessageDialog( null, “Sınıf ortalaması" + ortalama, “Sınıf Ortlaması", JOptionPane.INFORMATION_MESSAGE ); 41 System.exit( 0 ); // terminate the program 43 } // end main 45 46 } // end class Average1 Average1.java
19
Ortalama1.java
20
Ortalama2.java döngünün sayısı belli değil
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.
21
Toplam değişkenini sıfırla Sayaç 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ır Sayacı 1 artır Yeni notu gir(sonlandırcı değer de mümkün) Eğer sayaç 0 eşit değilse Ortalamayı toplamı sayaca bölerek bul Ortalamayı yazdır else “Hiçbir not girilmedi” yazdır Fig Pseudocode algoritması : sınıf ortalamasını bulmak için sonlandırıcı kontrollü döngüs kullanılır.
22
Average2.java 1 // Fig. 4.9: Ortalama2.java
// Class-average program with sentinel-controlled repetition. import java.text.DecimalFormat; // class to format numbers import javax.swing.JOptionPane; 5 public class Ortalama2 { 7 public static void main( String args[] ) { int toplam; // sum of grades int notSayaci; // number of grades entered int not; // grade value 13 double ortalama; // number with decimal point for average 15 String notString; // grade typed by user 17 // initialization phase toplam = 0; // initialize total notSayaci = 0; // initialize loop counter 21 // processing phase // get first grade from user notString = JOptionPane.showInputDialog( “Not Girişi yada Çıkış için -1 :" ); 26 // convert gradeString to int not = Integer.parseInt( notString ); 29 Average2.java
23
loop until gradeCounter equals sentinel value (-1)
// loop until sentinel value read from user while ( not != -1 ) { toplam = toplam + not; // add grade to total notSayaci = notSayaci + 1; // increment counter 34 // get next grade from user notString = JOptionPane.showInputDialog( " Not Girişi yada Çıkış için -1 :" ); 38 // convert gradeString to int not = Integer.parseInt( notString ); 41 } // end while 43 // termination phase DecimalFormat ikiDigit = new DecimalFormat( "0.00" ); 46 // if user entered at least one grade... if ( notSayaci != 0 ) { 49 // calculate average of all grades entered ortalama = (double) toplam / notSayaci; 52 // display average with two digits of precision JOptionPane.showMessageDialog( null, “Sınıf Ortalaması " + ikiDigit.format( ortalama ), “Sınıf Ortalaması", JOptionPane.INFORMATION_MESSAGE ); 57 } // end if part of if...else 59 loop until gradeCounter equals sentinel value (-1) Average2.java Line 31 Line 45 Format numbers to nearest hundredth
24
60 else // if no grades entered, output appropriate message
JOptionPane.showMessageDialog( null, “Not girişi yapılmadı", “Sınıf Ortalaması", JOptionPane.INFORMATION_MESSAGE ); 63 System.exit( 0 ); // terminate application 65 } // end main 67 68 } // end class Ortalama2 Ortalama2.java
25
4.10 Algoritmaların Tasarlanması: Örnek Çalışma 3 (İçiçe Kontrol Yapıları)
26
Gecenler ‘e 0 ilk değeri ver Kalanlar’ a 0 ilk değeri ver Ogrenci ‘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ır Kaç kişi kaldığını yazdır Eğer 8 kişiden fazla kişi geçmiş ise “Öğretim başarılı” yazdır Fig Pseudocode :sınav sonucu problemi için.
27
Analysis.java Line 19 Line 29
// Fig. 4.11: Analysis.java // Analysis of examination results. import javax.swing.JOptionPane; 4 public class Analysis { 6 public static void main( String args[] ) { // initializing variables in declarations int gecenler = 0; // number of passes int kalanlar = 0; // number of failures int sayac = 1; // student counter int sonuc; // one exam result 14 String giris; // user-entered value String cikis; // output string 17 // process 10 students using counter-controlled loop while ( sayac <= 10 ) { 20 // prompt user for input and obtain value from user giris = JOptionPane.showInputDialog( "Enter result (1 = geç, 2 = kal)" ); 24 // convert result to int sonuc = Integer.parseInt( giris ); 27 // if result 1, increment passes; if...else nested in while if ( sonuc == 1 ) gecenler = gecenler + 1; Loop until student counter is greater than 10 Analysis.java Line 19 Line 29 Nested control structure
28
Analysis.java 31 32 else // if result not 1, increment failures
kalanlar = kalanlar + 1; 34 // increment studentCounter so loop eventually terminates sayac = sayac + 1; 37 } // end while 39 // termination phase; prepare and display results cikis = “Geçenler: " + gecenler + "\nKalanlar: " + kalanlar; 42 // determine whether more than 8 students passed if ( gecenler > 8 ) cikis = cikis + "\nÖğretim Başarılı"; 46 JOptionPane.showMessageDialog( null, cikis, "Analysis of Examination Results", JOptionPane.INFORMATION_MESSAGE ); 50 System.exit( 0 ); // terminate application 52 } // end main 54 55 } // end class Analysis Analysis.java
29
4.11 Birleşik 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 c += 3
31
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
33
Increment.java Line 13 postincrement Line 21 preincrement
// Fig. 4.14: Increment.java // Preincrementing and postincrementing operators. 3 public class Increment { 5 public static void main( String args[] ) { int c; 9 // demonstrate postincrement c = 5; // assign 5 to c System.out.println( c ); // print 5 System.out.println( c++ ); // print 5 then postincrement System.out.println( c ); // print 6 15 System.out.println(); // skip a line 17 // demonstrate preincrement c = 5; // assign 5 to c System.out.println( c ); // print 5 System.out.println( ++c ); // preincrement then print 6 System.out.println( c ); // print 6 23 } // end main 25 26 } // end class Increment Line 13 postincrements c Increment.java Line 13 postincrement Line 21 preincrement Line 21 preincrements c 5 5 6
35
İlkel Veri Tipleri Java da tüm değişkenlerin mutlaka bir veri tipi olması lazımdır. Java ilkel veri tipleri
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.