You are on page 1of 13

İNTERNET PROGRAMCILIĞI - I Özcan

0
İNTERNET PROGRAMCILIĞI - I Özcan

İÇİNDEKİLER:

Bölüm 1 C dilinde kullanılan basit veri tipleri


1.1 Giriş.......................................................................................... 4
1.2 C’nin yazım takımı................................................... ............................. 4
1.2.1 Alfanumerik karakterler......................................................................... 4
1.3 İsimlendirme kuralları............................................................................. 5
1.4 Tamsayılar................................................... ........................ ................ 6
1.4.1 char tamsayı tipi............. ............. ............. ............. ............. .............. 6
1.4.2 int tamsayı tipi............. ............. ........................ ............. ..................... 7
1.5 Gerçel sayılar............. ............. ........................ ............. ............. ........ 8
1.5.1 float gerçel sayı tipi............. .......... ............. ............. ............. ............. 8
1.5.2 double gerçel sayı tipi............. ............. ............. ............. .................... 8
1.6 Tip sıfatları............. ............. ............. ............. ............. ............. ......... 9
1.6.1 signed ve unsigned tamlayıcıları....... ............. ............. ..................... 9
1.6.2 short ve long tamlayıcıları.......... ............. ............. ............. ................. 10
1.6.3 enum birebir sayma tipi............. .......... ............. ............. ............. ....... 10

Bölüm 2 Karmaşık veri tipleri


2.1 Pointer veri tipi............. ............. ............. ............. ............. ................. 13
2.2 Diziler............... ............ ............... ............... ............... ........................ 14
2.3 Karakter ifadeler............... ............... ............... ............... .................... 16
2.3.1 Karakter tanımlaması............ ............... ............... ............... ................ 17
2.3.2 Karakter dizileri............... ............ ............... ............... ............... ......... 18
2.4 Yapısal veri tipleri........... ............... ............... ............... ............... ...... 19
2.4.1 struct............... ............................ ............... ............... ............... ......... 19
2.4.2 union............... ............ ............... ............... ............... ......................... 20
2.5 İlk değer atamaları............ ............... ............... ............... .................... 21
2.5.1 Basit atama............... ........... ............... ............... ............... ............... 21
2.5.2 Toplu değer atamaları............ ............... ............... ............... ............... 22
2.5.3 Program sabitleri............ ............... ............... ............... ....................... 23

1
İNTERNET PROGRAMCILIĞI - I Özcan

Bölüm 3 Turbo C ile programlamaya giriş


3.1 Program yapısı............... ............... ............... ............... ............... ...... 25
3.1.1 Ön işlemci komutları........... ............... ............... ............... .................. 26
3.1.2 Değişken tanımlamaları............... ........... ............... ............... ............ 28
3.1.3 Fonksiyon prototipleri............ ............... ............... ............... ................ 29
3.2 printf çıkış fonksiyou............... ............... ............... ............... .............. 30
3.2.1 Çıkış format stringi............................ ............... ............... .................... 31
3.2.2 Çıkış format karakterleri............................ ............... ............... ............ 33
3.2.3 Escape düzeni karakterleri............... ............... ............... .................... 33
3.3 scanf giriş fonksiyonu........................... ............... ............... ................ 34
3.3.1 Giriş format karakterleri............... ............... ............... ............... ........ 35
3.4 Operatörler............... .......... ............... ............... ............... ................ 35
3.4.1 Atama operatörü............ ............... ............... ............... ....................... 36
3.4.2 Aritmetik işlem operatörleri........... ............... ............... ............... ........ 36
3.4.3 Bit seviye operatörleri........................... ............... ............... ................ 39
3.4.4 Bileşik atama operatörleri........................... ............... ............... .......... 41
3.4.5 Karşılaştırma operatörleri........................... ............... ............... .......... 42
3.4.6 Mantıksal operatörler............... ............... ............... ............... ............. 42
3.4.7 Üçlü koşul operatörü............ ............... ............... ............... ................. 44
3.4.8 pointerlar............... ............ ............... ............... ............... ................... 45

Bölüm 4 Text ekranı kullanımı


4.1 Standart text fonksiyonları........... ............... ............... ............... ......... 47
4.2 Text ekranı fonksiyonları............... ............... ............... ............... ........ 48
4.2 Standart string fonksiyonları........... ............... ............... ...................... 49
4.3 Text ekranı kullanımına ait fonksiyonlar........... ............... .................... 51
4.4 Ekrana düzenli çıkışlar............... ........... ............... ............... .............. 57

Bölüm 5 Program kontrol ifadeleri


5.1 if ifadeleri............... ........... ............... ............... ............... ................... 59
5.2 if-else ifadeleri............... ............... ............... ............... ....................... 59
5.3 if-else if............... ........... ............... ............... ............... ...................... 61
5.4 Üçlü koşul seçeneği............ ............... ............... ............... .................. 61
5.5 goto ifadesi............... ........................... ............... ............... ................ 62
5.6 switch ifadeleri............... ........... ............... ............... ............... ........... 63

2
İNTERNET PROGRAMCILIĞI - I Özcan

Bölüm 6 Döngüler
6.1 Giriş ............... ........... ............... ............... ............... .......................... 66
6.2 do-while döngüsü............... ............... ............... ............... ................... 67
6.3 while döngüsü............... ............... ............... ............... ............... ........ 68
6.4 while ile do-while arasındaki fark............ ............... ............... .............. 70
6.5 for döngüsü............... ............... ............ ............... ............... ............... 70
6.6 for döngüsünde boş ifadelerin kullanılması............... ............... ........... 74
6.7 break ve continue ifadeleri............................ ............... ........................ 75
6.7.1 break ifadesi............... ............... ............... ............... ............... .......... 75
6.7.2 continue ifadesi............... ............................ ............... ......................... 76
6.8 Fonksiyonlar............... ............... ........... ............... ............... .............. 77
6.8.1 Altprogramlar ............... ........... ............... ............... ............................ 78
6.9 Math.h’da verilmiş matematiksel fonksiyonlar............... ....................... 79
6.9.1 Trigonometrik fonksiyonlar............... ............... ............... ..................... 79
6.9.2 Ters trigonometrik fonksiyonlar............................ ............... ................. 80
6.9.3 Diğer fonksiyonlar............... ............... ............... ............... .................. 80
6.10 Rastgele sayı üretim fonksiyonları............... ............... ............... ......... 81
6.11 Turbo C’de bulunmayan matematiksel fonksiyonlar............... .............. 82
6.11.1 Bir sayının karesinin alınması............... ............... ............... ................ 82
6.11.2 Ters hiperbolik fonksiyonlar............... ............ ............... ............... ...... 83
6.11.3 Kotanjant fonksiyonları............... ........... ............... ............... .............. 84
6.11.4 Herhangi bir tabana göre logaritma alınması............... ............... ......... 84

Bölüm 7 Bilgisayarın donanım birimlerine erişme


7.1 Port ............... .......... ............... ............... ............... ............... ........... 85
7.2 Disk ............... ............ ............... ............... ............... ............... .......... 87
7.2.1 Biosdisk............... ............... ............... ............... ............... ................. 87
7.3 Hafıza ............... ........... ............... ............... ............... ....................... 89
7.4 Printer............... ........... ............... ............... ............... ............... ........ 90
7.5 Zaman ............ ............... ............... ............... ............... ...................... 90
Örnek programlar............ ............... ............... ............... ...................... 91

3
İNTERNET PROGRAMCILIĞI - I
BÖLÜM 1 Özcan

C DİLİNDE KULLANILAN BASİT VERİ TİPLERİ


1.1 GİRİŞ
Yüksek seviyeli diller kolay anlaşılır, kolay yazılabilir ve her bilgisayarda uygulanabilir
olmakla beraber düşük seviyeli dillerde hızlılık avantajı her zaman korunmuştur.
Yüksek seviyeli dillerde çok hızlı programlar yazmak mümkün olmamıştır. Hızın
önemli olduğu yerlerde düşük seviyeli diller hep tercih edilmiştir. C programlama dilli
bu iki dil gurubu içerisinde 1975 yılından itibaren yer almaya başlamıştır. C yüksek
seviyeli dillerin hızlılığını bünyesinde birleştiren bir dil olarak önemli bir konum elde
etmiştir. Komut ve işlem ifadeleri yüksek seviyeli dilleri andırmakla beraber, C’nin
mantığı daha ziyade Macro Assembler’ın mantığıdır. Bu ise amatör programcılar için
ilk önceleri problem çıkarmasına karşın sonraları önemli avantajlar sağlamaktadır.

C’nin kısa öyküsü işe şöyledir.: C dili 1970’li yıllarda AT&T Bell labaratuarında,
Dennis M. Ritchie tarafından yaratıldı. Dilin C olarak adlandırılmasının sebebi
kendinden önceki B dili üzerine kurulu bir yapı olmasıdır. Unix işletim sisteminin
yazımı amacı ile yaratılan C dili, ilk başlarda adece Bell labaratuarında kullanıldı.
Daha sonraları labatuvardan dışarı çıkarak akademik düzeydeki çalışmalarda ve
büyük askeri projelerde kullanılmaya başlandı. Programcılar tarafından kullanılmaya
başlanması ise yavaş yavaş oldu. C dilinin tanınmasının en önemli adımı 1978’de
Dennis M. Ritche ve Brain W. Kernighan tarafından “C Programming Language” adlı
kitabın yayımlanması olmuştur. Bundan sonra C dilinin gelişmesi ve popülerliği gün
geçtikçe artmıştır. Piyasada bulunan C derleyicilerinin çokluğu bunun bir kanıtıdır. C
derleyicileri, sahip olduğu geniş fonksiyon kütüphaneleri ve özellikle bu
kütüphanelere grafik komutları eklenmesi ile günümüzde programcıların seçimlerinde
önemli rol oynamaktadır.

1.2 C’NİN YAZIM TAKIMI


İnsan ve bilgisayarın iletişimini sağlamak için, özel bir takım işaretlere ihtiyaç vardır.
Bu işaretler daha ziyade insanların bugüne kadar kullandığı en genel işaretlerdir.
İsteklerimizi bu işaretleri kullanarak klavye, şerit, delikli kart gibi araçlarla
bilgisayarlara ulaştırabiliriz. Bu işaretler bilgisayarda çeşitli elektronik sinyallere
çevrilerek kullanılır. C dilinde bu tür işaretleri kullanarak yazılır. Bunun için C dili bir
yazım takımına sahiptir. C dilinde programların yazılması bu yazım takımı ile olur.
Yazım takımındaki işaret grupları şunlardır.

1.2.1 ALFANÜMERİK KARAKTERLER:

Küçük harfler: a b c d e f g h i j k l m n o p q r s t u v w x y z
Büyük harfler: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Rakamlar: 0 1 2 3 4 5 6 7 8 9

4
İNTERNET PROGRAMCILIĞI - I Özcan

Altçizgi (underscore): _
Özel karakterler:
‘ ‘ boşluk , virgül ! ünlem . nokta ; noktalı virgül
: iki nokta üstüste ‘ tırnak “ çift tırnak (sol parantez ) sağ parantez
[ sol köşeli par. ] sağ köşeli par. { sol küme } sağ küme | duvar
/ slaş \ ters slaş ~ tilda + artı # diyez
% yüzde & ve ^ üst ok * askteriks (yıldız) - eksi
= eşit < küçük > büyük

1.3 İSİMLENDİRME KURALLARI:


C’de isimlendirme yapılırken, isimler İngiliz alfabesinin küçük ve büyük harflerinden,
rakamlardan ve altçizgi karakterinden yararlanılarak yapılır. Bunların dışında özel bir
karakter veya Türkçe karakter kullanılmaz. Küçük harfler ve büyük harfler birbirinden
farklı olarak ele alınır ve farklı değişken isimleri temsil ederler. Örneğin HiZ, Hiz, HIZ,
hIZ ve hiz isimleri birbirinden tamamen farklı beş isim olarak kabul edilir. İsmin ilk
karakteri bir harf veya ‘_’ olmalıdır., ilk harfi rakam olamaz. İsmin uzunluğu belli bir
sınırı aşmamalıdır. Bu değer Turbo C için 32 karakter olarak verilmiştir. İsmin bu
değerden fazla olması halinde fazla kısım dikkate alınmaz. C için ayrılmış isimler
programcı tarafından tekrar isim olarak kullanılmaz.

C’de ayrılmış isimler şunlardır:

asm* auto break case cdecl char const continue


defualt do double else enum extern far* float
for goto huge* if int interrupt* long near*
pascal* register return short signed* sizeof static struct
switch typedef union unsigned void* volatile* while fortran**
-CS -BP -DI -SI -SP -DS -AX -BX
-CX -DX -ES -AH -BH -CH -CH -DH
-SS -AL -BL -CL -DL

(* Standart isimler.)
(**Sadece Microsoft C de geçerlidir. )
(‘_’ ile başlayan isimler Merkezi işlem birimi-Cpu değişkenleridir.)

Geçerli isimlere örnek:

X x Sira Sira_no prim1 Prim_1 _no_ a3t1_4a_

5
İNTERNET PROGRAMCILIĞI - I Özcan

Geçersiz isimlere örnek:

1ADAM İlk harf rakam olamaz


AI?3 Özel karakter (?) kullanılmaz.
NO3: Özel karakter (:) kullanılmaz
ÖĞRENİM_YILI Türkçe karakter kullanılmaz (Ö,Ğ,İ)
Artim-1(-) (-) işareti özel karakterdir, kullanılmaz
- Tek altçizgi ile isim olmaz.

1.4 TAMSAYILAR
Tamsayılar belli bir alt limitten bir üst limite kadar olan sayıları bire bir ifade eden
sayılardır. Bu sayıların yazılmasında nokta kullanılmadığı için noktasız sayılar olarak
anılır. C’de tamsayılar desimal (onluk), oktal (sekizlik) ve hexadesimal (onaltılık) sayı
sistemlerinde kodlanabilirler.

Desimal sayılar günlük hayatımızda kullanılan, 0 ile 9 arsındaki rakamlarla yapılan


sayılardır. Oktal sayılar ise 0 ile 7 arasındaki, rakamlar kullanılarak ifade edilir. Oktal
sayıları desimal sayılardan ayırmak için sayının başına 0o veya 0O işareti konur
(0o75,0o3016,0o4140 v.b.). Hexadesimal sayılar 0 ile 9 arasındaki rakamlar ve ‘a’ile
‘f’ veya ‘A’ ile ‘F’ arasındaki harfler yardımı ile yazılırlar. Hexadesimal sayılarda
a=10,b=11, c=12, d=13, e=14 ve f=15 için kullanılır. Oktal sayılarda olduğu gibi
hexadesimal sayılarda desiaml sayılardan ayırmak için 0x ve 0X işareti eklenir.
(0x178, 0X75A4F v.b.)

1.4.1 CHAR TAMSAYI TİPİ:

En küçük bilgi birimi olan bayt’ın son biti sayının işaretini belirlemek için ayrılırsa, -
128 den +127 ye kadar olan tamsayıları belirtmek mümkün olur.

7 6 5 4 3 2 1 0

işaret biti sayı alanı

Burada bütün bitler sıfır yapılırsa sayı sıfırdır. İşaret biti pozitif sayılar için 0 negatif
sayılar için 1 değerini alır. Örneğin 43 için bilgi alanının kodlanışı şöyledir: işaret biti 0
yapılır. Çünkü 43 pozitifdir. 43 tamsayısının ikili sayı sisteminde yazılışı 101101 sayı
alanına yerleştirilir ve bütün bilgi alanı
0 0 1 0 1 1 0 1

şeklinde olur. Negatif bir sayının kodlanması ise pozitif sayıların kodlanmasından
daha farklıdır. Negatif sayıların kodlanması şu şekilde yapılır.

6
İNTERNET PROGRAMCILIĞI - I Özcan

1. Sayı işaretsiz olarak ikili sayı sisteminde yazılır.


2. Bütün bitlerin tersi alınır; 0 ise 1, 1 ise 0 yapılır.
3. Sonuca 1 ilave edilir. Sekiz bitten taşan kısımlar göz önüne alınmaz.

Buna göre –43 sayısının kodlanışı

00101101(43 sayısı)
11010010(43’ün tersi)
+ 1
11010011= -43

Dikkat edilirse yedinci bit (işaret biti) kendiliğinden 1 değerin, alarak sayının negatif
olduğunu belirtmiştik. Kontrol açısından 43 ile –43 ü toplarsak

00101101 43
+ 11010011 -43

1 00000000 0

Taşma değeri (1) göz önüne alınmadığından sonuç 0 dır. Böyle bir bilgi tipinin bir
değişken için belirtilmesi C programlama dilinde char kelimesi ile yapılır. Char
kelimesinden sonra bu tipte olmasını istediğimiz bütün değişken adları araya virgül
konarak yazılır ve tanımlama noktalı virgül (;) ile son bulur.

Ör: char i ;
Ör: char i, j,k ;

Buradaki değişkenler char veri tipinde tanımlanmıştır. Ve hepsi program içerisinde –


128 den +127 ye kadar olan değerlere sahip olabilirler.

1.4.2 İNT TAMSAYI TİPİ:

Bir çok özelliği ile char veri tipine benzemekle birlikte, int veri tipi 2 baytlık bir
uzunluğa sahiptir. Dolayısıyla –32768 den +32767’e kadar olan tamsayıları temsil
edebilir.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

2.bayt 1.bayt

bu tip görüldüğü gibi char’a benzemektedir. Tek fark işlemlerin 8 bit üzerinden
değilde 16 bit üzerinden yapılmasıdır. Bilgi 2 bayt’tan oluştuğu için hafızateki
konumlarında önce ikinci bayt ardından da birinci bayt yer alır.

7
İNTERNET PROGRAMCILIĞI - I Özcan

İkinci bayt birinci


2000 2001 2002---Æ adresleri

Örneğin Ox30D4 (12500) sayısı şöyle kodlanır.

0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0
2.bayt 1.bayt
işaret
biti
C dilinde int sayı tipini kullanmak için int sayı tipinde olması istenilen değişken isimleri
int kelimesinden sonra char’da olduğu gibi sıralanır.

Ör: int m,n,p;


İnt x,y,z;
İnt max,min,toplam;

1.5 GERÇEL SAYILAR:


Bilimsel çalışmalarda kullanılan sayılar genellikle tamsayı değillerdir. Kullanılan
değerler, matematiksel anlamda 1.50, 2.00, 3.1459, 2.717816, -1.74123, veya
8.9612x10-10 gibi gerçel sayılardır. Gerek tamsayı gerekse gerçel sayıların hepsi tek
bir formda (üstel gösterim formunda) toplanabilir.

0 0e00
5 5e00
1.5 1.5e00
8.9567 89567e-04

1.5.1 FLOAT GERÇEL SAYI TİPİ

C’de temel iki gerçel sayı tipinden biridir. Hafızada 4 baytlık yer kaplar.

31 30 23 22 0

İşaret Üs Noktali kısım


s e f

Bu sayı tipi ile oluşturulabilen mutlak değerce en büyük sayı 3,4E38 dir. Ve
oluşturulabilen mutlak değerce en küçük sayı ise 3,4E-38 dir. Bu sayılar float sayı

8
İNTERNET PROGRAMCILIĞI - I Özcan

tipinin duyarlığını belirler. C dilinde float sayı tipini kullanmak için float kelimesinden
sonra değişken isimlerini sıralamak yeterlidir.

Ör: float a,b,c;


float min,max;

1.5.2 DOUBLE GERÇEL SAYI TİPİ

Bu gerçel sayı tipi ise hafızate 8 baytlık bir alan işgal eder. Bit düzeni aşağıdaki
gibidir:

63 62 52 51 0

(s) (e) (f)

Double sayı tipinin ifade edebileceği mutlak değerce en büyük sayı 1,7E+308 ve en
küçük sayı 1.7E-308 dür. Double sayı tipi değer float sayı tipli değere göre çok daha
duyarlıdır ve daha büyük bir üst sınıra sahiptir. Double tip tanımlaması ise diğerlerine
benzer olarak

Doble x, a, A, b, c;
Double term, Sonuc;

şeklinde yapılır. Double ile float sayı tipi tanımlamalarının tercihi programcıya ait
olmakla birlikte, daha büyük üst sınır veya hassasiyetin tercih edildiği yerlerde
double sayı tipi tercih edilmelidir.

1.6 TİP SIFATLARI

1.6.1 SİGNED VE UNSİGNED TİP TAMLAYICILARI

Bu iki belirteç sayının işaret bitinin bulunup bulunmaması veya diğer bir deyişle
sayının negatif değerlere sahip olup olmayacağının belirtilmesini sağlar. Unsigned
tanımlaması sayının işaret bitinin olamaması sağlar. Fakat bu fiziksel anlamda bitin
olmaması anlamında değil sadece işaret bitinin diğer normal bitler gibi işleme
alınmaması anlamındadır. Signed tanımlaması ise sayının işaret bitinin olmasını
sağlar. Bu tanımlamaya genelde tip tanımlamasında gerek yoktur. Çünkü yukarıda
belirtilen bütün tipler (char, int, float, ve double) işaret bitine sahiptir.

9
İNTERNET PROGRAMCILIĞI - I Özcan

1.6.2 SHORT VE LONG TİP TAMLAYICILARI

Short belirticisi sadece int tipi ile birlikte kullanılır, fakat 16 bitlik bilgisayarlarda
herhangi bir etkisi yoktur. Short int veya signed short int tanımlaması int tanımlaması
ile aynıdır. Ve kısaca short veya signed short olarak da anılır.

32 bitlik bilgisayarlarda int tipi 4 baytlık bir alanı kapsadığından; short tamlayıcısı 32
bit bilgisayarlarda 16 bitlik bilgilerin elde edilmesini sağlar. Unsigned short 16 bitlik
işaretsiz tamsayı, signed short veya short 16 bitlik işaretli tamsayı elde edilmesini
sağlar. Long belirticisi gerçel sayılar için kullanılırsa; örneğin, long float tanımlaması
yapılırsa, bu double tanımlamasına denktir. Fakat long double tanımlaması yapıldığı
zaman uzunluğun 10 bayt olması sağlanır. Sayı sınırı:

− 4932
± 3 . 4 x 10 den ± 1 . 1 x 10 4932

kadar olur.

Ör: short int x.y.z; (2 byte)


long float – (8 byte)
long double –( 10 byte)

TİP UZUNLUK ALT SINIR ÜST SINIR


Char 1 byte -128 +127
İnt 2 byte -32768 +32767
Float 4 byte ±3,4 x 10 -38 ±3,4 x 10 38
Double 8 byte ±1,7 x 10 -308 ±1,7 x 10 308
Unsigned char 1 byte 0 255
unsigned int 2 byte 0 65535
long int 4 byte -2147483648 +2147483647

TİP UZUNLUK ALT SINIR ÜST SINIR


long float 8 byte ±1,7 x 10-308 ±1,7 x 10308
long double 10 byte ±3,4 x 10-4932 ±3,4 x 104932

Tablo 1.1 Veri tipleri

1.6.3 ENUM BİREBİR SAYMA TİPİ

Değişkenin bilgi depolayan bir hafıza birimi olduğunu söylemiş ve numerik verileri
incelemiştik. Nümerik veriler için değişkenlerin alabileceği değerler belirli idi. Fakat

10
İNTERNET PROGRAMCILIĞI - I Özcan

hayatımızdaki bütün veriler nümerik değildir. Örneğin, bir kimlik formundaki sorular ve
cevaplar şöyle olabilir.

cinsiyetiniz O erkek O kız


medeni haliniz O evli O bekar O dul

enum cinsiyet a,b;

Burada her bir sorunun cevabının saklanacağı bir değişken düşünelim. Bu değişken
hangi cevap için hangi değeri alacaktır? Bu seçim tamamen programcıya aittir.
Burada her bir cevaba bir sayısal değer verip bu değeri kontrol ederek sorunun
cevabını bulmak mümkündür. Örnekteki bütün soruların cevapları için birer tamsayı
değişken tanımlayıp, bu değişkenin alacağı değere göre cevap belirlenir.

int cinsiyet, medeni_hali , asker_durumu;

gibi ve cinsiyet, 0 ise Kız 1 ise Erkek; medeni_hal 0 ise bekar, 1 ise evli, -1 ise dul
olduğu kabul edilebilir. Bu yaklaşım doğru olmakla beraber karmaşıklığa yol açar.
Kbunun için C programcılara enum (bire bir sayma) değişken tipini sunmaktadır. Bu
olanakla örnekteki tanımlamalar.

enum {Kiz, Erkek} cinsiyet;


enum {bekar, evli, dul} medeni_hal;

şeklinde yapılabilir. Burada medeni_hal isminde bir değişken tanımlanırken, bu


değişkenin alabileceği değerler sırası ile Bekar, Evli, Dul olarak tanımlamaktadır.
Aslında burada her sembolik değer için birer nümerik değer bilgisayar tarafından
otomatikman verilmektedir. Bu da sırayla 0,1,2,3,4.... şeklinde olmaktadır. Bu sayede
enum tipindeki bilgilerin sıralanabilmesini sağlamaktadır. Yani bekar evli’den , evli de
dul’dan daha küçüktür. Şimdide bu tanımlanın değişik şekillerini görelim.

enum { sonbahar=2, kis, yaz=1, ilkbahar=0 } mevsimler;

burada mevsimler değişkenin alabileceği değerler kıs,yaz,ilkbahar ve sonbahar


olarak bildirilmiştir. Sadece farklı olarak sıralama değiştirilmektedir. Bu yazım şuna
denktir.

enum {ilkbahar, yaz, sonbahar, kış} mevsimler;

Görüldüğü gibi eşit işareti ile nümerik değer vermek mümkün olmaktadır. Yalnız eşit
işareti atama görevinden çok sayaç değiştirme işlemine yarar. Şöyle ki, sonbahar=2
ifadesi sonbahar terimine 2 değerinin atamaktan başka aksi belirtmedikçe
kendisinden sonraki elemanların 3,4,5... sırası ile devam etmesini sağlar. Bu yüzden
kis elemanı 3 değerine sahiptir. Yaz ise yeni değeri 1 ile işleme başladığından 1
değerine sahiptir.

11
İNTERNET PROGRAMCILIĞI - I Özcan

Diğer bir tanımlama şekli de şöyledir;

enum cinsiyet {kiz,erkek};


enum cinsiyet a,b;

Burada ilk satırda alabileceği değerler Kız ve Erkek olan cinsiyet tipi
tanımlanmaktadır. İkinci satırda ise cinsiyet tipindeki a ve b değişkenleri
tanımlamaktadır. Bu iki satır tek satır halinde

enum cinsiyet{Kiz, Erkek} a,b;

şeklinde de yazılabilir.

12

You might also like