Kontrol İfadeleri : 2.Kısım İçerik Bir Kontrollü Döngü İfadesinde Olması Gerekenler for Döngü Deyimleri for Döngü Deyimi ile alakalı Örnekler do…while Döngü Deyimi switch Çok Seçmeli.

Download Report

Transcript Kontrol İfadeleri : 2.Kısım İçerik Bir Kontrollü Döngü İfadesinde Olması Gerekenler for Döngü Deyimleri for Döngü Deyimi ile alakalı Örnekler do…while Döngü Deyimi switch Çok Seçmeli.

Kontrol İfadeleri : 2.Kısım
İçerik
Bir Kontrollü Döngü İfadesinde Olması Gerekenler
for Döngü Deyimleri
for Döngü Deyimi ile alakalı Örnekler
do…while Döngü Deyimi
switch Çok Seçmeli Komut
break ve continue Komutları
Etiketli break ve continue Komutları
Mantıksal Operatörler
Yapısal Programlama Özeti
Bir Kontrollü Döngü İfadesinde Olması
Gerekenler
• Sayaç-kontrollü döngü :
–
–
–
–
Kontrol değişkeni (döngü sayacı)
Kontrol değişkenine ilk değer verme
Her dönüşte kontrol değişkenini artırma/azaltma
Kontrol değişkeninin son değere ulaşıp ulaşmadığını
döngüdeki şart ile tespiti
for Döngü Komutu
for
anahtar
kelime
Kontrol
değişkeni
Noktalı
virgül ile
ayrım
Kontrol değişkenin
son değeri
Noktalı
virgül ie
ayrım
for ( int counter = 1; counter <= 10; counter++ )
Kontrol değişkenin
ilk değeri
Döngünün şartı
Kontrol değişkenin bir
artımı
for deyiminin ayrıntılı anlatımı.
for Döngü Yapısı
for ( ilk değer verme; döngü şartı; artış )
{
komutlar;
}
Aynı ifade aşağıdaki gibi de yazılabilir:
İlk değer verme;
while ( döngü şartı ) {
komutlar;
artış;
}
for İfadeleri için Örnekler
• for deyiminde kontrol değişkenin değişimi
– Kontrol değişkenini 1’den başlatıp 100 ‘e varıncaya kadar 1
artışla ilerletecek for deyimi
• for ( int i = 1; i <= 100; i++ )
– Kontrol değişkenini 100’den başlatıp 1‘e varıncaya kadar
1’er 1’er azaltıp ilerletecek for deyimi
• for ( int i = 100; i >= 1; i-- )
– Kontrol değişkenini 7’den başlatıp 7’şer artışla 77 kadar
ilerleyecek for deyimi
• for ( int i = 7; i <= 77; i += 7 )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Toplam.java
// 1’den 100’e kadar çift sayıların toplamı.
import javax.swing.JOptionPane;
Her for adımında numberı 2 arttır
public class Toplam {
public static void main( String args[] )
{
int toplam = 0; // ilk değer verme
// 2 den 100’e kadar çift sayıların toplamı
for ( int sayi = 2; sayi <= 100; sayi += 2 )
toplam += sayi;
// display results
JOptionPane.showMessageDialog( null, “Toplam " + toplam,
“2-100 arasındaki çift sayıların toplamı",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
} // end main
} // end class
// uygulamayı bitir
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//
// katlanarak artan faizi hesapla.
import java.text.NumberFormat; // sayısal format için gerekli class
import java.util.Locale; // bölgesel bilgiler için gerekli class
import javax.swing.JOptionPane;
import javax.swing.JTextArea; // metin alanı oluşturmak için
public class faizHesapla {
public static void main( String args[] )
{
double tutar;
// faiz getirisi+ anapara
double anapara = 1000.0; // anapara
double oran = 0.05;
// faiz oranı
// create NumberFormat for currency in US dollar format
NumberFormat moneyFormat = NumberFormat.getCurrencyInstance( Locale.US );
// çıktıyı göstermek için JTextArea nesnesi tanımla
JTextArea outputTextArea = new JTextArea();
// text area ya ilk satırı set et.
outputTextArea.setText( "Yıl\t hesaptaki tutar\n" );
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
);
42
43
44
45
46
47
// 10 yıl için her yıla ait miktarı hesapla
for ( int yil = 1; yil <= 10; yil++ )
{
// yıl için miktarı hesapla
tutar = anapara * Math.pow( 1.0 + oran, yil );
// outputTextArea nesnesine yeni bir satır ekle
outputTextArea.append( yil + "\t" +
moneyFormat.format( tutar ) + "\n" );
} // end for
// sonucu göster
JOptionPane.showMessageDialog( null, outputTextArea,
“bileşik faiz hesabı", JOptionPane.INFORMATION_MESSAGE
System.exit( 0 );
} // end main
} // end class
Append=eklemek
do…while Döngü İfadesi
• do…while yapısı
– while komutuna benzer.
– Bu döngü yapısında döngü içindeki blok en az bir defa
çalışır.
– do…while akış diyagramı.
Blok kodları
[true]
şart
[false]
switch Çok-Şeçmeli Yapılar
• switch deyimi
– Çok seçmeli zamanlar için kullanılır
[true]
case a
case a action(s)
break
case b action(s)
break
case z action(s)
break
[false]
[true]
case b
[false]
.
.
.
[true]
case z
[false]
default action(s)
break komutu ile switch akış diyagramı.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// SwitchTest.java
// kullanıcı seçimli doğru,dörtgen ve oval çizdirme.
import java.awt.Graphics;
import javax.swing.*;
public class SwitchTest extends JApplet {
int secim; // kullanıcının şekil seçimi
// kullanıcı seçimini sorma ile apleti başlat
public void init()
{
String input; // kullanıcıdan alınacak değer
// kullanıcıya seçimini sor
input = JOptionPane.showInputDialog(
“doğru için 1\n" +
“dörtgen için 2\n" +
“oval için 3 giriniz\n" );
secim = Integer.parseInt( input );
// string girişini int e çevir
} // end method init
// aplet üzerine şekilleri çiz
public void paint( Graphics g )
{
super.paint( g ); // JApplet içerisinden paint metodunu çağır
for ( int i = 0; i < 10; i++ )
{
// 10 kez çalıştır
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
switch ( secim )
// hangi şekli çizeceğine karar ver
{
case 1: // doğru çiz
g.drawLine( 10, 10, 250, 10 + i * 10 );
break; // işlemi bitir
case 2: // dörtgen çiz
g.drawRect( 10 + i * 10, 10 + i * 10,
50 + i * 10, 50 + i * 10 );
break; // işlemi bitir
case 3: // oval çiz
g.drawOval( 10 + i * 10, 10 + i * 10,
50 + i * 10, 50 + i * 10 );
break; // işlemi bitir
default: // kullanıcı yanlış değer girdi
g.drawString( “yanlış seçim",
10, 20 + i * 15 );
} // end switch
} // end for
} // end method paint
} // end class SwitchTest
SwitchTest.java
break ve continue deyimleri
• break/continue
– Programın akış sırasını değiştirir.
• break deyimi
– Kontrol yapısından çıkışı sağlar.
• while, for, do…while or switch ifadelerinde kullanılır
• continue deyimi
– Döngünün başına döner.
– while, for or do…while ifadelerinde kullanılır.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// BreakTest.java
// break deyimi ile dongüyü sonlandırma
import javax.swing.JOptionPane;
public class BreakTest {
public static void main( String args[] )
{
String output = "";
int count;
for ( count = 1; count <= 10; count++ ) {
if ( count == 5 )
break;
// dongu sayısı 10
// sayac 5 ise dögüyü sonlandır
output += count + " ";
} // end for
output += "\n sayaç " + count+ ” olduğunda dongu sonlandırıldı”;
JOptionPane.showMessageDialog( null, output );
System.exit( 0 );
} // end main
} // end class
// uygulamayı sonlandır
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// ContinueTest.java
// continue deyimi ile bir sonraki adıma geçme(dongu içinde).
import javax.swing.JOptionPane;
public class ContinueTest {
Sayaç 5 olduğunda 16. satırı atla ve
dongu başına 11. satıra dön
public static void main( String args[] )
{
String output = "";
for ( int count = 1; count <= 10; count++ ) {
if ( count == 5 )
continue;
// 10 sefer işle
// sayaç 5 olduğunda dongudeki kodu
output += count + " ";
} // end for
output += "\n continue deyimi ile 5 sayısı atlandı";
JOptionPane.showMessageDialog( null, output );
System.exit( 0 );
} // end main
} // end class ContinueTest
Etiketli break ve continue İfadeleri
• Etiketli blok
– {} arasındaki kodlar
– Parantez öncesi bloğu adlandırıcı etiket
• Etiketli break ifadesi
– İçinde bulunduğu bloktan çıkmasını sağlar.
– Blok sonundan çalışmaya devam eder.
• Etiketli continue ifadesi
– Blok içindeki kodları atlar
– Etiketin başına gelerek programa devam eder.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// BreakLabelTest.java
// Labeled break statement.
import javax.swing.JOptionPane;
public class BreakLabelTest {
Stop etiketlenmiş blok
public static void main( String args[] )
{
String output = "";
stop: {
10 satır yazar
// labeled block
// count 10 rows
for ( int row = 1; row <= 10; row++ ) {
İçteki dongu 5 sütün
yazar
// count 5 columns
for ( int column = 1; column <= 5 ; column++ ) {
if ( row == 5 )
break stop;
output += "*
";
} // end inner for
output += "\n";
} // end outer for
// row 5 ise stop bloğundan çık
Exit to line 35 (next slide)
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// following line is skipped
output += "\nLoops terminated normally";
} // end labeled block
JOptionPane.showMessageDialog( null, output,
"Testing break with a label",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
// terminate application
} // end main
} // end class BreakLabelTest
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Fig. 5.14: ContinueLabelTest.java
// Labeled continue statement.
import javax.swing.JOptionPane;
public class ContinueLabelTest {
nextRow etiketlenmiş blok
public static void main( String args[] )
{
String output = "";
nextRow:
Loop 5 times
// target label of continue statement
// count 5 rows
for ( int row = 1; row <= 5; row++ ) {
output += "\n";
Nested loop 10 times
// her satır için 10 kolon
for ( int column = 1; column <= 10; column++ ) {
// eğer colon > satır ise bir sonraki satıra geç
if ( column > row )
continue nextRow; // bir sonraki adıma atla
output += "*
";
} // end inner for
} // end outer for
continue to line 11 (nextRow)
29
30
31
32
33
34
35
36
37
38
JOptionPane.showMessageDialog( null, output,
"Testing continue with a label",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
// terminate application
} // end main
} // end class ContinueLabelTest
ContinueLabelTe
st.java
Mantısal Operatörler
• Mantıksal operatörler
– Daha karışık şartlar oluşturmak amaçlı
– Basit şartları birleştirmek amaçlı kullanılır.
• Java mantıksal operatörler
–
–
–
–
–
–
&&
&
||
|
^
!
(koşul AND)
(mantıksal AND)
(koşul OR)
(mantıksal OR)
(dışlayan OR)
(mantıksal NOT)
expression1 &&
expression2
false
false
false
false
true
false
true
false
false
true
true
true
Fig. 5.15 && (conditional AND) operator truth table.
expression1
expression2
expression1 ||
expression2
false
false
false
false
true
true
true
false
true
true
true
true
Fig. 5.16 || (conditional OR) operator truth table.
expression1
expression2
expression1 ^
expression2
false
false
false
false
true
true
true
false
true
true
true
false
Fig. 5.17 ^ (boolean logical exclusive OR) operator truth table.
expression1
expression2
expression
!expression
false
true
true
false
Fig. 5.18 ! (logical negation, or logical NOT) operator truth table.
Yapısal Programlama (Özet)
• Sıralı Yapılar
– Java daki yerleşik ifadeler
• Seçimli Yapılar
– if, if…else ve switch
• Tekrarlana Yapılar
– while, do…while ve for