0% found this document useful (0 votes)
6 views17 pages

CSL3 Control Structures

Uploaded by

engineeringengtr
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views17 pages

CSL3 Control Structures

Uploaded by

engineeringengtr
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Kontrol Yapıları

Giri
Algoritmalar
Pseudocode
Kontrol Yapıları
if Seçme Yapısı
if/else Seçme Yapısı
while Tekrar Yapısı
Algoritma Düzenleme : Örnek Çalı ma 1 (Sayaç Kontrollü Tekrar)
Algoritma Düzenleme : Örnek Çalı ma 2 (Sentinel Kontrollü Tekrar)
Algoritma Düzenleme : Örnek Çalı ma 3 ( çiçe Kontrol Yapısı)
Atama Operatörleri
Artırma ve Azaltma Operatörleri

Giri

• Program yazmaya ba lamadan önce


– Problemi anlayın
– Çözüm için bir yakla ım dü ünün
– Yapılandırılacak blokları anlayın

1
Algoritmalar

• Prosedür
– Bir programın gerçekle tirece i i lemlerdir
– lemlerin gerçekle tirilece i sıradır
– Algoritma olarakta adlandırılır
• Program kontrol
– Bilgisayarın do ru bir ekilde i lemleri gerçekle tirebilmesi
için görevlerin sıralanmasıdır

Pseudocode (Kaba kod)

• Pseudocode
– Yapay ve günlük dil kullanır
– Programcıya algoritmayı planlamasında yardımcı olur
– Gerçek bir programlama dili de ildir
– C# koduna basit bir ekilde çevrilir

2
Kontrol Yapıları

• Program kontrolü
– Program bir deyimden (statement) bir sonraki deyime
geçerek çalı ır
• Sıralı çalı ma (Sequential execution)
– Bir sonraki satırdan ba ka bir satırı çalı tırmak için kontrol
yapıları kullanılır
• Seçme Yapısı (Selection structure)
– if ve if/else deyimleri
– goto deyimi
• Kesinlikle gerekmedikçe kullanılmamalıdır
• Programın okunmasında problemler olu turabilir
• Tekrar Yapısı (Repetition structure)
– while ve do/while döngüleri (loops)
– for ve foreach dögüleri

Kontrol Yapıları

• Akı emaları (Flow carts)


– Programın haritalanması için kullanılır
– Sırayla gelecek olayları gösterir
• Dikdörtgen bir i lemi gösterir (Toplama, Yazdırma v.b.)
• Oval ba lama ve biti gösterimlerinde kullanılır
• Daireler ba lantılar için kullanılır
• Paralel kenar karari lemlerini gösterir
– Kontrol yapılarının birle tirilmesi
• Yı ın
– Birinden di erine geçer
• çiçe
– Birisini di erinin içine ekler

3
Kontrol Yapıları

add grade total total = total + grade;

add 1 to counter counter = counter + 1;

Fig. 4.1 Flowcharting C#’s sequence structure.

Kontrol Yapıları

abstract as base bool break


byte case catch char checked
class const continue decimal default
delegate do double else enum
event explicit extern false finally
fixed float for foreach get
goto if implicit in int
interface internal is lock long
namespace new null object operator
out override params private protected
public readonly ref return sbyte
sealed set short sizeof stackalloc
static string struct switch this
throw true try typeof uint
ulong unchecked unsafe ushort using
value virtual void volatile while

4
if Seçme Yapısı

• if yapısı
– Programın seçme yapmasını sa lar
– Belirtilen arta göre i lem yapar
• bool türünde bir ifadeyi de erlendirir
• True: i lemi yapar
• False: i lemi atlar
– Noktalı virgül gerektirmez

if Seçme Yapısı

true
Grade >= 60 print “Passed”

false

Fig. 4.3 Flowcharting a single-selection if structure.

5
if/else seçme yapısı

• if/else yapısı
– Birden fazla durumun test edilmesinde kullanılır
– ({) parantezi kullanılarak birden fazla satır i lem yapılabilir

if/else seçme yapısı

false true
Grade >= 60

print “Failed” print “Passed”

Fig. 4.4 Flowcharting a double-selection if/else structure.

6
art operatörü (?:)

• art operatörü (?:)


– C#’ın tek üç parçalı operatörüdür
– if/else yapısına benzer
– Yazımı öyledir:
• (boolean value ? if true : if false)

while tekrar yapısı

• Tekrar yapısı
– Tekrarlı yapılan i lemleri ifade eder
• While deyimi do ru (true) oldu u sürece i lem tekrarlanır
• While deyimi yanlı (false) oldu unda i lem biter
– Bir satır veya paranteze alınmı bir blo u içerir
• artın mutlaka sonlandırılmı olması gerekir
– Sonlandırılmamı artlarda sonsuz dögüye girer

7
while tekrar yapısı

true
Product <= 1000 Product = 2 * product

false

Fig. 4.5 Flowcharting the while repetition structure.

Algoritmanın düzenlenmesi: Örnek Çalı ma 1


(Sayaç Kontrollü Tekrar)
• Sayaç (Counter) Kontrollü Tekrar
– Bir zamanda bir bilgi giri inde kullanılır
– Sayaç döngünün ne zaman bitece ini belirlemek için
kullanılır
– Sayaç bir belirlenen de ere ula tı ında i lemler bitirilir

8
Algoritmanın düzenlenmesi: Örnek Çalı ma 1
(Sayaç Kontrollü Tekrar)

total de i kenini sıfır yap


grade sayacını bir yap

grade sayacı 10’a e it veya küçük ise


Bir sonraki grade de erini gir
grade de erini total de erine ekle
grade sayacını bir artır

total de erini 10’a bölerek average de erini bul


average de erini ekrana yaz

Fig. 4.6 Sınıf ortalaması probleminin sayaç kontrollü çözümü

1 // Fig. 4.7: [Link]


2 // Class average with counter-controlled repetition.
3
4 using System;
5
6 class Average1
7 {
8 static void Main( string[] args )
9 {
10 int total, // sum of grades
11 gradeCounter, // numbertotal
of grades entered
de i kenini 0 olarak ba lat (initiliaze)
12 gradeValue, // grade value
13 average; // average of all grades
14 gradeCounter de erini 1 olarak ba lat
15 // initialization phase
16 total = 0; // clear total
17 gradeCounter = 1; while
// prepare to loop döngüsü 10 defa çalı ır ve 10
18
19 // processing phase
ö rencinin notunu alır
20 while ( gradeCounter <= 10 ) // loop 10 times
21 {
22 // prompt for input and read grade from user
23 [Link]( "Enter integer grade: " ); grade de eri giri i için kullanıcı beklenir
24
25 // read input and convert to integer
26 gradeValue = [Link]( [Link]() );
27
28 // add gradeValue to total 10 adet grade de eri toplanır
29 total = total + gradeValue;
30 Sayaca 1 eklenir ve 10 dan büyük olunca döngüden çıkılır
31 // add 1 to gradeCounter
32 gradeCounter = gradeCounter + 1;
33 }

9
34
35 // termination phase
36 average = total / 10; // integer division
37
38 // display average of exam grades
39 [Link]( "\nClass average is {0}", average );
40
41 } // end Main total de i kenin de eri 10 ile
42
43 } // end class Average1 bölünür ve ortalam de er bulunur

Sonuç ekrana yazılır

Enter integer grade: 100


Enter integer grade: 88
Enter integer grade: 93
Enter integer grade: 55
Enter integer grade: 68
Enter integer grade: 77
Enter integer grade: 83
Enter integer grade: 95
Enter integer grade: 73
Enter integer grade: 62

Class average is 79

Algoritmanın düzenlenmesi: Örnek Çalı ma 2


(Sentinel Kontrollü Tekrar)
• Sentinel kontrollü tekrar
– stenen sayıda tekrarlanır
– Sentinel de er
• döngüden çıkmayı sa lar

10
Algoritmanın düzenlenmesi: Örnek Çalı ma 2
(Sentinel Kontrollü Tekrar)
total de eri sıfır olarak ba lat
sayacı sıfır olarak ba lat

ilk grade de erini gir (sentinel de er olabilir)

kullanıcı sentinel de er girmediyse


grade de erini total de erine ekle
grade sayacına bir ekle
bir sonraki grade de erini gir (sentinel olabilir)

If sayaç de eri sıfır de ilse


total de erini sayaca bölerek average de erini bul
average de erini ekrana yaz
Else
average de eri girilmedi ini ekrana yaz

Fig. 4.8 Sınıf ortalaması probleminin sentinel kontrollü döngüyle çözümü

1 // Fig. 4.9: [Link]


2 // Class average with sentinel-controlled repetition.
3
4 using System;
5
6 class Average2
7 {
8 static void Main( string[] args )
9 {
10 int total, // sum of grades average de i keni double türünde
11 gradeCounter, // number of grades entered
12 gradeValue; // grade value
tanımlandı
13
14 double average; // average of all grades
15
16 // initialization phase gradeCounter ve total de i kenleri 0
17 total = 0; // clear total
18 gradeCounter = 0; // prepare to loop olarak ba latıldı
19
20 // processing phase
21 // prompt for input and convert to integer
22 [Link]( "Enter Integer Grade, -1 to Quit: " );
23 gradeValue = [Link]( [Link]() );
24 gradeValue de i keni için
kullanıcıdan bir de er alındı

11
25 // loop until a -1 is entered by user gradeValue de i keni -1
26 while ( gradeValue != -1 ) de erinden farklı oldu u
27 {
28 // add gradeValue to total sürece döngüyü çalı tırır
29 total = total + gradeValue;
30 Grade de erlerini toplar
31 // add 1 to gradeCounter
32 gradeCounter = gradeCounter + 1;
33
Ö renci sayısını belirlemek
34 için sayaca bir
// prompt for input and read grade from user ekle
35 // convert grade from string to integer
36 [Link]( "Enter Integer Grade, -1 to Quit: " );
37 gradeValue = [Link]( [Link]() );
38
39 } // end while
40
41 // termination phase Kullanıcının ba ka bir grade
42 if ( gradeCounter != 0 ) de eri girmesi beklenir
43 {
44 average = ( double ) total / gradeCounter;
45 Girilen grade de erinin 0
46 // display average of exam grades
47 [Link]( "\nClass average is {0}", average ); olmadı ı kontrol edilir
48 }
49 else average de eri hesaplanır
50 {
51 [Link]( "\nNo grades were entered" );
52 }
53
54 } // end method Main
55 average de eri ekrana yazılır
56 } // end class Average2
grade de eri girilmediyse
kullanıcı bilgilendirilir

Enter Integer Grade, -1 to Quit: 97


Enter Integer Grade, -1 to Quit: 88
Enter Integer Grade, -1 to Quit: 72
Enter Integer Grade, -1 to Quit: -1

Class average is 85.6666666666667

12
Algoritmanın düzenlenmesi: Örnek Çalı ma 2
( çiçe Kontrollü Tekrar)
• çiçe Kotrol
– Bir kontrol yapısı di erinin içerisinde yer alır
• Çoklu dögü (Multiple loops)
• if deyimleri ile döngüler

Algoritmanın düzenlenmesi: Örnek Çalı ma 2


( çiçe Kontrollü Tekrar)
passes de i kenini sıfır yap
failures de i kenini sıfır yap
student de i kenini bir yap

Ö renci sayacı 10’a e it veya küçükse


Yeni sınav sonucu gir

If ö renci geçtiyse
passes de i kenine bir ekle
Else
failures de i kenine bir ekle

ö renci sayacına bir ekle

Geçen ö renci sayısını ekrana yaz


Kalan ö renci sayısını ekrana yaz

Sekiz ö renciden fazla ö renci geçtiyse


Ekrana “Good results” yaz
Fig. 4.10 Pseudocode ile sınav sonuçları programı

13
1 // Fig. 4.11: [Link]
2 // Analysis of Examination Results.
3
4 using System;
5
6 class Analysis
7 {
8 static void Main( string[] args )
9 { passes ve failures de i kenlerini 0,
10 int passes = 0, // number of passes
11 failures = 0,
ö renci sayacını 1 yap
// number of failures
12 student = 1, // student counter
13 result; // one exam result
14 While döngüsü 10 defa çalı acaktır
15 // process 10 students; counter-controlled loop
16 while ( student <= 10 )
17 {
18 [Link]( "Enter result (1=pass, 2=fail): " );
19 result = [Link]( [Link]() );
20
21 if ( result == 1 )
çiçe if deyimiyle hangi sayaca
22 passes = passes + 1; ekleme yapılaca ı belirlenir
23
24 else
25 failures = failures + 1; Kullanıcı 1 girerse passes
26 de i kenine bir ekle
27 student = student + 1;
28 }
29 Kullanıcı 1 girerse failures de i kenine bir ekle

Toplam ö renci sayısına bir ekle

30 // termination phase
31 [Link]();
32 [Link]( "Passed: " + passes );
33 [Link]( "Failed: " + failures );
34
35 if ( passes > 8 )
36 [Link]( “Good results\n" ); Sonuçları ekrana yaz
37
38 } // end of method Main
39
40 } // end of class Analysis
Toplam geçen sayısı 8’den büyükse
kullanıcıya bildir

Enter result (1=pass, 2=fail): 1


Enter result (1=pass, 2=fail): 2
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1

Passed: 9
Failed: 1
Good results

14
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 2
Enter result (1=pass, 2=fail): 2
Enter result (1=pass, 2=fail): 2
Enter result (1=pass, 2=fail): 2
Enter result (1=pass, 2=fail): 2
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1

Passed: 5
Failed: 5

Atama Operatörleri

• Atama operatörleri
– Kod boyutunu azaltabilir
• x += 2 ile x = x + 2 aynıdır
• ++, -=, *=, /=, and %=

15
Atama Operatörleri

!
int c = 3, d = 5,
e = 4, f = 6, g =
12;
+= c += 7 c = c + 7 c 10 olur
-= d -= 4 d = d - 4 d 1 olur
*= e *= 5 e = e * 5 e 20 olur
/= f /= 3 f = f / 3 f 2 olur
%= g %= 9 g = g % 9 g 3 olur

"

Artırma ve Azaltma Operatörleri

• Artırma operatörü
– De i kene bir ekler
– x++ ile x = x + 1 aynıdır
• Azaltma operatörü
– De i kenden bir çıkarır
– y--
• Pre-increment ve post-increment
– x++ veya x--
• Önce i lem yapılır daha sonra de i kene bir eklenir / çıkarılır
– ++x veya --x
• Önce de i kene bir eklenir / çıkarılır daha sonra i lem yapılır

16
Artırma ve Azaltma Operatörleri

++ preincrement ++a Önce a de i keni 1 artırılır daha sonra


yeni de eri kullanılır.

++ postincrement a++ Önce a de i keninin de eri kullanılır daha


sonra bir artırılır.
-- predecrement --b Önce b de i keni 1 azaltılır daha sonra
yeni de eri kullanılır.
-- postdecrement b-- Önce b de i keninin de eri kullanılır daha
sonra bir azaltılır.

"#

1 // Fig. 4.14: [Link]


2 // Preincrementing and postincrementing
3
4 using System;
5
6 class Increment
7 {
8 static void Main(string[] args)
9 {
10 int c; c de i keni tanımlanır
11
12 c = 5; c de i kenine 5 atandı
13 [Link]( c ); // print 5
14 [Link]( c++ ); // print 5 then postincrement
15 [Link]( c ); // print 6
16 Ekrana c (6) olarak yazılır
17 [Link](); // skip a line
18
19 c = 5; c ye 5 atandı
20 [Link]( c ); // print 5 Ekrana c (5) olarak yazıldı
21 [Link]( ++c ); // preincrement then print 6
22 [Link]( c ); // print 6 1 eklendi ve ekrana c (6) olarak yazıldı
23
24 } // end of method Main Ekrana c (6) olarak yazıldı
25
26 } // end of class Increment

5
5
6

5
6
6

17

You might also like