Root > Documents > Programlama > Turbo C Temel Bilgiler
Cyber-Warrior.Org \ Doküman \ Programlama > Turbo C Temel Bilgiler
Madde
  Yazar : CWHasan
  Date : 18.03.2006 11:26:40
 
# Turbo C Temel Bilgiler
 
Turbo C Hakkinda Genel Bilgiler

Turbo C dili 1970’li yillarin basinda AT&T bell labaratuvarinda Dennis M.Ritcheie tarafindan yaratildi. Dilin C olarak adlandirilmasinin sebebi, kendinden önceki B dili üzerine kurulu bir yapi olusturmasidir. UNIX isletim sistemi için yaratilan C dili, ilk baslarda sadece bell labaratuvarinda kullanildi. Daha sonralari laboratuvardan disari çikarak akadamik düzeydeki çalismalarda ve büyük askeri projelerde kullanilmaya baslandi.
 
Programcilar tarafindan kullanilmasida yavas yavas oldu. C dilinin taninmasinda en önemli adim 1978’de Dennis M.Ritche ve Brain W.Kernighan tarafindan "C Programing Language" adli kitabin yayinlanmasi olmustur. C dilinin gelismesi gün geçtikçe artmistir.

C’de diger sistemlere adapte edilebilen büyük programlar hizli bir sekilde kolaylikla yazilabildigi için, C’nin kullanimi özelikle sistem programlamalarinda önemli olmustur.
 
Çogu isletim sistemi Assembler ile yazildigi için makineye büyük ölçüde bagimlidir. Buna karsin UNIX isletim sisteminin büyük bir kismi C ile yazidigindan UNIX’in çesitli uygulamalari çok sayidaki bilgisayarlara uyarlanmis ve UNIX’in farkli farkli makinalara uygulanmasindaki makineye olan bagimlilik azaltilmistir.
 
C dili nispeten küçük bir dilde güç ve verimliligi birlestirmek için planlanmistir.C dili giris ve çikis, degerler için hafizada yer ayrilmasi, ekran islemleri ve islem kontrolü gibi isleri yerine getirmek için gerekli fonksiyonlari içermez.

Yüksek seviyeli programlama dilerinin çogunda programlarin yapilmasi sirasinda bazi kisitlamalar vardir. Programcinin bu engeli asmasi için ya yeni algoritmalar olusturmasi ya da Assembler’a yakin komutlari kullanmasi gerekir. Bu da bilgisayar basina büyük bir zaman kaybi meydana getirir.
 
C’de durum daha farklidir. C dilinin esnek bir yapiya sahip olmasindan dolayi yüksek seviyeli bir dilin yapabilecegi islemleri ve düsük seviyeli bir dil olan Assembler’in bir çok islemlerini zengin islemci grubu ve genis fonksiyon kütüphaneleri vasitasiyla kolaylikla yerine getirilebilir.
 
C’de yapilan programlar Assembler’a göre daha kisa zamanda yazilabilir, daha anlasilir ve hata daha azdir. Bu durum C dili Assembler yerine tercih edilmesi yeterli olmustur.
 
1980’ne kadar hemen hemen tüm uygulama programlari Assembler ile yazilmasina karsin, bugünlerde C’ye dogru hizli bir yönelim vardir.
 
C dilinin önemli özelliklerinden bir digeri ifadelerden , tasarruf saglanmasidir. Normal olarak matematiksel ifadeler C’nin zengin operatörleri vasitasiyla çok daha kisa ve basit bir biçime getirilebilir. Böylelikle C programcilari klavyelerinin basinda daha az zaman harcarlar.
 
Turbo C ye baslarken;

printfin kullanimi :

Turbo C’de bir degiskenin veya islemin degerini ekrana yazmak için kullanilan fonksiyonlarin tümünün çikis kaynagi printf fonksiyonudur. Bu fonksiyonun yapisi basitçe asagidaki gibidir...

printf(format stringi,deger listesi) >> yazdirmayi saglar.

Çikis Format Karakterleri :

%d....: Isaretli tamsayiyi ifade eder.
%u....: Isaretsiz tamsayiyi ifade eder,

%f.....: Gerçel sayilari ifade eder.
%e....: Üssel gerçel sayiyi ifade eder.
%/d ..: Long tamsayiyi ifade eder.
%/f....: Double gerçel sayiyi ifade eder.
%c.......: Tek karakteri ifade eder.
%s.......: String karakteri ifade eder



Bir de kullanilan kütüphaneler vardir örnegin maths.h kütüphanesi matematiksel islem yaptigimizda programin basina #include "maths.h" diye yazilir böylece o kütüphane içindeki islemler programimiza eklenir.

Örnek program:

#include
main()
{printf("\\a\\a program girisi \\a\\a\\n")
printf("x = %d\\ty =%u \\n",x,y)
printf("123456789\\r 987654321\\n")
printf("\\101 = \\x041 = %c \\n",65)
}

scanf : >> girilen ifadelerin okunmasini saglar sonra printf ile bunlari yazdiririz.

C’de bir degisken alanlarina bir deger okumak için kullanilan fonksiyonlarin tümü scanf() fonksiyonuna benzer. Bu fonksiyonun yapisi basitçe asagidaki gibidir.

scanf(format stringi, adres listesi)

Örnek program >> programi derleyiciye yazip ne yapmayi çalistigini anlayin.

#include
float i,j;
main()
{printf("x degerini girin");scanf("%f",&i);
printf("y degerini girin");scanf("%f,&j);
printf("x+1=%f,y-1=%f",i+1,j-1);
}

Operatörler :

Operatörler belli bir amaca yönelik olarak bir bilgiyi daha degisik bir forma sokan veya iki bilgiden yeni bir bilgi elde etmesini saglayan sembolik araçlardir. Bunlarin en yaygin olarak olarak kullanilani matemetiksel operatörler olan toplama, çikartma, bölme, çarpmadir. Turbo C’de operatörler genel olarak üç ana guruba ayrilabilir.

Aritmetiksel Operatörler :

Bu operatörler nümerik degerlerin islenmesinde kullanirlar.

*,/,%,+,-,++,--,&,|,^,~,<<,>>,+=,-=,*=,/=,%=,>>=,

Aritmetiksel Operatörler :

Yukaridaki iki guruba ek olarak C’de bazi özel operatörler vardir.

= Atama operatörü
?: Üçlü kosul operatörü

& Adres operatörü
* Dolayli operatörü
; Ifade sonu operatörü
, Virgül operatörü

Örnekler....:

a=4,b=5 ise
c=a++ +b; c=9,a=5,b=5
c=++a +b--; c=10,a=5,a=5
c=--a +b--; c=8,a=3,b=5
c=a+ ++a-b--; c=4,a=5,b=5
c=a+ a++ -b--; c=3,a=4,b=5

a=++a +a= 10
a=++a +a--= 9
a=++a*--a= 12
a=a++/a--= 1

Pointerlar:

Turbo C’ye yeni baslayanlar için pointerlerin kullanilmasi çok karmasik ve sikici görünmektedir. Bunlar programcilarin pointerlarla deneyimlerinin olmayisi veya kullanilan bilgilerin islenmesinde pointerlarin kullaniminin gereksiz oldugunun düsünülmesinden kaynaklanmaktadir. C ile çalisan kisilerde belli bir c program mantigi olustuktan sonra profesyonel programciliga geçiste pointerlerlarin kullanimina büyük bir gereksinim vardir. Bu yüzden pointerlarin çok iyi bir sekilde bilinmesi gerekir. Her bilgisayar dili bir pointera sahiptir.

Tanim olarak bir pointer bir degiskenin adresini içeren degiskendir. Tipik bir bilgisayar ayri ayri veya bitisik guruplar halinde idare edilebilen ardisik olarak sayilastirilmis veya adreslenmis hafiza hücrelerinin bir dizisine sahiptir. Her pointer bir baska bellek hücresini gösteren bir hafiza alanidir.

char c=’a’;
char *p;

Burada c char tipinde bir degisken ve p char tipinde bir pointer tanimlanmistir. Pointer tanimlamalari daima degisken isminin soluna (*) asteriks isareti konarak yapilir.

Program Kontrol Ifadeleri:

If Ifadeleri:

If ifadesinin en basit yapisi asgidaki gibidir.

if (sart testi) ifade;

Örnegin...:
if (a>10) printf("a>10");

Burada "a>10" stringinin ekrana basilmasi için gerekli sart (a>10) a degerinin 10 dan büyük omasidir. Eger a=10 veya a<10 olursa sart yanlis olacak ve "a>10" ekrana basilmayacaktir.

If-Else Ifadeleri:

Yukaridaki if ifadesinde sart testinin dogru olmasi durumunda ifade veya ifade blogu icra görülüyor. Yanlis olmasi durumunda if’den sonra gelen ifade isleme aliniyordu.

if (sart testi) ifade_1;
else ifade_2;
Örnegin...:

if (a>0) sonuc = log(a);
else printf("a için hatali giris, log(%f) hesaplanamaz",a);

if-else if
if (sart testi)
{ ifade blogu }
else if (sart testi)
{ ifade blogu }
else if (sart testi)
:
:
else {ifade blogu}

sifre programi
#include
#include
#define sifre 4040
int tahmin;
main()
{ tekrar;
printf("sifre için bir sey giriniz");
scanf("%d",&tahmin);
if (tahmin==sifre)
{printf("sifre dogru");
}
else if (tahmin>sifre)
{printf("tahmininiz sifreden büyük");
goto tekrar;
}
else
{printf("tahmininiz sifreden büyük");
}
return0;
getch();
}

[/B] Döngü Komutlari: [/B]

For Döngüsü:

Bu döngü sart dogru oldugu sürece döngüyü sürdürüyor. yanlis oldugu zaman döngüden çikiyor.

For (baslangiç ; sart ; artim ;

for (i=3; ;++i)
{
if(sart )break;
}

While döngüsü:

While döngüsünde sart testi döngü basindadir. Bu yüzden döngü içersine girmeden sart testi kontrol edilir. Sart testi dogru ise döngüye girilir ve döngü içersindeki ifade veya ifade blogunun icrasi yapilir. Bu ifadelerin icrasindan sonra tekrar sart testinin yapildigi döngü basina gidilir. Bu islemler sart testinin yanlis olmasina kadar devam eder. Sart testi yanlis oldugunda döngüden çikilir. While döngüsünün basit yapisi asagidaki gibidir.

while(sart testi) ifade;
örnegin...:
#include (stdio.h)
#include (conio.h)
char ch;
main()
{
while (ch=getch())!=’e’)
printf("döngünün içindesin");
printf("döngünün disindasin");
return0;
}

Do-While Döngüsü:

Eger ifade blogu en az bir defa islem görecekse veya kontrol parametreleri, islem gören ifadelerden elde edilecekse do-while yapisi kullanilabilir. Bu ifadenin basit yapisi asagidaki gibidir.

do
ifade
while(sart testi);

Sart testi döngünün sonunda yapildigi, için bu döngüdeki yani do-while arasindaki ifade en az bir defa icra görür. Bu döngüden sart testi yanlis oldugu zaman çikilabilir. Eger do-while arasinda birden fazla ifade yazilmasi gerekiyorsa o zaman asagidaki genel formu kullanilir.

do {
ifade_1;
ifade_2;
:
:
ifade_n;
} while (sart testi);

örnegin.....:
#include
int x,y;
main()
{
x=y=0;
do { ++x; ++y
printf("%d+%d=%d\\n",x,y,++y);
}
while(x<=5);
return0;
}

Break Ifadesinin kullanimi

Break ifadesi sadece do-while, while,for ve switch ifade blogundaki islemi belirli bir yerde kirmak için kullanilir. Break’in kullanilmasi ile islem sirasi, kirilan ifade blogundan sonra gelen ifadeye geçer.

for (baslangiç ; sart ; artim)
{
:
:
if(sart)break;
:
}
ifade;

Burada döngü sonuna ulasmadan önce istenilen önce istenilen diger bir sartin saglanmasi ile döngüden break kullanilarak çikilir.

Örnegin....:
#include
int a,b,i;
float oran;
main()
{
for (i=0;i<=5;++i)
{
printf("a ve b degerlerini girin");
scanf("%d %d",&a,&b);
if (b==0) break;
oran=a/b;printf("a/b=%d\\n",oran);
}
return0;
}

ÖRNEKLER:

#include
int i,k,fak;
float e;
main()
{
e=o;
printf("bir sayi gir");scanf("%d",&k)
for (i=0;i<=k;++i)
{
for (j=0;j<=i;++j)
{
if (j==0)fak=1;
}
e=e+(1/fak);
}
return0;
}


#include
#include
int i,k;
float e,m;
main()
{
k=34;
for (i=1,e=m=1,i<=k;++i);
e+=1/(m*=i);
printf("e=%f\\n",e);
getch() return0;
}


#include
int i,j,a,b,c;
int topla()
{
i++;j--;return i*a-j*b;
}
main()
{
i=0;j=10;a=2;b=3;
while(j)
c=topla();
printf("%d\\n",c);
}
return0;
}


#include
void max(int a;int b);
{
printf("max=%d\\n",(a>b)?(a) : (b));
}
int i,j,k;
main()
{
i=10;j015;max(i,j);
return0
}


#include
int x=5;
void a();
{
statik int x=0;
printf("statik x\\’in suanki degeri:%d\\n",x);
x--;
a();

}
   
   
Cyber-Warrior TIM All Legal and illegal Rights Reserved.\CWDoktoray 2001©