KlavyeSende.CoM
Ekim 13, 2008, 03:28:21 ÖS *
Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz
  KlavyeSende.Com | Artık Klavye Sende !
 
Ana Sayfa Yardım Ara Admin Admin Admin Giriş Yap Kayıt  
Sayfa: [1]
  Yazdır  
Gönderen Konu: Akis Kontrolü ve Döngüler  (Okunma Sayısı 119 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
Ocak 13, 2007, 10:36:45 ÖS  |  Uyarı : Dikkat bu Administrator mesajıdır |
ChaR
Administrator
********

Üye Bilgileri
Üye ID: 1

Mesaj Sayısı: 2603

Nerden: Bilmem Sence Nerden ;)

Cinsiyet: Bay

Rep : 136


« Not Found Keyboard »

Durumum:


Üyelik Bilgileri WWW

Admin

Akis Kontrolü ve Döngüler
'WHILE' DÖNGÜSÜ
C dilinde, bircok tip dongu vardir. While dongusu, herhangi bir test, dogru kaldigi surece, bir program parcasini tekrarlar. Bu testin sonucu yalnis cikarsa, while dongusu sona erer, ve program normal akisina devam eder.

main() /* while dongusunun bir ornegi */
{
int count;

count = 0;
while (count<6)
{
  printf("count'un degeri: %d oldu. ",count);
  count = count + 1;
}
}
Bu programda, count isimli bir degiskeni tanimliyoruz, ve sifira esitliyoruz. while dongusunun kullanimi, gorundugu gibi, 'while' sozcugu, ve parantez icinde bir test'den olusur. Parantezlerin icindeki deyim dogru kaldigi surece, bu program tekrarlar. Bu programda, degiskenin degeri teker teker arttirildigindan, eninde sonunda degeri altiya varacaktir, ve bu durumda program donguden cikacaktir.

Parantezlerin icinde yer alan deyimleri, bundan sonraki konuda isleyecegiz. O zamana kadar, bunlarin dusundugunuz seyleri yaptigini kabul ediniz.

Birkac onemli nokta:

Sayet 'count' un baslangic degeri 5 den buyuk birseye atanmis olsa idi, dongunun icindekiler hic yapilmayacakti
Eger 'count = count + 1' komutu ile degerini bir arttirmasa idik, bu program hic durmazdi.
Son olarak, eger dongude tek bir komut varsa, kume isaretlerine gerek yoktur.
DO-WHILE DONGUSU
Buna benzeyen bir baska komut ise, 'do-while' komutudur. Su program, daha once gordugumuz programa cok benzer:

main() /* Do-While dongusu ornegi */
{
int i;

i=0;
do
{
  printf("I nin degeri simdi: %d oldu.\n",i);
  i = i + 1;
} while (i<5);
}
Yegane farkin, dongunun bir 'do' komutu ile yapilmasi ve denkligin kontrolunun sona birakilmasidir. Bu durumda, parantezlerin arasinda deyim dogru kaldigi surece, dongu tekrarlanir.

Burada onemli noktalar: Kontrol, dongunun sonunda yapildigindan, kume isaretlerinin arasindaki deyimler daima en az bir kere islenir. Ayrica yine, sayet i nin degeri degismez ise, program donguden cikmaz. Son olarak, sayet dongunun icinde bir tek komut varsa, kume isaretlerine gerek yoktur.

Ayrica, dilediginiz miktarda donguyu ic ice de koymaniz mümkündür.

FOR DONGUSU
For dongusu, yeni birsey degildir. Sadece, 'while' dongusunun bir baska seklidir:

main() /* Bir for dongusu */
{
int index;
for(index=0;index<6;index = index + 1)
printf("index'in degeri simdi %d oldu.\n",index);
}
'For' dongusu, uc parcadan olusmustur. Her kesim birbirinden ; ile ayrilir. Ilk kesimi, baslangic kesimi (initalization) dir. Burada bulunan islemler, dongu baslamadan once, ve bir kere yapilir. Aslinda buraya yazilacak seyler icin bir sinir yoktur, fakat basit tutmakta fayda vardir. Bu kesime birden fazla islem yazilabilir, bunlari da birbirinden ',' virgul ile ayirmak gerekir.

Ikinci kesimde, "index<6" diyen parcada, bu dongunun her turunda kontrol edilmesi gereken deyim yer alir. Bu deyim dogru oldugu surece, dongu devam eder. Dogru yada yalnis sonuc veren herhangi bir deyim, bu kesimde yer alabilir.

Ucuncu kesimde yer alan islemler ise, yine dongunun her turunda yapilir, fakat isleme baslamasi, dongunun icinde yer alan komutlarin islenmesinden sonra yapilir.

'For' komutundan sonra, ya tek bir komut gelir, yada kume isaretleri icinde, bir komut bloku.. C de hemen heryerde, tek bir komut yerine, bir komut bloku koymaniz mumkundur.

IF KOMUTU
/* Bu, if-else komutunun bir ornegidir */

main()
{
int data;
for (data=0;data<10;data = data + 1)
{
if (data==2)
printf("Data simdi %d ye esit.\n",data);

if (data<5)
printf("Data simdi %d. Bu da, 5 den azdir. \n",data);
else
printf("Data simdi %d. Bu da, 4 den buyuktur.\n",data);
}
}
Bu programda, ilk once, icinde iki tane if komutu olan bir for dongusu gorunuyor. Bu dongunun on kere tekrarlanacagi, acik bir sekilde goruluyor.

Ilk if satirina bakin: "if" kelimesi ile basliyor, ve sonra bir parantez icinde, sarti goruluyor. Sayet bu parantezin icindeki islemin sonucu dogru (evet) ise, if'den hemen sonra gelen satir islenir. Sayet cevap yalnis ise, if'den sonra gelen komut, atlanir. Burada da, tek bir komut, kume isaretleri ile, bir komut bloku haline getirilebilir.

Burada data==2 islemi, data degiskeninin degerinin ikiye esit olup olmadigini kontrol eder. (Sayet data = 2 olsa idi, tumuyle ayri birsey gerceklesirdi.)

IF-ELSE
Ikinci "if", yine birincisine benziyor. Fakat, ek olarak "else" isimli bir kesimi de iceriyor. Bu da, sayet parantezlerin icindeki islem dogru (EVET) sonuc verirse, "if" den sonra gelen satir islenecektir, sayet yalnis (HAYIR) sonucu verirse, "else" den sonra gelen komut islenecektir. Bu nedenle, iki satirdan biri muhakkak islenecektir.

BREAK ve CONTINUE
main()
{
int xx;

for (xx=5;xx<15; xx=xx+1)
{
  if (xx==8)
  break;
  printf("Break dongusunun icinde, xx in degeri simdi %d\n",xx);
}

for (xx=5;xx<15;xx=xx+1)
{
  if (xx==8)
  continue;
  printf("Continue dongusunun icinde, xx in degeri simdi %d\n",xx);
}
}
Bu programda gordugunuz gibi, sayet xx in degeri 8 e esit ise, break isimli komutu cagiran bir if komutu goruyorsunuz. Break komutu, bizi donguden cikarip, programi dongunun hemen altindaki satirdan devam etmesini saglar.

Bu komut, ornegin dongunun icinde hesaplanan bir degere gore, donguden cikmak istediginizde cok ise yarar. Ornekte, xx in degeri sekize ulasinca, program donguden cikar, ve ekrana yazilmis en son deger, yedi olur.

Programin ikinci parcasindaki dongude ise, Continue komutunu goruyoruz. Burada ise, deger 8 e ulasinca, program donguden cikmaz, fakat program dongunun en son satirina atlayip, aradaki printf satirini islemez.

SWITCH
main()
{
int kamyon;

for (kamyon = 3;kamyon<13;kamyon = kamyon + 1)
{
switch (kamyon)
{
case 3: printf("Degeri simdi uc.\n");
break;
case 4: printf("Degeri simdi dort.\n");
break;
case 5:
case 6:
case 7:
case 8: printf("Degeri simdi 5 le 8 arasinda.\n");
break;
case 11:printf("Degeri simdi onbir.\n");
break;
default:printf("Tanimsiz degerlerden biri.\n");
break;
}
}
}
Simdiye kadar gordugumuz en buyuk komut olan "switch", aslinda kullanimi kolaydir. Ilk once, "switch" kelimesi ile baslar. Bunun arkasindan, parantez icinde bir deyim gelir. Bundan sonra, dilediginiz kadar 'case' komutlari, kume isaretleri arasinda yer alir. Her degeri sembolize eden 'case' satirlari, degiskenin degeri, iki nokta ust uste, ve bununla ilgili komutlardan olusur.

Bizim ornegimizde, "kamyon" degiskeninin degeri 3 oldugunda, printf satiri, 'Degeri simdi uc' satirinin ekrana yazilmasini, saglar. Daha sonra yer alan 'break' komutu ise, switch in icinde yer alan diger komutlari islenmeden, switch den cikilmasini saglar.

Bir giris noktasi bulunduktan sonra, satirlar bir 'break' komutuna rastlayincaya kadar, yada switch'in son kume isaretine varincaya kadar komutlar siradan islenir.

"Kamyon" un degeri 5 e esit ise, program, case 5,6,7 den gecerek 8'de bulunan printf ve break komutlarini isler. Break komutu da, programi son kume isaretine getirir. Sayet degiskenin bir degerine karsilik gelen bir case yoksa, 'default:' isimli secenek secilir.

GOTO KOMUTU
main()
{
goto leave
printf("Bu satir hic yazilmayacak.\n");
leave:
}
Goto komutunu kullanmak icin, "goto" isminin yanina, atlamak istediginiz yerin sembolik ismini yazmaniz yeterlidir. "goto" ile bir dongunun icine atlamaniza izin yoktur, fakat bir dongunun disina atlayabilirsiniz. Ayrica bir fonksiyondan otekine de "goto" ile gecemezsiniz.

Bazi kimseler, goto nun hicbir yerde kullanilmamasi gerektigini belirtiyorlar. Sayet, goto kullanimi ile, diger metodlara gore daha anlasilir bir program olusacaksa, goto yu kullanmaktan cekinmeyin.

SONUNDA - ISE YARAYAN BIR PROGRAM
main() /* Santigrad'dan Fahrenheite */
{
int count; /* for degiskeni */
int fahr; /* fahrenheit degerini tutar */
int cen; /* Santigrat degerini tutar */

printf("Santigrad -> Fahrenheit karsilik tablosu\n\n");

for (count=-2;count<=12;count=count+1)
{
  cen = 10 * count;
  fahr = 32 + (cen * 9) / 5;
  printf(" C = %4d F = %4d ",cen,fahr);
  if (cen == 0)
    printf(" Suyun donma noktasi");
  if (cen == 100)
    printf(" Suyun kaynama noktasi");
    printf("\n");
}
}
Bu program, santigrad ve fahrenheit derecelerin tablosunu yaratmaktadir. Birden fazla degisken kullanilan ilk programimizdir bu. Degisken taniminda, uc ayri satir kullanilmasi sayesinde, degiskenlerin yanina ne ise yaradiklarini da yazabiliriz.

TAM SAYI ATAMA
main()
{
int a,b,c;

a = 12;
b = 3;

c = a+b;
c = a-b;
c = a*b;
c = a/b;
c = a%b;

c = 12*a+b/2-a*b*2/(a*c+b*2);

a = a + 1; /* arttirma islemleri */
b = b * 5;

a = b = c = 20; /* Coklu atamalar */
a = b = c = 12*13/4;
}
Bu programda uc tam sayi degiskeni tanimliyoruz (a,b,c), ve bunlara degerler atiyoruz. Ilk iki satirda a ve b ye sayisal degerler veriyoruz. Daha sonraki dort satirda, basit islemler goruyorsunuz.

Besinci satirda ise, modulo operatorunu goruyorsunuz. Modulo, iki degisken birbirine bolundugunde, kalan degeri verir. Modulo, sadece integer ve char degisken tipleri ile kullanilabilir.

Daha sonra gelen iki arttirma islemleri ise, bu sekilde derleyici tarafindan kabul edilir, fakat bunlari yazmanin daha kestirme bir sekli vardir - bunu daha sonra gorecegiz.

Son iki satira gelince, bunlar cok tuhaf gorunebilir goze. C derleyicisi, atama satirlarini, sagdan sola dogru okur. Bunun sayesinde, coklu atamalar gibi, cok faydali islemler yapilabilir. Bu ornekte, derleyici, yirmiyi alip, c ye atiyor. Sola dogru devam ederken, b yi gorup, en son elde edilen sonucu (20) b ye atiyor. Ayni sekilde a ya da, b nin degeri veriliyor.

Bu programi derleyip, calistirmak son derece SIKICI olabilir. Bu programin hicbir ciktisi yoktur. Dilerseniz, ogrendiginiz printf fonksiyonu ile, programin yaptiklarini daha yakindan inceleyebilirsiniz.

C de veri tanimlari, program bloku icinde, islenecek komutlardan once gelir. Sayet tanimlari programin ortasina yerlestirmeye calisirsaniz, derleyici bir hata verecektir.

Alıntıdır..
Logged

Herşeyi Sana Yazdım , Herşeye Seni YazdımResimlerin Görüntülenmesine İzin Verilmiyor
Resimleri Görebilmek İçin Üye Ol veya Giriş Yap

( N Resimlerin Görüntülenmesine İzin Verilmiyor
Resimleri Görebilmek İçin Üye Ol veya Giriş Yap D )
Ocak 13, 2007, 10:40:48 ÖS
DiLeK
Yalnız Romantic
Asistan Yönetici
*****

Üye Bilgileri
Üye ID: 25

Mesaj Sayısı: 4196

Nerden: TÜRK olmayı ONUR,MÜSLÜMAN olmayı GURUR sayarız. Bol yıldızlı değil TEK AY-YILDIZLI Bayrak için yaşarız..

Cinsiyet: Bayan

Rep : 208


"KARANLIKTA AŞKTIR SENSİZLİKTE..."

Durumum:


Üyelik Bilgileri


off yaa benim C yi C++ ı öğrenmem lazımm Sad saol paylaşımın içinn
Logged


Resimlerin Görüntülenmesine İzin Verilmiyor
Resimleri Görebilmek İçin Üye Ol veya Giriş Yap
Resimlerin Görüntülenmesine İzin Verilmiyor
Resimleri Görebilmek İçin Üye Ol veya Giriş Yap
EY Ayrılık;
Sen Nasıl Bişeysin Ki
Bütün A$Klara Hakimsin,
Aklım almıyor.
Acaba Bir Kere olsun A$Kta Kazanabilmek için
Sanamı A$ık olmak Gerek??

Ocak 13, 2007, 10:43:34 ÖS  |  Uyarı : Dikkat bu Administrator mesajıdır |
ChaR
Administrator
********

Üye Bilgileri
Üye ID: 1

Mesaj Sayısı: 2603

Nerden: Bilmem Sence Nerden ;)

Cinsiyet: Bay

Rep : 136


« Not Found Keyboard »

Durumum:


Üyelik Bilgileri WWW

Admin

off yaa benim C yi C++ ı öğrenmem lazımm Sad saol paylaşımın içinn

Valla bizimde öğrenmemiz lazım...Staj defterlerini doldurcaz daha..
Logged

Herşeyi Sana Yazdım , Herşeye Seni YazdımResimlerin Görüntülenmesine İzin Verilmiyor
Resimleri Görebilmek İçin Üye Ol veya Giriş Yap

( N Resimlerin Görüntülenmesine İzin Verilmiyor
Resimleri Görebilmek İçin Üye Ol veya Giriş Yap D )
Ekim 31, 2007, 01:24:30 ÖS
anaconda_
BanneD
*
Avatar Yok

Üye Bilgileri
Üye ID: 2214

Mesaj Sayısı: 1911

Nerden: anaconda'nın yanından

Cinsiyet: Bay

Rep : 25


AnaCoNDaa

Durumum:


Üyelik Bilgileri WWW


emegine sağlık
Logged
Sayfa: [1]
  Yazdır  
 
Gitmek istediğiniz yer:  

MySQL ile Güçlendirildi PHP ile Güçlendirildi Powered by SMF 1.1.2 | SMF © 2006, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks
XHTML 1.0 Geçerli! CSS Geçerli!
eXTReMe Tracker