7 Ekim 2016 Cuma

C Programlama Dili Elemanları


1.C Tanımlayıcıları

Programcı tarafından oluşturulurlar.
Programdaki değişkenleri, sabitleri, kayıt alanlarını, özel bilgi tiplerini vb. adlandırmak için kullanılan kelimelerdir.
Tanımlayıcılar, yerini tuttukları ifadelere çağrışım yapacak şekilde seçilmelidir.
İngiliz alfabesindeki A-Z veya a-z arasındaki 26 harf ile 0-9 arası rakamlar kullanılabilir.
Sembollerden sadece alt çizgi _ kullanılabilir.
Tanımlayıcı isimleri harfle veya alt çizgiyle başlayabilir.
Tanımlayıcı ismi, rakamla başlayamaz veya sadece rakamlardan oluşamaz.
Tanımlayıcılar boşluk karakterini içeremezler.

2.C Anahtar Sözcükleri
C dilinde 32 adet anahtar sözcük vardır ve hepsi küçük harfle yazılır. Anahtar sözcükler tanımlayıcı olarak kullanılamazlar.

3.C Veri Türleri
Veri tipi (data type) program içinde kullanılacak değişken, sabit, fonksiyon isimleri gibi tanımlayıcıların tipini, yani bellekte ayrılacak bölgenin büyüklüğünü, belirlemek için kullanılır.
Bir programcı, bir programlama dilinde ilk olarak öğrenmesi gereken, o dile ait veri tipleridir. Çünkü bu, programcının kullanacağı değişkenlerin ve sabitlerin sınırlarını belirler.
C programlama dilinde 5 tane temel veri tipi bulunmaktadır.
char: karakter veriler
int: tamsayı veriler
float: tek duyarlıklı kayan noktalı sayılar
double: Çift duyarlıklı kayan noktalı sayılar
void: Değer içermeyen verilerdir.

Bazı özel niteleyiciler temel tiplerin önüne gelerek onların türevlerini oluşturur:
short
long
unsigned
Niteleyiciler değişkenin bellekte kaplayacağı alanı değiştirilebilirler.
Kısa (short), uzun (long), ve normal (int) tamsayı arasında yalnızca uzunluk farkı vardır. Eğer normal tamsayı 32 bit (4 bayt) ise uzun tamsayı 64 bit (8 bayt) uzunluğunda ve kısa tamsayı 16 biti (2 bayt) geçmeyecek uzunluktadır.

İşaretsiz (unsigned) ön eki kullanıldığı taktirde, veri tipi ile saklanacak değerin sıfır ve sıfırdan büyük olması sağlanır. İşaretli ve işaretsiz verilerin bellekteki uzunlukları aynıdır. Fakat, işaretsiz tipindeki verilerin üst limiti, işaretlinin iki katıdır.

Kısa ve uzun tamsayı tutacak tanımlayıcılar için int anahtar kelimesinin yazılmasına gerek yoktur.
short s;  /* short int s; anlamında */
long k;   /* long int k;  anlamında */

Bir C programı içerisinde, veri tiplerinin bellekte kapladığı alan sizeof operatörü ile öğrenilebilir. İlgi çekici olan, bu alanların derleyiciye??? ve işletim sistemine??? bağlı olarak değişiklik göstermesidir.


4.C Değişkenleri
Değişken, program içinde kullanılan değerlere bellek üzerinde açılan alanlardır. Bu alanlar bir değişken ismi ile anılır.
Değişken isimlendirilmeleri, tanımlayıcı kurallarına uygun biçimde yapılmalıdır.
C’de tüm değişkenler kullanılmadan önce programa bildirilmelidir.
Bu bildirim esnasında, değişkenin veri türü belirlenir.
Örnek:
veri_türü değişken_adı;
int sayac;

Örnekler
int x;
int x1, y1, z1;
long d, d1;
char c;
char c1, c2, c3;
float a;
float a1, a2, a3;
int u[3];
float k[10*20];

Örnekler
int x = 1;
int x1 = 10, y1 = 20, z1 = 30;
char c = ‘a’;
float a = 123.45;


5. C Sabitleri

Sabit bildirimi, başlangıç değeri verilen değişken bildirimi gibi yapılır.
Ancak, veri tipinin önüne const anahtar sözcüğü konmalıdır.
Sabit içerikleri program boyunca değiştirilemez. Yalnızca kullanılabilir.
Genellikle, sabit olarak bildirilen değişken isimleri büyük harflerle, diğer değişken isimlerinin ise küçük harflerle yazılması (gösterilmesi) C programcıları tarafından geleneksel hale gelmiştir.
Örnekler:
const float PI = 3.142857;
const double NOT= 12345.8596235489;
const int EOF= -1;
const char[] = "devam etmek için bir tuşa basın...";


6.C Operatörleri
Operatörler, değişkenler veya sabitler üzerinde matematiksel ve karşılaştırma işlemlerini yapan simgelerdir. Yani bir operatör bir veya daha fazla değişken üzerinde işlem yapan semboldür.

C programlama dilinde 4 tip operatör bulunmaktadır.
Aritmetik Operatörler
Atama Operatörleri
Karşılaştırma Operatörleri
Mantıksal Operatörler

C Operatörleri – Aritmetik Operatörler
Örnekler:
a = b + 10;
c = d + c * e –f /g + h % j;
z = u[1] * u[2];
x = 10;
a = b = c = 0;

C Operatörleri – Atama Operatörleri
Bu operatörler bir değişkene, bir sabit veya bir aritmetik ifade atamak (eşitlemek) için kullanılır.
Birleşik atama: Bazı ifadelerde işlem operatörü ile atama operatörü birlikte kullanılarak, ifadeler daha kısa yazılabilir.
Eğer ifade
     değişken = değişken [operatör] aritmetik ifade;
şeklinde ise, daha kısa bir biçimde
    değişken [operatör]= aritmetik ifade;
olarak yazılabilir.

Örnek: Aşağıdaki işlemlerden sonra a, b ve c’nin son değerleri ne olur?
a = 5;   
b = a++; 
c = ++a; 

Atama Sonrasında
a=7
b=5
c=7

Örnek: Aşağıdaki işlemlerden sonra i’nin son değerleri ne olur?
int i = 1;
i++;
++i;
i += 1 + i++;
i = i + 1;

Atama Sonrasında
i=9

Code::Blocks ile İlk C Programı


Ana menüden “File > New > Project” seçilir ve proje oluşturma sihirbazı başlatılır.
1-)Karşımıza çıkan şablon seçim ekranında “Console application” şablonu seçilir “Go” düğmesine basılır.
2-)Karşımıza çıkan Programlama Dili Seçim ekranında “C” programlama dili seçilir ve “Next” düğmesine basılır.
3-)Karşımıza çıkan yeni ekranda “Project Title” alanına Proje İsmi girilir. “Folder to create project in” kısmında ise Proje klasörünün oluşturulacağı ve proje dosyalarının yaratılacağı dosya yolu seçilir.
4-)Karşımıza çıkan Derleyici (Compiler) seçim ekranı varsayılan değerleriyle bırakılır. Böylece “Debug” ve “Release” modlarının ayarları da tamamlanmış olur. Son olarak “Finish” düğmesine basılır.
5-)Proje oluşturma sihirbazının son adımının tamamlanması ile birlikte aşağıda görüldüğü gibi Proje sekmesinde HelloWorld isimli projemiz ve editörde de “main.c” isimli dosyada ilk C programımız otomatik olarak yerleştirilir.
6-)Son olarak derleme ve çalıştırma işlemi için “F9” kısa yolu veya “Build  Build and run” menü adımı seçilir.

Code::Blocks Nedir?

Code:Blocks özellikle C ve C++ gibi programlama dillerinde kodlama geliştirme yapmamıza imkan veren, açık kaynak kodlu ve cross-platform bir IDE’dir (Integrated Development Environment).
Code:Blocks IDE ortamının kendisi de C++ ile geliştirilmiştir.

Code::Blocks Derleyici Özellikleri
Çoklu derleyici desteği:
GNU GCC, MS Visual C++, Dijital Mars, Borland C++ 5,5, OpenWatcom, LLC, Intel C++, SDDC, Tiny C, GDC D, GNU ARM, GNU ARV

Çok hızlı özelleştirilmiş derleme ve bağlama (makefiles gerekli değildir). Eş zamanlı derleme ve bağlama desteği (var ise CPU'nun diğer çekirdeklerini kullanarak).Çoklu hedef proje desteği.
Workspace kullanarak birden fazla proje ile çalışma.

Code::Blocks Debugger (Hata Ayıklayıcısı) Özellikleri
GNU GDB (Tüm özellikleriyle GNU’nun hata ayıklayıcısını desteklemektedir.).
MS CDB destekler (Tüm özellikleriyle birlikte değil).
Tam breakpoint desteği.
Görünen yerel fonksiyonlar, semboller ve argümanlar.
Disassembly desteği.
Özel bellek dökümü.
CPU görünümü.

Code::Blocks Ara Yüz (IDE, Editör) Özellikleri
Özelleştirilebilir ve genişletilebilir, söz dizimi renklendirilmesi (syntax highlighting)
C++ ve XML için yazım editöründe kod katlama desteği.
Ara yüzde sekme desteği.
Kod tamamlama (Code Completion).
Sınıf tarayıcı (Class Browser).
Akıllı satır içe alma (Smart Indent).
Birçok özelleştirilebilir araç.
Farklı kullanıcılar için TO-DO liste yönetimi.


C Kodlarının Temel Özellikleri - Özet

Yazılımda kullanılacak olan her fonksiyon için ilgili başlık dosyası programın başına ilave edilmelidir. Her C programı main() fonksiyonunu içermelidir.
Program içinde kullanılacak olan değişkenler ve sabitler mutlaka tanımlanmalıdır.

Her ifade satırının sonuna ; işareti konmalıdır.
Her bloğun ve fonksiyonun başlangıcı ve bitişi sırasıyla { ve } sembolleridir.
C dilinde yazılan kodlarda küçük-büyük harf ayrımı vardır (case sensitive).
Örneğin; “A” ile “a” derleyici tarafından farklı değerlendirilir.

Yorum satırı operatörü /* */ veya // sembolleridir.

C Programlama 2.Örnek


İlk C Programı

Program çalıştırılması sonucunda ekrana «Hello World!» yazmaktadır.

1.Satır: Yorumlar /* …. */ Comments:  1.satır /* ile başlayıp */ ile bitmektedir. Bu işaretler arasına yorum satırları yazılır. Yorumlar, okunabilirliği artırmak amacıyla kullandığımız bir özelliktir. Programcı notları olarak da düşünülebilirler. Yorum satırlarında bilgisayar hiçbir işlem yapmaz çünkü C derleyicileri bu satırları atlar. Dolayısıyla, yorum satırları için makine diline çevrilmiş kodlar oluşturulmaz. Yorumlar, diğer yazılımcıların programınızı anlamasında yardımcı olur ancak çok fazla yorum satırı programın ve kodun okunabilirliğini azaltır. Tek satır olan yorumlar için // karakteri de kullanılabilir. Yorumlar programın herhangi bir yerinde olabilirler.
İç içe açıklamalara izin verilmez.
/* yorum deneme /* …. */ …..*/
Program başlangıcının; programın yazılma amacı, yazarı, yazılma tarihi vb. yorumlarla olması programlama sürecine adaptasyon noktasında yararlı olabilir.

Yorum Satırı Örnekleri
/* Tek satır yorum */

// Tek satır yorum

/* İki satır yorum
                     örneği */

/* Birden fazla
       satır yorum
              örneği */

Toplam = X + Y; // X ve Y toplanarak Toplam değişkenine atanır.

2. ve 3. Satır: Ön işlemci Direktifleri (#include):  Yazılan program derlenmeye başlamadan önce ön işlemci komutları çalıştırılır ve çalışan sisteme özgü olan görevleri yerine getirir.# işaretiyle başlayan satırlar, program derlenmeden önce C ön işlemcisi tarafından işlenirler. Bu satır, ön işlemciye standart giriş/çıkış başlık dosyasının yani «stdio.h» dosya içeriğinin programa eklemesini söyler. Bu başlık dosyası, derleyicinin «printf» gibi standart giriş/çıkış kütüphane fonksiyonlarının (STandarD-Input-Output) derlerken kullanabileceği bilgi ve bildirimleri içerir. Başlık dosyalarının  uzantısı .h dir.Başlık dosyaları, derleyicinin kütüphane fonksiyonu çağrılarının doğru yapılıp yapılmadığını anlamasında yardımcı olan bilgiler içerir.  ANSI C'deki standart başlık dosyaları şunlardır:
assert.h,ctype.h,errno.h,float.h,limits.h,locale.h,math.h,setjmp.h,signal.h,stdarg.h, stddef.h, stdio.h, stdlib.h,string.h,time.h 

«stdio.h» başlık dosyasının eklenmesi tercihe bağlıdır fakat standart giriş/çıkış fonksiyonlarının kullanıldığı programlara eklenmelidir. Bu sayede, derleyici, hataları derleme anında bulabilecektir.
Aksi takdirde, hatalar programın çalıştırıldığı anda ortaya çıkar. Bu tür hataların düzeltilmesi oldukça güç olur.

5. Satır: main( ) fonksiyonu: C programlarının ana fonksiyonu olarak tabir edilir. main kelimesinden sonraki parantezler ( ) main'in  fonksiyon adı verilen program oluşturma bloklarından biri olduğunu gösterir. Programın yürütülmesi ilk olarak bu fonksiyonun çağrılmasıyla gerçekleşir. C programları bir veya birden fazla fonksiyon içerebilir ancak bunlardan biri mutlaka main olmalıdır. Küme parantezi, { , her fonksiyonun gövdesinin başına yazılır. Diğer küme parantezi , } , ise her fonksiyonun sonuna yazılmalıdır. Bu iki parantez arasında kalan program parçacığına «blok» denir. Bloklar C'de önemli program birimleridir.

7. Satır: printf("Hello World!\n"); fonksiyonu: printf standart kütüphanede bulunan ekrana formatlı bilgi yazdırma fonksiyondur. Çift tırnak işareti arasındaki karakterleri ekrana yazdırır.
Yazdırılacak karakterlerin tümüne karakter dizesi «string», mesaj ya da hazır bilgi «literal» denir.
printf, parantezler içindeki bağımsız değişkenler (argument) ve noktalı virgülden oluşan bu satıra «ifade» denir. Her ifade ; (noktalı virgül) ile bitmelidir. Noktalı virgüle ifade sonlandırıcı da denir.
printf ifadesindeki tırnak işaretleri arasındaki karakterler aynen ekrana yazdırılır. Ancak \n karakterlerinin yazdırılmamaktadır. Ters eğik çizgi ( \ ), çıkış karakteri olarak adlandırılır ve printf'in farklı bir iş yapması gerektiğini belirtir. printf, ters çizgi işaretiyle karşılaştığında, bu işaretten sonraki karaktere bakar ve bu karaktere göre bazı özel işler yapar.Ters çizgi  işareti ( \ ) ve bu işaretten sonra gelen karaktere çıkış sırası denir. \n çıkış sırası, yeni satır anlamına gelir ve imlecin yeni satıra geçmesine sebep olur. Çıkış karakterleri (escape sequence) aşağıdaki gibidir:

C Programlama Dili Kod Katman Yapısı


C Sistemleri ve Kütüphaneleri


C sistemleri üç kısımdan oluşur:
Programlama ortamı
C programlama dili
C standart kütüphaneleri
C programları «fonksiyon» adı verilen parçalardan ya da modüllerden oluşur.
Fonksiyonlar C «bloklarından» oluşur.
Her fonksiyon/blok bir veya daha fazla «deyimi» içerir.
Her bir deyim program çalıştırıldığında belirli bir eylemi yerine getirir. Deyimler işlemleri yerine getiren komutlardır.

C Dili Taşınabilirdir (Portable) !!!


C dili, donanımdan bağımsızdır.
C dili ile dikkatli bir biçimde yazılmış bir program, her bilgisayara taşınabilir.
Yani herhangi bir C programı hiçbir değişikliğe uğramadan, veya çok az bir değişimle, başka bir derleyicide ve/veya işletim sisteminde derlenebilir.
Sonuç olarak Windows işletim sistemlerinde yazılan bir C kodu, Linux, UNIX veya VAX gibi işletim sistemlerinde de derlenebilir.