Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları İrfan MACİT 2. Veri Tipleri Turbo Pascal bilgisayar programlama dili ile programlama yapabilmek için bilgisayara işlem yapacağımız verilerin tiplerini bildirmemiz gereklidir. Veri tipleri değişken olabileceği gibi sabit de olabilir. Yazdığımız bilgisayar programı çalışma esnasında içerisinde kullandığımız değer atadığımız değişkenler bazı durumlarda programın çalışması boyunca aynı değeri alması da beklenebilir. Turbo pascal da temel olarak dört veri tipi vardır. bu veri tiplerinin haricinde kullanıcı tanımlı olan kayıt tipinde de veriler vardır. bu tipte olan veriler kullanıcılara Turbo pascal içerisinde sunulandan hariç bir veri tipi oluşturulması gerektiği durumlarda çözüm sunmaktadır. Belirleyeceğimiz kendimize ait bir kayıt tipi ile pascal programlamada kullanacağımız kendimize ait veri tipi oluşur. Veri tipleri VAR kısmında programa başlarken bildireceğimiz yerde tanımlanırlar. Kayıt tipi olarak yeni tanımlanacak olan veri tipleri ise var kısmından önce olmak zorundadır. Veri tiplerinin bildirimi kısmında TYPE bildirimi VAR bildiriminden önce olmalıdır. Program degisken; var name : veri_tipi; TYPE Başka için örnek; Program degisken; Type Gunler=(Pazartesi, Salı, Carsamba, Persembe, Cuma, Cumartesi, Pazar); Hafta=(1_hafta, 2_hafta, 3_hafta, 4_hafta) Var Hafta_gunu:Gunler; AY:Hafta; 15 Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları İrfan MACİT TYPE tanımlamasında Gunler adlı dizinin elemanlarından oluşan yeni bir veri tipi tanımlanmıştır. Bu elemanlar haftaya ait günleri göstermektedir. VAR kısmında ise Hafta_gunu ile tanımladığımız veri tipine ait değişken tanımlıyoruz. Önemli olan konu veril tipi ile değişkenin tanımlandığı veri tipinin birbirinden ayrı olduğudur. Veri tipi Integer gibi veya Real gibi bir veri tipinden bahsetmektedir. Değişkenin veri tipi ise işlem yapacak olan değişkenin alabileceği değerlerin tipidir. var sayı1,sayı2, sayı3: integer; begin sayı1 := 24; { bu işlem sayı1 değerini 24 yapar} sayı2 := 20; { bu işlem sayı1 değerini 20 yapar } sayı3 := sayı1 + sayı2; writeln(sayı1, ' + ', sayı2, ' = ', sayı3 , ‘olur’) end. Programın ekran çıktısı 24 + 20 = 44 olur Aynı tipten verilerin arasıdan virgül ile ayırarak tanımlayabiliriz. sayı1: integer; sayı2: integer; sayı3: integer; gösterimi ile sayı1,sayı2, sayı3: integer; gösterimi aynıdır. Turbo pascal da değişkenlere değer atama işlemi sol tarafta bulunan değerin sağ taraftakine eşitlenmesi ile yapılmaktadır. Elimizdeki bir değeri bir değişkene aktarmak istiyor isek sol tarafa değişken sağ tarafa ise değişkene aktaracağımız değer yazılarak yapılır. degisken:=deger; 16 Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları İrfan MACİT Burada degisken program içerisinde kullanacağımız değişken listesinden herhangi birisi deger ise değişkenin almasını istediğimiz değeridir. Değişkenleri belirlerken Turbo Pascal tarafından kullanılan kayıtlı kelimelerden olmamasına dikkat etmemiz gerekir. Ayrıca değişkeleri isimlendirirken nokta, virgül, ünlem, yıldız, soru işareti gibi karakterler ile başlamamasına ayrıca Türkçe karakterler kullanmamaya dikkat edilmesi gerekmektedir. İngilizce’de küçük ı büyük İ gibi karakterlerin olmayışından dolayı dikkatten kaçak bu küçük ayrıntılardan dolayı yazdığımız kaynak kodlar derlenemeyebilir. CONST TYPE gibi var kısmından önce tanımlanması gereken diğer önemli bildirimdir. Bu bildirimde program içerisinde kullanacağımız sabitler vardır. CONS tanımlamasının en büyük yararı bir program kaynak kodu içerisinde birden fazla kullanılan sabit tipte bulunan değerlerin kullanılmasında sağladığı kolaylıktır. Program içerisinde birden fazla fonksiyon veya alt program (procedure) içerisinde 20 kez kullandığımız sabit değerler olduğunu düşünelim. Bu sabitin aldığı değerin değiştirmek istediğimizde 20 ayrı yere gidip bu düzeltmeyi yapmamız gerekir. Bu işlem gereğinden fazla uzun ve güvenilir olmayan bir yöntemdir. Bu değişikliklerden birisini unutsanız programınız doğru çalışmayacaktır. CONST ile yaptığımız tek bir değişikliğin bütün programa anında uygulanmasını sağlayabiliriz. program Metrik; const MTY = 1.196; {degisim sabiti} var SMetre, SYard: Real; begin ReadLn (SMetre); WriteLn ('Metre cinsinden ölçü ', SMetre:3:1); SYard := MTY * SMetre; WriteLn ('Yard cinsinden ölçü ', SYard :4:2) end. 17 Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları İrfan MACİT 2.1 Integer (Tamsayı ) Veri Tipi : bu tipte olan verilen matematikten bildiğimiz -/+ aralığındaki tam sayılardan oluşur. Z- ve Z+ negatif işaretli ve pozitif işaretli tamsayıları ifade etmektedir. Integer veri tipinin aralığı eksi sonsuz ve artı sonsuz aralığında bildirdiğimiz veri tipinin hafızada tuttuğu alan ile sınırlıdır. Bir değişkene değer ataması yaparken veri tipini yanı sıra veri için hafızada ayrılan yeri göz önüne almamız gerekir. degisken : Integer; şeklinde genel gösterimi vardır. Ayrıca degisken1 : Integer; degisken2 : Integer; degisken3 : Integer; şeklinde de gösterilebilir. degisken1,degisken2,degisken3 : Integer; gösterimleri aynı gösterimdir. Integer tipinde veriler için hafızada 2 byte (8 bit) yer ayrılır. Hafızada ayrılan yerler içerisine atanacak olan değerler -32768’den 32767’e kadardır. Eğer bir değişkenin örneğin x gibi bir değişkenin değerinin program çalıştığı sırada alabileceği değer -32768 ile 32767 aralığındadır. Bu değer aşılır ise program hafıza taşma hatası verecektir. Bu durumu aşabilmek için değişkenin tipini tam sayı değerini uzun tamsayı (longint) değeri ile değiştirmemiz gerekir. Uzun tam sayı tipinin alabileceği değişken değeri -2147483648 ile 2147483647 aralığındadır. Program BUYUK; USES CRT; const MinDeg = -MaxInt; var sayi, CokBuyuk : Integer; begin 18 Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları İrfan MACİT CokBuyuk := MinDeg; WriteLn ('Sıradaki en büyük Değeri Bulundu:'); repeat Write ('Bir tam sayı girin', MinDeg :1, ' durmak için 1 girin Æ '); ReadLn (sayi); if sayi > CokBuyuk then CokBuyuk := sayi until sayi = MinDeg; WriteLn ('En Büyük Değer ', CokBuyuk :1,’ dir’) end. Yukarıdaki programda bir sıra halinde girilen sayıların içerisindeki en büyük tam sayıyı bulur. Klavyeden girilen sayılar eğer tamsayı değil ise programın çalışması duracaktır. ShortInt veri tipi -128 ile 127 aralığındaki tamsayıları değişkenlere aktarmak için kullanılan veri tipidir. Küçük sayılar ve hafızayı çok meşgul etmeyecek şekilde kullanımlar için uygundur. 2.2 Byte (Byte ) Veri Tipi ; Byte türünden olan veri tiplerinin alabileceği değer aralığı 0 ile 255 sayıları arasındadır. Değişkenler bu değerin daha üstünde veri depolayamazlar. Genellikle küçük sıra numaraları, daire numarası veya buna benzer küçük numaralar ile işlem yapmak için kullanılırlar. 8 bit olduğundan işaret bitleri kullanılmaz. 2.3 Real (Gerçel) Veri Tipi ; Gerçel tipte veriler rasyonel sayılardan oluşan sayılardır. Sayıların ondalıklı olması dolayısı ile farklı şekilde gösterilmesini zorunlu kılmaktadır. Donanımsal özelliklerin yanı sıra sayıların gösteriminde ondalık ve işaret bu tipte değişkenlere atanacak değerlerinde ayrı gösterilmesini gerektirmektedir. Tam sayı değişkenlerde değişkenin alabileceği değerin yaklaşık olarak belirli olması veri 19 tipinin belirlenmesinde kolaylık Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları İrfan MACİT sağlamaktadır. Değişkenin alacağı değerin kaç bayt alana sığacağı veya kaç baytlık alan işgal edeceği yaklaşık olarak belirlenebilir. Ancak ondalıklı sayılarda bu işlem kolay değildir. Ondalıklı sayılarda işlemler yapılırken bir sayı başka bir sayıya bölündüğünde bazı sayının mantis (ondalık) değerlerin çok fazla uzun olmadığı görülmektedir. Diğer bir durum bir sayı başka bir sayıya bölündüğünde sayının mantis kısmı gereğinden fazla büyük olabilir. Mantis kısmı burada belirleyici faktördür. Hassas bir hesaplama işleminde mantisin yuvarlama veya hassasiyet oranı çıkacak olan sonucu direk etkilemektedir. Örnek : 3/2 = 1.5 7/3 = 2.3333.. Programlamada yapılacak olan yuvarlama hatası değişkenin alabileceği değer ve sonuç ilişkisini belirlemektedir. Bir vidanın üzerine uygulanacak momenti, bir plak burkulması, elastisite veya istatistiksel analizde kullanılan standart sapma yuvarlama problemin yanlış çözümüne sebep olacaktır. degisken : Real ; şeklinde genel gösterimi vardır. Ayrıca degisken1 : Real; degisken2 : Real; degisken3 : Real ; şeklinde de gösterilebilir. degisken1,degisken2,degisken3 : Real; gösterimleri aynı gösterimdir. Real (gerçel) tipte veri tipinin gösterilmesi tamsayı tipindeki ile aynıdır. Tamsayı tipi ile gerçel tipteki verilerin arasındaki farkların en önemlisi tam sayı veri tipinin hafızada gerçel tipteki verilerden daha az yer tutmasıdır. Gerçel veri tipinde ondalık belirteci (mantisin ayracı) alan hesabı yapılırken veri tipinin kullandığı alan üzerine dahil edilir. Gerçel tipteki verinin alabileceği değerler derleyicilerin özellikleri ve bilgisayarın donanımı ile ilişkilidir. Genellikle gerçel tipte verinin alabileceği değer -2.9*1039 ile 1.7*1038 arasındadır. 20 Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları İrfan MACİT Program EGIM_Fonk ; const bg = 0.0; var egim, Y2, Y1, X2, X1 : Real; begin WriteLn ('Aralıklı dört sayı girin'); WriteLn ('Aynı iki sayı girildiginde program durur'); WriteLn ('Dört Sayi Girin --> '); ReadLn (Y2, Y1, X2, X1); egim := (Y2 - Y1) / (X2 - X1); while egim <> bg do begin WriteLn ('Eğim ', egim :5:2); WriteLn ('Dört sayı daha girin --> '); ReadLn (Y2, Y1, X2, X1); egim := (Y2 - Y1) / (X2 - X1); end end. 2.4. Bool ( Mantıksal ) Veri Tipi; Mantıksal veri tipi iki değişkenin bir operatör yardımı ile karşılaştırılması sırasında değişkenin alabileceği değerlerin mantıksal olmasını sağlayan ver tipidir. Değişkenlerin alabileceği değer TRUE (DOĞRU) veya FALSE (YANLIŞ) olarak değerlendirilir. Değişkenin yorumlanacak değerleri sonuç olarak mantıksal olmak zorundadır. 2.5 Char ( Karakter) Veri Tipi; Karakter veri tipinde belirlenen değişkenlerin alacağı değer sadece bir karakteri içerebilir. değerlerden birisi Bu karakterler olabilir. Bu veri 21 ASCII tipinin karakter kullanım setinde bulunan amacı genelde Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları İrfan MACİT klavyeden girilecek olan sadece bir karakterlik Evet veya Hayır gibi sonuç oluşturan değerleri belirlemektir. E,H: char; Hafıza alanında çok fazla yer işgal etmezler. Genelde kontrol amaçlı olduğundan her zaman kullanılması bir zorunluluk değildir. Ancak gerekli olduğunda kullanılmalıdır. 2.6 Word (Kelime) Veri Tipi ; Kelime veri tipinde 0 ile 65535 sayıları arasındaki değerler değişkelere atanmaktadır. Bazı özel durumların gerektirdiği değer atamaları sayı aralığının kesin belli olduğu durumlarda bu veri tipinin kullanılması oldukça güvenilirdir. degisken: word; 22