Papatyam Forum - Tekil Mesaj gösterimi - C Dökümanları
Konu Başlıkları: C Dökümanları
Tekil Mesaj gösterimi
Alt 20 January 2009, 15:49   Mesaj No:2

CoNQueRoR_61

Papatyam Usta Üyesi
Avatar Otomotik
Durumu:CoNQueRoR_61 isimli Üye şimdilik offline konumundadır
Papatyam No : 1397
Üyelik T.: 20 January 2009
Arkadaşları:0
Cinsiyet:
Memleket:istanbul
Yaş:35
Mesaj: 131
Konular:
Beğenildi:
Beğendi:
Takdirleri:10
Takdir Et:
Konu Bu  Üyemize Aittir!
Standart Ynt: C Dökümanları

Temel C Dokümanları 3 (Girdi çıktı fonksiyonları,kontrol operatörleri ve döngüler)

Bu derste printf ve scanf in kullanımları, kontrol operatorleri, if ve switch kontrol statement larını ve while dongusunu ilsiycez...
Once gecen dersin odevinin yorumlarını yapalım. Girdi olarak virgüllü sayı veya harf yazın demistik. Yapanlar gördü ki yanlıs sonuclar veriyor program. Bunun sebebi girdimizi, programa int yani tam sayı olarak tanıtmamız. Girdi virgüllü olunca tam sayı kısmı alınıp öyle işlem yapılıyor dogal olarak. Yada harf girince harfi 61 diye bir tam sayı olarak kabul ediyor. Bu compiler' a ve girdiğiniz harfe gore degisebilir. 61 e takılmayın. Önemli olan burada beklenmedik sonuçlar aldığımızı gozlemlemek ve değişken turlerinin onemini anlamak...

printf ve scanfin kullanımları:

printf("hello&quot: bu ornegi inceleyelim:

prinft her fonksiyon gibi yanında parantezler açılarak kullanılır.parantezlerin içinde iki kısım vardır. Birincisi "" isaretlerinin icinde kalan kısım ikincisi "" isaretlerinin icinde olmayan kısım. ikinci kısım değişkenlerin değerlerini ekrana verirken kullanılır. Bu orneğimizde değişken olmadıgı icin ikinci kısım yok.Birinci kısım yani "" lerin icinde kalan kısım ekrana yazılacak yazıları belirler.Bu örnekte ekrana “hello” yazılır.Birinci kısımda kullanılan bazı özel karakterler vardır. Bunlar olduğu gibi ekrana yazılmaz.Yazılacak yazının formatını belirler.Mesela \n karakteri alt satıra geç demektir.

printf("hello\nhello&quot yazarsak ekrandaki görünümü şöyle olur:

hello

hello

özel karakterlerden biri de % işaretidir. Bu işaret, bir değişkenin değeri ekrana yazdırılacaksa değişkenin turunu ve ekranda yazılacağı yer ve formatı belirlemek için kullanılır . % den sonra gelen kısım degiskenin hangi türde kabul edileceğini söyler. Mesela %d tam sayı demektir. "" işaretlerinin içinde %d olan yere tırnak işaretlerinin dışında kalan değiskenin değeri ekrana yazdırılır. Örnek:

x=3;

printf("degiskenin degeri %d dür",x);

burda ekrana gelecek olan yazı şöyledir:

degiskenin degeri 3 dür

gordugunuz gibi %d yerine x in değeri geliyor. Biz bir önceki dersimizde "" lerin icine başka bir yazı yazmadık. Sadece %d yazdık. Bu yüzden sadece ekrana değişkenin değeri geldi.

printf sadece bir değişkenle kullanılmak zorunda değildir.

x=3;

y=4;

printf("%d %d",x,y);

bu ornekte ekrana

3 4

şeklinde bir output gelir.Gordugunuz gibi her degisken icin bir tane %d yazdık.

printf("x'in degeri %d y'nin degeri %d",x,y); seklinde yassaydık output soyle olacaktı:

x'in degeri 3 y'nin degeri 4



scanf in kullanımı da çok benzerdir. Tek fark "" işaretlerinin içine herhangi bir yazı yazmaya gerek duymamız. Ve değişkenlerden önce

& işareti konulması.

scanf("%d %d",&x,&y);

bu örnekte ekrana 3 5 yazdığımızda “x“e 3 “y” ye 5 atanır. %d lerin arasında boşluk bıraktığımıza dikkat edin. Boşkul bırakmasaydık inputumuzu da 35 seklinde girmemiz gerekirdi...

Şimdi kontrol operatorlerini gorelim:

> : büyük mudur ?

< : küçük mudur ?

== : eşit midir ?

!= : eşit değilmidir ?

>= : büyük veya eşit midir ?

<= : küçük veya eşit midir ?

&& : ve

|| : veya

bu sorguların cevapları doğru ise yanıt 1, yanlış ise yanıt 0 olur. Peki bu sorguları nerde kullanırız ? Bunlar kontrol işlemleriyle kullanılır. Bu islemlerin baslıcaları if ve switch dir:

if in kullanımı:

if ( x==3)

{

}

seklinde kullanılır. if den sonra acılan parantezlerin icine kontrol edilecek durum yazılır. Eger durum dogru (1) ise { } lerin icindeki islemler yaplılır. Degil (0) ise { } lerin icindeki islemler gecilir. Bu ornek eger x degiskeni 3 e esit ise aşağıdakileri yap seklinde acıklanabilir.

if ( x== 3 && y<10) mesela burda eger “x” 3 e esit ise ve “y” de 10 dan kucuk ise assagıdakileri yap demek oluyor. Bu iki durumdan biri bile yanlıs ise durum yanlıs olarak kabul edilir. && yerine || kullansaydık iki durumdan biri bile dogru olsa durum dogru kabul edilirdi. ve ile veya nın farkı budur.

“=” ile “==“isaretlerini karıstırmayalım. Birincisi deger atamak icin kullanılırken ikincisi degerin esitligini kontrol etmek icin kullanılır.

else :

if "eger" demektir else de "degilse" anlamına gelir. Bir if satement ının sonuna else yazarsanız. Durum yanlıs ise yapılacakları belirleyebilirsiniz.

if(x==3)

{

y=y+1;

z=z-1;

}

else

{

y=y-1;

z=z+1;

}

yukarıda: eger x 3 e esitse y ye bir ekle, z den bir cıkar.x 3'e esit degilse(else) y yi bir azalt z ye bir ekle. Demek oluyor. else i kullanmak zorunda degilsiniz. else i kullanmazsanız durum yanlıs ise yapılacak islemleri belirlememis olursunuz. Durum yanlıs ise if in icindekiler kale alınmaz.

switch:

switch bir durumun bir kaç ihtimalini goz onune alarak. Yapılacakların belirlenmesini sağlar.

kullanımı:

switch(x)

{

case 3:

printf("x 3 e esitmis"

case 4:

printf("x 4 e esitmis"

default:

printf("x 3 e de 4 e de esit degilmis"

}

switch in yanına gelen parantezlerin icine kontrol edilecek degisken yazılır. case lerden sonra da x in neye esit olup olmadıgı kontrol edilir. Bu ornekte: x 3 e esit ise ekarana "x 3 e esitmis" yaz, x 4 e esit ise ekrana "x 4 e esitmis" yaz, “x”, yukardaki durumların hicbirine uymuyorsa(default) "x” 3 e de 4 e de esit degilmis" yaz. switch in kullanımı da budur. Ama sadece tek degiskeni ve esitlik durumunu kontrol edebilir. Bu nedenle ben switch i pek sevmem ve kullanmam. daha cok islerimizi if ile gorecez...

C de encok kullanacagımız seylerden biri de dongulerdir. Donguler bi islemi tekrar, tekrar yaptırmaya yarar.

Bu gunluk while dongusunu anlatacam:

while(x<10)

{

}

while ın kullanım formatı bu sekildedir. parantez icindeki durum dogru oldugu surece durmadan { } lerin icindeki islemler gerceklestirilir. Bi ornekle acıklayalım.

y=15;

x=1;

while(x<3)

{

y=y-x;

x=x+1;

}

bunun yapacagı işi acıklayalım:

ilk basta x=1 y=15 dir. program, x<3 mudur diye kontrol etti baktıki dogru. Sonra while in icine girdi. y=y-x; i isleme soktu.

Yani “y” yi “y” eksi “x” e esitledi. Yani y nin yeni degeri 15 - 1=14 oldu. “x” i “x+1” e yani 2 ye esitledi. x in yeni degeri 2 oldu. Sonra tekrar başa dondu. baktı “x<3”(x küçük 3) mudur. 2<3 dür yani dogru. Tekrar while ın icine girdi. y=y-x; i tekrar calıstırdı.”y” 14 olmuştu. “x” de 2. yeni”y” 14-2 yani 12 oldu. “x” de tekrar 1 arttırıldı ve 3 oldu. Sonra tekrar basa dondu. Baktı x<3 mü hayır 3<3 doğru değil.

while döngüsü tamamlandıgında x in degeri 3 y nin degeri de 12 oldu.

Dongulerin mantıgı da boyle... Dongulerin uzunlugunu sınırlamak icin genelde x=x+1 gibi bir satır bulunur. Bu satıra denk gelen bir satır vardır: x++; bu x in degerini bir artır demektir. x--; de x in degerini 1 azalt demektir. Aklımızda bulunsun.

şimdi örnek bir program:

bu program 0 dan verilen bir sayıya kadar olan tüm sayıların toplamını buluyor. Mesela 5 yazarsak bize 1+2+3+4+5 yani 15 veriyor.

#include<stdio.h>
main()
{
int i, x, toplam;
scanf("%d",&x);
toplam=0;
i=1;
while(i<=x)
{
toplam=toplam+i;
i++;
}
printf("%d",toplam);
retırn 0;
}

bu prgramı calıstırıp inceleyin. Gecen dokumandaki ödev kolaydı bu hafta yeni başlayanlar için kazık bir ödev veriyorum. Girdiginiz sayının asal olup olmadıgını bulan bir program yapacaksınız. Girdiginiz sayı asalsa ekrana 1 degilse 0 yazacak.

Biraz ipucu veriyim.Asal sayının ne oldugunu herkes biliodur heralde bi while dongusu yapıp girilen sayıyı 2 den baslayarak girilen sayıya kadar tek tek boldureceksiniz. Ve her seferinde kalanın 0 olup olmadıgını kontrol ettireceksiniz. Butun sayılara bolumunden kalan hic 0 cıkmassa o sayı asaldır demeeki... Yani 1 ve kendisi dışında hic bir sayıya tam bolunmuyo demektir.

Kalanı kontrol etmek icin bir onceki dersimizde verdigimiz % operatorunu kullanacaksınız. Mesela

x=10;

y=3;

z=x%y;

derseniz z = 1 olur...[/b]

__________________
Biz Bu Hallere Düşecek Adammıydık ???
Alıntı ile Cevapla