temel veri türleri ve operatörler
Post on 14-Feb-2016
70 Views
Preview:
DESCRIPTION
TRANSCRIPT
Temel Veri Türleri ve Operatörler
22.04.23 Bilgisayar Programlama 2.1
Veri TürüBir nesnenin türü onun hangi tür verileri saklayabileceğini ve
bu veriler üzerinde hangi tür işlemleri yapabileceğini belirtir (Kernighan and Ritchie).
Hatırda tutulması gerekenlerDeğerler kümesi sonludur.
C’deki int tipi bütün tamsayıları temsil edemez. C’deki float tipi bütün kayan noktalı sayıları ifade edemez.
Belli tipte bir değişken kullandığımızda, bu değişkenin hangi değerleri alabileceğine ve bu değişkene hangi işlemler (operatörler) uygulayabileceğimizi bilmemiz gerekir.
22.04.23 Bilgisayar Programlama 2.2
Bazı TanımlamalarDeğişkenler (variables)
Bellekte bilginin saklandığı ve gerektiğinde değiştirilebilen bilgiler tutan gözlere verilen simgesel isimlerdir.
Veri türü (data type), bir değişkenin hangi tür değer alacağını belirler.
Sabitler (constants) program boyunca değeri değişmeyen sembolik isimlerdir.
Operatörler (operators) bir işlemi belirler. Örnek olarak,+ operatörü toplama işlemine - operatörü çıkarma işlemine% mod alma işlemine karşı
22.04.23 Bilgisayar Programlama 2.3
Bazı Tanımlamalar İfade (expression)
hesaplamaların yapılabilmesi için değişken, sabit ve operatörlerin bir araya gelmesiyle oluşmuş olan yapılardır.
Örnek: 2*a+c-d+fonk(24,34.2) Tanımlayıcılar (identifiers)
C’de program içerisinde belirtilmiş olan değişkenler, sabitler ve fonksiyonların isimlendirilmesi gerekir. Verilen isimler harfler, rakamlar ve alt çizgilerden oluşur ve mutlaka bir harf ile başlar. Ayrıca isimlendirmede karakterler arasında boşluk bırakılmaz. Ankara06_baskent (geçerli) 06Ankara_baskent (geçersiz. Çünkü harfle başlamıyor)
Diğer önemli bir husus ise C dilinin büyük/küçük harf duyarlı olmasıdır. Dolayısı“degisken” , “DEGISKEN”, “dEgiSKEn” birbirinden farklı isimlendirmelerdir.
C standart kütüphanesinde kullanılan fonksiyon isimleri değişken ismi olarak kullanılamaz. Örnek: “printf”, “scanf”, vb.
22.04.23 Bilgisayar Programlama 2.4
Temel Veri TipleriC dilinde az sayıda temel veri tipi bulunmaktadır. C
programlama dilinde temel 4 veri tipi bulunmaktadır.char int float double
Fakat bazı özel niteleyiciler kullanılarak temel veri tiplerinin türevleri oluşturulur.short longunsigned
22.04.23 Bilgisayar Programlama 2.5
Niteleyicilere DevamBu niteleyiciler sayesinde değişkenin bellekte kaplayacağı
alan isteğe göre değiştirilebilir. Kısa (short), uzun (long), ve normal (int) tamsayı arasında yalnızca uzunluk farkı vardır. C değişkenin bellekte ne kadar alan kaplayacağı hakkında bir kısıtlama getirmez. Bu konuda tek şart şudur,kaplanan alan(short int) <= kaplanan alan(int) <=kaplanan
alan (long int)iş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.
22.04.23 Bilgisayar Programlama 2.6
Sizeof operatörüVeri tipinin bellekte kapladığı alan sizeof operatörü ile
bulunabilir.
22.04.23 Bilgisayar Programlama
/* sizeof operatörünün kullanımı */
#include <stdio.h>
main() { printf("char :%d byte\n", sizeof(char)); printf("short :%d byte\n", sizeof(short)); printf("int :%d byte\n", sizeof(int)); printf("long :%d byte\n", sizeof(long)); printf("unsigned char :%d byte\n", sizeof(unsigned char)); printf("unsigned short :%d \n", sizeof(unsigned short)); printf("unsigned int :%d bayt\n", sizeof(unsigned int)); printf("unsigned long :%d bayt\n", sizeof(unsigned long)); printf("float : %d bayt\n", sizeof(float)); printf("double :%d bayt\n", sizeof(double)); printf("long double :%d bayt\n", sizeof(long double));}
2.7
22.04.23 Bilgisayar Programlama
Veri Tipi Açıklama Uzunluk (bit) Alt Sınır Üst Sınır
charTek bir karakter 8
-128 127
unsigned char 0 255
short intKısa tamsayı 16
-32,768 32,767
unsigned short int 0 65,535
intTamsayı 32
-2,147,483,648 +2,147,483,647
unsigned int 0 4,294,967,295
long intUzun tamsayı 32
-2,147,483,648 +2,147,483,647
unsigned long int 0 4,294,967,295
float Tek duyarlı gerçek sayı (7 basamak) 32 -3.4e +/- 38 3.4e +/- 38
double Çift duyarlı gerçek sayı (15 basamak)
64 -1.7e +/- 308 1.7e +/- 308
2.8
Değişkenler (variables)Değişkenler bilgisayarın geçici belleğinde bilginin
saklandığı gözlere verilen sembolik adlardır. Bir C programında, bir değişken tanımlandığında bu değişken için bellekte bir yer ayrılır. Her değişkenin tuttuğu değerin nasıl bir veri olduğunu gösteren bir veri tipi vardır.
C programlama dilinde, değişkenler ve sabitler programın başında bulunmalıdır. Bazı uygulamalarda değişkenin bir başlangıç değerinin olması istenir. Böyle durumlarda değişken bildirilirken başlangıç değeri verilebilir.
22.04.23 Bilgisayar Programlama 2.9
Değişkenler (variables)
22.04.23 Bilgisayar Programlama 2.10
char harf=‘A’, harf1; /* harf değişkenine başlangıç değeri atandı. */int sayi1, sayi2=25; /* sayi2 değişkeninin başlangıç değeri 25 */float gerçek_sayı1, gerçek_sayı2=12.43;
Değişken İsimleriDeğişkelere isim verirken bazı kurallara dikkat etmeliyiz.
Değişken adları en fazla 32 karakterden oluşur.Değişken adları ingiliz alfabesinde bulunan karakterler (A-Z) veya
(a-z) yada rakamlar (0-9) ile yazılmalıdır. Türkçe karakterler, özel karakter veya boşluk karakteri kullanılamaz.
Değişken adları herhangi bir rakam ile başlayamaz. Ilk karakter bir harf olamalıdır. Sonrakiler rakamlardan oluşabilir.
Aşağıda verilen kelimeler ANSI C 'nin anahtar kelimeleridir (key words) ve değişken ismi olarak kullanılamaz. auto, double, int, struct, break, else, long, switch, case, enum, register,
typedef, char, extern, return, union, const, float, short, unsigned, continue, for, signed, void, default, goto, sizeof, volatile, do, if, static, while.
22.04.23 Bilgisayar Programlama 2.11
22.04.23 Bilgisayar Programlama 2.12
Değişken, Fonksiyon Adı Geçerli mi Açıklama
asal geçerli
asal geçerli
ivme geçerli
olasilik geçerli
IsikHizi geçerli
İsikHızı geçersiz Ingiliz alfabesinde olmayan harf içeriyor
Isik hizi geçersiz Boşluk karakteri içeriyor
gulen_adam geçerli
degisken1 geçerli
1degisken geçersiz Rakamla başlıyor
break geçersiz Anahtar kelime değişken ismi olamaz
Sabitler (Constants)Değişkenlerden farklı olarak bazı tanımlayıcıların sabit
değerler tutması istenir. Bir tanımlayıcının sabit olduğunu const anahtar kelimesiyle
belirleriz.Sabitlere başlangıç değeri atandıktan sonra yeni bir değer
atanamaz. Sabit adları için genellikle büyük harfler tercih edilir.
22.04.23 Bilgisayar Programlama 2.13
const float PI = 3.142857;const double NOT= 12345.8596235489;const int SABIT_SAYIMIZ= -1;const char[] ANAHTAR_CUMLE= "devam etmek için bir tuşa basın...";
Sabitler (Constants)Sabitler makrolar vasıtasıyla da tanımlanabilirler. Bunun
için #define önişlemci bildirimi kullanılır. Makrolar önişlemci bildirimleri olup, derlemeden bir önceki adım olan önişlemci adımında tanımladıkları sabitlere dönüştürülürler.
22.04.23 Bilgisayar Programlama 2.14
#define PI 3.142857;#define NOT 12345.8596235489;#define SABIT_SAYIMIZ -1;
Sayısal ve Karakter Bilgileri (Literals)
Bir veri tipi bir değerler kümesi belirler.Örneğin int veri tipi 232 farkı değer belirler ve bu değerlerin
her biri [-2,147,483,648; -2,147,483,648] aralığında bir tamsayıya karşı gelir.
Değerler kümesindeki her bir elemana bir literal denir.
22.04.23 Bilgisayar Programlama 2.15
i=25; /* 25, int tipinde sayısal bir değerdir (literal) */d=127.89; /* 127.89, double tipinde sayısal bir değerdir (literal) */harf=‘i’; /* i, char tipinde bir literaldir */
Literaller C dilinde bütün tamsayı sabitler varsayılan (default) olarak int tipinde, gerçek
sayı sabitler varsayılan olarak double tipindedir. Ancak sayısal literallerin sonuna eklenen U (veya u), L (veya l) ve F (veya f) harfleri ile bu durum değiştirilebilir. Bu yüzden, aşağıdaki atamalar aynı anlamda değildir.
22.04.23 Bilgisayar Programlama 2.16
i = 25; /* int rakam */i = 25U; /* unsigned int rakam */i = 25L; /* long int rakam */i = 25UL; /* unsigned long rakam */i = 25L; /* long int rakam */
r = 17.2; /* double rakam */r = 17.2L; /* long double rakam */r = 17.2F; /* float rakam */
LiterallerTamsayı literaller değişik sayı tabanlarında da gösterilir.
8’lik taban (oktal) için literalin önüne 0 (sıfır), Kullanılabilecek semboller: 0,1,2,3,4,5,6,7
16’lık taban (hexadecimal) için literalin önüne 0x eklenir. Kullanılabilecek semboller: 0,1,2,3,4,5,6,7,8,9,a/A, b/B, c/C, d/D, e/E, f/F
22.04.23 Bilgisayar Programlama 2.17
/* aşağıdaki atamaların hepsi aynıdır */sayi = 75; /* 10 tabanında */sayi = 0113; /* 8 tabanında*/sayi= 0x4b; /* 16 tabanında */sayi = 0x4B; /* 16 tabanında */
LiterallerGerçek sayılar iki şekilde gösterilebilir.
Ondalıklı olarak Üstel (bilimsel notasyonda) gösterim (e veya E kullanılarak)
Aşağıdaki atamaların hepsi aynıdır
22.04.23 Bilgisayar Programlama 2.18
x = 87.234; /* ondalıklı gösterimi */x = 87.234e+0; /* üstel gösterim */x = 8.7234e+1; /* üstel gösterim */x = 87234E-4; /* üstel gösterim */
LiterallerKarakter literaller tek tırnak içinde belirtilir.
‘2’,’A’.Karakter kümesi (string) literaller çift tırnak içerisinde
gösterilir.“Ankara Turkiyenin Baskentidir”
22.04.23 Bilgisayar Programlama 2.19
22.04.23 Bilgisayar Programlama 20
Karakterler Hakkında Daha Fazlası
Sabitler nümerik değerlerden oluşabileceği gibi karakter veya karakter dizilerinden (strings) de oluşabilirler.
Klavye üzerinde görmüş olduğumuz her sembol aynı zamanda bir karakterdir. Karakterler yazılırken tek tırnak içerisinde belirtilirler. Örn: ‘A’, ‘.’, ‘%’
Her bir karakterin sayısal bir değeri vardır. Karakter sabitin sayısal değeri, karakterin ASCII kod tablosundaki karşılığıdır. Örn: ‘A’ karakterinin sayısal değeri 65’dir.
Karakter dizileri(strings) ise karakterlerin bir araya gelmesiyle oluşan yapılardır. C’de karakter dizileri çift tırnak arasında belirtilirler. Örn: “merhaba”, “elma”, “ogrenci” vb.
22.04.23 Bilgisayar Programlama 2.21
Karakterler Hakkında Daha Fazlası
C’de ters slash ‘\’ karakterinin özel bir anlamı vardır. Bu karakter ile klavye ile ifade edilemeyen özel sembollerin ifade edilmesi sağlanır. Bu tür karakterlere “escape karakterleri” denir.
22.04.23 Bilgisayar Programlama 2.22
Escape Karakteri Açıklama\n Yeni satır\b Backspace\r Satır başı
\’ Tek tırnak\” Çift tırnak\\ Tek ters slash
printf( "Turkiye\'nin Baskenti Ankara\'dir.");
Çıktı: Turkiye'nin Baskenti Ankara'dir.
printf("Ali, \"Bu is seni ilgilendirmez.\" dedi.\n");
Çıktı: Ali, "Bu is seni ilgilendirmez." dedi.
22.04.23 Bilgisayar Programlama 23
Değişken Bildirim YerleriDeğişkenler bildirildikleri yere göre yerel ve global olmak
üzere ikiye ayrılırlar.Yerel değişkenler (local variables): Fonksiyon veya bir
blok içerisinde bildirimi yapılan değişkenlerdir. Bu tip değişkenler hangi fonksiyon veya blokta bildirilmişse orada aktif olurlar. Başka fonksiyonlardan çağrılamazlar.
22.04.23 Bilgisayar Programlama 2.24
void toplama(int a, int b){int c; /* c değişkeni yerel değişken olup, sadece bildirimi yapıldığı fonksiyonda kullanılabilir. */ c=a+b;return c;}
Değişken Bildirim YerleriGenel değişkenler (global variables)
Genel değişkenler bütün fonksiyonların dışında bildirilir ve bütün fonksiyonlar içerisinden erişilebilirler.
22.04.23 Bilgisayar Programlama 2.25
void karesi();
/* m ve n global tip değişkendir. Bu iki değişken tüm program boyunca kullanılmaktadır. */
int m,n;
main() { m=7; karesi(); printf("%d nin karesi %d dir",m,n); }
void karesi(){ n = m*m; }
Tip DönüşümleriBir ifadede farklı tipten değişkenler ve sabitler varsa tip
dönüşümü gerçekleştirilir.İki türlü tip dönüşümü vardır. Otomatik tip dönüşümü
(implicit type conversion) ve açık belirtimli tip dönüşümü (explicit type conversion).
Otomatik tip dönüşümüVeri tipleri küçükten tipten büyük tipe dönüştürülür.
Tamsayı tipler kayan noktalı tiplerden daha küçüktür İşaretli tipler işaretsiz tiplerden daha küçüktür double > float > long > int > short > char
22.04.23 Bilgisayar Programlama 2.26
Otomatik Tip DönüşümüŞu kuralları hatırda tutalım
Sabit tamsayıların tipi int olarak kabul edilir.Ondalık sayıların tipi double olarak kabul edilir. İki int arasındaki işlemin sonucu yine int’dir. İki float arasındaki işlemin sonucu yine float’dır.Verinin biri float diğeri int ise sonuç float’dırVerilerden biri double, diğeri double değilse, double olmayan veri
önce double’a dönüştürülür ve işlemin sonucu double çıkar.Eğer verilerden biri long diğeri unsigned int ise her ikisi de
unsigned long’a dönüştürülür ve sonuç unsigned long olur.char ve short veri tipleri int veri tipine dönüştürülür.unsigned char ve unsigned short unsigned int’e dönüştürülür.
22.04.23 Bilgisayar Programlama 2.27
22.04.23 Bilgisayar Programlama 2.28
int a=100;float b=7.9;if(a+b > 0) { /* bir seyler yap */}/* float int’ten büyük olduğu için 100.000000’ dönüştürülerek toplama işlemi yapılır, daha sonra 0 (tamsayı) 0.000000’a (float’a) dönüştürülerek kıyaslama yapılır.
Otomatik Tip DönüşümüAtama işlemi yaparken eğer eşitliğin solundaki değişkenin
tipi eşitliğin sağındaki verinin tipinden küçükse bu durumda büyük tip küçük tipe dönüştürülüp atama yapılır.
22.04.23 Bilgisayar Programlama 2.29
float x,y,z;int result;result=x*y*z/100+32/8-3*1.5;
/* 100, 100.000000’a, 32/8’in sonucu olan 4 tamsayısı 4.000000’a , 3 ise 3.000000’a dönüştürülür. İşlem sonucu elde edilen float değeri int’e dönüştürüldükten sonra atama işlemi gerçekleştirilir.
top related