C PROGRAMLAMA DİLİNE GİRİŞ

advertisement
C PROGRAMLAMA
Program AkıĢ Kontrol Yapıları
 Normal Ģartlarda C dilinde bir programın çalıĢması, komutların yukarıdan
aĢağıya doğru ve sırasıyla iĢletilmesiyle gerçekleĢtirilir.
 Ancak bazen problemin çözümü, bir yada birden fazla koĢula bağlı olarak,
yapılacak iĢ yada iĢlem adımlarına karar vermek suretiyle gerçekleĢtirilebilir.
 C dilinde bu amaçla kullanılan üç farklı koĢul (ġART) komutu bulunmaktadır.
 if deyimi
 ?: üçlü Ģart operatörü (ternary conditional)
 switch çoklu seçim deyimi (multiply selection stetement)
if Deyimi

Verilen durum yada koĢula göre istenilen iĢlem yada iĢlemleri gerçekleĢtirmek için kullanılır.

DeğiĢik kullanım biçimleri vardır.

Tek alternatifli if;

Bu durumda koĢulun sonucu DOĞRU (true), baĢka bir deyiĢle EVET ise; koĢuldan hemen sonra gelen
komut1 satırı veya satırları çalıĢır.

KoĢulun sonucu YANLIġ (false), yani HAYIR ise; IF komutundan sonra gelen komut2 satırı çalıĢtırılır.

KoĢul doğru olduğunda birden fazla komut satırı çalıĢacaksa bu komutlar blok { - } içinde yazılmalıdır.
if Deyimi
 İki alternatifli if;
 Bu durumda koĢul doğru ise komut1 satırı veya satırları yanlıĢ ise komut2 satırı
veya satırları çalıĢacaktır.
 Birden fazla komut satırları için blok iĢareti { - } kullanılmalıdır.
if Deyimi - Örnek
?: Üçlü Ģart operatörü
 Bu operatör üç adet operand alır.
 C diline özgü bir operatördür.
 Genel kullanım biçimi Ģu Ģekildedir:

operand1 ? operand2 : operand3
 operand1 ifadesinin sonucu doğru (true) ise operand2, yanlıĢ (false) ise
operand3 çalıĢtırılır.

ortalama >= 60 ? printf(“Geçti”) : printf(“Kaldı”);
Önemli bir nokta
 mantıksal iĢlemleri gerçekleĢtirirken dikkat edilemsi gereken önemli bir nokta
vardır.
 Buda, mantıksal iĢlemlerde 0 (sıfır) yanlıĢı (false) ifade eder, sıfırdan farklı
herhangi bir değer doğruyu (true) ifade etmesidir.
 Bu durumda aĢağıdaki kodun çıktısı ne olur ?
switch çoklu seçim deyimi

Bu deyim verilen ifadenin değerine göre verilen komut yada komut satırlarını çalıĢtırır.

Verilen ifadenin değerinin sıralı giden (ordinal) olması gerekir.

Bu ifade için kullanılacak değiĢken tipleri int ve char olabilir, float yada double gibi
ondalık değerler olamaz.
switch sözcüğünün yanındaki Ġfadenin değeri, blok içindeki
case sözcüklerinin yanında verilen değerlerden hangisine
uyuyorsa o satırdaki komut yada komutlar çalıĢtırılır.
Switch – örnek program
Görüldüğü üzere
bu kodda bir
problem var ?
Switch – örnek program
Bir önceki kodda break
sözcüğü
yazılmadığı
için
program,
uygun
case
sözcüğündeki
komutu
çalıştırdıktan sonra, sırayla geri
kalan tüm komutları da
çalıştırmıştı.
Burda ise her bir case
sözcüğüne break ifadesini
ekledik.
Bu sayede program uygun case
sözcüğündeki komutu çalıştırdı
ve switc bloğu sonlandı.
Döngüler (Loops)

Algoritma içerisinde gerçekleĢtirilen belli adımların tekrarlanması sonucu problem
çözümüne gidilebilir.

Döngüler sayesinde geliĢtirilen program içerisinde gereksiz kod satırlarının giderilmesi
sağlanır.

Ġyi bir algoritma problemi olabilecek en kısa adımda ve en etkili biçimde çözebilendir.

Örneğin programcının adını ekrana 10 kere yazan bir program düĢünelim.
ġimdiye kadar öğrendiğimiz verilerle bu iĢlemi yandaki
gibi gerçekleĢtirebiliriz.
Fakat böyle bir iĢlemin 100 kere yada daha fazla
tekrarla yapılması istendiğinde ne olacak ?
Bu durumda döngüler bize yardımcı olacak 
Sayaç kontrollü döngüler

Yapılacak tekrar miktarının bilindiği durumlarda döngü bir sayaç kullanılarak tasarlanabilir.

Sayaç aslında tekrar edilme iĢleminin ne kadar yapıldığını tutan bir değiĢkendir.

Böyle sayaç kontrollü bir döngüde olması gereken temel öğeler Ģunlardır.

Döngüde bir sayaç değiĢkeni olmalıdır. Bu değiĢken döngü sayacı olarak bilinir.

Döngü sayacına bir atama ifadesiyle ilk değer verilir.

Döngü sayacının değerinin sınır değere gelip gelmediği kontrol edilir

Döngünün gövdesinin her çalıĢmasından sonra, sayacın değeri bir artırma yada eksiltme iĢlemi ile değiĢtirilir.
Sayaç kontrollü döngüler

ġimdi programcının adını ekrana 10 kere yazdıran programı döngülerle tekrar gerçekleĢtirelim.

Görüldüğü gibi döngüler sayesinde printf() fonksiyonunu bir sefer kullanarak programcının ismini
ekrana 10 kere yazdırabildik.

Artık bu iĢlemi 100 kerede tekrarlasak 1000 kerede tekrarlasak mevcut kod satırı sayısında bir
değiĢiklik olmayacak.

goto komutu programın yapısallığını ve okunabilirliğini azalttığı için programlamada pek tavsiye
edilmez.
While döngüsü
 Döngü oluĢturmanın C dilinde bir çok yolu vardır.
 Bunlardan en basiti while döngüsüdür.
Gözcü kontrollü döngüler (sentinel controlled loops)
 ÇalıĢtırılması gereken adımların tekrar sayısının bilinmediği problemlerde
program, kullanıcının dıĢarıdan belli bir değer veya değer gurubundan birini
girdi olarak vermesiyle ya da program içerisinde üretilen belli bir değere göre
sonlandırılır.
 Bu değer yada değerlere gözcü değeri (sentinel value) adı verilir.
Gözcü kontrollü döngüler
Burada kaç adet not girileceği belirtilmemiĢtir.
Kullanıcı isterse 4 nottan sonra -1 , isterse de
100 nottan sonra -1 girebilir.
Bu amaçla girilen not değeri, gözcü değeri ile
kontrol edilir.
Bu çözümde sınav notu olamayacak bir
değer olan -1, kontrol değeri olarak
seçilmiĢtir.
for döngüsü
 for döngüsü özellikle tekrar edilen iĢlemlerin sayısı belli olduğunda kullanılan
baĢka bir döngü yapısıdır.
 Bu tür durumlarda while deyiminden daha uygundur. Genel kullanım yapısı
aĢağıdaki gibidir.
 Döngü içerisinde birden fazla komut tekrar edilecekse komutlar blok içerisine
alınmalıdır.
Programcının ismini ekrana 10 kez yazan programın for döngüsü ile yapılan versiyonu
do – while döngüsü
 while döngüsü yapısına benzer.
 while döngüsünde koĢul en baĢta kontrol edilir ve koĢul sağlanmazsa döngü
içine hiç girilmez.
 do-while döngüsünde ise koĢul en sonda kontrol edilir ve koĢul sağlanmazsa
bile en az bir kez döngü içine girilir.
 Genel kullanım Ģekli aĢağıdaki gibidir.
Ġç-içe Döngüler (Nested Loops)
 Bir döngü içerisinde baĢka bir döngü bulunuyorsa, bu tür yapılara iç-içe
döngüler denir.
 Bu durumda içteki döngü dıĢtaki döngünün her adımında yeniden
çalıĢtırılacaktır.
DıĢtaki döngü 4 kere tekrarlanacaktır.
Ġçteki döngü de dıĢtaki döngünün her tekrar ediliĢinde 3 kere tekrar
edilecektir.
Böylece içteki döngünün gövdesini oluĢturan atama ifadesi 12 kere
tekrar edilmiĢ olacaktır.
DıĢtaki for döngüsünden çıkıldığında, n değiĢkeni içerisindeki değer 12
olacaktır.
break
 break Deyimi

Bu komut daha önce switch – case yapısında kullanılmıĢtı.

Döngü içinde kullanılan break komutunun amacı, çalıĢtığı anda döngüyü
sonlandırarak döngü dıĢına çıkılmasını sağlamaktır.

Programın iĢleyiĢi döngünün dıĢındaki ilk komuttan devam eder.
continue
 continue Deyimi

Döngü içinde kullanılan bu komutun amacı çalıĢtığı anda döngü içindeki geri kalan
komutları iĢletmeden döngü baĢı yapılmasını sağlamaktır.

Programın iĢleyiĢi döngü içindeki bu komuttan sonra verilen tüm ifadeler atlanarak
döngü baĢına yönlendirilir.
Download