Char Degişken Tipi
String değişkenler 255 karakterlik veri alabiliyordu. Char ise tahmin edeceğiniz gibi daha fazla karakter almıyor! Char tipinde bir değişken yalnızca bir adet karakter alabilir ve bir byte yer kaplar hafızada. Yine string tipindeki gibi değer atamasında iki apostrof işareti arasına en fazla 1 karakter olabilecek şekilde yazılır. Örnek bir program yapalım daha iyi anlarız.
Program Char_Tipinde_alistirma;
Uses wincrt;
var
c: char;
isim: string;
a: byte;
begin
clrscr;
write('Yine adinizi girin bakalim....: ');readln(isim);
write('Simdi en fazla ',length(isim),' olacak sekilde sifindan büyük bir sayi giriniz: '); readln(a);
c:=isim[a];
writeln('Sizin isminizin ',a,'. harfi "',c,'"');readln;
end.
clrscr; komutuna kadar olan yeri biliyorsunuz. Ondan sonra isim adli değişkene ekrandan (daha sonra ayrıntılı olarak anlatacağımız şekilde) bilgi girilmesi isteniyor. Ondan sonra yazılan write ifadesinde bilmediğimiz birsey var. Length fonksiyonu bir string tipli ifadenin kaç karakter uzunluğunda olduğunu verir. Bunu da daha sonra anlatacağız. Ondan sonra c:=isim[a]; ifadesinde c adli char değişkene isim değişkeninin a. karakterini atıyoruz. Mesela isminiz "Osman" ise ve a değerine de 3 girdiyseniz c:= ifadesinin karsısındaki değer 'm' olur. Yani c değişkeninin değerine 'm' harfini (karakterini) atamış oluruz. Programı birkaç defa çalıştırarak daha iyi anlayabilirsiniz.
Tabii bu şekilde bizim pek isimize yaramayabilir ama özellikle bir char tipindeki değişkeni readkey komutuyla kullanılarak faydalanabiliriz. Bunlara ilerde değineceğiz.
Bunların dışında su anda hemen kullanamayacak olsak da diğer tiplere de kısaca değinelim.
Boolean Tipli değişkenler:
Değeri ya TRUE (doğru) ya da FALSE (yanlış) olabilen değişkenlerdir. Mantıksal karsılaştırmalarda kullanılabilir. Hafızada 1 byte alan kaplar.
Bundan sonraki tipteki olan dizi ve record tipleri için sonraki derslerde özel bir bölüm açip anlatacagi çünkü kullanım alanları çok geniş.
Dizi (Array) tipli degiskenler:
Dizi değişken genelde benzer bilgileri bulunduran değişkenlerdir. Örnek verirsek daha iyi anlaşılır. Önceki programlarımızın birisinde hatırlarsanız bir öğrencinin üç notunun ortalamasını bulmuştuk. Peki, 1 değil de 100 öğrenci varsa ne olacak. Her birisi için üç not ve bir ortalama olmak üzere 4 değişken tanımlarsak toplam 400 değişken tanımlamamız lazım. Bu hem çok uzun zaman alır, hem de değişken isimlerini birbirine karıştırmamız olasıdır. Bunun yerine 100 öğrencinin 3'er notunu ve ortalamasını sadece 2 değişken kullanarak kolayca tutabiliriz. Bunun için değişken tanımlarımız
Kayıt (Record) tipli değişkenler:
Şimdiye kadar bir öğrencinin adi, notları ve ortalaması için ayrı değişkenler kullandık. Peki, bunların hepsini bir ana değişkenin alt değişkenleri olarak tutsak daha kolay ve anlaşılır olmaz mı? Özellikle bu tip değişkenler dosyalama konusunda çok isimize yarayacak. Genel olarak tanımlaması su şekildedir:
Type
kayit_tipi=Record
degiskenler...
end;
Var
kayit_adi = kayit_tipi;
Gördüğünüz gibi bu tip bir değişkeni tanımlamak için type etiketini kullanıyoruz ve yeni bir tip oluşturuyoruz ilk önce. Sonra bir değişkeni tipi bu olacak şekilde tanımlıyoruz. Hemen örnek bir program yazalım. Bunu kendi ellerinizle yazmalısınız (ben de hep öyle yapıyorum):
Program kayit;
uses wincrt;
type
ogrenci_tipi=Record
isim: string[40];
not1: byte;
not2: byte;
not3: byte;
orta: real;
end;
Var
ogrenci: ogrenci_tipi;
Begin clrscr;
write('Isminiz:');readln(ogrenci.isim);
write('1. Sinavin sonucu:');readln(ogrenci.not1);
write('2. Sinavin sonucu:');readln(ogrenci.not2);
write('3. Sinavin sonucu:');readln(ogrenci.not3);
ogrenci.orta:=(ogrenci.not1+ogrenci.not2+ogrenci.not3)/3;
write('Ortalamaniz: ');write(ogrenci.orta);
readln;
end.
Gördüğünüz gibi kayıt tipindeki bir değişkenin alt değişkenini nokta ile ayırarak kayıt_değişkeni.alt_degisken seklinde yazıyoruz. İsterseniz with deyimini kullanarak alt değişken isimlerini direk de kullanabilirsiniz:
yastik;
uses wincrt;
type
ogrenci_tipi=Record
isim: string[40];
not1: byte;
not2: byte;
not3: byte;
orta: real;
end;
Var
ogrenci: ogrenci_tipi;
Begin clrscr;
with ogrenci do begin
write('Isminiz:');readln(isim);
write('1. Sinavin sonucu:');readln(not1);
write('2. Sinavin sonucu:');readln(not2);
write('3. Sinavin sonucu:');readln(not3);
orta:=(not1+not2+not3)/3;
write('Ortalamaniz: ');write(orta:5:2);
end;
readln;
end.
Bu iki program de birbirinin aynisi işlemleri yapar. With Türkçede "ile, beraber" demektir.