PASCAL DERS NOTLARI

2010-10-12 11:57:00

PASCAL DERS NOTLARI

II: SABİTLER, DEĞİŞKENLER VE OPERATÖRLER A- Sabitler (Const) B- Değişkenler (Var) 1- Değişken isimleri (Identifier names) 2- Değişken tipleri a) Standart değişken tipleri 1) Tamsayı değişken tipleri aa) Byte ab) Short ac) Integer ad) Longint 2) Gerçek (Real) değişken tipi 3) Karakter (Character) değişken tipi 4) String değişken tipi 5) Mantık (Boolean) değişken tipi 6) Boolean değişken tipi

Pascalın tarihçesi PASCAL Programlama dili 1968 yılında Niklaus Wirth tarafından Zürih ETH'de (Eindgenossische Technische Hocshule) konuşma diline yakın, öğrenilmesi kolay bunun yanında etkin ve güvenilir bir programlama dili olarak geliştirildi. ALGOL 60 programlama dilinde bulunan yapısal programlama tekniğini de bünyesine katarak zamanının yaygın olarak kullanılan FORTRAN ve COBOL dilleri karşısında önemli bir üstünlük sağlama başarısını gösterdi. Basit ve anlaşılır bir kodlama ve kontrol yapısına sahip olan PASCAL aynı zamanda prosedür, fonksiyon tanımlama ve dinamik veri yönetimi gibi önemli özelliklere sahip. Pascalın uluslararası alanda kazandığı başarının artması ve değişik bilgisayar sistemleri için değişik türevlerinin yazılması zamanla bazı sıkıntılara yol açamaya başladı bunu üzerine 1980 yılında PASCAL Uluslararası Standartlar Enstitüsü (ISO) tarafından standartlaştırıldı. (Jensen ve Wirth'in raporu esas olarak hazırlanan Standart PASCAL'ın tanımı ISO'nun DP7185 nolu belgesinde bulunmaktadır). Amerikan Ulusal Standartlar Enstitüsü (ANSI)'de kısa bir süre sonra buna benzer bir standardı kabul etti.

o Pascal programlama dilini seçmeniz için bir çok neden var işte bazıları : 1. Komutlarındaki sadelik, 2. Hızlı bir derleyici, 3. Direk assembly kullanımı, 4. Turbo Vision arabirimi sayesinde, editor, file manager hazırlanabilmesi ve mouse desteği verilebilmesi, 5. Muhasebe programı hazırlayacaksanız mükemmel bir komut seti. Hesaplar ne kadar tutarsa tutsun PASCAL katrilyonlara kadar destek veriyor. 6. MSDOS altında oyun yazmak isteyenler için ideal bir programlama dili.

Pascalda Veri Tipleri Veri Tipleri: Sınırları Kapladığı alan Açıklama TAMSAYI DEĞİŞKEN TİPLER: Byte (0...255 ) 1 byte tamsayı ShortInt (-128 ... 127) 1 byte Word (0 ... 65535) 2 byte Integer (Tamsayı) (-32768 ... 32767) 2 byte LongInt (-21474836482147483647) 4 byte GERÇEK (REAL) SAYI TİPLER: Real (2.9*10-39...1.7*1038) 6 byte Single (1.5*10-45...3.4*1038) 4 byte Double (5.0*10-324...1.7*10308) 8 byte Extended (3.4*10-4932...1.1*104932) 10 byte Comp (-263+1...263-1) 8 byte STRING TİP: String 1...255 karakter 256 byte String[n] n?1...255 karakter n+1 KARAKTER (CHAR) TİP: Char 1 karakter 1 byte hesaplarda geçersiz BOOLEAN (MANTIK) TİP: Boolean 1 byte true-false değerini alır

Program Başlığı : Yazılımı : Program progismi ; Program progismi (Input, output) ; Örnek : Program merhaba ; Program merhaba (Input, output) ; Bir program başlığı, program deyimi ve bir program isminin aralarına bir karakter boşluk bırakılarak aynı satırda yazılmasıyla oluşur. İkinci yazılış formu ise sadece standart Pascalda geçerlidir. Input kelimesi keyboarddan data girileceğini, output ise program çıktısının ekrana yazılacağını belirtir. Turbo Pascal da program başlığı kullanmak isteğe bağlıdır. Kullanılmaması hataya sebep olmaz.

Uses Bloğu: Turbo Pascal standart ünitesi altında tanımlanmış olan prosedür ve fonksiyonları program içersinde kullanabilmek amacıyla yer alır.

Yazılımı : Uses ünite_listesi ; Örnek : Uses Crt , Dos, Printer, Verigir ; Turbo Pascalda bazı standart prosedürler (clrscr, gotoxy gibi...) Unit denilen bir dosya adı altında tanımlanmışlardır. Bu prosedürleri kullanabilmek için hangi unit altında bulunduğunu uses tanımlama bloğu içersinde yazmak gerekir. Yukarıdaki örneklerden ilk üçü (crt, dos, printer) Turbo Pascal standart ünitesidir. Dördüncü örnek "verigir" ise programcı tarafından hazırlanmış ünitedir ve bu ünite içersinde çeşitli prosedür ve fonksiyonlar tanımlanabilir. Crt, dos, printer gibi standart üniteler Turbo Pascal dosyaları arasında bulunan Turbo.tpl içerisindedirler. Programcı tarafından yapılan ünitelerin uzantısı ise *.tpu 'dur. Yukarıda programcının tanımladığı ünite örneği olarak verigir.tpu dosyası verilmiştir.

Const Bloğu: Pascalda sabit tanımları CONST bloğunda yapılır. Sabitlerin (constant) özelliği program içerisinde değerlerinin değiştirilememesidir. Bir sabitin tanımlanması için önce sabitin adı, sonra "=" ve sabit değeri yazılır.

Sabit tanımlamak için CONST Yazılımı : CONST Sabit adı [:tip] = değer; (Tip değeri belirtilmek zorunda değildir) Örnek: Const Pi = 3.14; Bu blokta yapılabilecek diğer bir tanım ise değişkenlere ilk değer verilmesidir. Bunun için önce değişkeninizin adını yazıyorsunuz sonra ":" koyup tipini belirliyorsunuz ve ilk değer vermek için "=" yazıp ilk değerini veriyorsunuz. Örnek: Const Sayac : byte = 0; Örnek :

Const Max : Integer = 999; Min : Integer = 0; Enter : Char = #13; Esc : Char = #27; Sifre : String[9] = `BURSA`; Mesaj :`iyi çalışmalar`;

Var Bloğu: Pascalda değişken tanımlamak için VAR bloğu kullanılır. Bu blokta bir değişken (variable) tanımlamak için önce değişkenin adı, sonra ":" (iki nokta üst üste) ve son olarak da değişkenin tipi belirtilir. Aynı tipte olan değişkenleri virgülle ayırarak bir defada da tanımlayabilirsiniz. Değişken tanımlamak için VAR komutları kullanılır.

Yazılımı : VAR Değişken1[,değişken2...] : tip; Matematik biliminde bir değişken, sabit olmayan bir nümerik değerin yerini tutan bir karakterdir (rakamsal değeri değişebilen bir harf). Turbo Pascalda da bu olay temelde aynidir.Bu işaret basit olarak 'iki nokta üst üstenin yanına gelmiş bir eşittir dir, yani ':='. Farz edelim ki sayi adını verdiğim bir değişkenim var (C.N. - değişken tanımlarken Türkçe karakterler kullanmıyorum. Çünkü hatalı sonuçlar doğurabilir.) ve ben bunun içine '2' değerini atadım. Demek ki artık sayi değişkenim 2 değerini belirtmeye başlamıştır. Örnek olarak aşağıdaki işaretler ve verdikleri sonuçları inceleyiniz. İfadeler: sayi := 2; writeln('SAYI: ',sayi); Ekran çıktısı: SAYI: 2 veya sayi := 2+1; writeln('SAYI: ',sayi); Ekran çıktısını bu sefer öncekinden farklı olarak: SAYI: 3 şeklinde gözükecektir. (Dikkat ettiyseniz bu ifadelerdeki writeln komutu hem yazı (text) ifadeleri hem de değişkenleri birlikte bulundurmaktadır ve virgülle de birbirlerinden ayrılmışlardır. Bu uygulama tamamıyla kurallara uygundur.) Bir değişkene başta bahsettiğimiz ayrılmış sözcüklerden biri olmamak kaydıyla istediğiniz ismi verebilirsiniz. Yani bir değişkene begin veya end gibi adları koyamazsınız. İsterseniz değişkeninizin içeriğini ekrana da bastırabilirsiniz. Ancak normal yazılarda yaptığınız gibi değişkenlerinizi de tek tırnak (') içinde yazmayın; yoksa ekrana değişkenin içeriği yerine adi basılır. Mesela aşağıdaki program parçacığı sayi := 3; writeln(sayi); writeln('sayi'); aşağıdaki çıktıyı verecektir. 3 sayi Değişken ve Sabit İsmi Seçilirken Dikkat Edilmesi Gereken Kurallar : 1. Daima bir harfle başlaması gerekir. Değişken isimleri rakamla başlayamaz. 2. Değişken ve sabit ismi olarak Pascal deyim ve komut adları kullanılamaz. 3. 63 Karakterden daha uzun olamaz. Eğer daha uzun isim verilirse ilk 63 karakter geçerli olur. 4. Aritmetik ve işlem operatörlerini içeremezler. 5. Değişken ve sabit isimleri arasında boşluk bırakılamaz. Ancak alt çizgi "_" karakteri birbirinden ayırmak için kullanılabilir. 6. İçersine atanacak değeri anımsatacak kısaltmalardan oluşmalıdır.

Örnek 2.1: Var Sayi : integer; İsim, Soyisim : string; Örnek 2.2: Var Maas : LongInt; Fatura_tut : Real; Not1,Not2,Not3 : Byte; Adres : String [50]; Telefon : String [12]; Ad_Soyad : String [30]; Tus : Char; I : Integer; J : Byte; Devammi : Boolean; Örnek 2.3: program degiskenleriOgreniyoruz; uses crt; var Numara1,Numara2,Numara3:Integer; Kelime:String; begin clrscr; Numara1 := 76; Numara2 := 53; Numara3 := Numara1 + Numara2; Kelime := 'Sum'; writeln(Kelime, ': ', Number3); readln; end. Var bloğu başka bir bloğun başlaması ile biter. Programınızın daha okunaklı olması için ":" leri alt alta getirmeye özen gösterebilirsiniz. Unutmayın ki iyi bir programcı kodunun okunurluğundan belli olur.

Karakter ve Alfanümerik Tipler Bu tip değişkenlerin içinde isim, adres gibi sayısal olmayan değerler tutulur. Tip Değer Açıklama Char 'a','z'... Tek karakterlik değişkenler (8 bit). String (0..254 karakter) Karakterlerden oluşan dizidir String değişken tipleri kelime değeri olan değişkenlerdir. Bu tipin değişkenleri, herhangi bir karakter dizisini ve sayıları da içeren herhangi bir değeri tutabilir. Fakat önemli olan nokta şu ki; bir string değişken herhangi bir sayı değerini tutuyor da olsa sadece bir grup karakter ifade eder ve kesinlikle real veya integer tipi değişkeni gibi değerlendirilmemelidir. Şunu da hatırdan çıkarmayalım: Herhangi bir string değişkenine değer ataması yapılırken atanan değer tek tırnak (') arasına konulur. Örnek: kelime := 'Merhaba'; Char değişken tipi bildiğimiz karakterleri (characters) tutar. Fakat Turbo Pascal bu kelimeyi char adıyla kısaltmıştır. Bu değişken tipleri tamamıyla string tipi gibi düşünülebilir. Fakat tek fark, char tipi tek karakter uzunluğunda bir karakter olabildiği gibi ASCII karakter tablosundaki herhangi bir karakter de olabilir. String'ler gibi sayı değerleri tutabilirler ama yine onlar gibi bu sayi değerleriyle işlem yapamazlar. Örnek: 'a' , 'A' , '3' , '!' , '&' , '{' , '+' , vb.

Tamsayı Tipleri Pascalda değişkenleriniz için tanımlayabileceğiniz veri tiplerini aşağıda bulabilirsiniz. İşaretli veya işaretsiz tamsayıları ifade etmek için kullanabileceğiniz çeşitli aralıkları kapsayan değişken tipleridir. Programlarınızda en çok kullanacak olduğunuz tipler de yine bu tiplerdir. Tip Değer Açıklama Byte 0..255 İşaretsiz tamsayılar (8 bit). Shortint -128..127 İşaretli tamsayılar (8bit). Integer -32768..32767 İşaretli tamsayılar (16 bit) Word 0..65535 İşaretsiz tamsayılar (16 bit). Longint -2147483648..2147483647 İşaretli tamsayılar(32 bit).

Tamsayı Tipleri Bu sayı tipleri sabit veya kayar noktalı gerçel sayıları ifade etmekte kullanılırlar. Özellikle büyük rakamlarla veya bilimsel araştırmalarla uğraşıyorsanız bu tip değişkenlere çok işiniz düşecek demektir. Tip Değer Basamak Açıklama Real 2.9e-39..1.7e38 11-12 6 byte lık yer tutar Single 1.5e-45..3.4e38 7-8 4 byte lık yer tutar Double 5.0e-324..1.7e308 15-16 8 byte lık yer tutar Extended 3.4e-4932..1.1e4932 19-20 10 byte lık yer tutar Comp -9.2e18..9.2e18 19-20 8 byte lık yer tutar

Aşağıdaki değerler bilimsel notasyonda yazılmıştır. Düzgün görüntüsü için şu örnekten yararlanabilirsiniz : 2.9e-39 = 2.9 * 10-39 Mantıksal Tip Sadece doğru veya yanlış değerini tutabilen değişkenlerdir. Karar vermenizde size yardımcı olacaklarına emin olabilirsiniz. Doğru için 1, yanlış için 0 olarak düşünebilirsiniz. Boolean değişkenleri sadece iki değer alabilir. TRUE (doğru) ve FALSE (yanlış). Bunlar kullanışlı birer işaretçidirler (flag) ve karsılaştırma amaçlı kullanılırlar. Tip Değer Boolean True,False (1,0)

Örnek 2.4 :Pascal da kullanılan değişkenlerin örneklenmesi. pascal değişkenler Program Degiskenler; Const i : integer = 567; b : boolean = True; c : char ='A'; s : String[10] = 'Pascal'; Begin WriteLn ('123456789'); WriteLn (i:9); WriteLn (b:9); WriteLn (c:8); WriteLn (s:9); WriteLn (i:1); WriteLn (b:1); WriteLn (c:1); WriteLn (s:1); WriteLn (i,b,s); WriteLn (i,'..',b); WriteLn ('i = ',i); WriteLn (s:5); readln; End.

 

ANLATILACAK KONULAR: II: SABİTLER, DEĞİŞKENLER VE OPERATÖRLER B -Programcının tanımladığı değişken tipi 1) Küme veri tipi (set type) 2) Dizi veri tipi (Array Type) 3) (Type) Basit veri tipi 4) Record veri tipi (record type) B- Programcının Tanımladığı Değişken Tipleri : Pascal 'da tanımlı olmayan, programcı tarafından type tanımlama bloğunda oluşturulan ve özel amaçlar için kullanılan veri tipleridir. Pascal 'ın standart veri tipleri (real, integer, char, boolean, string), bir programda tanıma gerek duyulmaksızın kullanılabilir. Ancak bazı durumlarda verilerin işlenmesinde yetersiz kaldıkları görülür. Örneğin, haftanın günlerinin veri olarak kullanılacağı bir programda hiçbir standart tipi uygun değildir. 1-SET (Küme) Tip Aynı tipte ve birbirleriyle ilgili bilgilerin oluşturduğu bütündür. Kümedeki elemanların arasına virgül konulur. Eğer kümedeki elemanlar birbirini takip eden elemanlardan oluşuyorsa bu değerler arasına iki nokta ( .. ) konulur. Aynı tipte ve birbiriyle ilgili bilgilerden oluşan nesneler topluluğuna küme denilir. Bir küme birbirinden farklı bilgilerden meydana gelir. Kümeyi oluşturan bilgilerin her birine bu kümenin elemanı denilir. Elemanı olmayan kümeye boş küme denir. Pascal daki kümeler de matematikteki tanımı gibidir. Ancak şu iki özelliğe dikkat etmek gerekir. 1. Küme elemanlarının tipi aynı olmalıdır. 2. Küme elemanları real sayılardan oluşamaz. Kümeyi oluşturan elemanların arasına virgül konularak, köşeli parantez içinde yazılırlar. Kümeyi oluşturan elemanların sıralanışı önemli değildir. Örneğin [1,2,3] ve [2,3,1] kümeleri aynıdır. Pascal küme elemanı olarak değişkenler de kullanılabilir. Örneğin[I, J] kümelerinde I ve J birer değişkendir. Örnek : ['X'] ['A'..'Z'] [0..9] ['E','H',#27] [1,2,3,4] [1..4] Açıklama: Son iki örnekte verilen kümeler birbirine eşittir. Küme tipinde bir tip tanımlamak için Type deyiminden yararlanılır. Özel bir tip olan küme tipi verileri için Set Of ifadesi kullanılır.

IN Operatörü IN operatörü, bir elemanın, bir küme içerisinde bulunup bulunmadığını test eder. Yazılımı : eleman IN küme Örnek : sayı IN [1,2,5,6] Yukarıdaki örnekte verilen ifadenin sonucu, sayı değişkeninin içerisindeki değer küme içerisinde bulunuyorsa true, yoksa false 'dir. Küme Tipi Değişkenlerin Tanımlanması Yazılımı :VAR Değişken_Listesi : SET OF sıralı_tip_veri ; Örnek : Var Kume1, kume2 : set of 'A'..'Z' ; Kume3 : set of 1..12 ; Değişken listesinde birden fazla değişken yazıldığında, değişkenler arasına "," konulması gerekir. "set of" kelimesinden sonra yazılan veri_tipi sırasal tip, yani sınırları belirlenmiş tam sayılar veya harfler olmalıdır. Küme tipi değişkenler direkt olarak "var" bloğunda tanımlandığı gibi, "type" bloğunda özel bir tip_ismi oluşturularak da tanımlanabilirler. Örneğin : Type Aylar = (oc,sub,mart,nis,may,haz,tem agu,ey,ek,kar,ar) ; Renkler = (sari,mavi,yesil,kirmizi, turuncu, mor) ; Sayi = set of 1..9 ; Var Yaz, ilkbahar : aylar ; Anarenk : renkler ; Teksayi : sayi ; Var bloğunda tanımlanan "yaz" ve "ilkbahar" değişkenlerinin tipi, "aylar" tipidir. Yani bu değişkene atanabilecek değerler, "type" bloğunda parantez içerisinde yazılan aylardır. "anarenk" değişkeni ise "renkler" tipindedir. Atanabilecek değerler ise "type" bloğunda belirtilmiştir.

Örnek : TYPE Kodlar = Set of 0..255 ; Harf = Set of 'A'..'Z' ; Rakam = Set of 0..9 ; Açıklama: Bir kümede eleman sayısı maksimum 256 olabilir. Herhangi bir karşılaştırma sırasında kümelerdeki elemanların sıralanışları önemli değildir. Kümeler üzerinde aritmetik ve ilişkisel operatörler uygulanabilir.

Küme Tipi Değişkenlere Değer Atama Yazılımı : küme_değişkeni := küme_değerleri ; Örnek : kis := [ara, oc, sub] ; Teksayi := [1,3,5,7,9] ; Anarenk := [kırmızı..turuncu] ; Küme tipi değişkenlere aynen diğer değişkenlere atama yapılırken kullanılan ":=" atama sembolü kullanılır. Küme değeri olarak, o kümeye atanabilecek küme elemanları olabileceği gibi, sınırlandırılmış küme elemanları da olabilir. (kırmızı..turuncu veya 1800..1993 gibi.) Bir küme tipi değişken ifadelerde kullanılmadan önce bir başlangıç değeri almalıdır. Örneğin sayı:=[ ]. Bu değer genellikle boş küme "[ ]" olur.

2-ARRAY (Dizisel) Tip Aynı tipteki birden fazla bilginin tutulduğu değişken ve sabit isimlere dizi denir. Dizileri tanımlamak için array deyimi kullanılır. Program içersinde aynı tür bilginin aynı anda saklanması durumu söz konusu olunca, dizi tipi değişkenlerden yararlanılır. Örneğin 100 kişinin isimlerini bellekte değişkenler içerisinde tutmak istersek, birbirinden farklı 100 adet değişken ismini var bloğu içinde tanımlamamız gerekir. Halbuki "A" ismindeki bir değişkene A[1], A[2], A[3] ... gibi indisler vererek farklı isimde değişken oluşturmamız mümkündür. İndis sayısı en fazla 32767 olabilir. Yazılımı : TYPE Dizi_tip_ismi =ARRAY [minindis..maxindis] OF eleman_tipi ; Var Dizi_değişkeni : dizi_tip _ismi ; Veya Var Dizi_değişkeni : ARRAY [minindis..maxindis] OF eleman_tipi ; Örnek : Type İsim = ARRAY [1..10] of string [15] ; Var Ogrisim : isim ; Veya Var Ogrisim : ARRAY [1..10] of string [15] ; Dizi_tip_ismi, programcının oluşturduğu özel bir veri tipidir ve dizi tipi değişkenlerin tanımlanmasında kullanılır. Minindis değeri 0, maxindis değeri 32767 olabilir. Köşeli parantez içinde yazılan değerler boolean veya char tipi veri olabileceği gibi, sınırlı tip bir veri de olabilir. Eleman_tipi, dizi içersindeki her bir elemanın tipini belirlemek için kullanılır. Bir dizi içersindeki elemanların aynı tipte olduğu unutulmamalıdır. Eleman_tipi, standart bir tip (real, integer, char, boolean, string) olabildiği gibi programcının tanımladığı özel bir veri tipi de olabilir. Örnek : Array [1..100] of Real Array [1..10,1..5] of byte

3-TYPE (Basit) Tip Kullanıcının kendi isteğine göre özel veri tipleri tanımlaması için kullanılır. Yazılımı : TYPE Tip adı = Tip ;

Data tipleri programcının compilere datanın nasıl saklanacağını bildirmekte kullandıkları bir yoldur. Bir değişken tanımlandığı anda onun data tipini de mutlaka tanımlamak zorundasınızdır. Bazı data tipleri kullanılan dil tarafından standart olarak tanımlanmıştır zaten.Diğer tipleri ise kullanıcı kendisi tanımlayabilir.Pascal bu tip bir esnekliği ilk sağlayan dillerden birisidir. Kullanıcı tarafından tanımlanan tipler Pascalda TYPE bloğunda tanımlanır.

Type tip1 = tip_tanımı1; (* Her yeni tipe bir isim verilir ve önceden tanımlı tipler *) (* kullanılarak tanımlanır *) tip2 = tip_tanımı2; (* İstediğimiz kadar tip tanımı yapabiliriz *) tip3 = tip1; { Yeni tanımladığımız bir tipi başka bir tip tanımı için de kullanabiliriz. Tip tanımları bazen çok karmaşık olabilecekleri gibi bazen de çok basit olabilirler } int = integer; CharData = array['A'..'Z'] of Byte;

Var var1 : tip3 (* her yeni değişken için bir isim ve bir tip verilir. *) var2, var3 : tip2 (* aynı tipte olan değişkenler bir defada tanımlanabilir *) Sayı : int; Char_dizi : CharData;

Type bloğunun en önemli kullanım yerleri ise record (kayıt) ve set (küme) tipi tanımlardır.

Örnek 2.5 : Type St = String [20] ; Stg = String [10] ; Isim_t = Array [1..100] of st ; Soyad_t = Array [1..100] of st ; Tel_t = Array [1.100] of stg ; Var Isim : Isim_t ; Soyad : soyad_t ; Tel : Tel_t ;

Örnek 2.6 : Type Dizi = Array [0..4] of Byte ; Const Sayilar : Dizi = (1,2,3,4,5) ;

Açıklama : Bu tanımlama ile sayılar isimli indisli değişkenin değerleri aşağıdaki gibi olur. Sayilar [0] = 1 Sayilar [1] = 2 Sayilar [2] = 3 Sayilar [3] = 4 Sayilar [4] = 5

Örnek 2.7 : Const Sayilar : Array[0..1,0..2] of = ((1,2,3),(4,5,6)) ;

Açıklama : Bu tanımlama ile Sayilar [0,0] = 1 Sayilar [0,1] = 2 Sayilar [0,2] = 3 Sayilar [1,0] = 4 Sayilar [1,1] = 5 Sayilar [1,2] = 6 olur.

Örnek 2.8 : Type Dizi = Array [0..2] of String [10] ; Const Sehirler : Dizi = ('Bursa','Ankara','Ordu') ;

Açıklama : Bu tanımlama ile sehirler değişkenine; Sehirler [0] ='Bursa' Sehirler [1] ='Ankara' Sehirler [2] ='Ordu' bilgileri aktarılır.

Örnek 2.9 : Type Dizi = Array [0..100] of Integer; St20 = String [20]; Açıklama : Buradaki Dizi ve St20, birer tip isimleridir. (Integer gibi) Bu isimler birer değişken olarak kullanılamamakla birlikte tip adı olarak kullanılabilirler.

Örnek 2.10 : Var Isim = St20 ; Sayilar = Dizi ; Açıklama : Isim ve Sayilar isimli değişkenler kullanıcının tanımladığı tiplerdir.

Örnek 2.11 : Type Tamsayi = Integer ; Notlar = 0..100 ; Sayi = -99..99 ; Bilgitipi = Array [1..40] of String [30] ; Ekrantipi = Array [1..25,1..80,1..2] of Byte ; Ekran = Array [1..4000] of Char ;

4-RECORD (Kayıt) Tip Alt alan olarak adlandırılan birden fazla ifadenin oluşturduğu yapıdır. Record tipinde olan veriler Type bölümünde, record-end bloğu içinde tanımlanırlar. Record bloğu içersinde birden fazla alan tanımlanabilir. Her record tip tanımı end deyimi ile son bulur.

Yazılımı : KayıtTipAdı = RECORD AlanAdı1 : TipAdı ; AlanAdı2 : TipAdı ; END ;

Örnek 2.12 : DOGUM_TARİHİ = RECORD GUN : 1..31 ; AY : 1..12 ; YIL : INTEGER ; END;

Nüfus kaydını tümüyle kodlayalım: NUFUS_KAYDI = RECORD SOYADI : STRING [20] ; ADI : STRING [15] ; BABA_ADI : STRING [15] ; ANA_ADI : STRING [15] ; DOG_YERI : STRING [20] ; D_TARIHI : DOGUM_TARIHI ; MEDENI_HL : CHAR ; DINI : STRING [10] ; END; Örnek 2.13 : Musteri = Record Ad , Soyad : String [15] ; Adres : String [40] ; Telefon : String [12] ; Borc : LongInt ; End;

Verilen musteri tip ismi özel bir tip olarak kabul edilir. Değişkenleri tanımlamada kullanılır. Yukarıda tanımlanan musteri tipinde bir değişken tanımlamak için VAR değişken tanımlama bloğu kullanılır: Var Mus : Musteri ; Mus değişkenine bağlı olan alt alanları tanımlamak için, bu değişken ismi ile alt alan ismi arasına nokta konulur. Mesela ad ve soyad alanlarına bilgi atamak için : Mus.Ad : = 'ÖMER' ; Mus.Soyad : = 'GÖÇEBELER' ;

Record'u oluşturan alanlar herhangi bir tipte olabilir. Bir record tanımı içersinde daha önce tanımlanmış olan başka bir record ismi, alt alana ait bir tip ismi olabilir.

Örnek 2.14 :

TYPE ISIMKAY = RECORD Ad : String [15] ; Soyad : String [15] ; END; MUSTERIKAY = RECORD İsim : isimkay ; Adres : String [40] ; Sehir : String [15] ; Meslek : String [20] ; END; VAR Kayit : Musterikay ; Index : Isımkay ; ( : : : ) Begin Index . Ad : = 'Mehmet' ; Index . Soyad : = 'Göbek' ; Kayit . Isim : = Index ; Kayit . Meslek : = 'Mühendis' ; Kayit . Adres : = 'Göbekli Köyü' ; Kayit . Sehir : = 'ŞanlıUrfa' ; ( : : : ) End.

Record tipi dosyalama işlemlerinde kayıt desenini oluşturmakta kullanılır.Yani bir tek kayıt için, o kaydın hangi alanına hangi değişkenlerle erişilebileceğinin tanımlanmasında kullanılır.Örneğin öğrenci takibi programı yapılacaksa, bunun için aynı kayıtta hem adı, hem soyadı hem de öğrenci no'su tutulacak olsun.Bu kayıtları tek tek değişkenlere atayıp sonra dosyaya tek tek yazdırmak yerine, hepsini record yapısı içindeki değişkenlere atayıp bir defada dosyaya yazdırmak daha kolaydır.Buna benzer şekilde record yapısında tanımlı bir değişkenin içine dosyadan bir kayıt okuduğunuzda istediğiniz alanlara kolaylıkla erişirsiniz.

Örnek 2.15 : Type Ogr_Kayit = record No : integer; Ad : String[30]; Soyad : String[30]; end; var Ogrenci : Ogr_Kayit; { Ögrenci değişkeni içinde No, Ad ve Soyad alanları } ... { bulunur. Bu alanlarla ilgili işlemler sadece öğrenci } ... { değişkeni kullanılarak yapılabilir. } Record yapısında tanımlanmış bir değişkenin içindeki değişkenlere direkt olarak erişemezsiniz. Bu değişkenlere erişmek için Ogrenci.Ad, Ogrenci.No,... formatını kullanmalısınız. Var_bloğunda_tanımlanan_değişken.alanın_adı

Örnek 2.16 : Şimdi yukarıdaki örneğimizi geliştirerek gerçek bir örnek program yapalım. Bir sınıftaki öğrencilerin tamamının Ad,Soyad ve Nosunu tutabilen ve istendiğinde ekrana dökebilen bir program yapalım. Örneğin 10 öğrenci için yapalım. 10 rakamını değiştirerek daha az/fazla öğrenci kaydı yapabilirsiniz. Yada indeks değerini 100 yapıp sadece 10 tanesi için bilgi girişi yapabilirsiniz.

1. Type 2. Ogr_kaydi = record 3. No : integer; 4. Ad : String[30]; 5. Soyad : String[30]; 6. end; (* of record *) 7. int = integer; 8. Var 9. Ogrenci : array [1..10] of Ogr_Kaydi; 10. i,n : int; 11. Begin (* Program Body *) 12. write('Kaç ogrenci bilgisi girilecek (max 10) : '); 13. readln(n); 14. for i := 1 to n do 15. begin 16. write(I,'.Ogrenci Nosu : '); readln(Ogrenci[i].No); 17. write(I,'.Ogrenci Adı : '); readln(Ogrenci[i].Ad); 18. write(I,'.Ogrenci Soyadı : '); readln(Ogrenci[i].Soyad); 19. end; {of for} 20. writeln('Girilen kayıtlar :'); 21. for i := 1 to n do 22. begin 23. write(i,'-',Ogrenci[i].No); 24. write(' ',Ogrenci[i].Ad); 25. writeln(' ',Ogrenci[i].Soyad); 26. end; {of for} 27. End. (* of program *)

Açıklamalar : 1. Type bloğu tanımlamasına başladığımı bildiriyorum. 2. İsmi Ogr_Kaydı olan bir record tanımlamasına başlıyorum. Arada eşittir kullandığıma dikkat edin. 3. Artık record yapısının içindeki elemanlar tanımlanmaya başlandı. Bu kısımda sanki Var bloğunda imişiz 4. gibi değişkenin adı'ndan sonra iki nokta üst üste (:) ve değişken tipi verilir ve noktalı virgülle (;) o tanım 5. sona erdirilip bir sonraki tanıma geçilir. Biz basit bir sınıf listesi hazırlayacağımıza göre No, Ad ve Soyad bizim için yeterli olacaktır. 6. record tanımlamamızın sona erdiğini belirten end; deyimi. Her record deyimi bir end ile bitmelidir. 7. integer tipinde int diye bir değişken tanımladım. Bu özellikle C kullanıcılarının yaptığı bir triktir. C de integer tanımlamaları int deyimi ile yapılır. Burada da bundan sonraki integer tanımlamalarımızı int ile yapabileceğiz. Eğer ilk olarak bu komutu kullanmış olsaydık record içinde bile kullanmamız mümkün olabilirdi. Bunu siz deneyebilirsiniz. 8. Artık Type bloğunda işimiz bitti. Var bloğuna geçiyoruz. 9. İlk iş olarak tanımladığımız record tipini hemen bir değişkende kullanıyoruz.Hem de dizi olarak tanımlıyoruz. Unutmayın ki Type bloğunda yaptığımız tip tanımlamasıydı. Şimdi bu tanımladığımız tipi değişken tanımlamada kullanıyoruz. Tip tanımlarınızı değişkenmiş gibi kullanamazsınız.

10. i ve n adında ve int (!!) tipinde 2 değişken tanımladık. 11. Artık programımıza başlayabiliriz. (* *) açıklama parantezleri. İhtiyaç duydukça ama programın okunabilirliğini bozmadan bolca kullanabilirsiniz. 12. En fazla kaç kayıt yapılacağını kullanıcıya soruyoruz. En fazla 10 olabileceğini de belirtiyoruz ki kullanıcı uçup absürd değerler yazmasın. 13. readln deyimi ile kaç kayıt yapılacağını n değişkeninin içine okuttuk. Eğer aynı satırda bir şeyler yazdırıp sonunda soru soracaksanız. write - readln çiftini kullanın. Neden Acaba ?? 14. Bir döngü başlattık. 1'den başlayacak ve n içinde kaç varsa o kadar dönecek. 15. döngü içinde birden fazla işlem yapılacağından hepsini begin - end bloğu içine alıyoruz. 16. İşte az evvel bahsi geçen write - readln çiftleri... Write deyiminde i'yı ne güzel kullanmışım değil mi? Ama daha önemlisi readln deyimi içinde neler olduğu : readln( Ogrenci[i].No ); 17. Ogrenci dizisinin i. elemanının No'sunu klavyeden oku . Tipi ne olursa olsun bizim dizimizin adı Ogrenci. Dolayısı ile indisi onun yanında belirtiyoruz. Sonra bir nokta (.) ve No yazıyoruz ki bu değişkenin alt seviyesinde bulunan No değişkenine ulaşabilelim. 18. aynı mantıkla i değişmediği için hala aynı değişkenin değişik alt değişkenlerine değerler okutuyoruz. 19. İşte for döngüsü bitti. Bir begin ile blok başladığı için de bir end; ile bloğu kapattık. 20. Şimdi de girdiğimiz kayıtları ekrana listeleyeceğiz. Bir başlıktan sonra işimize başlıyoruz. 21. Yine i değişkenini döngümüze indis olarak kullanabiliriz. Başka bir işe yaramıyor zaten. Yine dizinin n'e kadar olan bilgilerinin dökümünü yapacağız. 22. Blok gerekiyor. Begin ile bir blok başlangıcı yapalım. 23. yine i'yi çok akıllıca kullanmışım. Helal bana. Onun dışında değişkene erişmek için aynı yolu kullandığımızı söyleyebiliriz. Önce değişken ve indisi Nokta altdeğişken.write(i,'-', Ogrenci[i].No ); 24. Bu seferki write'ın ilk elemanı 3 boşluk. Amaç ekran çıktısı okunabilir olsun. Onun yerine tab karakteri de kullanılabilirdi. Ama numarasını hatırlayamadım. Eğer ne olduğunu bulabilirseniz chr(#numarası) şeklinde kullanabilirsiniz. Mesela 9 ise write chr(#9) ),'Ogrenci[i].Ad); 25. Son olarak ise writeln kullandım. Çünkü bundan sonraki değerin alt satırdan çıkmasının istiyorum. 26. For döngüsü bitti. End; ile kapattık. 27. Program da bitti. Onu da End. ile kapattık.

Record tanımı içinde yeni record tanımları yapılabilir. Mesela

Stk_har=record Stk_NO : integer; Har_tipi : char;

Har_tarihi=record Yil : byte; Ay : byte; Gün : byte; end;

Miktar : real; end;

WITH Record tipine sahip bir değişkenin program içersindeki kullanımında, değişken ismi ile alt alan ismi arasına nokta konuluyor. Her alt alan isminden önce değişken isminin yazılması hem programı uzatmakta, hem de yazılması zaman almaktadır. Bunu engellemek için WITH deyimi kullanılır.

Örnek 2.17 : Begin With Index Do Begin Ad : = 'Mehmet' ; Soyad : = 'Göbek' ; End ; With Kayit Do Begin Isim : = Index ; Meslek : = 'Mühendis' ; Adres : = 'Göbekli Köyü' ; Sehir : = 'ŞanlıUrfa' ; ( : : : ) End.

LABEL Etiket tanımlamak için kullanılır. Etiketler programlar içersinde GOTO komutu ile işlemin gideceği yeri belirler. Bir etiket adı tanımlanabileceği gibi aralarına virgül konulmak suretiyle birden fazla da etiket adı tanımlanabilir.

Yazılımı : LABEL Etiket adı1 [,Etiket adı2, ...] ;

Örnek 2.18 : LABEL Basla , Cikis , 20 , Proc5 , hesaplama ;

Pascal Programlarının Yazım Kuralları Noktalama İşaretleri ve Tanımlama Kuralları : 1. Programlar, program başlığı ile başlar. Ancak kullanımı zorunlu değildir. 2. Program içinde kullanılacak tüm isimler tanımlama bloğu içinde tanımlanmalıdır. 3. Bütün sabit tanımlamaları Const kelimesinden sonra gelir. 4. Bütün değişken tanımlamaları Var kelimesinden sonra gelir. 5. Begin kelimesi Ana Program bloğunun başladığını bildirir. 6. Ana program bloğu, makine diline çevrilip çalıştırılacak olan deyimlerden oluşmuştur. 7. Programın en son satırı "end ." kelimesidir. 8. Her program bloğu birden fazla end deyimi içerebilir, ancak bu end deyimleri program sonunu değil alt blokların sonunu gösterir ve sonlarında ";" işareti vardır. 9. Program bloğu içindeki deyimler ";" ile birbirinden ayrılmalıdır. 10. ";" işareti ilk deyimden önce ve son deyimden sonra konulması gerekmez. 11. Begin kelimesinden sonra ";" işareti konulmaz.

Büyük ve Küçük Harf Kullanımı : Turbo Pascal da, standart deyim veya kullanıcının belirlediği isimlerin büyük veya küçük harfle yazılması tamamen serbesttir. Çünkü Pascal derleyicisi büyük ve küçük harfler arasında ayırım yapmaz. Pascal deyimleri istenirse karışık olarak da yazılabilir.

Deyimler Arasındaki Boşluklar : Pascal programlarında satır numarası olmadığından, programın okunabilirliğini artırmak gerekir. Pascal da bu konuda büyük serbestlik vardır. Ancak bir Turbo Pascal satırı en fazla 127 karakter uzunluğunda olabilir.

Okunurluluğu Kolaylaştıran Bazı Kurallar : 1. Virgül ve aritmetik operatörlerden (*,-,/,+) önce ve sonra bir boşluk bırakınız. 2. Begin, end, var, const kelimeleri dışında kalan diğer program satırlarını içeriye girintili olarak yazınız. 3. Bir atama deyimi gibi iki karakter birlikte kullanılan sembolleri birbirinden ayırmayınız. ":=" 4. Tanımlama isimleri arasında boşluk bırakılmaz. Örneğin "net maas" bir değişken ismi olarak kullanılamaz. Ancak okunurluğu kolaylaştırmak için iki kelime arasına "_" konulabilir. "net_maas" gibi.

ANLATILACAK KONULAR: C - Operatör 1) Aritmetikal operator 2) İlişkisel operatör 3) Mantıksal operator Operatörler

Pascalda programlama esnasında en fazla ihtiyaç duyulan şeyler herhalde operatörlerdir. Değer atamalarından mantıksal karşılaştırmalara ve aritmetik işlemlere kadar onlar bizim en büyük yardımcılarımızdır. İşin aslı onlarsız herhangi bir dil de olamazdı. Şimdi kısaca bu operatörleri inceleyelim.

? Aritmetik Operatörler ? Mantıksal Operatörler ? İlişkisel (Karşılaştırma) Operatörleri

Aritmetik Operatörler : Aritmetik işlemlerin yapılmasında kullanılan operatörlerdir. Operator İşlemi İşlem Tipleri Sonuç tipi + Toplama integer,real integer,real - Çıkarma integer,real integer,real * Çarpma integer,real integer,real / Bölme integer,real real,real Div Tamsayı Bölme integer,real integer,real Mod Kalan integer integer

Matematik formüllerinin Pascal 'a aktarılmasında dikkat edilmesi gereken ilk nokta, aritmetik operatörlerin işlem önceliklerine göre doğru olarak kullanılmasıdır. İşlem öncelikleri : Parantez içi, üs alma, çarpma, bölme, toplama ve çıkarma şeklindedir.

Div operatörü tamsayılı bölme işlemi için kullanılır. Sonucu integer tipte bir bilgidir.

Örnek : 3 Div 15 = 0 3 Div -15 = 0 15 Div 3 = 5 15 Div -3 = -5 16 Div 3 = 5 16 Div -3 = -5 17 Div 3 = 5 -17 Div 3 = -5 18 Div 3 = 6 -18 Div -3 = 6 Mod operatörü, bölme işlemi sonucunda kalan değeri verir. Sonucu integer tipte bir bilgidir.

Örnek : 3 Mod 4 = 3 10 Mod 3 = 1 -10 Mod 3 = -2 4 Mod 4 = 0 10 Mod 4 = 2 -10 Mod 4 = -1 5 Mod 4 = 1 25 Mod 5 = 0 -25 Mod 5 = 0 6 Mod 4 = 2 25 Mod 6 = 1 -25 Mod 6 = -3 7 Mod 4 = 3 25 Mod 7 = 4 -25 Mod 7 = -1 8 Mod 4 = 0 25 Mod 8 = 1 25 Mod 0 = Tanımsız Şunu gözlemlemek mümkündür ki sayıları birbirine birçok kez bölüyorsak cevabı tamsayı olarak alamayız. Mesela '3/2 = 1.5'. Burada 3 ve 2 gibi tamsayıların birbirine bölünmesinde gerçel (real) sayı elde ediyoruz. Buradaki tamsayılar arası bölme işlemi gibi işlemlere özel olarak Turbo Pascalda iki ayrılmış sözcük kullanılır. 'div' sözcüğü bir sayının diğeri içinde kaç kere bulunduğunu bulmaya yarar. Yani writeln('Uc, onbir"in icinde ',11 div 3,'kere var.'); (Tek tırnak içindeki string ifadelerin arasında üçüncü bir tek tırnağın nasıl bir hataya yol açacağını inceleyin. Onun için mecburî hallerde çift tırnağa başvurmanız göz zevkini bozsa da hataya yol açmayacaktır.) program parçacığı, Üç, on bir"in içinde 3 kere var.Sonucunu üretir. 11, 3'e bölündüğünde tam olarak 3'e eşit olmaz; fakat 11 sayısını 3'e böldüğümüzde bolum hanesinde 3 sayısını görmekteyiz. Dolayısıyla '11 div 3 ifadesi 3 sonucunu verir.' diyebiliyoruz. 'mod' sözcüğü ise kalanı verir. Şöyle ki; writeln('Uc, onbir"e bölündüğünde bolum ',11 div 3,' kalan ise ',11 mod 3,' olur.'); şeklinde bir program parçacığı, Üç, on bir"e bölündüğünde bolum 3 kalan ise 2 olur. Çıktısını üretir. 3 sayısı 11'in içerisinden 3 defa (maksimum sayıda) çıkartıldığında (3*3 = 9) 11' e ulaşmak için geride hala sayılar kaldığını görüyoruz. Sonuçta o sayıya ulaşmak için kalan sayıyı 'mod' ile buluyoruz. İkinci bir örnek: writeln('25, 867"ye bölündüğünde ',867 div 25,' bölümünü ve , '867 mod 25' kalanını verir.'); aşağıdaki gibi bir ekran çıktısı verecektir. 25, 867"ye bölündüğünde 34 bölümünü ve 17 kalanını verir.

Pascal'da Operatörlerin Önceliği

Operatör Öncelik @, Not Yüksek *, /, div, mod, and, shl, shr İkinci derece +, -, or, xor Üçüncü derece =, <>, <, >, <=, >=, in Dördüncü derece

1- İki operand arasındaki farklı operatörlerde önceliği yüksek olan önce işleme girer. 2- Eğer aynı önceliğe sahip operatörler kullanılıyorsa öncelik soldakinindir. 3- Tüm bu operatörlerin önceliğini değiştirebilecek tek şey parantezlerdir. Parantezler daima ilk olarak işleme girer. Parantez içi işlemlerde de yukarıdaki öncelikler geçerlidir.

Mantıksal Operatörler : Logic işlemlerin yapılmasını sağlayan operatörlerdir.

Operatör Görevi Operand tipi Sonuç Not Değil Boolean Boolean And Ve Boolean Boolean Or Veya Boolean Boolean Xor Veya Değil Boolean Boolean

İlişkisel (Karşılaştırma) Operatörleri:Karşılaştırma işlemlerinin yapılmasında kullanılan operatörlerdir. Operatörleri Bu operatörlerin sonucu daima boolean döner. Operatör Açıklaması = Eşit olup olmadığını kontrol eder <> Farklı olup olmadığını kontrol eder < Küçük mü? > Büyük mü? <= Küçük veya eşit mi? >= Büyük veya eşit mi?

Boolean önermeleri : Bir Boolean önermesi basit şekilde TRUE (doğru) ya da FALSE (yanlış) değerlerinden birini alabilen bir karşılaştırmadır. Peki niye Boolean denmiş? E tabii her bilimsel terimde olduğu gibi bu terimler de bir bilim adamının ismini almıştır. Bütün Boolean önermeleri <,>,= gibi işaretleri içermek zorundadırlar. bir Boolean önerme örneği: 3 > 4 Bu bir Boolean önermedir ve aldığı değer FALSE'tur. (Önermenin yanlış olduğu açıkça görülüyor. Önermenin değerinin FALSE olması onun hatalı veya geçersiz bir önerme olmasını gerektirmez. Tamamen geçerli bir önermedir ve kullanılması halinde hata mesajı gibi bir sonuç çıkarmaz. Bu yolla ayni zamanda değişkenleri de karsılaştırabiliriz. Real, String, Integer ve Char tipi değişkenleri karşılaştırmada bu yöntem kullanılabilir. Char ve String tipleri alfabetik değer bazında karsılaştırılırlar. Diğerinden alfabetik olarak önce gelen bir stringin sayısal değeri, kendinden alfabetik olarak sonra gelen bir stringden küçüktür. kamil < kemal Yukarıdaki Boolean önerme TRUE' dur. Bu işlem karakter değişkenlerinde (char tipi) de aynidir. String tiplerle karakterleri karşılaştırırken (birbirleriyle değil; kendi aralarında) hatırda tutulması gereken önemli bir nokta vardır. Bir bilgisayar, harfleri karşılaştırırken onların ASCII değerlerini göz önüne alır ve birbirleriyle bu yolla karşılaştırır. Bu yöntem gerçekten ise yarar tâ ki kelimelerin içinde büyük ve küçük harflerin birlikte bulunduğu durumlara kadar. ASCII tablosunda bütün büyük harfler, küçük harflerden önce gelir. Eğer ASCII'nin ne olduğu bilemiyorsanız endişe etmenize gerek yok. Su an için o kadar da önemli değil. Sadece büyük harflerin küçüklerden önce geldiğini bilmemiz yeterli. Bu kuralı göz önüne alırsak aşağıdaki ifade: Z < a TRUE sonucunu verecektir. Bir küçük 'a' nın değeri, büyük harflerin 'A' dan 'Z' ye kadar olan tamamından büyüktür. Bütün bunların nerede kullanılacağını merak ediyor olmalısınız. Boolean önermelerle ilgili derinlemesine bilgi sahibi olmak çok önemlidir. and - or (ve - veya) Bir Boolean önermesi 'and' ve 'or' ayrılmış sözcüklerini de kullanarak birden çok karşılaştırma ifadesini bünyesinde bulundurabilir. Bu iki kelimeyi ileride bazı durumlarda çok faydalı bulacak ve sik sik kullanacaksınız. Çünkü bazen bir ifadenin çalıştırılmasından önce, birden çok şartın ayni anda sağlanması gerektiği durumlar söz konusu olabilmektedir. Veya bazen de iki durumdan herhangi biri ortaya çıktığında başka bir ifadenin isletilmesi gerekiyor olabilir. Su an için sadece aşağıdaki örneği inceleyelim: (not >= 80) and (not < 90) 'and' ve 'or' kullanırken iadeler etrafındaki paranteze dikkat ediniz. Bu önermeler ancak bu formda doğru kullanılabilir. 'and' kullandığımız durumlarda bu ifadenin TRUE değerini alabilmesi için 'and' in her iki tarafındaki karşılaştırmaların TRUE değerini almaları gerekmektedir. Yani yukarıdaki örnekte eğer not 80' den büyük ve 90' dan küçük bir integer değişkeniyse yukarıdaki ifadenin Boolean değeri TRUE dur. Fakat bu ifadenin herhangi bir parçası FALSE olursa ifadenin tümünün Boolean değeri FALSE olur. 'and' kullanarak yaptığımız kombinasyonlara aşağıdaki gibi örnek verebiliriz: TRUE and TRUE = TRUE TRUE and FALSE = FALSE FALSE and TRUE = FALSE FALSE and FALSE = FALSE 'or' un durumu ise biraz değişiktir: (not >= 80) or (not < 90) Burada iki karşılaştırmadan herhangi biri TRUE olduğunda bütün bir ifade TRUE değerini alır: TRUE or TRUE = TRUE TRUE or FALSE = TRUE FALSE or TRUE = TRUE FALSE or FALSE = FALSE

ANLATILACAK KONULAR: III: TEMEL GİRİŞ ÇIKIŞ KOMUTLARI A- Write B- Writeln C- Read D- Readln E- Formatlı çıkış F- Veri kontrolü (compiler bildirileri)

TURBO PASCAL TEMEL GİRİŞ - ÇIKIŞ KOMUTLARI Pascal Programının Genel Yapısı

Pascalın en önemli özelliklerinde birisi de yapısal bir programlama dili olmasıdır. Bu programınızı yazarken size maksimum esneklik sağlar. Aynı zamanda yazdığınız program parçalarını problemsiz bir şekilde birleştirmenizi de sağlar. Her pascal programının ana kodu mutlaka bir BEGIN deyimi ile başlar ve END. deyimi ile biter. (End den sonra nokta olduğuna dikkatinizi çekerim. Pascal derleyicisi için bu tüm programın bittiği yer anlamına gelir.) Eğer program içerisinde aynı blok içerisinde işlem görmesini istediğiniz kodlarınız varsa bunları bir BEGIN - END bloğu içerisine alırsınız. Fakat bu sefer END'den sonra noktalı virgül (;) kullanmalısınız.

Pascal Program yapısında kullanılan terimler : Program : Bu komut ile program için herhangi bir isim yazılır. Kullanımı zorunlu değildir. Uses : Pascal 'ın kendi unit 'lerini (crt, dos, printer, overlay ...) ve/veya kullanıcının kendi hazırladığı unit'leri kullanmak için uses deyimi kullanılır. Type : Özel veri tipleri hazırlamak için kullanılır. Const : Sabit tanımlamak için kullanılır. Var : İstenen tipte değişken tanımlamak için kullanılır. Label : Goto komutu ile program akışının gideceği bölümleri tanımlamak için kullanılır. Procedure : Program parçalarının belli isimler altında yazılarak bir komut gibi kullanılması amacı ile hazırlanır. Function : Program parçalarının belli isimler altında yazılarak bir fonksiyon gibi kullanılmasını sağlamak amacı ile kullanılır. Pascal program yapısı içinde kullanılan bazı işaretler : { } veya * * ? Program içersinde programın istenen bölüm veya bölümlerine açıklama yazmak için kullanılır. : = ?Değişkenlere değer atamak için kullanılır. ' '? Dizgi türü ifadeler iki apostrof işareti arasına yazılır. ; ? Her komuttan sonra kullanılır. Ancak blok başlatan komutların sonunda bulunmaz. # ? Kod numaraları ile karakter veya tuşu belirtmek için kullanılır. Turbo Pascal 'da bir programın yapısı genel olarak aşağıdaki gibidir: Program Prog_Adı Tanımlamalar Procedure ve Function'lar Ana program kesimi Yukarıdaki yapı biraz daha genişletilirse ;?

Program ProgramAdı Uses Kullanılacak unit'ler Type Özel veri tipleri Const Sabitler Var Değişkenler Label Etiketler (goto için) Procedure ProcedureAdı Type ... Const ... Label ... Var ...

Begin : Procedure : alt program kesimi End ;

Function FunctionAdı Type ... Const ... Label ... Var ...

Begin : Procedure : alt program kesimi End ;

Begin : : Ana Program Kesimi : End .

Turbo Pascal 'da işlemler Begin - End blokları arasında yapılır. İç içe istenen sayıda Begin - End bloğu kullanılabilir. Turbo Pascal İngilizce dokümanlarında (öğretici bilgi içeren - tutorial) statement ve expression adlarında iki sözcük geçer. Bunların ikisinin de sözlükteki karşılığı ifade kelimesi olmasına rağmen ikisinin belirttiği şeyler birbirinden farklıdır.

Statement: Turbo Pascalda işletilebilecek anlamlı bir komutun bütününün yazımı tamamlandıktan sonra, bu komut noktalı virgül ";" ile sonlandırılır. Ve bu işaret Turbo Pascal derleyicisi için çalıştırılabilir komutun bittiği manasına gelir. Mesela, Sabah olduğunda yataktan kalk; Yatağını topla; Yüzünü yıka; Kahvaltını yap; vs...

Halbuki,

Sabah; olduğunda yataktan kalk;

şeklinde kullanmış olsaydık iki komut zinciri de anlamsız olacağından hata mesajıyla karsılaşacaktık. İşte Turbo Pascalda, iki noktalı virgül ";" arasında kalan anlamlı komut ya da komutlar zincirine statement diyoruz. Bu sözcüğü Türkçe'de ifade olarak çevirebiliriz.

Expression: Her ne kadar C programlama dilinde statement in ";" konmamış haline expression dense de bu dokumanda bu kelime daha farklı bir işlevde kullanılmış. Şöyle ki; Turbo Pascalda doğru veya yanlışlığı kesin olarak söylenebilen matematiksel önermeler ve bunların ve-veya (and-or) kelimeleriyle birlikte kullanılarak oluşturulan komutların içinde bulunduğu ifadelere Boolean expression denmektedir. Bu sözcükleri de Türkçe'ye Boolean önermeleri olarak çevirebiliriz. Bütün Turbo Pascal programları bir program adıyla başlamak zorundadır. (Bu kural Pascal standardında geçerli olmakla beraber yeni derleyiciler böyle bir mecburiyeti ortadan kaldırmış ve bunu isteğe bırakmıştır.) Öncelikle 'program' yazar; bir boşluk bırakır ve programınızın adinin ne olmasını istiyorsanız boşluktan sonra da onu yazarsınız. Turbo Pascal'ın ayrılmış sözcükleri(reserved words) vardır. Bu sözcükler, programlama dilinde bir komut bildirir ve amacı dışında kullanılamazlar. Dolayısıyla siz de program adinizi bu ayrılmış sözcüklerin dışında bir şey olarak atamalısınız. Mesela 'program' kelimesi bir ayrılmış sözcüktür ve programınıza bir isim atamaya yarar. Ayrıca yazdığınız programın çalıştırılabilir olduğunu da belirtir. Daha sonra başka bir ayrılmış sözcük olan 'begin' ifadesini bir satırda tek başına kullanırsınız; ki bu da Turbo Pascala komutları nereden itibaren çalıştırmaya başlayacağını belirtir. Programınız 'end.' ifadesiyle son bulur. program Ornek;

begin ...; ...; ...; end.

Programlara Açıklama Eklenmesi Program yazımı sırasında kodlarımıza çok sık ekleme ve çıkarmalar yaparız bunlar bazen programları içinden çıkılmaz hale getirebilir, bunu engellemek için Pascalda programlara açıklama satırları ekleyebilirsiniz. Açıklama satırları eklemeniz ileride programda yaptığınız değişiklikleri ve program akışını kolayca hatırlamanızı ve programınızı inceleyen diğer kişilerin programı kolayca anlamalarını sağlayacaktır. Pascalda açıklama satırı yazımı için {,} sembolleri veya (*,*) ikilileri kullanılır bunlar açıklamanın nerede başlayıp nerede bittiklerini belirtir. Programın derlenmesi esnasında bu satırlar derleyici tarafından göz ardı edilir, yani derlenmiş kodda açıklama satırları yer almaz. Açıklamalar birinci tipte { ile başlar } ile biter. İkinci tipte ise (* ile başlar ve *) ile biter. Programlarınızda açıklama satırlarına sıkça yer vermeniz hem sizin hem de programı inceleyen diğer kişilerin programı rahat anlamalarını sağlayacaktır.

Örnek: Var sayi:integer; {sayi değişkeni kaç kişinin adını gireceğimizi saymak için kullanıldı. Bu bir açıklama satırıdır ve derleyici tarafından göz ardı edilir} adi:string[20]; (* Bu da bir açıklama satırıdır ve bu satır da derleyici tarafından göz ardı edilir*) Pascalda değişken tanımlamalarının ve kod satırlarının sonuna noktalı virgül geldiği halde açıklama satırlarının sonuna noktalı virgül gelmediğine özellikle dikkat edin. Değer Atama ve Tip Dönüşümleri

Pascalda diğer programlama dillerinden farklı olarak değer ataması yapılırken ":=" (iki nokta üst üste ve eşittir işaret ikilisi kullanılır). Yani sayi diye bir integer tipindeki değişkene 20 değerini atamak istediğimizde yapmamız gerekenler şöyle olacaktır.

Örnek: Var sayi : integer; { sayi adında integer tipinde bir değişken tanımladık } ... sayi := 20; (* sayi değişkenine 20 değerini atadık *) sayi := sayi + 1; (* sayi değişkeninin değerini 1 arttırdık *) ... Pascalda değişkenlere değer atarken iki nokta üst üste ve eşittir birlikte kullanılır. Eşittir tek başına kullanıldığında karşılaştırma operatörü olarak görev yapar. Pascalda, Standart Veri Tipleri sayfasında da bahsedildiği gibi değişik tiplerde ve değişik uzunluklarda sayılar tanımlama imkanımız var. Programımızın akışı dolayısıyla bazen değişik tip ve uzunluklardaki değişkenlerin birbirlerine değer aktarmaları gerekebilir veya değişik tiplerdeki değişkenler tek bir ifade içinde işleme konulabilir. Böyle durumlarda bu değişkenlerin tiplerinin birbirine dönüştürülmesi gerekir buna tip dönüşümü (Type Casting) denir. Pascalda bu işlem için şu fonksiyonlar kullanılır. trunc(real):longint { real bir değişkeni longint tipine dönüştürür.} int(real):real {real bir değerin tam kısmını alır} frac(real):real {real bir değerin ondalık kısmını alır} round(real):longint {real bir değişkeni en yakın tam sayıya yuvarlayarak longint tipine dönüştürür} str(x,y) { x sayısını karakter dizisi olarak string tipindeki y değişkenine atar} val(x,y,code) {x stringini y integer değişkenine atar. Eğer bu dönüşüm sırasında bir hata oluşursa code değişkeni 0 (sıfır)'dan farklı bir değer alır. Code değişkenin aldığı değer hatanın stringin kaçıncı elemanında oluştuğunu gösterir.} Temel Giriş - Çıkış Komutları : Bilgisayar belleğine bilgi göndermek ve/veya bilgileri tekrar kullanıcıya yansıtmak için kullanılan komutlardır.

? Write, ? WriteLn, ? Read, ? ReadLn ? Formatlı çıkış ? Veri Kontrolü (compiler bildirileri)

WRITE - WRITELN Sabit, değişken veya işlem sonuçlarının bir dosya veya ekrana yazılmasını sağlar. Yazılımı : WriteLn (ifade) veya Write (ifade)

Burada belirtilen ifade sabit, değişken veya işlem olabilir. WriteLn ile yazılar yazıldıktan sonra kursör bir alt satıra geçer. Write komutunda ise kursör bir alt satıra geçmez, aynı satır üzerinde bekler. Yazılan sabit bilgi ve mesajlar ' ' işaretleri arasına yazılırlar. Buraya yazılan bilgi ve mesajlar doğrudan ekrana çıkarlar. Birden fazla sabit bilgi, mesaj, değişken veya işlem olması durumunda aralarına virgül işareti konulur. WriteLn komutu tek başına kullanıldığı zaman, kursör bir sonraki satıra geçer. Write ve writeln komutları, Turbo Pascal'daki en temel komutlardır. Amaçları, çıktıyı (output) ekrana basmaktır. 'Writeln' komutunun uygulaması çok basittir. Sadece komutu yazın ve parantez içerisine -ayrıca tek tırnak içinde olmak üzere- yazdırmak istediğiniz şeyleri yazın.

writeln('Merhaba, guzel insanlar.'); Bu komutun 'write' komutuyla arasındaki fark, en basit ifadesiyle şöyle söylenebilir; ki 'writeln' yazmayı tamamladıktan sonra kursörü bir sonraki satırın başına getirir. Halbuki 'write' komutu onu olduğu yerde bırakır. Örnek olarak; writeln('Merhaba, '); writeln('guzel insanlar'); çıktıyı şu şekilde verecektir. Merhaba, guzel insanlar. Halbuki diğeri ise, write('Merhaba,'); write('guzel insanlar.'); aşağıdaki şekilde bir çıktı verecektir. Merhaba, guzel insanlar. Writeln ifadesi, birden fazla parçalı ifadeleri bünyesinde barındırabilir. İsterseniz, değişkenleri ve yazıları ayni anda writeln ifadesi içine (bunları bir virgülle ayırmak suretiyle) yazabilirsiniz. Şu anda bu bilgi önemsiz gibi gözükse de; ileride bu konuyu daha ayrıntılı incelediğimizde hatırlamamız gereken bir bilgi olarak önümüze çıkmaktadır. Noktalı virgül ";" Az önce geçen örneklerde fark ettiyseniz, her satır sonunda birer noktalı virgül vardı. Bunun sebebi Turbo Pascal'ın bir ifadeyi (bir satırı ya da başka bir şeyi değil) sonlandırma amacıyla bu işareti seçmiş olmasıdır. Yukarıdaki cümlede satır yerine ifade kelimesini seçmemizin sebebi bir ifadenin bazı durumlarda birden fazla satıra yayılmış olma ihtimalidir; ki bu tür durumlarda satır sonlarında ";" işaretini koymayız. Bunun en belirgin bir örneği IF ifadesidir, ancak şimdilik her satirin sonuna ";" koymamızda bir mahsur yoktur. (begin ifadesi hariç.) Örnek 3.1 : Begin Writeln ('Turbo Pascal Öğreniyoruz') ; Readln ; End . Açıklama : Program çalıştırıldığında; ' ' işaretleri arasındaki mesaj ekrana yazdırılır. Readln komutu ile enter tuşuna basıncaya kadar ekranda kalır. Örnek 3.2: Begin Writeln ('Kemal Coşkunöz Anadolu Teknik Lisesi') ; Write ('Bilgisayar Bölümü') ; Write ('10/A Sınıfı') ; Readln ; End .

Açıklama : Program &cc

873
0
0
Yorum Yaz
Ödev Ödev