C Programlama - Alper BAYRAK - Abant İzzet Baysal Üniversitesi

C Programlama
C Programlama
Alper Bayrak
¨
Abant ˙Izzet Baysal Universitesi
Bolu
2014
C Programlama
Sunuma Genel Bakı¸s
Sunuma Genel Bakı¸s I
1 PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL
B˙IR BAKIS¸
Kullanılacak Olan Derleyici
A¸cıklamalar, Tanıtıcı S¨
ozc¨
ukler ve Anahtar S¨ozc¨
ukler
De˘gi¸smezler
Tamsayı De˘
gi¸smezleri
Kayan Noktalı Sayı De˘
gi¸smezleri
Karakter De˘
gi¸smezleri
Karakter Dizisi De˘
gi¸smezleri
Temel Veri Tipleri ve Tanımlar
¨ slemci Emirleri
#define ve #include Oni¸
˙I¸sle¸cler, Ifadeler
˙
ve Atama Deyimleri
¨
Oncelik
ve Birle¸sme Kuralları
˙
De˘
gi¸smez Ifadeler
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
Kullanılacak Olan Derleyici
Kullanılacak Olan Derleyici
Bu derste, Dev-C++ geli¸stirme ortamı kullanılacaktır.
Dev C++, GNU GPL altında da˘
gıtılan bir t¨
umle¸sik geli¸stirme
ortamıdır.
Dev C++’ nin t¨
um arabirimi Delphi ile geli¸stirilmi¸stir ve
u
¨cretsiz olarak da˘
gıtılmaktadır.
Program, hem C hem de C++ ’ı desteklemektedir.
Programın son s¨
ur¨
um¨
un¨
u
http://www.bloodshed.net/dev/devcpp.html adresinden
indirebilirsiniz.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
Kullanılacak Olan Derleyici
Kullanılacak Olan Derleyici
Programın a¸cılı¸s ekranı a¸sa˘
gıda verilmi¸stir.
Figure: Dev-C++ ekran g¨
or¨
unt¨
us¨
u
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
Kullanılacak Olan Derleyici
Kullanılacak Olan Derleyici
¨
C dilinde yazılan basit bir program (Ornek
program 1) ¸su ¸sekildedir.
#include <stdio.h>
int main()
{
printf(”merhaba”);
return 0;
}
Bu program ekrana ”merhaba” yazacak ve kapanacaktır.
Burada printf(”merhaba”); dı¸sındaki kodlar zorunludur ve
ilerleyen kısımlarda anlatılacaktır.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
Kullanılacak Olan Derleyici
Kullanılacak Olan Derleyici
Programın ¸calı¸stırılabilmesi i¸cin ilk ¨
once derlenmesi gerekir.
Bunun i¸cin men¨
uden ¸calı¸stır→derle komutu se¸cilir.
Programın, hata vermemesi durumda a¸sa˘
gıdaki ekran ¸cıkar.
Figure: Derleme sonu¸c ekranı
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
Kullanılacak Olan Derleyici
Kullanılacak Olan Derleyici
Programda hata ¸cıkması durumunda, mevcut hatalar,
programın alt kısmındaki ”derleyici” kısmında verilir.
A¸sa˘gıda ¨ornek bir hata ekranı g¨
osterilmi¸stir.
Figure: Derleyici hata ekranı
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
Kullanılacak Olan Derleyici
Kullanılacak Olan Derleyici
Programın hata vermemesi durumunda, men¨
uden
¸calı¸stır→¸calı¸stır se¸cene˘
gi se¸cilir.
A¸sa˘gıda c¸alı¸san programın ekran ¸cıktısı verilmi¸stir.
Figure: ˙Ilk program ekran ¸cıktısı
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
A¸cıklamalar, Tanıtıcı S¨
ozc¨
ukler ve Anahtar S¨
ozc¨
ukler
A¸cıklamalar
B¨ol¨
u-yıldız (/*) ile ondan sonraki ilk yıldız-b¨
ol¨
u (*/) arasında
bulunan herhangi bir karakter dizisi bir program a¸cıklamasıdır
ve derleyici a¸cısından bir bo¸slu˘
ga e¸sde˘
ger olarak kabul edilir.
Bir a¸cıklama grubunun ¸s¨
oyle yazılması ¨
onerilmektedir:
/* * * * * * * * * * * * * * * * * * * * * * * * * * *
*
*
*
Buyuk bir aciklama obegi...
*
*
* * * * * * * * * * * * * * * * * * * * * * * * * * */
veya
/* Daha kucuk bir aciklama obegi... */
veya
//satır yorum
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
A¸cıklamalar, Tanıtıcı S¨
ozc¨
ukler ve Anahtar S¨
ozc¨
ukler
Tanıtıcı S¨ozc¨ukler
De˘gi¸skenler, deyim etiketleri, tip isimleri, fonksiyon isimleri
gibi, programcı tarafından olu¸sturulan b¨
ut¨
un nesneleri
isimlendirmek i¸cin tanıtıcı s¨
ozc¨
ukler, bir di˘
ger adıyla, program
isimleri kullanılır.
Tanıtıcı s¨ozc¨
ukler i¸cin ¸su kurallar ge¸cerlidir:
Herhangi bir sayıda karakterlerden olu¸sur, ancak ilk 31
karakter dikkate alınır.
2 ˙Ilk karakter bir harf veya alt¸
cizgi ( ) olmalıdır.
3 Geri kalan b¨
ut¨
un karakterler bir harf, rakam veya alt¸cizgi
olabilir.
1
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
A¸cıklamalar, Tanıtıcı S¨
ozc¨
ukler ve Anahtar S¨
ozc¨
ukler
Tanıtıcı S¨ozc¨ukler
¨
Ornek
olarak, A12, a12, sayfa basi de˘
gi¸sken ismi olarak
kullanılabilir.
K¨
u¸cu
¨k ve b¨
uy¨
uk harflerin farklı oldu˘
guna dikkat ediniz, yani
A12 ile a12 farklı tanıtıcı s¨
ozc¨
uklerdir.
Ancak, bazı ortamlarda k¨
u¸cu
¨k b¨
uy¨
uk harf ayırımı
yapılmayabilir.
Bundan dolayı, aynı program i¸cinde, harf ayrımı dı¸sında,
birbirine benzeyen iki farklı isim kullanmaktan ka¸cının.
Ayrıca, bir tanıtıcı s¨
ozc¨
ukte, ilk karakter olarak alt¸cizgiden
ka¸cınılması ¨onerilir, ¸cu
¨nk¨
u bu tip isimler derleyiciye ¨ozg¨
u bazı
anahtar s¨ozc¨
ukler veya di˘
ger isimler i¸cin kullanılmaktadır.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
A¸cıklamalar, Tanıtıcı S¨
ozc¨
ukler ve Anahtar S¨
ozc¨
ukler
Anahtar S¨ozc¨ukler
C dilinde 32 adet anahtar s¨
ozc¨
uk vardır; hepsi k¨
uc¸u
¨k harfle
yazılır.
Anahtar s¨ozc¨
ukler tanıtıcı s¨
ozc¨
uk olarak kullanılamazlar;
kendilerine ¨ozg¨
u kullanım alanları vardır.
C dilindeki b¨
ut¨
un anahtar s¨
ozc¨
uklerin sınıflandırılmı¸s bir listesi
a¸sa˘gıda verilmi¸stir.
Program i¸cinde kullanaca˘
gınız isimlerin a¸sa˘
gıdaki listede
olmamasına dikkat edin.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
A¸cıklamalar, Tanıtıcı S¨
ozc¨
ukler ve Anahtar S¨
ozc¨
ukler
Anahtar S¨ozc¨ukler
veri tipi
char
const
double
enum
float
int
long
short
signed
struct
union
unsigned
void
volatile
bellek sınıfı
auto
extern
register
static
typedef
deyim
break
case
continue
default
do
else
for
goto
if
return
switch
while
i¸sle¸c
sizeof
Table: C dilinde kullanılan anahtar s¨
ozc¨
ukler
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
De˘
gi¸smezler
De˘gi¸smezler
C dilinde, tamsayı, kayan noktalı, karakter ve karakter dizisi de˘gi¸smezleri
bulunur.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
De˘
gi¸smezler
Tamsayı De˘gi¸smezleri
Tamsayı de˘gi¸smezleri, program i¸cinde, ondalık, sekizli veya
onaltılı sayılar ¸seklinde belirtilebilirler ve derleyicinin tipine
g¨ore, 16 bit veya 32 bit ¸seklinde saklanırlar.
A¸sa˘gıdaki ¨orneklerde bazı tamsayı de˘
gi¸smezleri g¨or¨
ulmektedir:
123 ondalık 123
0123 sekizli 123 = ondalık 83
083 ge¸cersiz bir sayı
0x123 onaltılı 123 = ondalık 291
0XFF onaltılı FF = ondalık 255
Sayının ¨on¨
undeki bir sıfır rakamının, geri kalan rakamların
sekizli (yani, 0-7) ve sayı ¨
on¨
undeki bir sıfırla onun arkasından
gelen k¨
u¸cu
¨k veya b¨
uy¨
uk x harfinin, geri kalan rakamların
onaltılı (yani, 0-9, A-F veya a-f) olması gerekti˘gini
g¨osterdi˘gine dikkat edin.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
De˘
gi¸smezler
Tamsayı De˘gi¸smezleri
Sayının program i¸cindeki g¨
osterimi ne olursa olsun, makine
i¸cinde her zaman bitler halinde ikili sistemde saklanır; ancak
bu durum genelde programcıyı ilgilendirmez.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
De˘
gi¸smezler
Tamsayı De˘gi¸smezleri
Bir tamsayı de˘gi¸smezi, e˘
ger de˘
geri 16 bite sı˘
gıyorsa, kısa
formda (16 bit) saklanır, aksi takdirde uzun formda (32 bit)
saklanır. Tamsayı bir de˘
gi¸smezin uzun formda saklanmasını
zorlamak i¸cin de˘gi¸smezin arkasına l veya L harfi eklenmelidir.
1 sayısı ile karı¸stırılmaması i¸cin, k¨
u¸cu
¨k l yerine b¨
uy¨
uk L
harfinin kullanılması ¨
onerilir.
123, 16 bitte saklanır
123l, 32 bitte saklanır
123L, 32 bitte saklanır
077, 000077 ¸seklinde, 16 bitte saklanır
077L, 0...077 ¸seklinde, 32 bitte saklanır
0xFFFF, 16 bitte saklanır
0xFFFFL, 0000FFFF ¸seklinde, 32 bitte saklanır
0xFFFFF, 000FFFFF ¸seklinde, 32 bitte saklanır
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
De˘
gi¸smezler
Tamsayı De˘gi¸smezleri
Bir sekizli veya onaltılı tamsayı de˘
gi¸smezi, daha b¨
uy¨
uk bir
bellek alanına yerle¸stirildi˘
gi zaman, soluna sıfır konur.
Yani b¨oyle de˘gi¸smezlerin i¸saretsiz oldu˘
gu varsayılır.
Ondalıklı bir tamsayı de˘
gi¸smezinin i¸saretsiz olarak i¸slem
g¨ormesini sa˘glamak i¸cin arkasına u veya U eki konulmalıdır,
¨orne˘gin 65000U.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
De˘
gi¸smezler
Kayan Noktalı Sayı De˘gi¸smezleri
Kayan noktalı sayı de˘
gi¸smezleri ya tamsayı ile kesir kısmı
arasına nokta konarak yada bilimsel g¨
osterimde belirtilirler.
˙Ikinci y¨ontem, genelde, ¸cok b¨
uy¨
uk veya c¸ok k¨
uc¸u
¨k sayılar i¸cin
kullanılır.
A¸sa˘gıda bazı ¨ornekler vardır:
1.123
1.23E20 = 1.23x10ˆ20
1.23e20 = 1.23x10ˆ20 (b¨
uy¨
uk veya k¨
uc¸u
¨k harf olabilir)
123E18 = 1.23x10ˆ20
1.23E-20 = 1.23x10ˆ-20
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
De˘
gi¸smezler
Kayan Noktalı Sayı De˘gi¸smezleri
De˘gi¸smezin i¸cinde herhangi bir bo¸slu˘
gun olmaması gerekti˘gine
dikkat edin.
Normalde, kayan noktalı de˘
gi¸smezler 8 baytta, yani double
(¸cift) duyarlıkta, saklanır.
E˘ger kayan noktalı de˘
gi¸smezde f veya F eki bulunuyorsa, o
zaman 4 baytta, yani tek duyarlıkta; e˘
ger l veya L eki
kulanılırsa, o zaman long double (uzun c¸ift veya d¨ortl¨
u)
duyarlıkta saklanır.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
De˘
gi¸smezler
Karakter De˘gi¸smezleri
Bir karakter de˘gi¸smezi, ’A’, ’a’, ’%’ gibi tırnak i¸saretleri
arasına konulan tek bir karakter veya tek bir karaktere e¸sde˘ger
olan bir ka¸cı¸s sırasıdır.
char a=’z’
char b=’p’
Bir ka¸cı¸s sırası bir ters b¨
ol¨
u i¸sareti ile bir harf veya
rakamlardan olu¸sur.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
De˘
gi¸smezler
Karakter De˘gi¸smezleri
C dilinde ¸su ka¸cı¸s sıraları kullanılır:
¨
Ozel
karakter
\n
\b
\r
\t
\f
\v
\a
\’
\”
\?
\\
\ddd
\xhhh
a¸cıklaması
yeni satır
geri alma
satırba¸sı
durak (tab)
sayfa ilerletme
dikey durmak
zil
tek tırnak
¸cift tırnak
soru i¸sareti
ters b¨
ol¨
u
sekizli kodu ddd olan karakter
onaltılı kodu hhh olan karakter
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
De˘
gi¸smezler
Karakter Dizisi De˘gi¸smezleri
Bir karakter dizisi de˘
gi¸smezi ¸cift tırnaklar arasında yazılmı¸s
herhangi bir sayıda karakter veya yukarıda listesi verilmi¸s ka¸cı¸s
sırasından olu¸sur.
””: bo¸s karakter dizisi
”Merhaba”: 7 karakterlik bir karakter dizisi
”Isminizi girin,\n veya ENTER\’a basin” iki satırdan olu¸san
bir karakter dizisi
Bir karakter dizisi de˘
gi¸smezi bellekte saklandı˘gı zaman, dizinin
sonuna otomatik olarak bo¸s karakter (\0) eklenir; bundan
dolayı diziyi saklamak i¸cin kullanılan bayt sayısı dizinin
uzunlu˘gundan bir fazladır
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
De˘
gi¸smezler
Bir Sonraki Satıra Devam Etme
Bir deyim veya karakter dizisi de˘
gi¸smezi programın tek bir
satırına sı˘gmıyorsa ve bir sonraki satıra devam etmek
gerekiyorsa, satırın sonuna ters b¨
ol¨
u (\) i¸sareti konup bir
sonraki satıra devam edilebilir. Ayrıca, uzun bir karakter dizisi
de˘gi¸smezi iki satırda iki ayrı karakter dizisi ¸seklinde de
yazılabilir.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
Temel Veri Tipleri ve Tanımlar
Temel Veri Tipleri ve Tanımlar
Bir de˘gi¸sken ismi, de˘
gi¸skenin alaca˘
gı de˘
gerlerin t¨
ur¨
u ve i¸slevini
yansıtacak ¸sekilde dikkatlice se¸cilen bir tanıtıcı s¨ozc¨
ukt¨
ur.
Genelde, kalan gunler veya kalanGunler ¸seklinde bir de˘gi¸sken
ismi x132 gibi bir isme tercih edilmelidir.
De˘gi¸sken isimlerinde b¨
uy¨
uk harfler yerine k¨
uc¸u
¨k harflerin
kullanılması alı¸sılagelmi¸stir.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
Temel Veri Tipleri ve Tanımlar
Temel Veri Tipleri ve Tanımlar
Bir C programında, kullanılmadan ¨
once, t¨
um de˘gi¸sken ve
fonksiyonların tanımı veya bildirimi yapılmalıdır.
Temel veri tiplerinin, yani tamsayı, kayan noktalı sayılar ve
karakterlerin bildiriminde kullanılan anahtar s¨
ozc¨
ukler
¸sunlardır:
De˘
gi¸sken
int
signed, unsigned
short, long
float, double
char
A¸cıklaması
tamsayı
i¸saretli veya i¸saretsiz
tamsayılar
kısa veya uzun tamsayılar
tek veya ¸cift duyarlıklı kayan noktalı sayılar
karakter
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
Temel Veri Tipleri ve Tanımlar
Temel Veri Tipleri ve Tanımlar
Bir tanım, bir tip ismi ile tanımlanmakta olan nesnelerin
virg¨
ulle ayrılmı¸s listesinden olu¸sur ve bir noktalı virg¨
ul ile sona
erer.
A¸sa˘gıda birka¸c ¨ornek tanım g¨
osterilmi¸stir:
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];
Son iki tanımda, tek boyutlu ve u
¨c¸ elemanlı bir tamsayı dizisi
ile tek boyutlu ve 200 elemanlı kayan noktalı sayılardan olu¸san
bir dizi tanımlanmı¸stır.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
Temel Veri Tipleri ve Tanımlar
Temel Veri Tipleri ve Tanımlar
A¸sa˘gıda g¨or¨
uld¨
u˘gu
¨ gibi, de˘
gi¸skenler tanımlandıkları zaman ilk
de˘gerleri de verilebilir:
int x = 0;
int x1 = 10, x2 = 20, x3 = 30,
x4 = 60 * 60; /* ilk deger degismez bir ifadedir */
char c1 = ’a’, c2 = ’z’;
Buna ilkleme denmektedir.
˙Ilk de˘ger olarak bir ifadenin de yazılabilece˘
gine dikkat
edilmelidir.
Tanımlanan de˘gi¸skenlerin ilklenmesi iyi bir alı¸skanlıktır.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
Temel Veri Tipleri ve Tanımlar
Temel Veri Tipleri ve Tanımlar
˙Isimlendirilmi¸s de˘
gi¸smezler, yani de˘
gerleri de˘
gi¸stirilemeyecek
olan de˘gi¸skenler, const tip niteleyicisi kullanılarak
tanımlanırlar:
int const x = 100;
char const ys = ’\n’;
float const a = 123.45;
Bu tip de˘gi¸smez ”de˘
gi¸sken”lerin const ile tanımlanmasının en
azından iki avantajı vardır:
Programcı yanlı¸slıkla bu tip bir de˘
gi¸skene atama yapmaya
kalkar veya de˘
gerini de˘
gi¸stirebilecek bir ¸sekilde kullanmaya
kalkarsa, derleyici onu uyaracaktır.
2 C
¸ ok kullanıcılı sistemlerde bu tip de˘
gi¸skenlerin ortak ve
de˘
gi¸stirilemez bir bellek kesimine y¨
uklenmesi sa˘glanabilir.
1
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
Temel Veri Tipleri ve Tanımlar
Temel Veri Tipleri ve Tanımlar
Aynı anda ba¸ska bir s¨
ure¸c (program) tarafından kullanılan
veya de˘gi¸stirilebilen de˘
gi¸skenlerin, derleyicinin olası bir
eniyileme yapmasını engellemek i¸cin, volatile tip niteleyicisi
kullanılarak tanımlanması gerekmektedir.
¨ gin, ¸cok kullanıcılı ortamlarda iki de˘
Orne˘
gi¸sik s¨
ure¸c tarafından
ortak kullanılan bir de˘
gi¸skenin volatile tanımlanması gerekir.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
Temel Veri Tipleri ve Tanımlar
Temel Veri Tipleri ve Tanımlar
Tanımlanmı¸s bir de˘
gi¸sken, bir deyim i¸cinde ismi verilerek
anılır.
Dizi elemanlarına ula¸smak i¸cin c¸e¸sitli yollar olmasına ra˘gmen,
¸co˘gu zaman dizi isminin arkasına k¨
o¸seli parantezler i¸cinde
indis belirtilerek kullanılırlar.
Eleman sayısı BOY olan bir dizi i¸cin indisin alabilece˘gi
de˘gerler 0’dan BOY-1’e kadar de˘
gi¸sir.
Yani, ”int u[3]” ¸seklinde tanımlanmı¸s olan u tamsayı dizisinin
elemanları u[0], u[1] veya u[2] ¸seklinde kullanılabilir.
˙Indisin her zaman de˘
gi¸smez bir tamsayı olmasına gerek
yoktur; genelde bir ifade olur.
Yani, u[x+5] ge¸cerli bir kullanımdır. Do˘
gal olarak, e˘ger ”x+5”
ifadesinin de˘geri 0, 1 veya 2 de˘
gilse, beklenmeyen sonu¸clar
elde edilebilir. Bu tip kullanımları kontrol altında tutmak
tamamen programcının sorumlulu˘
gundadır.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
Temel Veri Tipleri ve Tanımlar
Temel Veri Tipleri ve Tanımlar
De˘gi¸sik tiplerde tanımlanmı¸s de˘
gi¸skenler i¸cin, mevcut derleyiciler
tarafından ayrılan bellek miktarı ile alt ve u
¨st limit de˘gerleri ¸s¨oyledir:
Tip
char
short
int
long
signed short
signed
signed long
unsigned short
unsigned
unsigned long
float
double
long double
A¸cıklaması
karakter veya 8 bitlik tamsayı
i¸saretli tamsayı
i¸saretli tamsayı
i¸saretli tamsayı
i¸saretli tamsayı
i¸saretli tamsayı
i¸saretli tamsayı
i¸saretsiz tamsayı
i¸saretsiz tamsayı
i¸saretsiz tamsayı
kesirli sayı
geni¸s ve fazla duyarlıklı kesirli sayı
geni¸s ve fazla duyarlıklı kesirli sayı
Bayt sayısı
1
2
2 veya 4
4
2
2 veya 4
4
2
2 veya 4
4
4
8
8 veya 10
De˘
ger aralı˘
gı
0-255
-32768-32767
-2147483648 to 2147483647
-2147483648-2147483647
-32768-32767
-2147483648 to 2147483647
-2147483648 to 2147483647
0-65535
0-4294967295
0-4294967295
+/- 3.4e +/- 38 ( 7 basamak)
1.7e +/- 308 (15 basamak)
1.7e +/- 308 (15 basamak)
Not: 16 bitlik bilgisayarlarda veya derleyicilerde (signed veya unsigned) int 16 bittir; 32 bitliklerde ise 32 bittir.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
Temel Veri Tipleri ve Tanımlar
Temel Veri Tipleri ve Tanımlar
Tam sayılar ve kayan noktalı sayılar i¸cin her bilgisayarda farklı
olabilecek bu ¨ozellikler, tam olarak limits.h ve float.h adlı
ba¸slık dosyalarında tanımlanmı¸stır.
Daha do˘gru bilgiye ula¸smak i¸cin bu ba¸slık dosyalarında
tanımlanmı¸s bulunan de˘
gi¸smezlerin kullanılması ¨ozellikle
¨onerilir.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
¨ slemci Emirleri
#define ve #include Oni¸
¨ slemci Emirleri
#define ve #include Oni¸
Hemen b¨
ut¨
un C derleyicileri, ¨
ozel ¨
oni¸slemci emirlerini tanıyan
bir ¨oni¸slemciyi yapılarında bulundururlar.
¨ slemci emirleri, bir bakıma, C derleyicisinin girdisini, yani
Oni¸
kaynak kodu, kontrol etmede kullanılır.
Bir ¨oni¸slemci emrinin ilk karakteri her zaman numara i¸saretidir
(#) ve kaynak programda satırın ilk karakteri olmalıdır.
Normalde, ¨oni¸slemci emirlerinin c¸o˘
gu, kaynak programın
ba¸sına, bildirimlerden ¨
once yazılır.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
¨ slemci Emirleri
#define ve #include Oni¸
¨ slemci Emirleri
#define ve #include Oni¸
#define emri ¸su ¸sekildedir:
ozc¨
uk karakter dizisi
#define tanıtıcı s¨
Bu t¨
ur bir #define emri, emirden sonra gelen program
deyimlerinde tanıtıcı s¨
ozc¨
uk bulunan her yerde, onun yerine
karakter dizisinin konulaca˘
gını g¨
osterir.
¨ gin,
Orne˘
#define XYZ 100
emri, daha sonra, XYZ’nin her rastlandı˘
gı yerde 100
konulmasını sa˘glar.
Program i¸cinde kullanılacak de˘
gi¸smezleri tanımlamanın yaygın
bir yolu da budur.
#define emirleriyle tanımlanan tanıtıcı s¨
ozc¨
uklerin b¨
uy¨
uk
harfle yazılması alı¸sılagelmi¸stir.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
¨ slemci Emirleri
#define ve #include Oni¸
¨ slemci Emirleri
#define ve #include Oni¸
#include emri ya
#include ”dosya adı”
yada
#include <dosya adı>
¸seklinde olur ve ¨oni¸slemciye #include satırının yerini, belirtilen
dosyanın alaca˘gını g¨
osterir.
E˘ger dosya adı ¸cift tırnak i¸cine alınmı¸ssa, o zaman ¨oni¸slemci,
dosyayı kaynak program dosyasının saklandı˘
gı altdizinde arar.
E˘ger dosya adı a¸cılı parantezler i¸cinde ise, o zaman dosya,
b¨oyle #include emirleri i¸cin aramaların yapıldı˘gı ”standart”
altdizin(ler)de aranır.
Normalde, bu \include altdizini olur.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
¨ slemci Emirleri
#define ve #include Oni¸
¨ slemci Emirleri
#define ve #include Oni¸
#include emri, daha ¨
onceden hazırlanan, standart veya
kullanıcı tarafından tanımlanan dosyalarda saklanan, sık
kullanılan veri ve fonksiyon bildirimlerini programa dahil
etmede kullanılır.
B¨oyle dosyalara ba¸slık dosyaları adı verilir ve isimleri
dosyaadi.h ¸seklinde olur.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
˙sle¸cler, Ifadeler
˙
I¸
ve Atama Deyimleri
˙I¸sle¸cler, ˙Ifadeler ve Atama Deyimleri
C dili, sa˘gladı˘gı i¸sle¸cler (i¸slem operat¨
orleri) a¸cısından ¸cok
zengindir.
˙I¸sletilebilir C deyimlerinin c¸o˘
gu bir ifade ¸seklinde yazılır.
Bu ifade belirli kurallara uygun olarak olu¸sturulmu¸s bir
i¸slenenler ve i¸sle¸cler karı¸sımıdır.
Di˘ger programlama dillerine kar¸sılık, C dilinde bir atama bile
¨ozel bir c¸e¸sit ifadedir.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
˙sle¸cler, Ifadeler
˙
I¸
ve Atama Deyimleri
˙I¸sle¸cler, ˙Ifadeler ve Atama Deyimleri
˙I¸sle¸cler (i¸slem operat¨
orleri), aritmetik i¸slemler, atama,
ba˘gıntısal ve mantıksal kar¸sıla¸stırmalar, bit i¸slemleri, adreslerle
ilgili i¸slemler ve ba¸ska i¸slerde kullanılırlar.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
˙sle¸cler, Ifadeler
˙
I¸
ve Atama Deyimleri
˙I¸sle¸cler, ˙Ifadeler ve Atama Deyimleri
C’de kullanılan aritmetik i¸sle¸cler ve a¸cıklamaları a¸sa˘gıda verilmi¸stir:
˙sle¸c
I¸
+
*
/
%
++
--
A¸cıklaması
Toplama veya tekli artı
C
¸ ıkarma veya olumsuzlama
C
¸ arpma
B¨
olme
Kalan, (5%2 ifadesinin de˘
geri, 5/2’den
arta kalan, yani 1’dir. ˙I¸slenenler pozitif tamsayılar olmalıdır.)
Anlamı, i¸slecin, i¸slenenin ¨
on¨
unde veya
arkasında olmasına ba˘
glı olarak de˘
gi¸sir; ancak sonu¸cta
i¸slenenin de˘
geri bir artırılır.
Anlamı, i¸slecin, i¸slenenin ¨
on¨
unde veya
arkasında olmasına ba˘
glı olarak de˘
gi¸sir; ancak sonu¸cta
i¸slenenin de˘
geri bir azaltılır.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
˙sle¸cler, Ifadeler
˙
I¸
ve Atama Deyimleri
˙I¸sle¸cler, ˙Ifadeler ve Atama Deyimleri
Basit bir atama deyimi ¸su ¸sekildedir:
de˘gi¸sken = ifade;
ve ifadenin de˘gerinin hesaplandıktan sonra, de˘gi¸skenin
de˘gerinin buna e¸sitlenece˘
gi anlamına gelir.
˙Ifadeden sonraki noktalı virg¨
ul, deyimi sonu¸clandırır.
a = b + 10;
c = d + c * e - f / g + h % j;
x = y * sin(z - 3.14);
z = u[2] * u[0];
u[1] = -123.45;
x = 10;
(x) = 10;
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
˙sle¸cler, Ifadeler
˙
I¸
ve Atama Deyimleri
˙I¸sle¸cler, ˙Ifadeler ve Atama Deyimleri
C dilinde, di˘ger programlama dillerine kar¸sılık, atamanın
kendisi de bir ifadedir, bundan dolayı bir de˘
gere sahiptir.
Bir atama ifadesinin de˘
geri, de˘
geri hesaplanarak sol taraftaki
de˘gi¸skene atanan ifadenin de˘
geridir.
Atama ifadesinin tipi ise soldaki i¸slenenin tipiyle aynıdır.
¨ gin, bir ifadenin de˘geri
Bu olgu, C dilinde ¸cok kullanılır. Orne˘
aynı anda birden fazla de˘
gi¸skene, ¸su ¸sekilde, atanabilir:
a = b = c = 0;
c de˘gi¸skeni, 0’ın de˘
gerini, b, c’nin de˘
gerini ve a, b’nin de˘gerini
alır; b¨oylece b¨
ut¨
un de˘
gi¸skenler 0’a e¸sitlenir.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
˙sle¸cler, Ifadeler
˙
I¸
ve Atama Deyimleri
˙I¸sle¸cler, ˙Ifadeler ve Atama Deyimleri
A¸sa˘gıda ++ ve - - i¸sle¸clerini a¸cıklamak i¸cin bazı ¨ornekler
verilmi¸stir:
˙
Ifade
x = y++
x = ++y
x = y- x = - -y
A¸cıklaması
y’nin de˘
geri ¨
once,x’e atanır, sonra da bir artırılır.
Bu ¸suna e¸sde˘
gerdir: x = y;,y = y+1;
y’nin de˘
geri ¨
once bir artırılır, sonra da x’e atanır.
Bu ¸suna e¸sde˘
gerdir: y = y+1;,x = y;
y’nin de˘
geri ¨
once x’e atanır, sonra da bir azaltılır.
Bu ¸suna e¸sde˘
gerdir: x = y;,y = y-1;
y’nin de˘
geri ¨
once bir azaltılır, sonra da x’e atanır.
Bu ¸suna e¸sde˘
gerdir: y = y-1;,x = y;
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
˙sle¸cler, Ifadeler
˙
I¸
ve Atama Deyimleri
˙I¸sle¸cler, ˙Ifadeler ve Atama Deyimleri
++ ve - - i¸sle¸cleri yan etkisi olan i¸sle¸clerdir, c¸u
¨nk¨
u tek bir
atama deyimi ile birden fazla de˘
gi¸skenin de˘
geri de˘gi¸stirilebilir.
Programcıların bu i¸sle¸cleri karma¸sık ifadeler i¸cinde
kullanmaları uygun de˘
gildir, c¸u
¨nk¨
u b¨
oyle bir kullanım nispeten
daha zor anla¸sılabilir ve hataların daha zor d¨
uzeltildi˘gi
programların ortaya ¸cıkmasına neden olur.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
˙sle¸cler, Ifadeler
˙
I¸
ve Atama Deyimleri
˙I¸sle¸cler, ˙Ifadeler ve Atama Deyimleri
Basit atama i¸sleci (=) dı¸sında, atamayı aritmetik i¸slemlerle
birle¸stiren atama i¸sle¸cleri de vardır. Bunlar +=, -=, *=, /=
ve %=’dır.
˙
Ifade
x += y
x -= y
x *= y
x /= y
x %= y
A¸cıklaması
x’e y eklenir, bu da x = x + (y); anlamına gelir.
x’ten y c¸ıkarılır, bu da x = x -(y); anlamına gelir.
x, y ile ¸carpılır, bu da x = x * (y); anlamına gelir.
x, y’ye b¨
ol¨
un¨
ur, bu da x = x / (y); anlamına gelir.
x’e x’in y’e b¨
ol¨
um¨
unden arta kalan atanır,
bu da x = x %(y); anlamına gelir.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
˙sle¸cler, Ifadeler
˙
I¸
ve Atama Deyimleri
¨
Oncelik
ve Birle¸sme Kuralları
Bir ifade i¸cinde, i¸sle¸clerin i¸slenenleri ya
C dili tarafından belirlenmi¸s bulunan i¸sle¸clerin ¨oncelik ve
birle¸sme ¨
ozelliklerine,
yada
2 i¸
slenen ifadelerini parantez i¸cine alarak
1
belirlenir.
Parantezler, bir i¸slecin i¸slenenlerini, o i¸slecin ¨
onceli˘gine ba˘glı
olmadan belirtmek veya i¸sle¸clerin i¸slenenlerini daha a¸cıklayıcı
olacak ¸sekilde yazmak i¸cin kullanılırlar.
˙
Ikinci
neden kolayca anla¸sılır ifadeler yazmak i¸cin ¨onemlidir,
¸cu
¨nk¨
u C dilinde ¨oncelik ve birle¸sme ¨
ozellikleri kolayca
anımsanamayacak kadar ¸cok i¸sle¸c bulunmaktadır.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
˙sle¸cler, Ifadeler
˙
I¸
ve Atama Deyimleri
¨
Oncelik
ve Birle¸sme Kuralları
¨ gin
Orne˘
a=b+c*d
ifadesinde i¸sle¸cler ve i¸slenenler ¸s¨
oyledir:
˙sle¸c
I¸
*
+
=
˙slenenler
I¸
c ve d
b ve (c * d)’nin de˘
geri
a ve (b + (c * d))’nin de˘geri
E˘ger ifade
a = b + (c * d)
¸seklinde yazılırsa, i¸slenenler aynıdır, ancak parantezler
i¸sle¸clerin i¸slenenlerini daha a¸cık hale getirirler.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
˙sle¸cler, Ifadeler
˙
I¸
ve Atama Deyimleri
¨
Oncelik
ve Birle¸sme Kuralları
Fakat, ifade
a = (b + c) * d ¸seklinde yazılırsa, i¸sle¸cler ve i¸slenenler ¸s¨oyle
olur:
˙sle¸c I¸
˙slenenler
I¸
+
b ve c
*
(b + c)’nin de˘
geri ve d
=
a ve ((b + c) * d)’nin de˘geri
Bu ¨orneklerden de g¨
or¨
ulebilece˘
gi gibi, bir i¸slecin ¨oncelik
d¨
uzeyi i¸sle¸clere atanacak olan i¸slenenlerin sırasını belirlemeye
yarar.
Daha y¨
uksek ¨onceli˘
gi olan bir i¸slecin i¸slenenleri daha d¨
u¸su
¨k
olan bir i¸sle¸cten ¨once atanacaktır.
E˘ger i¸sle¸clerin ¨oncelik d¨
uzeyleri aynıysa, o zaman birle¸sme
kuralı i¸slenenlerin soldan sa˘
ga mı yoksa sa˘
gdan sola mı
atanaca˘gını belirtir
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
˙sle¸cler, Ifadeler
˙
I¸
ve Atama Deyimleri
¨
Oncelik
ve Birle¸sme Kuralları
A¸sa˘gıdaki c¸izelgede, ¸simdiye kadar anlatılmı¸s bulunan
i¸sle¸clerin ¨oncelik d¨
uzeyleri ve birle¸sme ¨
ozellikleri verilmi¸stir.
˙sle¸c
I¸
[]
+,-,++,- *,/,%
+,=, +=, vs
A¸cıklama
˙Indisleme
˙I¸saret ve artı¸s
C
¸ arpma, b¨
olme, mod
Toplama, c¸ıkarma
Atama
¨
Oncelik
en y¨
uksek
.
.
.
en d¨
u¸su
¨k
Birle¸sme
→
←
→
→
←
Burada, ”←” sa˘gdan sola ve ”→” soldan sa˘
ga birle¸smeyi
g¨osterir.
¨ gin a/b/c ile (a/b)/c aynı anlama gelir ve a=b=c ile
Orne˘
a=(b=c) aynı anlama gelir.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
˙sle¸cler, Ifadeler
˙
I¸
ve Atama Deyimleri
¨
Oncelik
ve Birle¸sme Kuralları
Bir ba¸ska ¨ornek olarak
c=d+c*e-f/g+h%j
ifadesi
c = (((d + (c * e)) - (f / g)) + (h % j))
¸seklinde, i¸sle¸clerin i¸slenenlerini ve ifadenin anlamını
de˘gi¸stirmeden, parantezlenebilir.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
˙sle¸cler, Ifadeler
˙
I¸
ve Atama Deyimleri
De˘gi¸smez ˙Ifadeler
Bazı i¸sle¸cler-¨orne˘gin, atama ve ++ ile - - i¸sle¸cleri dı¸sında,
¸simdiye kadar ¨o˘grenmi¸s oldu˘
gumuz i¸sle¸cler-de˘gi¸smezlere (veya
de˘gi¸smez ifadelere) uygulandıklarında de˘
gi¸smez ifadeler
olu¸stururlar.
De˘gi¸smez ifadelerin avantajı derleme sırasında
hesaplanabilmeleridir.
Derleyici de˘gi¸smez ifadenin de˘
gerini hesaplayıp yerine
de˘gi¸smez de˘geri koyar.
C Programlama
PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS
¸
˙sle¸cler, Ifadeler
˙
I¸
ve Atama Deyimleri
De˘gi¸smez ˙Ifadeler
De˘gi¸smez ifadeler bir de˘
gi¸smezin beklendi˘
gi yerlerde
kullanılabilirler.
¨ gin, dizi boyları de˘
Orne˘
gi¸smez olmalıdır, bu durumda int
a[MAXL*5+4]; tanımı, e˘
ger MAXL ¨
oni¸slemci tarafından (
#define ile) tanımlanmı¸s bir de˘
gi¸smez ise kabul edilebilecek,
fakat e˘ger MAXL bir de˘
gi¸sken ise reddedilecektir.
Programın, anla¸sılabilirli˘
gini geli¸stirebilece˘
gi i¸cin de˘gi¸smez
ifadelerin kullanımından ka¸cınmamak gerekir.