Nasil C de Karar ve Döngü Yapılar
From Lapis Wiki
Ortam değişkenlerinin durumuna göre programımızın akışını değiştirmek isteyebiliriz.
Konu başlıkları |
If Deyimi
Bir veya birden fazla karşılaştıma sonucunun doğru olası veya olmaması durumunda yürütülmesi istenen komutlar tanımlanır.
if (a<b) //Eğer tek bir komut işletilecekse "{}" kullanmaya gerek yoktur.
printf("a, b'den kucuktur");
if (a<b)
printf("a, b'den kucuktur");
else //İstenilen şart sağlanmadıysa
printf("a, b'den buyuktur");
if (a<b)
printf("a, b'den kucuktur");
else if (a>0) //İstenilen şart sağlanmadıysa yeni bir şart koşabiliriz
printf("a, b'den buyuktur ve a pozitif bir sayidir");
? İşleci
? işleci 2. örnekteki if deyiminin kullanılmasına benzer fakat tek iki operantlı kontrol yapısıdır.
if (a<b)
printf("a, b'den kucuktur");
else //İstenilen şart sağlanmadıysa
printf("a, b'den buyuktur");
yerine
a<b? printf("a, b'den kucuktur"):printf("a, b'den buyuktur")
kullanılabilir.
Switch
Eğer kullanılan değişkenin değerleri birden çok sabit değerlerle karşılaştırılacaksa if deyimi kulanmak yerine switch deyimi kullanmak programın okunabilirliği ve karmaşıklı bakımından daha mantıklıdır.
| Kod: |
Bu program gün bilgisini alıp karekter olarak bize gösterir
#include <stdio.h>
#include <time.h>
struct tm *zaman;
time_t zaman_;
main(){
int a;
zaman_=time(NULL); //Güncel zaman alınır
zaman=localtime(&zaman_); //Yerel zamana çevrilir
a=zaman->tm_wday; //Gün bilgisi alınır (0-6 arasında bir değerdir)
switch (a)
{
case 0:
printf("Pazar\n");
break;
case 1:
printf("Pazartesi\n");
break;
case 2:
printf("Sali\n");
break;
case 3:
printf("Carsamba\n");
break;
// bu şekilde geri kalan günler de yazılır
}
}
|
For Deyimi
Birden fazla işletilmesi gereken komutlarda kullanılır.
for (i=0;i<10;i++)
printf("i=%d\n",i); //0'dan 9'a kadar i'nin değerlerini alt alta yazdıracaktır.
| Kod: |
0'dan 9'a kadar olan sayıların toplanması
#include <stdio.h>
main(){
int i,toplam=0;
for(i=0;i<10;i++)
toplam=i+toplam;
printf("Toplam=%d\n",toplam);
}
|
Eğer for deyimi içinde birden fazla komut çalıştırılacak ise
for(){
...
...
}
şeklinde kullanılır.
While
İstenilen koşul devam ettiği sürece işletilecek komutlar tanımlanır.
| Kod: |
Aşagıdaki programda doğru parola girilene kadar programdan çıkamassınız
#include <stdio.h>
main(){
int parola=0;
while (parola!=1234){
printf("Parola giriniz:");
scanf("%d",&parola);
}
}
|
Do..While
While kullanımına benzer. Farklı tarafı döngünün başında değilde sonunda kontrol edilmesidir. Bu nedenle döngü içerisindeki komutar en az bir kere yürütülür.
| Kod: |
i değeri 10'dan küçük oluncaya kadar döngü işletilecek.
#include <stdio.h>
main(){
int i=15;
do{
printf("i=%d\n",i--);
}while (i>=10);
}
|
Döngülerde continue ve break ifadelerinin kullanımı
continue ile döngünün kalan satırları atlanarak, dongunun başından devam edilir. break ile donguden çıkılır.
for (....){ while(...){
if(...) if(..)
continue; continue;
.... ....
} }
for (....){ while(...){
if(...) if(..)
break; break;
.... ....
} }
goto
goto kullanılması pek tavsiye edilmez ama yeri geldiğinde çok işe yarıyor. (C de hiç kullanmadım gerçi)
| Kod: |
Satir 2 ve Satir 3 atlanacaktır.
#include <stdio.h>
main(){
printf("Satir 1\n");
goto atla;
printf("Satir 2\n");
printf("Satir 3\n");
atla:
printf("Satir 4\n");
printf("Satir 5\n");
}
|
goto ifadesinde atlamayı yukarı yöndede yapabilirsiniz ama dikkat edin programınız sonsuz döngüye girebilir. Bunun için goto ifadesini if deyimi ile birlikte kullanabilirsiniz.
