You are on page 1of 61

C ile Programlama

brahim GAZALOLU
HUNRobotX 2012

YEN BR DL DOUYOR!

Dennis MacAlistair Ritchie (d. 9 Eyll 1941 - . 12 Ekim 2011) Uzun sre birlikte alt arkada Ken Thompson ile birlikte C programlama dilini ve Unix iletim sistemini yazan saygn ABD'li bilgisayar mhendisi. 1983te Turing dln, 1999de Ulusal Teknoloji Madalyas dln ald. 12 Ekim 2011'de hayatn kaybetmitir.
HUNRobotX 2012

Yazlm Nedir?
YAZILIM : Komutlar zinciri kullanarak bir problemin zm iin gelitirilen bilgisayar programlardr.

PROBLEM : 1den 10a kadar olan saylarn toplamn bulma YAZILIMSAL ZM


# include <stdio.h>

int main() { int toplam=0, sayi=0; while(sayi<=10) { toplam+=sayi; sayi++; } printf(TOPLAM : %d,toplam); HUNRobotX 2012 }

DERLEYC NEDR ?
Derleyici yazdnz kodlar yorumlayan ve onlar makine(genellikle) diline eviren arac yazlmlardr.

HUNRobotX 2012

Derleme Aamalar
OBJ, altrlabilir bir kod deildir. Makina kodu ve apileri ierir OBJ = Nesne Kodu Btn programlama dilleri iin ayndr Balayc = Birden fazla nesne kodunun birletirilip makina kodu yaplmas

HUNRobotX 2012

PROGRAMLAMA DLLERNN DEERLENDRME LTLER


+

Seviye
Yazlm dilinin insan algsna yaknlnn ltdr. Yksek seviyeli dil kullanl ve gl dil anlamna gelmez C dili orta seviyeli bir dildir .

Okunabilirlik
Okunabilirlik kaynak kodun abuk ve iyi alglanabilmesi iin gerekli ve nemli bir kriterdir. Yazlmn bakalar tarafndan okunup anlalabilmesi ve gelitirilebilmesi iin muhakkak uygulanmaldr.

HUNRobotX 2012

Kodlarnz okunakl olmal


#include <stdio.h> #include <iostream> int main() { int sayi,i; printf("Ust sinir girin : \n"); scanf("%d",&sayi); // Kullancdan say iste printf("CIFTLER\t\t\ TEKLER\); printf(n=======\t\t=======\n\n"); for(i=0;i<=sayi;i++) { if(i%2==0) printf(" %d\n",i); else printf(" \t\t%5d\n",i); // ift deilse atla } system("pause"); }
HUNRobotX 2012

BYLE OLMASIN
#include <stdio.h> #include <iostream> int main() {int sayi,i;printf("Ust sinir girin : \n"); scanf("%d",&sayi); system("cls");printf("CIFTLER\t\t\ EKLER\n=======\t\t =======\n\n ");for(i=0;i<=sayi;i++) {if(i%2==0) { printf(" %d\n",i); } else printf(" \t\t%5d\n",i); } system("color c");system("pause"); }

Tanabilirlik - Bir sistem iin yazlan programn farkl sistemler zerinde alabilme yetisidir. - Javann hemen her platformda alabilmesi Verimlilik - Programn hzl ve mmkn olduunca dk RAM tketmesi

HUNRobotX 2012

C nin Baz stnlkleri


* C dili orta seviyeli bir dildir : nsan diline yakndr kolay anlalr. Bu getirisinin yannda Makine dilinin hakimiyetinden ok az ey kaybeder * C algoritmik bir dildir : Problemin belirli admlar zinciri izleyerek zlmesini salar. * C dier dillerle kyaslandnda tanabilirlii ok yksek olan bir dildir : Genel kabul grm yaygn standartlara sahiptir.

HUNRobotX 2012

Say Sistemleri
10 (Decimal) tabannda bir say ; (1478)10 = 8*10^0 + 7*10^1 + 4*10^2 + 1*10^3 2 (Binary) tabannda bir say ; (1010)2 = 0*2^0 + 1*2^1 + 0*2^2 + 1*2^3
Bilgisayar sistemlerinde 2lik say sistemi kullanlr. Binary system

Binary sistemdeki her rakama bit (=binary digit kelimesinden tremitir)


Bilgisayar sistemlerinde ller : 8 bit = 1 byte 1024 byte = 1 Kilobyte (KB) 1024 Megabyte = 1 Gigabyte (GB) 1024 kilobte = 1 Megabyte (MB) 1024 Gigabyte = 1 Terabyte (TB)
HUNRobotX 2012

Sistem programclnda kullanlan daha kk birimler


8 bit 1 byte 16 bit 1 word 32 bit 1 double word 64 bit 1 quadro word Onluk Say Sisteminden kilik Say Sistemine Dnm rnek olarak 87 says ikilik say sisteminde ifade edilmek istensin:
HUNRobotX 2012

Onaltlk (HEX) ve Sekizlik (OCTAL) Say Sistemleri

Onaltlk say sisteminde 16 simge bulunur. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 A = 10, B = 11, C = 12, D = 13, E = 14, F = 15 Onaltlk say sisteminde yazlm bir sayy onluk sistemde ifade etmek : 01AF = (15 * 1) + (10 * 16) + (1 * 256) + (0 * 4096) = 431
Onaltlk (HEX) say sisteminden kilik (Binary) sisteme dnm

rnek : 2ADF 2 = 0010 A = 1010 D = 1101 F = 1111 Bu durumda 2ADF = 0010 1010 1101 1111
HUNRobotX 2012

kilik say sisteminden onaltlk say sistemine de benzer ekilde dnm yaplabilir: 1010 1110 1011 0001 = AEB1 0010 1101 0011 1110 = 2D3E
Kesirli Dnmler

(13.25)10 = (?)

Tam say ksm dntrlr


13/6 6/2 3/2 1/2 = = = = 2 + kalan 1 3 + kalan 0 1 + kalan 1 0 + kalan 1

Kesirli ksm dntrlr 0.25 x 2 = 0.5 tam ksm 0 0.5 x 2 = 1.0 tam ksm 1 Burdan 1011.01 elde edilir

Burdan 1101 elde edilir.


HUNRobotX 2012

4 LEM
2 lik sistemde toplama
(10110)2 + (01010)2 = (100000)2

2 lik sistemde arpma


(110101)2 * (111)2 = (?)2

2 lik sistemde toplama


(10110)2 - (01010)2 = (01100)2

2 lik sistemde blme


(10) =(1010)2 (4) =(100)2 (1010)2 / (100)2 = (?) 2

HUNRobotX 2012

Veri Trleri
1. nceden Tanmlanm Trler Programlama dilinin tasarmndan kaynaklanan ve dilin kurallarna gre varl gvence altna alnm olan trlerdir 2. Programcnn Tanmlanm Olduu Trler Programlama dillerinin ou, nceden tanmlanm veri trlerine ek olarak, programcnn da yeni trler tanmlanmasna izin verir.

HUNRobotX 2012

NCEDEN TANIMLANMI VER TRLER


Tam say trleri

HUNRobotX 2012

Gerek say trleri n (Ondalkl Saylar)

HUNRobotX 2012

DEKENLER

Deiken : Deeri program iinde deiebilen kullanlacak verilerin depoland alanlara eriim iin atanan deerlerdir
Deikenlerin Tanmlanmas Deiken tanmlama kurallar :

* lk harfi say olamaz. Harf veya alt izgiyle balamal * _ (altizgi) iaretinden baka noktalama iareti ieremez * Deikenler arasnda boluk olamaz * C byk/kk harf duyarl bir dildir ( Case Sensitive) * Anahtar szck olamaz
HUNRobotX 2012

Yerel ve Evrensel(Global) deiken


Yerel deiken tanmland alanda(blok) faaliyet gsteren deiken.Bu alanlar dnda kullanlamaz
rnek : int main() { { int degisken_1; } int degisken_2; } int global_degisken; int main () { .... }

Evrensel deiken programn her yerinden ulalabilen deiken Evrensel deikenler btn fonksiyonlarn dnda tanmlanrlar
HUNRobotX 2012

DEKENLERN BLDRM YERLER


1. Bloklarn iinde
2. Tm bloklarn dnda. 3. Fonksiyon parametre deikeni olarak fonksiyon parantezlerinin ierisinde

HUNRobotX 2012

DEKENLERN TRLER
Bildirim yaptnz deikeni tr ile birlikte derleyiciye tantmalsnz. <tr ismi> <degisken adi>; rnein tamsay tutacak bir deiken tanmlayacaksanz int tamsayi_1; eklinde bir tanmlama yapmalsnz.

HUNRobotX 2012

FADE & DEYM


FADE (Expression) a + b / 2 c * 2, d = h + 34 geerli ifadelerdir. DEYM (statement) sonuc = sayi1 * sayi2 bir ifadedir. Ancak sonuc = sayi1 * sayi2 ; bu bir deyimdir

HUNRobotX 2012

NLEMC KOMUTLARI
nilemci komutlar derleyicinin derleme ilemine balamadan ileme koyduu komutlardr. Yaygn olarak kullanlan komutlar #define ve #includedir.

Kodunuz altrlabilir hale gelmeden nce bu komutlarn gerei yaplr daha sonra kodunuzun gerekleri yerine getirilir.

HUNRobotX 2012

#define
#define tanmla demektir.Derleyiciye tanmladnz bir sayy,sabiti,fonksiyonu kod iinde farkl ekillerde kullanacanz bildirir. rnek : #define PI 3.14 #define YAZ printf(nilemci Komutlar #define);

HUNRobotX 2012

#include
Bu komut dardan kaynak kodunuza farkl bir dosyann ieriini dahil etmenizi salar rnek : #include <stdio.h> #include <fonksiyonlarim.c> ... Burda kaynak kodunuza stdio.h ve fonksiyonlarim.c dosyalarinin ierii derleme srasnda aynen kopyalanr. ** printf ve scanf gibi fonksiyonlar stdio.h dosyasndadr
HUNRobotX 2012

Ekrana yaz yazdrmak iin kullanlan fonksiyondur. Kullanm printf(HUNROBOTX); eklindedir. Eer dardan alnan veri yazdrlacaksa printf(Dsaridan alinan sayi : %d,sayi); gibi bir kullanm vardr. Yazdrd karakter saysn geri dndrr. Dardan alnan veri trne gre tanmlayclar deiir : %d=integer(tamsay) %f=float(kesirli_say) %c=karakter
HUNRobotX 2012

Printf()

Scanf()
Kullancdan veri okumak iin kullanlr Kullanm scanf(%d,&okunan_sayi); Tanmlayclar okunacak veri trne gre deiir scanf(%lf,&okunan_sayi); = Ondalkl say okur scanf(%c,&okunan_karakter); = Karakter okur Scanf(%s,&okunan_string); = String(Cmle) okur ...
HUNRobotX 2012

UYGULAMA

DAIRENIN ALANININ HESAPLANMASI

HUNRobotX 2012

SABTLER
Programc tarafndan dorudan girilen verilerdir. Sabitlerin saysal deerleri derleme zamannda tam olarak bilinmektedir. x = y + z; d = x + 10;

HUNRobotX 2012

TAM SAYI SABTLER


Bunlar tipik olarak int trden deikenlerine atanan ve tamsay biiminde olan sabitlerdir Cde int tr snrlar iinde olan her tamsay birer tamsay sabit (ya da int trden sabit ) olarak ele alnr. -25 30000 25789
HUNRobotX 2012

KARAKTER SABTLER (CHAR)


char sabitleri tipik olarak char trden nesnelere atanan sabitlerdir. 'a' 'J' '' ':' '8' '< '\0' '\a' '\b' '\t' '\n' '\v' '\f' '\r' '\"' '\\' '\x0' '\x7' '\x8' '\x9' '\xA' '\xB' '\xC' '\xD' '\x22' '\x5C' '\0' '\07' '\010' '\011' '\012' '\013' '\014' '\015' '\042' '\134' NULL karakter 0 an sesi (alert) 7 geri boluk (back space) 8 tab karakteri (tab) 9 aa satr (new line) 10 dey tab (vertical tab) 11 sayfa ileri (form feed) 12 satr ba (carriage return) 13 ift trnak (double quote) 34 ters bl (back slash) 92
HUNRobotX 2012

'\x41' /* 41H numaral ASCII karakteridir */ '\xff /* FFH numaral '2' karakter sabitidir */ '\x1C' /* 1C numaral ASCII karakter sabitidir. */

'\012' /* 10 numaral ASCII karakteri */ '\16 /* 14 numaral ASCII karakteri */ '\123' /* 83 numaral ASCII karakteri. */

HUNRobotX 2012

OPERATRLER
Operatr, operand ncelik sras

HUNRobotX 2012

Operatr nedir?
Operatrler, nesneler veya sabitler zerinde nceden tanmlanm birtakm ilemleri yapan atomlardr.

HUNRobotX 2012

C de her ifade en az bir operatr ierir. c=a*b/2; 3 operatr var: =*/ d=fonk(); 2 operatr var: =() c=a>4; 2 operatr var: => ++x; 1 operatr var: ++

HUNRobotX 2012

Her operatrn operandlar vardr. Operandlar operatrlerin ileme soktuklar nesneler ya da sabitlerdir. a+b operatr: +, operandlar: 2 tane a,b c++ operatr: ++, operandlar: 1 tane c b>c operatr: >, operandlar: 2 tane b,c

HUNRobotX 2012

Yksek ncelik

Dk ncelik
HUNRobotX 2012

UYARI
Operatrlerin iinde bir ksm soldan saa incelenir, Bir ksm da sadan sola incelenir.

HUNRobotX 2012

Operatrlerin hangi ynde nceliklerine baklacan gsteren tablo

() ! ,++ ,-*,/,% +, > ,>=, <, <= == ,!= && || =

soldan saa sadan sola soldan saa soldan saa soldan saa soldan saa soldan saa soldan saa sadan sola
HUNRobotX 2012

Operatrler arasndaki ncelik ilikisi


c=a+b*2; ifadesi derleyici tarafndan u srada ele alnr. ilem1: b*2; ilem2: a+ilem1; ilem3: c=ilem2;

HUNRobotX 2012

x=a*b-2/3; ilem1: a*b; ilem2: 2/3; ilem3: ilem1 ilem2; lem4: x=ilem3;

Ayn ncelie sahip olan operatrler arasnda ilem sras iki ekilde de olabilir.

HUNRobotX 2012

a=x-b/2*c; Blme ve arpma operatrleri ayn ncelie sahiptir. 1: b/2 2: 1*c 3: x-2 4: a=3

HUNRobotX 2012

C de atama operatr sadan sola ncelikli operatrdr. a=b=c; 1: b=c 2: a=1

HUNRobotX 2012

a=(b+2)*80; 1: (b+2) 2: 1*80 3: a=2

HUNRobotX 2012

Operatrleri 3 snfa snflandrlr


levlerine gre Operand saylarna gre Operatrn konumuna gre

HUNRobotX 2012

levlerine gre operatrler


1. 2. 3. 4. 5. 6. Aritmetik likisel Mantksal Bit Gsterici zel amal operatrler

HUNRobotX 2012

Aritmetik operatrler
Drt ilemle ilgili olan; * arpma / blme % mod alma (blmden kalan) + toplama - kartma

HUNRobotX 2012

likisel(karlatrma)operatrleri
> < >= <= == != byk kk byk yada eit kk yada eit eit eit deil

HUNRobotX 2012

Mantksal operatrler
! && || Deil (not) ve (and) veya(or)

HUNRobotX 2012

Artrma(++) Eksiltme(--)

++, 1 artr -- 1 eksilt anlamndadr ++a ile a++; ayn anlamda deildir --a ile a--; ikisi de ayn anlamdadr

HUNRobotX 2012

likisel operatrler
Cde ilikisel operatrlerin rettii deer, koul salanyorsa 1, salamyorsa 0 deerini retir. a=5>2; /*a=1*/ b=3==3 /*b=1*/ c=4<=1 /*c=0*/

HUNRobotX 2012

x=10; y=20; z=y<=x+10; /*z deeri nedir?*/


a=5; b=10; c=a==10<b+1; /*c deeri nedir?*/ a=10*2+1>=4*4+5==5>5-3*2; /*a deeri nedir?*/
HUNRobotX 2012

1: 10*2 2: 4*4 3: 3*2 4: 1+1 5: 2+5 6: 5-3 7: 4>=5 8: 5>6 9: 7==8 10: a=9 Sonu a=1

20 16 6 21 21 -1 1 1 1

HUNRobotX 2012

Mantksal operatr
! && || deil ve veya tek operandl iki operandl iki operandl

likisel operatrlerde; koul salanyorsa 1, salamyorsa 0 deerini alr. Mantksalda ise; Say 0 ise YANLI, sfr deil(sfr dnda bir say) ise DORU deerini alr.
HUNRobotX 2012

a=!6 /*a nin deeri nedir?*/ 6 says sfr d bir say olduu iin DORU dur. Ancak ! ile bunun tersi alnmtr. Dorunun tersi yanltr. Sonu yanl olacaktr.

HUNRobotX 2012

b=10+4>5+!2; /*b nin deeri nedir?*/ 1:!2 0 2:10+4 14 3:5+i1 5 4:i2>i3 1 5:b=i4 1 Sonu 1 dir.

HUNRobotX 2012

a=10; b=!++a>10!=5; /*b nin deeri nedir?*/ i1: ++a 11 i2: !i1 0 i3: i2>10 0 i4: i3!=5 1 i5: b=i4 1 sonu 1 dir.
HUNRobotX 2012

Ve(and) - && operatr


likisel operatrlerin hepsinden dk nceliklidir. Operandlarn ikisi doru ise doru(1) deerini, operandlarn bir tanesi yanl ise yanl deerini(0) alr. a=4 && 0; /*a deeri 0 dir*/ b=10 && -4 /*b deeri 1 dir*/ c=0 && 0 /*c deeri 0 dir*/ Yani bir operand 0 ise sonu 0 dr.
HUNRobotX 2012

a=5; b=!a>10&&fonk()==10; /*b nin deeri nedir?*/ a=15; x=a>=10&&a<=20; /*x nin deeri nedir?*/
HUNRobotX 2012

UYGULAMALAR

HUNRobotX 2012

You might also like