Her Yönüyle C
Would you like to react to this message? Create an account in a few clicks or log in to continue.
Her Yönüyle C

Hepsi Burada
 
AnasayfaAnasayfa  PortalliPortalli  GaleriGaleri  AramaArama  Latest imagesLatest images  Kayıt OlKayıt Ol  Giriş yapGiriş yap  

 

 DÖNGÜLER

Aşağa gitmek 
2 posters
YazarMesaj
Admin
Admin
Admin


Erkek
Mesaj Sayısı : 804
Yaş : 35
Location : KoCaElİ
Kayıt tarihi : 29/10/07

Character sheet
Field:
DÖNGÜLER Left_bar_bleue100/100DÖNGÜLER Empty_bar_bleue  (100/100)

DÖNGÜLER Empty
MesajKonu: DÖNGÜLER   DÖNGÜLER Icon_minitimePtsi Kas. 12, 2007 2:04 am

GirişDöngü (loop) deyimleri bir kümenin belli bir koşul altında yinelenmesi için kullanılır. while, do...while ve for olmak üzere üç tip döngü deyimi vardır. C de diğer programlama dillerinde olduğu gibi, bu deyimlerle istenildiği kadar iç-içe döngü yapısı kullanılabilir [1].

7.1 while DöngüsüTekrarlama deyimidir. Bir küme ya da deyim while kullanılarak bir çok kez yinelenebilir. Yinelenmesi için koşul sınaması çevrim başında yapılır. Koşul olumlu olduğu sürece çevrim yinelenir. İki veya daha çok koşul mantıksal operatörler birleştirilerek verilebilir. Bu deyimin kullanımı Program 7.1 de gösterilmiştir. Genel yazım biçimi:




while(koşul)
{
...
döngüdeki deyimler; [küme]
...
}

Program 7.1: while döngüsü




[color=gray] 1:
/* 07prg01.c: while döngüsü */
2:
3: #include
4:
5: void main(void)
6: {
7: int x=0;
8:
9: while(x <10> tcc 07prg01.c
C:\TC> 07prg01
$ gcc 07prg01.c -o 07prg01
$ ./07prg01

ÇIKTI




0
1
2
3
4
5
6
7
8
9
10

7.2 do ... while DöngüsüBu deyimin while deyiminden farkı, koşulun döngü sonunda sınanmasıdır. Yani koşul sınanmadan çevrime girilir ve döngü kümesi en az bir kez yürütülür. Koşul olumsuz ise döngüden sonraki satıra geçilir. Bu deyimin kullanımı Program 7.2 de gösterilmiştir. Genel yazım biçimi:




do{
...
döngüdeki deyimler;
...
}while(koşul);

Program 7.2: do-while döngüsü




[color=gray] 1:
/* 07prg02.c: do-while yapısı */
2:
3: #include
4:
5: void main(void)
6: {
7: int sayi;
8:
9: do
10: {
11: printf("Bir sayi girin : ");
12: scanf("%d",&sayi);
13: printf("iki kati : %d\n",2*sayi);
14:
15: }while( sayi>0 ); /* koşul */
16:
17: puts("Cevrim sona erdi.");
[color:4b80=gray:4b80]18: }
15. satırdaki koşul olumlu olduğu sürece (sayi>0 olduğu sürece), klavyeden yeni bir değer 12. satırda okunur. Aksi takdirde (sayi<0> tcc 07prg02.c
C:\TC> 07prg02
$ gcc 07prg02.c -o 07prg02
$ ./07prg02


ÇIKTI




Bir sayi girin : 1
iki kati : 2
Bir sayi girin : 3
iki kati : 6
Bir sayi girin : 4
iki kati : 8
Bir sayi girin : -3
iki kati : -6
Cevrim sona erdi.

7.3 for DöngüsüBu deyim, diğer döngü deyimleri gibi bir öbeği bir çok kez tekrarlamakta kullanılır. Koşul sınaması while da olduğu gibi döngüye girmeden yapılır. Bu döngü deyimin içinde diğerlerinden farklı olarak başlangıç değeri ve döngü sayacına sahip olmasıdır. Bu deyimin kullanımı Program 7.3 de gösterilmiştir Genel yazım biçimi:




for( başlangıç ; koşul ; artım )
{
...
döngüdeki deyimler;
...
}

Program 7.3: for döngüsü




[color=gray] 1:
/* 07prg03.c:
2: for döngüsü ile faktoriyel hesabı. n!=1*2*3...n şeklinde tanımlanır. */

3:
4: #include
5:
6: void main()
7: {
8: long int i,n,faktor;
9:
10: printf("Faktoriyeli hesaplanacak sayi girin : ");
11: scanf("%ld",&n);
12:
13: faktor=1;
14: for(i=1;i tcc 07prg03.c
C:\TC> 07prg03
$ gcc 07prg03.c -o 07prg03
$ ./07prg03

ÇIKTI




Faktoriyeli hesaplanacak sayi girin : 4
4! = 24
printf fonksiyonu ile desimal(taban-10) sayılarıların nasıl yazdırılacağı bundan önceki kısımlarda gösterilmişti. Program 7.4'te 0-15 arası desimal sayıların Oktal(taban- 8ve Heksadesimal(taban-16) karşılıkları ile printf kullanılarak yazdırılması gösterilmiştir.

Program 7.4: Sayı sistemi




[color=gray] 1:
/* 07prg04.c: Sayı sistdemi:
[color=gray] 2:
%d : desimal 10 tabanındaki sayı
3: %o : oktal 8 tabanındaki sayı
4: %x : hexadesimal 16 tabanındaki sayı (küçük harf)
[color:4b80=gray:4b80]5: %X : hexadesimal 16 tabanındaki sayı (büyük harf) */
6:
7: #include
8:
9: main()
10: {
11: int i;
12:
13: for (i=0; i<16> tcc 07prg04.c
C:\TC> 07prg04
$ gcc 07prg04.c -o 07prg04
$ ./07prg04

ÇIKTI




0 0 0 0
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
6 6 6 6
7 7 7 7
8 10 8 8
9 11 9 9
10 12 a A
11 13 b B
12 14 c C
13 15 d D
14 16 e E
15 17 f F

7.4 İç içe Geçmiş DöngülerBir program içinde birbiri içine geçmiş birden çok döngü de kullanılabilir. Bu durumda (bütün programlama dillerinde olduğu gibi) önce içteki döngü, daha sonra dıştaki döngü icra edilir.
Üç basamaklı, basamaklarının küpleri toplamı kendisine eşit olan tam sayılara Armstrong sayı denir. Örneğin: 371 bir Armstrong sayıdır çünkü 3^3 + 7^3 + 1^3 = 371. Program 7.5'de iç içe geçmiş üç for döngüsü ile bütün Armstrong sayıları bulup ekrana yazar. İnceleyiniz.

Program 7.5: iç-içe for döngüleri




[color=gray] 1:
/* 07prg05.c:
[color=gray] 2:
Üç basamaklı, basamaklarının küpleri toplamı kendisine eşit olan tam
3: sayılara Armstrong sayı denir. Örneğin: 371 = 3^3 + 7^3 + 1^3.
[color:4b80=gray:4b80]4: Bu program İç-içe geçmiş 3 döngü ile bütün Aramstrong sayıları bulur. */
5:
6: #include
7:
8: main()
9: {
10: int a,b,c,kup,sayi,k=1;
11:
12: for(a=1;a<=9;a++)
13: for(b=0;b<=9;b++)
14: for(c=0;c<9> tcc 07prg05.c
C:\TC> 07prg05
$ gcc 07prg05.c -o 07prg05
$ ./07prg05

ÇIKTI




1. 153
2. 370
3. 371
4. 407

7.5 Sonsuz DöngüBir döngü işlemini sonsuz kere tekrarlarsa bu döngü sonzuz döngü olarak adlandırılır. Böyle bir döngü için, koşul çok önemlidir. Örneğin while döngüsü için:
...
while(1)
{
printf("Sonsuz döngü içindeyim...\n");
}
...
yada ...
while(7>3)
{
printf("Sonsuz döngü içindeyim...\n");
}
...
Her iki durumda da çevrimler, sonsuz döngü durumundadır. Çünkü while(1) ve while(7>3) ifadelerdeki koşullar daima olumludur. Bu durumda çevrim sonsuz döngüye girer.
for döngüsünde, başlangıç, koşul ve artım parametrelerinden herhangi birini kullanmak isteğe bağlıdır. Her hangi biri verilmediğinde döngünün nasıl davranacağı iyi yorumlanmalıdır. Örneğin for döngüsünün hiçbir parametresi verilmezse, döngü sonsuz çevrime girer. Yani:
for(; )
printf("Sonsuz döngü içindeyim...\n");
gibi.
7.6 break DeyimiBir C programında, bir işlem gerçekleştirilirken, işlemin sona erdirilmesi bu deyim ile yapılır. Örneğin, döngü deyimleri içindekiler yürütülürken, çevrimin, koşuldan bağımsız kesin olarak sonlanması gerektiğinde bu deyim kullanılır. Mesela:
...
do{
scanf("%d",&x);

if(x==0) break;

printf("%f",1.0/x);

}while(1);
...
Yukarıdaki program parçasında, do ... while döngüsündeki koşul daima olumludur. Bu durumda döngü sonsuzdur. Fakat döngü içinde if deyimindeki koşul gerçekleşirse, döngü koşuluna bakılmaksızın terkedilir. Bu işlemi sağlayan break deyimidir.
Program 7.6 klavyeden girilen sayı pozitif olduğu sürece sayının faktoriyelini hesaplar. Sayı negatif olduğunda döngü break ile sonlandırılır. Inceleyiniz.

Program 7.6: break deyiminin kullanımı




[color=gray] 1:
/* 07prg06.c: n>=0 olduğu sürece n! li hesaplar */
2:
3: #include
4:
5: void main()
6: {
7: long int i,n,faktor;
8:
9: do{
10: printf("Faktoriyeli hesaplanacak sayi girin : ");
11: scanf("%ld",&n);
12:
13: if(n<0> tcc 07prg06.c
C:\TC> 07prg06
$ gcc 07prg06.c -o 07prg06
$ ./07prg06

ÇIKTI




Faktoriyeli hesaplanacak sayi girin : 2
2! = 2
Faktoriyeli hesaplanacak sayi girin : 3
3! = 6
Faktoriyeli hesaplanacak sayi girin : 5
5! = 120
Faktoriyeli hesaplanacak sayi girin : 9
9! = 362880
Faktoriyeli hesaplanacak sayi girin : 0
0! = 1
Faktoriyeli hesaplanacak sayi girin : -4

7.7 continue DeyimiBir döngü içerisinde continue deyimi ile karşılaşılırsa, ondan sonra gelen deyimler atlanır ve döngü bir sonraki çevrime girer. Örneğin:
...
for(x=-50;i<=50;x++)
{
if(x<0) continue; /* x<0 ise alttaki satırı atla */
printf("%d %f",x,sqrt(x));
}
...
Program parçasının çıktısı: 0 0.000000
1 1.000000
2 1.414213
3 1.732050
. .
. .
. .
50 7.071067
Program 7.7, x, y'den farklı olmak üzere |x|+|y|<=3 eşitsizliğini sağlayan tamsayı çiftlerini bulup ekrana yazar. Bu eşitsizliği sağlayan toplam 22 çift vardır. Programda, her bir çift parantez içinde yazdırılmıştır. İnceleyiniz.

Program 7.7: continue deyiminin kullanımı




[color=gray] 1:
/* 07prg07.c:
[color=gray] 2:
x, y'den farklı olmak üzere |x|+|y|<=3 eşitsizliğini sağlayan
[color:4b80=gray:4b80]3: tamsayı çiftlerini ekrana yazar */
4:
5: #include
6:
7: main()
8: {
9: int x,y,k=1;
10:
11: for (x=-3;x<=3;x++)
12: for (y=-3;y<=3;y++)
13: {
14: if(x==y) continue; /* x=y ise alt satırı atla */
15:
16: if( abs(x)+abs(y)<3> tcc 07prg07.c
C:\TC> 07prg07
$ gcc 07prg07.c -o 07prg07
$ ./07prg07

ÇIKTI




1. (-3, 0)
2. (-2,-1)
3. (-2, 0)
4. (-2, 1)
5. (-1,-2)
6. (-1, 0)
7. (-1, 1)
8. (-1, 2)
9. ( 0,-3)
10. ( 0,-2)
11. ( 0,-1)
12. ( 0, 1)
13. ( 0, 2)
14. ( 0, 3)
15. ( 1,-2)
16. ( 1,-1)
17. ( 1, 0)
18. ( 1, 2)
19. ( 2,-1)
20. ( 2, 0)
21. ( 2, 1)
22. ( 3, 0)
Sayfa başına dön Aşağa gitmek
https://cprogramlama.yetkin-forum.com
hasan8861
Tuggeneral
Tuggeneral
hasan8861


Erkek
Mesaj Sayısı : 527
Yaş : 35
Location : eskişehir- gebze arası
Kayıt tarihi : 04/11/07

Character sheet
Field:
DÖNGÜLER Left_bar_bleue2/2DÖNGÜLER Empty_bar_bleue  (2/2)

DÖNGÜLER Empty
MesajKonu: Geri: DÖNGÜLER   DÖNGÜLER Icon_minitimePtsi Kas. 12, 2007 2:30 am

kanka emgine saygı sımdı ben su seyı anlamadım dıye bır cumle kurmıcam cunku hıcbırını anlamadım ALLAH derslerınde kolaylıklar versın.seneye bızde gormeyız ıns bunları yanarım yoksa Very Happy Smile cheers
Sayfa başına dön Aşağa gitmek
https://cprogramlama.yetkin-forum.com
Admin
Admin
Admin


Erkek
Mesaj Sayısı : 804
Yaş : 35
Location : KoCaElİ
Kayıt tarihi : 29/10/07

Character sheet
Field:
DÖNGÜLER Left_bar_bleue100/100DÖNGÜLER Empty_bar_bleue  (100/100)

DÖNGÜLER Empty
MesajKonu: Geri: DÖNGÜLER   DÖNGÜLER Icon_minitimePtsi Kas. 12, 2007 2:32 am

BENCE DE KURMA HATTA SEN BUNLARI OKUYUP HIC KAFANI KARISTIRMA Very Happy AMA BUNLAR SANA LAZIM HASAN..C DİLİ LAZIM OLMASA DA SIZ PIC PROGRAMLAMA DILINI GORCEKSINIZ YANI SEN SIMDIDEN C'YE BIRAZ BAK BILGIN OLSUN EN AZINDAN Very Happy
Sayfa başına dön Aşağa gitmek
https://cprogramlama.yetkin-forum.com
hasan8861
Tuggeneral
Tuggeneral
hasan8861


Erkek
Mesaj Sayısı : 527
Yaş : 35
Location : eskişehir- gebze arası
Kayıt tarihi : 04/11/07

Character sheet
Field:
DÖNGÜLER Left_bar_bleue2/2DÖNGÜLER Empty_bar_bleue  (2/2)

DÖNGÜLER Empty
MesajKonu: Geri: DÖNGÜLER   DÖNGÜLER Icon_minitimePtsi Kas. 12, 2007 2:38 am

olm valla yanarız la kıtaplarını sakla verme kımseye yazın calısırız mecbur.olm ben hangısını secsem sımdı bılgısayar elektronıgımı yoksa guc makıne elektrıgımı.bunlar benı asar mı hacıııı
Sayfa başına dön Aşağa gitmek
https://cprogramlama.yetkin-forum.com
Admin
Admin
Admin


Erkek
Mesaj Sayısı : 804
Yaş : 35
Location : KoCaElİ
Kayıt tarihi : 29/10/07

Character sheet
Field:
DÖNGÜLER Left_bar_bleue100/100DÖNGÜLER Empty_bar_bleue  (100/100)

DÖNGÜLER Empty
MesajKonu: Geri: DÖNGÜLER   DÖNGÜLER Icon_minitimePtsi Kas. 12, 2007 12:40 pm

Tabiki bilgisayar elektronigi Very Happy
Sayfa başına dön Aşağa gitmek
https://cprogramlama.yetkin-forum.com
 
DÖNGÜLER
Sayfa başına dön 
1 sayfadaki 1 sayfası

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
Her Yönüyle C :: C Programlama :: C Konu Anlatımları-
Buraya geçin: