C Programlama Dili'ne Giriş

  Dersler
* �ns�z

* Giriş
* Veri Tipleri, De�i�kenler
* Operat�rler
* Temel G/� Fonksiyonlar�
* Temel K�t�phane Fonksiyonlar�
* Kar��la�t�rma Deyimleri
* D�ng�ler
* Fonksiyonlar I
* Fonksiyonlar II
* Diziler
* G�sterici (Pointer) Kavram�
* Katarlar (Stringler)
* Dinamik Bellek Y�netimi
* G�sterici Uygulamalar�
* Yap�lar ve Birlikler
* Dosya Y�netimi
* Bit D�zeyinde �al��mak
* Port Denetimi
* Grafik Kullan�m�
* C Makrolar�

* K�saca C++
* Derleme Se�enekleri
* Tarih-Saat Fonksiyonlar�
* Monte-Carlo Y�ntemleri
* Fortran ve C

* Yararlan�lan Kaynaklar

  C/C++ Derleyicileri
* Dev-C++
* Salford (silversoft FTN95)
* GCC
* Turbo C
* Eclipse IDE
* NetBeans IDE

  D�� Ba�lant�lar
* programlama.com
* C Programc�lar� Derne�i

* C (wikipedia)
* C++ (wikipedia)
* cplusplus.com
* koders.com
* Hot scripts

 

Ders 1: Giris

###################- (%95)

En son gncelleme: Wed, 30 Nov 2011 13:22:02 +0200

Giris

Bu ilk derste, bir C programin nasil derlenip alistirilacagi ve Internet'te bulabilecegiz derleyicilerden bahsedilecektir. En basit C programinin derleyip alistirdiktan sonra, geriye kalan sadece C Programlama Dili'nin kurallarini, yapisini ve deyimlerini grenmekten ibarettir.

1.1   Tarihe

C Programlama Dili genel amali orta seviyeli ve yapisal bir programlama dilidir. 1972 yilinda Dennis Ritchie tarafindan Bell Telefon Labaraturvarinda Unix isletim sistemi ile kullanilmak iin tasarlanmistir. C, zellikle sistem programlamada sembolik makine dili (Asembler) ile tercih edilmektedir. Isletim sistemleri, derleyiciler ve debug gibi asagi seviyeli sistem programlarinin yaziliminda yogun olarak C programlama dili kullanilir.

C'nin yayilmasi ve gelismesi, byk bir blm C dili ile yazilan UNIX isletim sisteminin popler olmasiyla baslamistir. C Programlama Dili, hemen her alanda kullanilmaktadir. Gnmzde nesneye ynelik programlama dilleri (C++, Java) ve script dilleri (JavaScript, JavaApplet, PHP) gibi programlama dilleri C Programlama Dili'nden esinlenmistir.

C tasinabilir (portable) bir dildir. Yani herhangi bir C programi hibir degisiklige ugramadan, veya ok az bir degisimle, baska bir derleyicide ve/veya isletim sisteminde derlenebilir. rnegin, Windows isletim sistemlerinde yazilan bir C kodu, Linux, UNIX veya VAX gibi isletim sistemlerinde de derlenebilir. Tasinabilirlik, herkesin kabul ettigi bir standart ile gereklestirilebilir. Bugn, C Programla Dili iin American National Standards Institute (ANSI) kurumunun Mart 2000'de belirledigi C99: ISO/IEC 9899:1999 standarti Standart C olarak kabul edilmistir.

Burada verilen C notarinda, agirlikli olarak ANSI C veya diger adiyla Standart C konu edilmistir.


1.2   Neden C?

  • C, en popler dildir. Bkz: langpop.com
  • C, gl ve esnek bir dildir. C ile isletim sistemi veya derleyici yazabilir, kelime islemciler olusturabilir veya grafik izebilirsiniz.
  • C, iyi bir yazilim gelistirme ortamina sahiptir.
  • C, zel komut ve veri tipi tanimlamasina izin verir.
  • C, tasinabilir bir dildir.
  • C, gelisimini tamamlamis ve standardi olusmus bir dildir.
  • C, yapisal bir dildir. C kodlari fonksiyon olarak adlandiralan alt programlardan olusmustur.
  • C++, Java, JavaScript, JavaApplet, PHP, C#, ... gibi diller C dilinden esinlenmistir.

1.3   Ilk C Programi

Program 1.1 de verilen C programi derlendikten sonra, ekrana 'Merhaba Dnya!' yazisini basan yalin bir C programidir. Satir baslarina yerlestirilen 1:, 2: 3: ... rakamlarinin yazilmasina gerek yoktur. Bu rakamlar sadece daha sonra program ile ilgili aiklama yapilirken, ilgili satirda bulunan kodlar izah edilirken kullanilacaktir. Bu programin bilgisayarda ilk.c adi ile kaydedilmistir.

Program 1.1: Derlendikten sonra ekrana 'Merhaba Dnya!' yazar
01: 
02: 
03: 
04: 
05: 
06: 
07: 
/* ilk.c: ilk C programi */
#include <stdio.h>

main()
{
   printf("Merhaba Dnya!\n");
}

/* ... */
Programda, 1. satirda /* ... */ sembolleri grlmektedir. Bu ifadeler arasinda yazilan herhangi bir metin, islem vb. satirlar, derleyici tarafindan islenmez (degerlendirilmez). Yani /* */ ifadeleri aiklama operatrdr.

 NOT
Aiklama operatr olarak C++ tarzi iki-bl (//) de kullanilmaktadir. Gnmzde birok C derleyicisi // operatrn desteklemektedir. Bu operatr kullanmadan nce derleyicinizin bu operatr desteklediginden emin olun.

 /*
    Bu satirlar derleyici tarafindan 
    degerlendirilmez. Ayrica programin           C tarzi
    alisma hizini da degistirmez.
 */

 // Bu satirlar derleyici tarafindan 
 // degerlendirilmez. Ayrica programin           C++ tarzi
 // alisma hizini da degistirmez.

#include <stdio.h>
2. satirdaki #include deyimi, programda eklenecek olan baslik dosyanini isaret eder. Bu rnekte verilen baslik dosyasi (header file) stdio.h dir. #include <stdio.h> ifadesi stdio.h dosyasinin derleme islemine dahil edilecegini anlatir[1]-[2]. Bu dosyalardan, Blm 20'de tekrar bahsedilecektir.

main()
4. satirdaki main() zel bir fonksiyondur. Ana program bu dosyada saklaniyor anlamindadir. Programin yrtlmesine bu fonksiyondan baslanir. Dolayisiyla her C programinda bir tane main() adli fonksiyon olmalidir.

printf()
6. satirdaki printf() standart ktphane bulunan ekrana formatli bilgi yazdirma fonksiyondur. stdio.h dosyasi bu fonksiyonu kullanmak iin program basina ilave edilmistir. Asagida printf() fonksiyonunun basit kullanimi gsterilmistir.

rnek kullanim sekli     Ekranda yazilacak ifade
printf("Element: Aluminyum");     Element: Aluminyum
printf("Atom numarasi = %d",13);     Atom numarasi = 13
printf("Yogunluk = %f g/cm3",2.7);     Yogunluk = 2.7 g/cm3
printf("Erime noktasi = %f derece",660.32);     Erime noktasi = 660.32 derece

Daha fazla bilgi iin bkz. Blm 4.

1.4   Baslik Dosyalari

C dilinde bir program yazilirken, baslik dosyasi (header file) olarak adlandirilan bir takim dosyalar #include nislemcisi kullanilarak program iine dahil edilir. C ktphanesinde bulunan birok fonksiyon, baslik dosyalari iindeki bazi bildirimleri kullanir. Bu tr dosyalarin uzantisi .h dir. ANSI C'deki standart baslik dosyalari sunlardir:

  assert.h    locale.h     stddef.h
  ctype.h     math.h       stdio.h
  errno.h     setjmp.h     stdlib.h
  float.h     signal.h     string.h
  limits.h    stdarg.h     time.h

Bir ok C derleyicisinde yukaridakilere ek olarak tanimlanmis baslik dosyalari da vardir. Bunlar derleyicinin yardim kismindan veya derleyicinin kullanim kilavuzundan grenilebilir. Ayrica Bkz. Blm 20

ilk.c programinda kullanilan baslik dosyasi stdio.h, #include <stdio.h> ifadesi ile derleme islemine dahil edilmistir. stdio.h standard giris/ikis (STandarD-Input-Output) ktphane fonksiyonlari iin bazi bildirimleri barindiran bir dosyasidir. Programda kullanilan printf() fonksiyonunu kullanmadan nce bu baslik dosyasi programin basina mutlaka ilave edilmelidir. Aksi halde derleme esnasinda

  undefined reference to _printf
seklinde bir hata mesaji ile karsilasilir.


1.5   Kaynak Kodunun Derlenmesi

C programlari veya kaynak kodlari (source code) uzantisi .c olan dosyalarda saklanir. Kaynak kod, bir C derleyicisi (C compiler) ile nesne koduna (object code) daha sonra uygun bir baglayici (linker) programi ile isletim sistemininde alistirilabilen (executable) bir koda dnstrlr. Derleme islemi ayrintili olarak Blm 22'de anlatilmistir. Bazi isletim sistemleri ile kullanilan C Derleyicileri ve bu derleyicilerde ilk.c programinin komut satirinda nasil derlenecegi Tablo 1.1'de verilmistir. Eger ismi geen derleyicinin bir editr varsa ilk.c bu editr de derlenebilir.

Tablo 1.1: Isletim sistemleri, bazi derleyiciler ve derleme komutlari
Isletim Sistemi Derleyici Derleme alistirma
MS-DOS / Windows Microsoft C cl ilk.c ilk.exe
Borland Turbo C Web tcc ilk.c ilk.exe
Borland C bcc ilk.c ilk.exe
Zortec C ztc ilk.c ilk.exe
GCC (GNU Compiler Collection) Windows iin Web gcc ilk.c -o ilk.exe ilk.exe
UNIX / Linux GCC (GNU Compiler Collection) Web gcc ilk.c -o ilk ./ilk veya nice ilk

Bunlarin disinda, komut satirini kullanmadan, kodlarinizi Windows ortaminda alisan GCC tabanli DevC++ veya Salford Plato3 derleyicileri ile derlemek mmkn. Bu tip derleyicilerde hata ayiklama islemini kolaylastirmak iin kodlar farli renkte gsterilir. Fakat program iktilari iin kullanilan ekran klasik DOS ekranidir. ekil 1.1 ve 1.2"de bu programlarin ekran grntleri verilmistir.



ekil 1.1: DevC++ derleyicine ait editr. Derleme ve alistirma islemleri ara ubugu zerindeki butonlarla yapilir.




ekil 1.2: Silverfrost Salford (Plato3) derleyicine ait editr. Derleme, baglama ve alistirma islemleri ara ubugu zerindeki butonlarla yapilir.


Derslerimizde kullanilan kaynak kodlari, Turbo C ve GCC derleyicileri ile komutsatirinda derlenmistir. Turbo C derleyicisi istege bagli editrden veya komut satirindan derlenebilir. Editr baslatmak iin C:\TC> dizini altindaki TC.EXE dosyasinin alistirilmasi yeterlidir. ekil 1.3'de Turbo C editr ortami gsterilmistir.



ekil 1.3: Turbo C derleyicisine ait editr. Derleme iin F9, Derleme baglama ve alistirma islemleri iin CTRL+F9 tus kombinasyonu kullanilabilir..

 NOT
DevC++, Salford, GCC ve Turbo C derleyicilerini C/C++ Derleyicileri
kisminda bulabilirsiniz.

ilk.c nin Borland Turbo C ve GCC Programlari ile derlenmesi ve alistirilmasi:

DERLEME ve ALITIRMA
MS DOS (Turbo C) Linux (GCC)
C:\TC> tcc ilk.c
C:\TC> ilk.exe
$ gcc ilk.c -o ilk
$ ./ilk

ilk.c nin iktisi:

IKTI

  Merhaba Dnya!


1.6   C Kodlarinin Temel zellikleri

Bir C programi asagida verilen zellikleri mutlaka tasimalidir.

  • Yazilimda kullanilacak olan her fonksiyon iin ilgili baslik dosyasi programin basina ileve edilmedlidir.
  • Her C programi main() fonksiyonunu iermelidir.
  • Program iinde kullanilacak olan degiskenler ve sabitler mutlaka tanimlanmalidir.
  • Satirin sonuna ; isareti konmalidir.
  • Her blogun ve fonksiyonun baslangici ve bitisi sirasiyla { ve } sembolleridir.
  • C dilinde yazilan kodlarda kk-byk harf ayrimi vardir (case sensitive).
    rnegin A ile a derleyici tarafindan farkli degerlendirilir.
  • Aiklama operatr /* */ sembolleridir.

1.7   Kod Yazimi iin Bazi Tavsiyeler

  • Program aiklamalarini ve dkman hazirlama isini program yazildika yapin! Bu unutulmamasi gereken ok nemli husustur.

  • Degisken, sabit ve fonksiyon adlari anlamli kelimelerden seilip yeterince uzun olmalidir. Eger bu isimler bir ka kelimeden olusacak ise, kelimeler alt izgi ( _ ) ile ayrilmalidir veya her kelime byk harfle baslamalidir. rnegin:
    
     int son_alinan_bit;
     void KesmeSayisi();
     float OrtalamaDeger = 12.7786;
    
  • Sabitlerin btn harflerini byk harfle yazin. rnegin:
    
     #define PI 3.14;
     const int STATUS = 0x0379;
    
  • Her alt yapiya girerken birka bosluk veya TAB tusunu kullanin. Bu okunabilirligi arttiracaktir. rnegin:
    
     k = 0;
     for(i=0; i<10; i++)
     {
           for(j=0; j<i; j+=2)
           {
                 do{
                        if( j>1 )  k = i+j;
    
                        x[k] = 1.0/k;
                   }while(k!=0);
           }
     }
    
  • Aritmetik operatrler ve atama operatrlerinden nce ve sonra bosluk karakteri kullanin. Bu, yazilan matematiksel ifadelerin daha iyi anlasilmasini saglayacaktir.rnegin:
    
     h_max = pow(Vo,2) / (2*g);
     Tf    = 2*Vo/g;
     Vy    = Vo - g*t;
     y     = Vo*t - (g*t*t)/2.0;
     z     = ( a*cos(x) + b*sin(x) )*log( fabs(y) );
    
  • Program bittikten sonra tekrar tekrar programinizi inceleyerek, programinizi daha iyi sekilde yazma yollarini arayin ve ayni fonksiyonlari daha kisa algoritmalarla ve/veya daha modler sekilde elde etmeye alisin.


Powered by PHP