temel veri türleri ve operatörler

29
Temel Veri Türleri ve Operatörler 10.06.22 Bilgisayar Programlama 2.1

Upload: erwin

Post on 14-Feb-2016

67 views

Category:

Documents


0 download

DESCRIPTION

Temel Veri Türleri ve Operatörler. 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ı gerekenler Değerler kümesi sonludur. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Temel Veri Türleri  ve Operatörler

Temel Veri Türleri ve Operatörler

22.04.23 Bilgisayar Programlama 2.1

Page 2: Temel Veri Türleri  ve Operatörler

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

Page 3: Temel Veri Türleri  ve Operatörler

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

Page 4: Temel Veri Türleri  ve Operatörler

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

Page 5: Temel Veri Türleri  ve Operatörler

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

Page 6: Temel Veri Türleri  ve Operatörler

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

Page 7: Temel Veri Türleri  ve Operatörler

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

Page 8: Temel Veri Türleri  ve Operatörler

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

Page 9: Temel Veri Türleri  ve Operatörler

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

Page 10: Temel Veri Türleri  ve Operatörler

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;

Page 11: Temel Veri Türleri  ve Operatörler

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

Page 12: Temel Veri Türleri  ve Operatörler

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

Page 13: Temel Veri Türleri  ve Operatörler

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...";

Page 14: Temel Veri Türleri  ve Operatörler

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;

Page 15: Temel Veri Türleri  ve Operatörler

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 */

Page 16: Temel Veri Türleri  ve Operatörler

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 */

Page 17: Temel Veri Türleri  ve Operatörler

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 */

Page 18: Temel Veri Türleri  ve Operatörler

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 */

Page 19: Temel Veri Türleri  ve Operatörler

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

Page 20: Temel Veri Türleri  ve Operatörler

22.04.23 Bilgisayar Programlama 20

Page 21: Temel Veri Türleri  ve Operatörler

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

Page 22: Temel Veri Türleri  ve Operatörler

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.

Page 23: Temel Veri Türleri  ve Operatörler

22.04.23 Bilgisayar Programlama 23

Page 24: Temel Veri Türleri  ve Operatörler

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;}

Page 25: Temel Veri Türleri  ve Operatörler

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; }

Page 26: Temel Veri Türleri  ve Operatörler

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

Page 27: Temel Veri Türleri  ve Operatörler

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

Page 28: Temel Veri Türleri  ve Operatörler

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.

Page 29: Temel Veri Türleri  ve Operatörler

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.