CSL4 Control Structures 2
CSL4 Control Structures 2
Giriş
Sayaç Kontrollü Tekrar Yapısı
for Tekrar Yapısı
for Yapısı örnekleri
switch Çoklu Seçim Yapısı
do/while Tekrar Yapısı
break ve continue deyimleri
Mantık ve Şart Operatörleri
Özet
1
1 // Fig. 5.1: [Link]
2 // Counter-controlled repetition.
3
4 using System;
5
6 class WhileCounter
7 { Sayaç değişkeni 1 değeriyle
8 başlatılır.
static void Main( string[] args )
9 {
10 int counter = 1; // initialization
11 Döngü sayaç 5 değerinden büyük
12 while ( counter <= 5 ) oluncaya
// repetition kadar devam
condition eder (6 değeri
13
14
{
[Link]( counter );
olduğunda biter)
15 counter++; // increment
16
Sayaç her döngüde 1 artırılır.
17 } // end while
18
19 } // end method Main
20
21 } // end class WhileCounter
1
2
3
4
5
2
for Tekrar Yapısı
Kontrol değişkeninin
int counter = 1
başlangıç değeri
atanır
Kontrol
değişkeninin son true [Link]
counter <= 10 counter++
değerine ulaşıldığı ( counter * 10 );
kontrol edilir.
Kontrol
false Döngünün işlem bloğu değişkeninin
artılması
3
1 //Kontrol değişkeni
Fig. 5.2: 1 değeriyle
[Link]
2 // Counter-controlled repetition with the for structure.
3 başlatıldı
4 using System; Sayaç her döngüde 1 artırılır
5
6 class ForCounter
7 {
8 Kontrol değişkeni
static void Main( string[] args ) 6’dan küçük olduğu
9 { sürece döngü devam eder
10 // initialization, repetition condition and incrementing
11 // are all included in the for structure
12 for ( int counter = 1; counter <= 5; counter++ )
13 [Link]( counter );
14 }
15 }
1
2
3
4
5
• Artırma ve Azaltma
– Artırmada
• Çoğunlukla < veya <= kullanılır
– Azaltmada
• Çoğunlukla > veya >= kullanılır
• Mesaj kutuları (Message boxes)
– Butonlar
• OK
• OKCancel
• YesNo
• AbortRetryIgnore
• YesNoCancel
• RetryCancel
4
for Yapısı Örnekleri
• Mesaj kutuları
– Icon’lar
• Exclamation
• Question
• Error
• Information
• Format
– (variable : format)
• Format kodları Fig. 5.9’da verilmiştir.
Parametre 4:
MessageBox Icon
(Opsiyonel) Parametre 2: Başlık
çubuğu metni
(Opsiyonel)
5
for Yapısı Örnekleri
MessageBox Icon’ları Icon Tanım
[Link] Ekrana ünlem işaretini çıkarır ve
kullanıcıyı olası bir probleme
karşı uyarır.
6
1 // Fig. 5.8: [Link]
2 // Calculating compound interest.
3
4 using System;
5 using [Link];
6
7 class Interest
8 {
9 static void Main( string[] args )
10 {
11 decimal amount, principal = ( decimal ) 1000.00;
12 double rate = .05; Döngü 10 kez tekrarlanır. Her
13 string output;
14 seferde 1 artırılır ve 11 olunca çıkılır
15 output = "Year\tAmount on deposit\n";
16
17 for ( int year = 1; year <= 10; year++ ) Para birimine sahip format oluşturur
18 {
19 amount = principal *
20 ( decimal ) [Link]( 1.0 + rate, year );
21 Bir Tab ekle
22 output += year + "\t" +
23 [Link]( "{0:C}", amount ) + "\n";
24 }
25
26 [Link]( output, "Compound Interest",
27 [Link], [Link] );
28
29 } // end method Main
30
31 } // end class Interest
“Compound Interest” başlığına sahip ve bir
OK butonu ile bir Information icon’ına sahip
bir mesaj kutusu ekrana getirir.
Ekran çıktısı
7
for Yapısı Örnekleri
F or f Sabit basamak sayısına göre sayıyı yazar. İstenen basamak sayısı F’den hemen
sonra girilir.
G or g Genel formattır.
X or x Hexadecimal formattır.
Fig. 5.9 Format kodları.
• switch deyimi
– Sabit deyimler
– Durumlar (Cases)
• Case ‘x’ :
– Sabit durum değişkenleri kullanılır
• Boş durumlar (Empty Cases)
• Varsayılan durum (default case)
– break deyimi
• switch deyiminden çıkış
8
1 // Fig. 5.10: [Link]
2 // Counting letter grades.
3
4 using System;
5
6 class SwitchTest
7 {
8 static void Main( string[] args )
9 {
10 char grade; // one grade
11 int aCount = 0, // number of As
12 bCount = 0, // number of Bs
13 cCount = 0, // number of Cs
14 dCount = 0, // number of Ds
15 fCount = 0; // number of Fs
16
17 for ( int i = 1; i <= 10; i++ )
18 {
19 [Link]( "Enter a letter grade: " );
20 grade = [Link]( [Link]() );
21
22 switch ( grade )
23 {
24 case 'A': // grade is uppercase A
25 case 'a': // or lowercase a
26 ++aCount;
27 break;
28
29 case 'B': // grade is uppercase B
30 case 'b': // or lowercase b
31 ++bCount;
32 break;
33
9
Enter a letter grade: a
Enter a letter grade: A
Enter a letter grade: c
Enter a letter grade: F
Enter a letter grade: z
Incorrect letter grade entered.
Grade not added to totals.
Enter a letter grade: D
Enter a letter grade: d
Enter a letter grade: B
Enter a letter grade: a
Enter a letter grade: C
true
case: a case a action(s) break;
false
true
case: b case b action(s) break;
false
.
.
.
true
case: z case z action(s) break;
false
defaultaction(s)
break;
10
do/while Tekrar Yapısı
– while döngüsü
• Döngü şartı test edilir
• İşlemler gerçekleştirilir
• Döngü tekrarlanır
– do/while
• İşlemler gerçekleştirilir
• Döngü şartı test edilir
• Döngünün tamamı en az bir kez çalıştırılır
1
2
3
4
5
11
do/while Tekrar Yapısı
action(s)
true
condition
false
• Kullanım
12
1 // Fig. 5.14: [Link]
2 // Using the break statement in a for structure.
3
4 using System;
5 using [Link];
6
7 class BreakTest
8 {
9 static void Main( string[] args )
10 {
11 string output = "";
12 int count;
13
14 for ( count = 1; count <= 10; count++ )
15 {
16 if ( count == 5 )
17 break; // skip remaining code in loop
18 // if count == 5
19
20 output += count + " ";
21
22 } // end for loop
23
24 output += "\nBroke out of loop at count = " + count;
25
26 [Link]( output, "Demonstrating the break statement",
27 [Link], [Link] );
28
29 } // end method Main
30
31 } // end class BreakTest
13
1 // Fig. 5.15: [Link]
2 // Using the continue statement in a for structure.
3
4 using System;
5 using [Link];
6
7 class ContinueTest
8 {
9 static void Main( string[] args )
10 {
11 string output = "";
12
13 for ( int count = 1; count <= 10; count++ )
14 {
15 if ( count == 5 )
16 continue; // skip remaining code in loop
17 // only if count == 5
18
19 output += count + " ";
20 }
21
22 output += "\nUsed continue to skip printing 5";
23
24 [Link]( output, "Using the continue statement",
25 [Link], [Link] );
26
27 } // end method Main
28
29 } // end class ContinueTest
14
Mantık ve Şart Operatörleri
• Operatörler
– Mantıksal AND (&)
– Şart AND (&&)
– Mantıksal OR (|)
– Şart OR (||)
– Mantıksal exclusive OR or XOR (^)
– Mantıksal NOT (!)
• Birden fazla şart deyimlerinde kullanılır
15
Mantık ve Şart Operatörleri
expression !expression
false true
True false
Fig. 5.19 Mantıksal NOT (!) için doğruluk tablosu
16
31 // testing the logical OR operator (|)
32 [Link]( "\n\nLogical OR (|)" +
33 "\nfalse | false: " + ( false | false ) +
34 "\nfalse | true: " + ( false | true ) +
35 "\ntrue | false: " + ( true | false ) +
36 "\ntrue | true: " + ( true | true ) );
37
38 // testing the logical exclusive OR operator (^)
39 [Link]( "\n\nLogical exclusive OR (^)" +
40 "\nfalse ^ false: " + ( false ^ false ) +
41 "\nfalse ^ true: " + ( false ^ true ) +
42 "\ntrue ^ false: " + ( true ^ false ) +
43 "\ntrue ^ true: " + ( true ^ true ) );
44
45 // testing the logical NOT operator (!)
46 [Link]( "\n\nLogical NOT (!)" +
47 "\n!false: " + ( !false ) +
48 "\n!true: " + ( !true ) );
49 }
50 }
Conditional OR (||)
false || false: False
false || true: True
true || false: True
true || true: True
Logical OR (|)
false | false: False
false | true: True
true | false: True
true | true: True
17
Haftalık Ödev
Bir otoparkta otomobil için 2YTL, kamyon için 5YTL ve otobüs için 8YTL ücret
alınmaktadır. Kar oranları otomobil için %25, kamyon için %30 ve otobüs için
%35 olarak belirlenmiştir. Kullanıcı gelen araçları sürekli bilgisayara
girmektedir. Araç türü bilgisi olarak otomobil için “O”, kamyon için “K” ve
Otobüs için “B” girilmektedir. Programdan çıkmak için “C” harfi girilmektedir.
Her araç girildiğinde yeni araç türü girilmesi istenmekte ve çıkış için “C”
girilmesi gerektiği kullanıcıya bildirilmektedir. “C” ile çıkıldığında ekrana
aşağıdaki bilgileri başlıkları ile birlikte (Örn.: TOPLAM KAR MİKTARI = 75 YTL)
alt alta yazan bir program yazınız.
Not:
Ödev programın kod çıktısı şeklinde teslim edilecek. Kapak sayfasında sadece
öğrenci bilgileri (Numara, Ad Soyad) ile ödev adı olarak “OTOPARK OTOMASYON
PROGRAMI” başlığı yazılacaktır. Haftalık ödev rapor kapak formatı
[Link] web sayfasından downloads bölümünden elde
edilebilir.
18