1 C/C++ PROGRAMININ YAPISI Bir C programının temelini fonksiyonlar oluģturur. Bir baģka değiģle C programı fonksiyonlarla çalıģmasının gerçekleģtirir. C nin olmazsa olmaz fonksiyonu main () fonksiyonudur. Bütün C programları main fonksiyonu ile çalıģmasına baģlar ve main fonksiyonu ile çalıģmasını bitirirler. Bir C programın yapısı Ģöyle verilebilir. /* Açıklama Satırı: */ #include <stdio.h> void main() { int Sayi1, Sayi2; int Toplam; printf("birinci sayıyı giriniz:"); scanf("%d", &Sayi1); printf("\nġkinci sayıyı giriniz:"); scanf("%d", &Sayi2); Toplam = Sayi1 + Sayi2; printf( MERHABA GENCLER\n\n ); printf("\n\n Sayıların toplamı= %d", Toplam); } Programın İncelenmesi /* Açıklama Satırı: Program ile ilgili bilgiler yazılır. Bu program iki sayıyı toplar ekrana yazar 23 ġubat 2008 */ //Açıklama satırları yukarıda görüldüğü gibi /* açıklama*/ arasına yazılabilecegi gibi // iki slash kullanılarak da oluģturulabilir.
#include <stdio.h> BaĢlık dosyası: Program içerisinde kullanılacak fonksiyonlara eriģim için eklenmelidir. AĢağıdaki programda ekrana bir yazı yazdırılmaktadır. Bu yazının standart çıkıģ ortamına (ekrana) yazdırılabilmesi için printf() fonksiyonundan yararlanılır. Printf fonksiyonu ise stdio.h standartinput/output header dosyası altında tanımlıdır. Bu fonksiyonun kullanımı için bu baģlık dosyasının programa ilave edilmesi gerekir. BaĢlık dosyaları ön iģlemci komutu # ve include deyimi ile <kütüphane ismi > veya kütüphane ismi ile programa ilave edilir. //Var ise Global DeğiĢkenlerin tanımı 2 void main() Ana fonksiyon main bildirimi ve gövdesinin yazımı { Fonksiyonların gövdesi blok içinde yazılır. Blok baģlangıcı. int Sayi1, Sayi2; Yerel değiģkenlerin bildirilmesi tüm iģlem satırları bildirimlerde dahil ; ile sona erer. int Toplam; printf("birinci sayıyı giriniz:"); printf fonksiyonu ile ekrana yazı yazdırılmaktadır. Fonksiyona argüman gönderimi ile yapılmaktadır. scanf("%d", &Sayi1); scanf fonksiyonu ile klavyeden girilen sayılar tam sayı format tanımlayıcısı %d ile okutularak Sayi1 &(and) operatörü kullanılarak değiģkenine aktarılmaktadır printf("\nikinci sayıyı giriniz:"); scanf("%d", &Sayi2); Toplam = Sayi1+Sayi2; Ġki sayını toplanıp Toplam değiģkene aktarılması. printf( MERHABA GENCLER\n\n );
printf("\n\nsayıların toplamı= %d", Toplam); Toplam değiģkenin tam sayı format tanımlayıcısı %d ile ekrana yazdırılması. } Blok sonu 3 DEĞĠġKEN TĠPLERĠ C/C++ da temel olarak 5 veri tipi mevcuttur. TEMEL TİP VERİ TİPİ BOYUT (Byte) ÖRNEK MINIMUM DEĞER MAXIMUM DEĞER AÇIKLAMA 1 char 1 char K -128 127 Karakter 2 int 4 int T; -32768 32767 Tam sayı 3 float 4 float A; 8.43E-37 3.37E+38 Kesirli tam sayı; 4 double 8 double A; 2.225074E-308 1.797693E+308 5 void 0 void main Hassasiyeti ArtmıĢ kesirli tam sayı ; Değersiz, fonksiyon tanımlarında kullanılır İşaretsiz (unsigned )Tanımlanan Değişkenler Char ve int veri tipleri unsigned iģaretsiz olarak tanımlanabilir. Bu durumda hafızada kapladıkları alan değiģmez. Sayı aralıkları ise MSB bitinin iģaret amacıyla kullanılmamasından dolayı değiģecektir. Örneğin sayı aralığı 2-7 ile 2 7 arasında olan char, unsigned char olarak
tanımlanırsa 0-2 8 arası sayıları(karakterlerin sayısal kodlarını) tutacaktır. 4 Uzun (long )Tanımlanan Değişkenler int ve double değiģkenler long tanımlanarak tutabilecekleri sayı aralığı arttırılabilir. Bu durumda kapladıkları alan 2 katına çıkar. Örneğin normalde 2 byte yer kaplayan ve -32768 ile 32767 arasında sayıları tutan int değiģken long int olarak tanımlanırsa 4 byte yer kaplar ve -2 14 7 483 648 ile 2 147 483 648 arasında sayıları tutabilir. DEĞĠġKEN TANIMLAMA değişken_tipi Değişken_Adı (=başlangıç değeri); ġeklinde değiģkenler tanımlanır. BaĢlangıç değeri opsiyoneldir, daha sonra atama yapılabilir. Örnek int ogrno; int sayi1,sayi2=10; float kilo; float boy=1.85; double pi; double e=2.1721251342; char harf; char karakter= A ; char kelime [10]= Ahmet ;
5 Değişken Tanımlanırken şu kurallara dikkat edilmelidir. DeğiĢken adları bir harf ile baģlamalıdır. (a-z, A-Z). DeğiĢken adı numara içerebilir. (0-9). DeğiĢken adında özel karakter kullanılmaz. DeğiĢken adında boģluk bırakılmaz. Sadece Ġngilizce karakterler yer almalıdır. (ö, ü, ç, Ģ, ğ, ı olmamalı). DeğiĢkenler büyük ve küçük harf duyarlıdır. (sayi3 eģit değil Sayi3). DeğiĢkenin uzunluğu 32 karakteri geçmemelidir. DeğiĢken C/C++ a ayrılmıģ özel adlardan olmamalıdır. Özel Değişkenler break extern sizeof case float static char for struct const goto switch continue if typedef default int unsigned do long void double return while else enum short signed
6 Geçerli Tanımlama: Sayi1 Ogr_Numarasi Adres OLCME Sayi1 a_switch Hatalı Tanımlama: 1ncisayi Ogr Numarasi Genel#Toplam ölçme 1Sayi switch Aritmetik Operatörler a) İkili Operatörler + Toplama operatörü - Fark operatörü * Çarpma operatörü / Bölme operatörü % Mod operatörü: bölme sonucundan kalanı verir. (k=(20%6)=2 olur) x+=5; x=x+5; x*=5; x=x*5; x-=y+5; x=x-(y+5); x%=5; x=x%5;
7 b)tekli (Unary) Operatörler y=x++ y=x+1; (eģitle ve sonra arttır) y=++x y=(x+1); (arttır ve eģitle ) y=x-- y=x-1; (eģitle ve sonra azalt) y=--x y=(x-1); (azalt ve sonra eģitle) Örnek2: #include <stdio.h> #include <conio.h> void main() { int a=10,b,sonuc; a+=5; printf("\n a sayısı=%d, a); a=10; sonuc=a++; printf("\n sonuc sayısı=%d, sonuc); printf("\n a sayisi=%d", a); a=10; printf("\n a sayisi=%d", a++); printf("\n a sayisi=%d", a); b=5; sonuc=a%b; printf("\n sonuc sayısı=%d, sonuc); a=10; sonuc=++a+b; printf("\n sonuc sayısı=%d, sonuc); sonuc=a-(--b); printf("\n sonuc sayısı=%d, sonuc); }
8 İlişkisel ve Mantıksal Operatörler İlişkisel operatörler Ġki değer arasındaki iliģkiyi test etmek için kullanılır. Ġfade doğru ise bunun sonucunda 1, yanlıģ ise 0 üretilir. iģleç anlamı > büyük >= büyük ve eģit == eģit mi? < küçük <= küçük ve eģit!= eģit değil x=10, y=1 için sonuc=(x > y) Doğru sonuc=1 sonuc=(x < y) YanlıĢ sonuc=0 sonuc =(x!=y) Doğru sonuc=1 Mantıksal operatörler Bir veya iki değiģken arasında mantıksal iģlem yapmak için kullanılır.! DEĞĠL (NOT) sonuc=!1 sonuc=0 olur && VE (AND) sonuc=10&&10 sonuc=1 VEYA (OR) sonuc=10 0 sonuc=1 X=5 ve Y=3 için (X>0) && (X<Y) (X>0) (Y>0)
9 İfadelerde işlemlerin yürütülme sırası iģlem Önceliği ( ) en yüksek (ilk yürütülür)! *, /, % +, - <, <=, >=, > ==,!= &&, = en düģük (son yürütülür) = iģleci sağdan sola, diğerleri soldan sağa doğru yürütülür. Görüldüğü gibi ifadelerde matematiksel ve mantıksal iģlemler bittikten sonra iliģki test edilir. Örnek3: #include<stdio.h> int a,b,x=2,y=3; void main() { a= x/y; printf("a=: %d\n",a); b= x<=y&&2*x; printf("b=:%d\n",b); a=!((x == 1) && (y == 2)); printf("a=: %d\n",a); a=b=4; x=((a+b / 2*y >=4*a) (b<8)); } printf("x=: %d\n",x);
10 #define ön iģlemci komutu Sabit değer atamalarında kullanılır. const değiģken ön tanımlaması bir değiģkene sabit sayı atamasında kullanılır, program içinde değiģken değeri değiģtirilemez. Örnek: /* Bu program, yarıçapı verilen bir çemberin alanını hesaplar. */ #include <stdio.h> #define PI_SAYISI 3.14 const float yari_cap=2.0; void main() { float Alan; // yari_cap=3.0; //hatali kullanim // PI_SAYISI=5; //hatali kullanim Alan = PI_SAYISI * yari_cap*yari_cap; printf("\n\nçemberin alanı= %f\n", Alan); } KAYNAKLAR ġevki DEMĠRBAġ, Oğuz ÜSTÜN ve Nihat ÖZTÜRK, Beltek kursu ders notları, Gazi Üniversitesi Pappas C.H. ve Murray W.H., C/C++ Programcının Rehberi, Sistem Yayıncılık, 2000. PektaĢ H., C Dili Kullanarak Bilgisayar Programlama, KOU EHM, Ders Notları.