PASCALPROGRAMLAMA DİLİ
PASCAL NEDİR ?• Pascal bilgisayar programlama dilİ pek çok  öğrenciye bilgisayar programlamayı öğreten  ve çeşitli versiyo...
NE ZAMAN, KİM TARAFINDAN, NE AMAÇLA             GELİŞTİRİLDİ• Bilgisayar bilimcisi Niklaus Wirth Pascalı 1970te  yapısal p...
BÖLÜM 1 : PASCAL’ A GİRİŞ                                     İsimlendirme•    Pascalda büyük ve küçük harf ayırımı olmadı...
Temel Veri Tipleri  Veri tipi (data type), değişken veya sabitin tuttuğu verinin tipini belirtmektedir. Programda kullanıl...
Program Yapısı  Pascal programları bildirim (declaration) ve ifade (statement) olmak üzere iki temel bölümden oluşur. Aşağ...
Giriş/Çıkış İşlemleri  Programın kullandığı veriler isimlendirilerek bellekte saklanmaktadır. Bir ismin temsil ettiği değe...
Aritmetik ve Boolean İşlemler    Aritmetik İşlemler    Pascalda 5 ve 5.0 farklı sayılardır. 5 bir tamsayıdır ve gerçek değ...
Operatörler kullanılarak yazılan aritmetik ifadelerin sonucu bir değişkene aktarılır. Eğer yazılan ifade•    gerçel sonuç ...
Boolean İşlemler  Boolean değişkenleri ve sabitleri True veya False değerlerini alabilmektedir. Eğer bir ifadenin sonucu T...
Aritmetik ifadelerde nümerik değer kullanılarak, yeni bir nümerik değer elde edilir. Benzer şekilde boolean• ifadelerde bo...
BÖLÜM 2 : KONTROL YAPILARI                                  Sıralı Kontrol Yapısı    Sıralı kontrol yapısında ifadeler yaz...
Seçimli Kontrol Yapısı•   İfade veya ifade bloklarının icra edilmesi bir koşula bağlı olabilir. Boolean ifade olarak yazıl...
If/then/else İfadesi•   If/ then/ else ifadesinde iki ifade veya ifade bloğundan birisi icra edilir. Bu ifadede verilen ko...
Case İfadesi•   Koşul olarak bir boolean ifadesinin kullanıldığı if ifadesinde seçilebilecek ifadelerin sayısı ikiyi aştığ...
Case/Else İfadesi  Case ifadesindeki seçici hiçbir etiketle uyuşmadığında case bloğunun dışına çıkılmaktaydı. Uyuşmazlık h...
Tekrarlı Yapı•   Bir ifade bloğunu birden fazla icra edilmesine iterasyon veya döngü (loop) denir.•   Pascalda döngüler; W...
Repeat/Until İfadesi• Çıkış kontrollü döngüler Repeat/until ifadesi kullanılarak yapılır.• İfadenin formatı aşağıda verilm...
For/Do İfadesi•   Döngü ifadelerinin belli sayıda icrası için For/Do ifadesi kullanılır. Bu ifadede, sayaç olarak kullanıl...
•   For/Do ifadesinde To yerine Downto kullanarak sayaç değeri azalan şekilde döngü kurulabilir.•   5ten 1e kadar tamsayıl...
BÖLÜM 3 : ALT PROGRAMLAR                                   Fonksiyonlar•   Fonksiyon verilen parametreler üzerinde bir tak...
•   Fonksiyon aşağıdaki formata uygun olarak tanımlanır:     Function Fonksiyon_adi(parametre listesi):fonksiyon veri tipi...
Prosedürler•   Program ifadelerinin gruplandırılarak bağımsız program dilimi olarak yazılmasıyla prosedürler    elde edili...
Rekürsif Altprogramlar•   Kendi kendini çağıran altprogramlara rekürsif altprogramlar denir. Çözümü güç olan bazı    probl...
BÖLÜM 4 : SAYMA VERİ TİPLERİ•   Önceki bölümlerde yazmış olduğumuz programlarda gerçel sayı,tamsayı, katakter ve boolean  ...
Tip Bölümü• Yeni veri tipleri, değişkenlerin tanımlandığı var bölümünden önce yer alan Type bölümünde belirtilir.  Type bö...
Birebir Sayma Veri Tipi    Bire bir sayma veri tipinde (enumerated), veri tipinin değerleri liste halinde tanımlanır. Elem...
Alt Kademe Veri Tipi  Standart veya tanımlanmış veri tiplerinin bir bölgesi yeni veri tipi olarak tanımlanabilir. Bir veri...
BÖLÜM 5 : DİZİLER     Tek Boyutlu Diziler•   Bu veri tipinde dizinin elemanları bellekte sırayla yer alırlar ve elemanlara...
•   Temel veri tipi kullanarak yazılan sınav notlarını okuyan program:       const           max =40;       type          ...
Çok Boyutlu Diziler•   50 satr ve 80 sütundan oluşan bir sayfa bellekte 4000 uzunluğunda tek boyutlu dizi kullanarak    sa...
BÖLÜM 6 : KAYITLAR     Kayıtların Tanımlanması•   Kayıtların tanımlama işlemi tip bildirim kısmında yapılır. Kayıtlar aşğı...
•    Burada; UrunTip veri tipinin adıdır. Adi, numara ve fiyat ise alan isimleridir. Diğer     isimlendirmelerde uygulanan...
With İfadesi    Aynı kaydın değişik alanlarına erişebilmek için devamlı kayıt ismini yazmak sıkıcı olabilir. Bunu gidermen...
Kayıt Dizileri•     Diziler temel veri tipleri kullanarak oluşturulduğu gibi kayıt tipi kullanarak da oluşturulabilir.    ...
Kayıt İçinde Kayıt Kullanmak•    Bazen kayıt elemanlarından birbiriyle yakından ilişkili olanların da bir kayıt olarak tan...
Değişken Kayıtlar    Aynı kayıt yapısında saklanmak istenen değerler bir takım farklılıklar gösteriyorsa kayıt yapısının d...
•   Örneğin idari personelin adı soyadı, sicil numarasını ve görevini akademik personelin ise adı    soyadı, sicil numaras...
BÖLÜM 7 : KÜMELER•   Pascaldaki küme (Set) kavramı matematikteki kumelerden gelmektedir. Elemanları 1,3,5 olan    küme mat...
•   Rakam ve gün kümeleri aşağıdaki şekilde tanımlanabilir:      Type       Rakamlar = 0..9;       Gunler = (Pazartesi, Sa...
Küme Üyeliği•   Bir elemanın verilen kümenin elemanı olup olmadığını bulmak için in ilişkisel operatörü    kullanılır. Küm...
Küme İşlemleri•     Nümerik değerler ve aritmetik operatörler kullanılarak aritmetik ifadelerden nümerik sonuçlar      eld...
Kümelerin Karşılaştırılması•   İlişkisel operatörler yardımıyla iki kümenin eşit olup olmadıklarına veya bir kümenin diğer...
BÖLÜM 8 : DOSYALAR                                    Metin Dosyalar•    Tekst dosyalarının temel elemanı karakterlerdir. ...
•    Dosyaların kullanılmadan önce açılması gerekir. Açma işlemi mevcut bir dosyadan veri okumak     için yapılabileceği g...
Metin Dosyaya Yazma  Verilen tekst dosyalarına yazdırılabilmesi için dosyanın rewrite ifadesiyle açılması gerekmektedir. R...
İkili Dosyalar•   İkili dosyalar bir kaç yönden tekst dosyalarından farklıdır. İkili dosyalar rasgele    erişilebilirdirle...
İkili Dosyaya Yazma•   Write komutu ile dosyaya bir değer yazmak için öncelikle o değeri bir değişkene atamak    gerekir. ...
BÖLÜM 9 : POINTERS     Typed pointer’ları deklare etmek ve kullanmak•   Bir typed pointer deklare etmek için bu pointer’in...
Bir tamsayi değişkenini işaret eden bir pointer kullanarak o tamsayi değişkeninin değerini değiştiren program örneği• aşağ...
Untyped pointer’ları deklare etmek ve kullanmak• Deklerasyonu şu şekildedir:var p: pointer;• Bu tür pointer kullanırken ne...
Furkan EYBEK 05104414Teşekkürler…
Upcoming SlideShare
Loading in …5
×

Pascal

2,069 views

Published on

Furkan Eybek, ödev

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,069
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
47
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Pascal

  1. 1. PASCALPROGRAMLAMA DİLİ
  2. 2. PASCAL NEDİR ?• Pascal bilgisayar programlama dilİ pek çok öğrenciye bilgisayar programlamayı öğreten ve çeşitli versiyonları bugün hala yaygın olarak kullanılmaya devam eden en önemli programlama dillerinden biridir. İlk Macintosh işletim sisteminin çoğu ve TeX Pascal ile yazılmıştır.
  3. 3. NE ZAMAN, KİM TARAFINDAN, NE AMAÇLA GELİŞTİRİLDİ• Bilgisayar bilimcisi Niklaus Wirth Pascalı 1970te yapısal programlamayı derleyiciler için daha kolay işlenir hale getirebilmek amacıyla geliştirmiştir. Adını matematikçi ve düşünür Blaise Pascaldan alan Pascal, Algol programlama dilinden türemiştir. Wirth, Pascaldan başka Modula-2 ve Oberon programlama dillerini de geliştirmiştir. Bu diller Pascala benzerler ve ayrıca nesneye yönelik programlamayı da desteklerler.
  4. 4. BÖLÜM 1 : PASCAL’ A GİRİŞ İsimlendirme• Pascalda büyük ve küçük harf ayırımı olmadığından "x" ile "X" aynı anlamdadır. Aşağıda geçerli ve geçersiz isimlendirmeye örnekler verilmiştir:• Geçerli isimlere örnek; x1 Toplam Adi Sayi METRE SAYI1 SAYI2• Hatalı isimlere örnek; 1Y begin iki*2 sayı sayi-1 XKARE %X
  5. 5. Temel Veri Tipleri Veri tipi (data type), değişken veya sabitin tuttuğu verinin tipini belirtmektedir. Programda kullanılan veriler• genellikle aşağıdaki altı veri tipinden birine aittir: Tamsayı ( byte, shortint, integer, word, longint )• Gerçel Sayı ( real, single, double, extended, comp^ )• Karakter ( character ) ( A, 5, *, } )• Karakter dizisi ( string ) ( GYTE ) ( Türkiyenin başkenti )• Boolean ( false, true )• Programda kullanılan sabitlerin bildirimi ise const kısmında yapılır. Sabit ismi ile değeri arasında = sembolü• kullanılır. Sabitin veri tipi atanan değere bağlı olarak derleyici tarafından tespit edilir. const {sabit bildirim başlangıcı} Pi=3.1415; {sabit ismi = değer} test=false ; {Boolean sabiti} Değişkenlerin bildirimi veri tipleri belirtilerek var bölümünde yapılır. Değişkenlerin ismi ile veri tipi arasında :• sembolü kullanılır. Aynı veri tipinde birden fazla değişken var ise değişkenlerin arasına , sembolü konarak değişken listesi oluşturulur. var {değişken bildirim başlangıcı} X:real; {değişken ismi : veri tipi} I,J:integer; {değişken listesi : veri tipi} tus:char; {karakter değişkeni} ad:string[30]; {30 karakter uzunluğunda karakter dizisi değişkeni} devam:Boolean; {Boolean değişkeni}
  6. 6. Program Yapısı Pascal programları bildirim (declaration) ve ifade (statement) olmak üzere iki temel bölümden oluşur. Aşağıda• temel program yapısı görülmektedir. program ad;const sabit1=değer; : sabitN=değer;var değişken1:tip; : değişkenM:tip;begin ifade1; : ifadeK;end Pascal programları, program adını belirtildiği başlık satırıyla başlar. Başlık satırı ; ile sonlandırılır. Eğer programa• isim verilmeyecekse bu satır yazılmaz. Programda sabitler, değişkenler, program ve altprogramlar isimlendirilirken aynı isim birden fazla kullanılmaz. Programda kullanılacak tüm sabit ve değişkenler programın en üstünde const ve var bölümünde belirtilir. Sabitlere değer atarken =, değişkenlerin tipini belirtirken : kullanılır. Pascal ifadeleri birbirinden noktalı virgül ile ayrılmıştır. const, var, begin gibi Pascalın saklı kelimelerinden sonra• noktalı virgül kullanılmaz. Programın veya program parçasının bittiğini belirten end kelimesinden önceki satır sonunda noktalı virgül kullanmak gerekmez.
  7. 7. Giriş/Çıkış İşlemleri Programın kullandığı veriler isimlendirilerek bellekte saklanmaktadır. Bir ismin temsil ettiği değer belleğe üç değişik şekilde• yüklenebilir; sabit olarak, değişken değer atayarak ve değişkenin değerini okuyarak. Bir silindirin hacmini bulan aşğıdaki örnekte her üç yöntemde kullanılmıştır. program silindir;const; pi=3.14; {sabit}var yükseklik, yarıçap, hacim:real;begin yükseklik:=5.0; {Değer atama} ReadLn(yarıçap); {okuma} hacim:=pi*yaricap*yaricap*yükseklik; {değer atama} WriteLn(hacim);end Yukarıdaki programda; pi sabit olarak tanımlanmıştır, yükseklik değişkenine 5.0 değeri atanmıştır, yaricap değişkeni tuş• takımından okunmaktadır. hacim değişkeninin değeri hesaplama sonucu atanmaktadır. Tuştakımı veya disk gibi birimlerden okuma işlemine giriş (input), ekran ve yazıcı gibi birimlere yazdırma işlemine çıkış (output) denmektedir. Program yazarken sık sık kullnılması gereken program parçaları Pascalda altprogram şeklinde yazılmıştır. Altprogramlar,• fonksiyon (function) ve prosedür (procedure) şeklinde düzenlenmiştir. Pascalda giriş işlemleri Readln, çıkış işlemleri ise Writeln prosedürleri kullanılarak yapılmaktadır. Programda açıklamalar { , } sembolleri arasında yazılır.
  8. 8. Aritmetik ve Boolean İşlemler Aritmetik İşlemler Pascalda 5 ve 5.0 farklı sayılardır. 5 bir tamsayıdır ve gerçek değerdir. 5.0 ise gerçel bir sayıdır ve yaklaşık bir• değer ifade eder. Bu nedenle veri tiplerinin karşılaştırılması gerekir. Eğer x bir gerçel sayı değişkeni ise; x:=5; veya x:=5.0; yazabiliriz. Ama y tamsayı değişkeni için; y:=5; yazmak zorundayız. Atamada := kullanılmalıdır. Sabit ve değişkenleri kullanarak yazılan aritmetik ifadelerde operatör kullanılmaktadır. Operatörler bir veya• iki değeri (operand) kullanarak yeni bir değer bulan fonksiyonlardır. Aritmetik operatörler nümerik değerleri kullanarak nümerik sonuç verir. İki değer kullanan operatörlere ikili (binary) operatörler denir. Örneğin A+B ifadesindeki toplama operatörü ikili operatördür. -A ifadesindeki eksi işareti bir değer üzerinde işlem yaptığı için tekli (unary) operatördür. Tam sayı operatörleri• İşlem Operatör Örnek Toplama + 7+3=10 Çıkarma - 7-3=4 Çarpma * 7*3=21 Bölme(Katsayı) DIV 7 DIV 3=2 Bölme(kalan) MOD 7 MOD 3=1
  9. 9. Operatörler kullanılarak yazılan aritmetik ifadelerin sonucu bir değişkene aktarılır. Eğer yazılan ifade• gerçel sonuç veriyorsa yalnız gerçel tipli bir değişkene atama yapılabilir. İfade tam sonuç veriyorsa tamsayı veye gerçel tipli bir değişkene atama yapılabilir. Gerçel sayı operatörleri• İşlem Operatör Örnek Toplama + 5.5+2.25=7.75 Çıkarma - 5.5-2.25=3.25 Çarpma * 5.6*2.0=11.2 Bölme / 5.6/2.0=2.8 Birden fazla operatörün kullanıldığı durumlarda:• Parantez içindeki ifadeler öncelikle işlenir. İçiçe parantezler varsa en içteki parantezden başlanır. Operatörlerin hepsi aynı önceliğe sahip değildir. *, / , DIV ve MOD işlemleri önce, + ve - işlemleri sonrayapılır. Aynı önceliğe sahip operatörler soldan sağa doğru işleme koyulur. Pascalda bir değişken eşitliğin her iki tarafında yer alabilir:• Toplam:=Toplam+Değişken; burada toplam değişkeninin mevcut değerine Değişken eklenerek yeni toplam değeri olaraksaklanmaktadır.
  10. 10. Boolean İşlemler Boolean değişkenleri ve sabitleri True veya False değerlerini alabilmektedir. Eğer bir ifadenin sonucu True veya• False değerini alıyorsa bu ifadeye "boolean ifade" denir. Boolean ifadelerde ilişkisel ve mantıksal operatörler kullanılır. İlişkisel operatörler; verilen iki büyüklük arasındaki ilişkinin doğru olup olmadığına bağlı olarak boolean değer• veren operatörlerdir. Karşılaştırılacak büyüklükler aynı veri tipinde olmalıdır. K=5 ve J=6 değerleri kullanılarak kullanılan ilişkisel operatörler aşağıda verilmiştir. İlişkisel operatörler• Operatör İsim İfade Değer = eşit K=J False <> eşit değil K<>J True < küçük K< J True <= küçük eşit K<=J True > büyük K>J False >= büyük eşit K>=J False İlişkisel operatörler kullanılarak yalnız nümerik değerler değil aynı zamanda karakter dizileri dekarşılaştırılabilir. Karakterlerin karşılaştırılmasında ASCII kodları kullanılır. Eğer karşılaştırılacak dizilein uzunluğufarklı ise karakter sayısı az olan dizinin küçük olduğu kabul edilir. Karşılaştırma sonucu elde edilen booleandeğer, boolean değişkene aktarılabilir. Aşağıdaki program satırında iki karakter dizisi karşılaştırılarak sonuç,tamam boolean değişkene aktarılmaktadır. Örnekte tamam boolean değişkenine True değeri aktarılır: tamam:=ALP<ALPER; { tamam boolean değişkeni true değerini alır }
  11. 11. Aritmetik ifadelerde nümerik değer kullanılarak, yeni bir nümerik değer elde edilir. Benzer şekilde boolean• ifadelerde boolean değerler kullanılarak yeni bir boolean değer elde edilebilir. Boolean değişkenler, mantıksal operatörler ile birleştirilir. Aşağıda mantıksal operatörler verilmiştir. Mantıksal operatörler• Operatör İsim Açıklama OR Veya Herhangi biri Doğru ise sonuç Doğru AND Ve İkiside Doğru ise sonuç Doğru XOR Özel Veya Biri Doğru biri Yanlış ise sonuç Doğru NOT Değil Yanlış ise sonuç Doğru Boolean ifadelerde; aritmetik, ilişkisel ve mantıksal operatörler kullanılabilir. İfadeler yazılırken önceliksıralarına dikkat etmek ve gerekirse parantez kullanılması gerekir. Boolean operatörlerin öncelik sıraları aşağıdaverilmiştir. Boolean operatörlerin önceliği• Boolean operatör Öncelik not 1 En büyük and 2 or, xor 3 <,>,=,<=,>=,<> 4 En düşük Boolean ifadeler yazılırken; aritmetik operatörler nümerik değerler, mantıksal operatörler boolean değer veilişkisel operatörler aynı tipteki veriler ile kullanılır.
  12. 12. BÖLÜM 2 : KONTROL YAPILARI Sıralı Kontrol Yapısı Sıralı kontrol yapısında ifadeler yazıldığı sırayla ve bir kez icra edilir. Bu yapıda sırayla ifade-1 ifade- 2• ifade N icra edilir. Sıralı yapıdaki ifadeler, giriş, çıkış, hesaplama veya bir kontrol yapısı olabilir. Pascal ifadelerinin gruplandırılmasıyla oluşturan ifadeye ifade bloğu adı verilir. İfade bloğu, begin ve end• sözcükleri arasında yazılan ifadelerden oluşur. İfade bloğunun formatı aşağıdaki gibidir: begin ifade-1; ifade-2; : : ifade-N end İfade bloğunda, ifadeler birbirinden noktalı virgül ile ayrılırlar. Bloktaki son ifadeden sonra noktalı virgül• konulmaz.
  13. 13. Seçimli Kontrol Yapısı• İfade veya ifade bloklarının icra edilmesi bir koşula bağlı olabilir. Boolean ifade olarak yazılan koşulun doğru veya yanlış olmasına bağlı olarak icra edilecek ifade seçilir. Pascalda bu amaçla İf/then, if/then/else ve case ifadeleri kullanılmaktadır. If/then İfadesi• En basit seçim yapısı if / then ifadesidir. Bu ifadede; verilen koşul doğru ise bir ifade veya ifade bloğu icra edilir, verilen koşul yanlış ise ifade icra edilmez• if/then ifadesnin formatı: if koşul then ifade• X değişkeni negatif ise ekran x negatiftir yazan İf/ then ifadesini yazalım: if x<0 then writeln(x negatiftir);• if/then ifadesi tek satır halinde de yazılabilir: if x < 0 then writeln (x negatiftir);• X değişkeni sıfırdan farklı ise 1/xi hesaplayıp ekrana yazan if then ifadesini yazalım: if x < > 0 then begin Y : = 1/x ; Writeln (y) end Örnekte koşul doğru olduğununda iki ifade icra edileceği için bu ifadeler ifade bloğu haline getirilmiştir.
  14. 14. If/then/else İfadesi• If/ then/ else ifadesinde iki ifade veya ifade bloğundan birisi icra edilir. Bu ifadede verilen koşul doğru ise then kısmındaki ifade , yanlış ise else kısmındaki ifade icra edilir.• If/then ifadesinin formatı aşağıdaki gibidir:    if kosul then ifade-D {noktalı virgül kullanılmaz.} else ifade-Y;• x 10dan büyükse karesini değilse yarısınıbulan if/then/else ifadesi aşağıdaki şekilde yazılabilir: if x >0 then begin y:=x*x; writeln(Karesi..: ,y); end else begin y:=x/2; writeln(Yarısı..: ,y); end Eğer x 10dan büyükse if kısmı değilse else kısmı icra edilecektir.
  15. 15. Case İfadesi• Koşul olarak bir boolean ifadesinin kullanıldığı if ifadesinde seçilebilecek ifadelerin sayısı ikiyi aştığı zaman programın okunması güçleşmektedir. Eğer boolean ifadesi yerine bir değişkenin aldığı değere bağlı olarak icra edecek ifade seçilebiliyorsa case ifadesi kullanılır. Seçici değişkenin tam sayı, karakter veya boolean gibi sıralanabillir tipte olması gerekir. Seçici olarak gerçel sayı değişkeni kullanılmaz.• Aşağıda case ifadesinin formatı görülmektedir. case secici of etiket-1:ifade-1; etiket-2:ifade-2; ... etiket-N:ifade-N;    end;• Bir dersten alınan puanı harf sistemine dönüştürmek için gerekli case ifadesini yazalım: case puan of 90..100: writeln(A); 80..89: writeln(B); 70..79: writeln(C); 50..69: writeln(D); 0..49: writeln(F); end; Case ifadesinde puan değişkenin bulunduğu kademe tespit edilerek ilgili ifade icra edilir. Örneğin; puan 85 ise ekrana B yazılacaktır.
  16. 16. Case/Else İfadesi Case ifadesindeki seçici hiçbir etiketle uyuşmadığında case bloğunun dışına çıkılmaktaydı. Uyuşmazlık halinde• icra edilecek ifadeler varsa case/else ifadesi kullanılır. Case/else ifadesinin formatı aşağıdaki şekildedir: case secici of etiket-1:ifade-1; etiket-2:ifade-2; ..... etiket-N:ifade-N; else; ifade-1; ... etiket-M; end; Rakam olarak verilen ay geçerli ise ekrana yazan değilse hata mesajı veren case/else ifadesi:• case ay of 1: writeln(OCAK); 2: writeln(ŞUBAT); ... 12: writeln(ARALIK); else; writeln(yanlış girdiniz); end; Ekrana yazılması istenen ay 1den küçük veya 12den büyük ise "yanlış girdiniz" mesajı ekrana yazılır.
  17. 17. Tekrarlı Yapı• Bir ifade bloğunu birden fazla icra edilmesine iterasyon veya döngü (loop) denir.• Pascalda döngüler; While/Do, Repeat/Until, For/Do ifadeleri kullanılarak yapılır. While/Do İfadesi• Giriş kontrollü döngülerde, koşulun doğru olup olmadığına döngü ifadelerinden önce bakılır. Eğer koşul doğru ise döngü ifadeleri icra edilir.• İfadenin formatı aşağıdaki gibidir: while koşul do döngü ifadesi;• Eğer döngü ifadesi, ifade bloğu şeklinde ise while/do formatı aşağıdaki şekle dönüşür: while koşul do begin İfade-1; İfade-2; ... İfade-N; end;
  18. 18. Repeat/Until İfadesi• Çıkış kontrollü döngüler Repeat/until ifadesi kullanılarak yapılır.• İfadenin formatı aşağıda verilmiştir: Repeat ifade-1; ifade-2; ... ifade-N Until koşul;Döngü ifadeleri Repeat ve Until kelimeleri arasında kullanıldığından begin ve end kelimelri kullanılmaz.• Vize ve final notlarını okuyarak ortalamayı bulan programın Repeat/Until ifadesi kullanarak yazılması: program ortalama; const Vizekat=0.4; {Vize notu katsayısı} Finalkat=0.6; {Final notu katsayısı} var Vize,Final,Ortalama: real; Devam:char; begin Repeat Write(Vize notu..:); Readln(Vize); Write(Final notu..:); Readln(Final); Ortalama:=Vize*Vizekat + Final*Finalkat; Writeln(Ortalama..:,Ortalama:6:0); Writeln; Write(Devam ); Readln(Devam); Until (Devam=H) OR (Devam=h) end.Programda Devam değişkeni H veya h olana dek vize ve final notları okunarak ortalama hesaplanmaya devam edilir.
  19. 19. For/Do İfadesi• Döngü ifadelerinin belli sayıda icrası için For/Do ifadesi kullanılır. Bu ifadede, sayaç olarak kullanılan değişkene başlangıç ve bitiş değerleri verilir. Sayaç değeri her iterasyonda 1 arttırılır. Sayaç bitiş değerini geçtiği zaman döngüden çıkılır. Sayaç arttırılması ve kontrolü For/Do ifadesi tarafından gerçekleştirilir. Sayacın veri tipi genellikle tamsayıdır ama karakterde kullanılabilir.• For/Do ifadesinin formatı aşağıda verilmiştir: For sayaç:=başlangıç to bitiş Do döngü ifadesi;• Döngü ifadesi blok ifade şeklinde ise For/Do ifadesinin formatı aşağıdaki şekilde olur:For sayaç:=başlangıç to bitiş Do begin ifade-1 ifade-2 ... ifade-N end;• 1den 5e kadar tamsayıları ve karelerini yazan For/Do ifadesi:For sayi:=1 to 5 Do Writeln(sayi,,sayi*sayi);
  20. 20. • For/Do ifadesinde To yerine Downto kullanarak sayaç değeri azalan şekilde döngü kurulabilir.• 5ten 1e kadar tamsayıları yazan For/Do ifadesi:For sayi:=5 Downto 1 Do Writeln(sayi);• Verilecek sayının faktöriyelini bulan program:Program Faktöriyel;var faktoriyel,sayi,son:integer;begin write(faktöriyeli bulunacak sayı..:); Readln(son); faktoriyel:=1; For sayi:=2 to son Do faktoriyel:=faktoriyel*sayi; writeln(son,in faktöriyeli,faktoriyel,dir.);endFaktöriyeli okunacak sayı son olarak okunmaktadır. Döngüye girmeden önce faktoriyeldeğişkenine başlangıç değeri olarak 1 atanmaktadır. Döngüde sayi 2den son değere kadararttırılırken faktoriyel değeri o anki faktoriyel değerininsayi ile çarpılmasıyla bulunmaktadır.Döngüden çıkıldığında bulunan faktöriyel değeri ekrana yazdırılmaktadır.
  21. 21. BÖLÜM 3 : ALT PROGRAMLAR Fonksiyonlar• Fonksiyon verilen parametreler üzerinde bir takım işlemler yaparak bir değer veren bağımsız program parçasıdır. Fonksiyonlar Pascalın stanadart fonksiyonları ve kullanıcı tarafından tanımlanan fonksiyonlar olmak üzere iki kısımda incelenebilir.Standart Fonksiyonlar• Pascalda aritmetik, skaler ve transfer olmak üzere üç çeşit standart fonksiyon vardır. Fonksiyon Tanımlama• Standart Pascal fonksiyonları ihtiyaca cevap vermiyorsa, programcı tarafından yeni fonksiyonlar tanımlanabilir.• Fonksiyonlar, global sabit ve değişkenlerin bildirim bölümünden sonra ve ana program ifadelerinden önce yazılır. Global sabit ve değişkenler tüm programda kullanılabilir iken yerel sabit ve değişkenler sadece tanımlandıkları fonksiyon içinde kullanılabilirler. Fonksiyonların çağrıldıkları yerden önce yazılması gerekir. Eğer fonksiyonlar ana programdan önce çağrılıyorsa ana programın üstünde yazılması yeterlidir. Eğer f2 fonksiyonunda f1 fonksiyonu kullanılıyorsa, f1 fonksiyonunun f2 fonksiyonundan önce yazılması gerekir.
  22. 22. • Fonksiyon aşağıdaki formata uygun olarak tanımlanır: Function Fonksiyon_adi(parametre listesi):fonksiyon veri tipi; {Başlık}const sabit-1=deger; : sabit-N=deger; {Bildirimvar degisken-1=veri tipi; Bölümü} : degisken-M=veri tipi;begin ifade-1; {İfade : Bölümü} ifade-K;end;• 1den Ne kadar tamsayıların toplamını bulan fonksiyon aşağıda verilmiştir. Function toplam (n:integer):integer; var alttoplam, sayi:integer; begin alttoplam:=0; for sayi:=1 To n Do alttoplam:=alttoplam + sayi; toplam:=alttoplam; end;
  23. 23. Prosedürler• Program ifadelerinin gruplandırılarak bağımsız program dilimi olarak yazılmasıyla prosedürler elde edilir.Aslında fonksiyonlardan farkı parametre almayabilmesi ve değer döndürmemesidir.• Ekrana kare çizdiren programın prosedür kullanılarak yazılması: program KareProgrami; procedure Kare; {Kare Çizme} begin writeln(****); writeln(* *); writeln(* *); writeln(****); end; {Kare} {Anaprogram ifadeleri} begin Kare; end
  24. 24. Rekürsif Altprogramlar• Kendi kendini çağıran altprogramlara rekürsif altprogramlar denir. Çözümü güç olan bazı problemler rekürsif altprogramlar kullanılarak daha kolay çözülebilir. İteratif altprogramların yerine rekürsif altprogramlar kullanılabilir.• Rekürsif faktoriyelprogram rekürsifFaktoriyel;var sayi:integer;function faktoriyel (N:integer):integer;begin if N=1 then faktoriyel:=1 else faktoriyel:= N * Toplam(N-1)end;begin write(Sayı...:); readln(sayi); writeln(faktoriyel(sayi));end.
  25. 25. BÖLÜM 4 : SAYMA VERİ TİPLERİ• Önceki bölümlerde yazmış olduğumuz programlarda gerçel sayı,tamsayı, katakter ve boolean standart veri tiplerini kullanmıştık. Sadece standart veri tipleri kullanarak program yazmanın yeterli olmadığı durumlarda kullanıcı tarafından yeni veri tipleri tanımlanabilir. Tanımlanacak yeni veri tipleri, herhangi bir standart veri tipinin alt kademesi ( subrange ) olabileceği gibi elemanlarının tamamı kullanıcı tarafından belirtilen liste şeklinde ( enumerated ) olabilir.• Bir veri tipinin elemanları küçükten büyüğe doğru sıralanabiliyorsa bu veri tipine sayma veri tipi denir. Örneğin tamsayılar -maxint,...,-2,-1,0,1,2,.. maxint şeklinde sıralıdır. Sayma veri tiplerinde bir elemanı izleyen eleman SUCC( ), öncesindeki eleman ise PRED( ) fonksiyonu kullanarak bulunabilir. Boolean veri tipi de sayma tipindedir. Bu tipte FALSE, TRUEdan önce gelir, yani FALSE < TRUE şeklindedir. Karakterler ise ASCII kodlarına göre sıralanırlar. Gerçel sayılarda ise bir sayının hemen önündeki ve arkasındaki sayı bilinmediğinden sıralı tipte değildir.
  26. 26. Tip Bölümü• Yeni veri tipleri, değişkenlerin tanımlandığı var bölümünden önce yer alan Type bölümünde belirtilir. Type bölümünde yeni veri tipleri tanımlanabileceği gibi daha önce tanımlanmış veri tiplerine yeni isimler de verilebilir. Type bölümünün formatı aşağıdaki gibidir: type isim-1=tip-1; isim-2=tip-2; ... isim-N=tip-N;• Type bölümünde tanımlanan yeni veri tipleri var bölümünde değişkenlerin veri tipi olarak kullanılır: type sembol=char; mantik=boolean; var tus, harf :sembol; devam :mantik; x,y :integer; Yukarıda verilen örnekte; karakter veri tipi sembol, boolan veri tipi de mantik olarak yeniden isimlendirilmiştir. Değişken bildiriminde değişkenlerin veri tipi olarak sembol ve mantik kullanılmıştır.
  27. 27. Birebir Sayma Veri Tipi Bire bir sayma veri tipinde (enumerated), veri tipinin değerleri liste halinde tanımlanır. Elemanlar parantez• içinde ve birbirlerinden virgül ile ayrılarak yazılır. Örneğin haftanın günlerini liste halinde aşağıdaki şekilde yazılabilir: (Pazartesi, Sali, Çarşamba, Perşembe, Cuma, Cumartesi, Pazar) Bire bir veri tipinin elemanları sıralı bir şekilde verilir. Örneğin: Çarşambadan önce Salı, sonra ise Perşembe• gelmektedir. Verilen listenin veri tipi olarak kullanılabilmesi için Type kısmında veri tipine bir isim verilir: type GunTip=(Pazartesi, Sali, Carsamba, Persembe, Cuma, Cumartesi, Pazar) var gun:guntip; Bire bir veri tipindeki değerler ilişkisel operatörler kullanılarak karşılaştırılabilir. Yukarıda tanımladığımız• GunTip kullanılarak aşağıdaki ifade yazılabilir: if(gun <> Cumartesi) and (gun <> Pazar) then writeln(Hafta içi); Bu ifadede, gun değişkeninin değeri Cumartesi ve Pazar değilse hafta içi mesajı ekrana yazdırılır. Yukarıda ifade aşağıdaki şekilde de yazılabilir: if(gun >=Pazartesi) and (gun <= Cuma) then writeln(Hafta içi);
  28. 28. Alt Kademe Veri Tipi Standart veya tanımlanmış veri tiplerinin bir bölgesi yeni veri tipi olarak tanımlanabilir. Bir veri tipinde bir aralığı belirtmek• için aralıktaki ilk değer ile son değer arasına iki nokta konur: ilkdeğer...sondeğer Örneğin, karakter veri tipinde büyük harfler, küçük harfler, rakamlar ve özel semboller yer almaktadır. Karakter veri tipi kullanılarak büyük ve küçük harfler aşağıdaki şekilde tanımlanabilir: type BuyukHarfler= A..Z; KucukHarfler= a..z; var kucuk : KucukHarfler; buyuk : BuyukHarfler; Alt kademe tipinde tanımlanmış bir değişkene alabileceği değerler dışında bir değer atandığı zaman kademenin dışına• çıkıldığı ( out of range ) şeklinde bir hata mesajı verilerek programın çalışması kesilir. Yukarıda verilen örnekte küçük harf tipinde bir değişkene büyük harf ataması yapılmak istenirse hata mesajı alınacaktır. Tamsayıların belli bir bölgesi veri tipi olarak tanımlanabilir:• type AyinGunu=1..31; YilinGunu=1..366; KucukPozitif=0..100; KucukNegatif=-1..-100; Yukarıdaki tanımlamalardan sonra bugun değişkeninin veri tipi AyinGunu olarak verilirse bu değişkenin alabileceği değerler 1-31 kadamesinde tamsayılar olabilir. 32 değeri bu değişkene atanmak istendiği zaman hata mesajı alınacaktır.
  29. 29. BÖLÜM 5 : DİZİLER Tek Boyutlu Diziler• Bu veri tipinde dizinin elemanları bellekte sırayla yer alırlar ve elemanlara indis kullanılarak erişilir.• Dizinin her bir elemanı için bellekte gerekli yerin ayrılabilmesi için dizinin elemanlarının veri tipinin bilinmesi gerekmektedir. Örneğin, 40 adet sınav notu için notların tamsayı oIduğu kabul edilirse SınavNot dizi değişkenini aşağıdaki gibi tanımlanabilir: var SınavNot: Array[ 1.. 40] of integer;• SinavNot tüm notların yer aldığı diziyi, SinavNot[1] ise bu dizideki ilk elemanı temsil etmektedir. Bir dizi elemanına değer atamak için: SinavNot[1]:= 70;
  30. 30. • Temel veri tipi kullanarak yazılan sınav notlarını okuyan program: const max =40; type dizi = Array [1..max] of integer; var SinavNot: dizi; i:integer; begin ... for i:=1 to max do begin Write(i,Sınav Notu..:); ReadLn(SinavNot[i]); end end• Fonksiyonlara dizileri yollamak için yukarıdaki örnekte yaptığımız gibi ilk önce yeni bir tip oluşturup bu tipi bir dizi olarak belirtmemiz gerekir. Daha sonra fonksiyonumuzun parametre listesine bu yeni oluşturduğumuz tipi ekleyebiliriz.
  31. 31. Çok Boyutlu Diziler• 50 satr ve 80 sütundan oluşan bir sayfa bellekte 4000 uzunluğunda tek boyutlu dizi kullanarak saklanabilir. Tek boyutlu dizide herhangi bir elemana satır ye sütun numarası verilerek doğrudan erişilemez. Satır ve sütun numarasını vererek herhangi bir elemana doğrudan erişebilmek için dizinin satır ye sütun şeklinde iki indeksi olması gerekir. Diğer bir deyişle dizinin iki boyutlu olması gerekir. İki boyutlu sayfa veri tipi aşagıdaki şekilde tanımlanablir: type SayfaTip =Array[1.. 50, 1..80]of char; var Sayfa: SayfaTip;• Yukarıda görüldüğü gibi, boyutların kademeleri virgül ile birbirlerinden ayrılmaktadırlar. Birinci kademe birinci indekse, ikinci kademe ise ikinci indekse aittir. Sayfanın elemanlarının Sayfa[satır,sütun] şeklinde erişilr. Örneğin 2. satır 5. sütundaki elemana Sayfa[2,5] ifadesiyle erişilir.• İki boyutlu dizilere değer atayabilmek için iç içe döngü kullanmak gerekir. Yukarıdaki sayfa değişkenin A karakteri ile için aşağıdaki ifade yazılabilir: for satir:= i to 50 do for sutun:1 to 80 do sayfa[satir,sutun]:=A;
  32. 32. BÖLÜM 6 : KAYITLAR Kayıtların Tanımlanması• Kayıtların tanımlama işlemi tip bildirim kısmında yapılır. Kayıtlar aşğıda verilen formata uygun şekilde tanımlanırlar: type Kayittip=record Alan-1 : tip-1; Alan-2 : tip-2; ...; Alan-N : tip-N; end;• Yukarıda görüldüğü gibi, kayıt veri tipine bir isim verilmektedir. Alan isimleri ve bu alanlarda saklanacak verinin tipi record ve end arasında yazılmaktadır. Örneğin bir ürünün adı, numarası ve fiyatını saklamak amacıyla kullanılacak ürüntip kaydı aşağıdaki şekilde tanımlanaqbilir: type UrunTip=record adi :string[20]; numara :integer; fiyat :real; end;
  33. 33. • Burada; UrunTip veri tipinin adıdır. Adi, numara ve fiyat ise alan isimleridir. Diğer isimlendirmelerde uygulanan kurallar alan isimleri içinde geçerlidir. Adi alanının veri tipi 20 karakterlik karakter dizisidir. Numara alanı tamsayı tipindedir. Fiyat alanı ise gerçel tiptedir.• Verilerin bellekte saklanabilmesi için bir değişkene gereksinim vardır. Bu nedenle sadece kayıt tipini tanımlamak yetmez aynı zamanda tanımlanan kayıt tipini bir değişken için kullanmak gerekir. Yukarıda tanımlanan kayıt tipi Urun1 değişkeninin veri tipi olarak aşağıdaki şekilde tanımlanabilir: var urun1 : UrunTip; Kayıtların İşlenmesi• Dizinin elemanlarına indeks kullanarak erişildiği gibi kayıtın elemanlarına alan isimleri kullanılarak erişilir. Kayıt içindeki herhangi bir alana erişmek için kayıt isminden sonra nokta ve alan ismi kullanılır: KayıtIsmi.AlanIsmiUrun1 kayıdının alanlarına Urun1.Adi, Urun1.Numara ve Urun1.Fiyat şeklinde erişilebilir. Kayıtlaradeğerler atama veya okuma yoluyla aktarılabilir. Aşağıda ürün adı ve numarası atanmıştır, fiyat iseokunmaktadır: Urun1.Adi :=Disket; Urun1.Numara :=111; Readln(Urun1.Fiyat);
  34. 34. With İfadesi Aynı kaydın değişik alanlarına erişebilmek için devamlı kayıt ismini yazmak sıkıcı olabilir. Bunu gidermenin yolu• with ifadesi kullanmaktır. With ifadesi kullanıldığı zaman kayıt ismini vermeden doğrudan alan isimleri kullanılabilir. With ifadesinin formatı aşağıda verilmiştir: with KayitIsmi do ifade; With ifadesinde, With ile do arasında kayıt ismi belirtilmektedir. Burada ifade içindeki alanlar için kayıt ismini• yazmak gerekmez. Örneğin Urun1 kaydının fiyat alanına Urun1.Fiyat yerine aşağıdaki şekilde erişilebilir: with Urun1 do writeln(fiyat); Eğer with ifadesi bir ifade bloğu için kullanılacak ise ifadeler begin ve end arasında yazılır:• with Urun1 do begin writeln(Adi); writeln(numara); writeln(fiyat); end; Eğer alan isimleri farklı olan birden fazla kayıt ismi virgülle ayrılarak with ifadesinda kullanılabilir:• with Ogrenci, Urun1 do ifade; Bu tanımlama ile her iki kaydın alan isimlerini doğrudan kullanma olanağına kavuşulur.
  35. 35. Kayıt Dizileri• Diziler temel veri tipleri kullanarak oluşturulduğu gibi kayıt tipi kullanarak da oluşturulabilir. Kayıt kullanarak oluşturulan dizilerde dizinin her bir elemanı kayıt tipinde olacaktır. Örneğin UrunTip kaydına bir ürünün adı, numarası ve fiyatı saklanmış olsun. 20 tane ürünün adı,, numarasu fiyatı saklanmak istendiğinde aşağıda oldugu gibi elemanları UrunTip olan bir dizi tanımlanır: type UrunTip=record adi :string[20]; numara : integer; fiyat :real; end; UrunDiziTip : array[1..20] of UrunTip; var Urunler : UrunDiziTip;Urunler dizisinin elemanlarının alanlarına aşağıdaki gibi erişilebilir: Urunler[1].Adi, Urunler[1].Numara, Urunler[1].Fiyat
  36. 36. Kayıt İçinde Kayıt Kullanmak• Bazen kayıt elemanlarından birbiriyle yakından ilişkili olanların da bir kayıt olarak tanımlanaması daha anlamlı olabilir. Bir öğrencinin adı soyadı ve doğum tarihi birer kayıt olarak düzenlenebilir. Yani üst seviyede AdSoyad ve DoğumTarihi alanları bulunmaktadır. DoğumTarihi alanı ise Gun, Ay ve Yıl altalanlarından oluşmaktadır. Bu tür kayıt yapısını tanımlarken işleme en alt seviyeden başalanabilir. Önce Gun, Ay veYıldan oluşan TarihTip kaydı tanımlanır, daha sonra bu kayıt kimliktip kaydını tanımlamada kullanılabilir: type TarihTip = record Gun : 1..31; Ay : 1..12; Yil : 0..99 end; KimlikTip = record AdSoyad : string[25]; Doğumtarihi : TarihTip end; var Personel : KimlikTip;Yukarıda tanımlana personel kaydının elemanlarına aşağıdaki şekilde erişilebilir: Personel.AdSoyad Personel.DogumTarihi.Gun Personel.DogumTarihi.Ay Personel.DogumTarihi.Yil• Bu düzenleme alt programlara veri transferinde de kolaylık sağlar. Örneğin tarihi okumak amacıyla bir altprogram yazılmış ise bu altprograma tüm personel biligilerini göndermek yerine sadece tarih bilgileri gönderebilir.
  37. 37. Değişken Kayıtlar Aynı kayıt yapısında saklanmak istenen değerler bir takım farklılıklar gösteriyorsa kayıt yapısının değişken olması• gerekir. Örneğin üniversitedeki akademik ve idari personelin bilgileri içinde ortak olanlar (Kimlik bilgileri,fakültesi v.b) olduğu gibi farklılık gösterenler de vardır ( anabilimdalı, akademik ünvanlar v.b) Her iki personelin de kaydedilebileceği kayıt tipinin değişken tipte olması gerekmektedir. Değişken kayıt tipi sabit ve değişken olmak üzere iki kısımdan oluşmaktadır. Değişken tipin tanımlanması case ifadesine benzer. Etiket alanının içeriğine bağlı olarak kayıt düzenlenir. Değişken kayıt tipinin formatı aşağıda görülmektedir. Type KayitTip = record alan -1 : tip-1; alan -2 : tip-2 ; { Sabit kısım} .... alan-N ; tip-N; case etiket : EtiketTipi of etiket -1 : (alan listesi -1) ; etiket-2 : (alan listesi-2) ; {değişken kısım} .... etiket -M : (alan listesi-M) ; end ;
  38. 38. • Örneğin idari personelin adı soyadı, sicil numarasını ve görevini akademik personelin ise adı soyadı, sicil numarası ve ünvanı içeren bir değişken kayıt aşağıdaki şekilde tanımlanabilir. Type PersonelTip = (Akademik,idari) ; KayitTip = record Adsoyad : string[20]; SicilNo : string[10]; Case personel : PersonelTip of Akademik : (Unvan : string[7]) ; İdari : ( Görev : String[15]); end ; {KayıtTip} var eleman : Kayit Tip ;• Değişken kayıtların sabit kısımları diğer kayıtlarda olduğu gibi görüntülenir. Değişken kısımların görüntülenmesinde ise case ifadesinden yararlanılır: With eleman do {Sabit kısımların yazılması} begin WriteLn(Ad Soyad.....:, AdSoyad); WriteLn(SicilNo.....:,SicilNo); Case personel of {Değişken kısımların yazdırılması} Akademik : WriteLn (Unvanı...:, Unvan); İdari : WriteLn (Görevi...:, Görev); End ; {case}
  39. 39. BÖLÜM 7 : KÜMELER• Pascaldaki küme (Set) kavramı matematikteki kumelerden gelmektedir. Elemanları 1,3,5 olan küme matematikte {1, 3, 5} şekIinde gösterilmektedir. Pascalda { ve } sembolleri açıklama amacıyla kullanıldığı için kümeler köşeli parantez içinde [1,3,5] şeklinde yazılırlar. Kümenin elemalarının sıralı olaması gerekmediği için diğer veri tiplerinden farklılıklar gösterir.Bu nedenle kümenin elemanlarına doğrudan erişilmez. Küme Veri Tipi• Kümeler bir bilgisayar diliyle oluşturulduğu zaman bazı kısıtlamaları beraberinde getirmektedir. Örneğin matematikte kümeler sonsuz sayıda elemana sahip olabilir ama Pascalda bu sayı 256 ile sınırlıdır.• Bir kümenin elemanları çözülecek problem için tanımlanan evrensel küme (Universal Set) den seçilir. Örneğin sesli harfler kümesi için evrensel küme tüm harflerden oluşan küme olabilir. Pascal programında kümenin tüm elemanları aynı tipte olmalıdır. Kümenin taban tipi olarak adlandırılan bu tipin sayma veri tipinde olmalıdır. Kümenin taban tipi olarak adlandırılan bu tipin sayma veri tipinde olması gerekir. Küme tanımlamada set of sözcüğü kullanılır. Type SetTip = set of Taban tip;
  40. 40. • Rakam ve gün kümeleri aşağıdaki şekilde tanımlanabilir: Type Rakamlar = 0..9; Gunler = (Pazartesi, Salı, Carşamba, Persembe, Cuma, Cumartesi, Pazar); RakamKumesi = set of Rakamalar; GunKümesi = set of Gunler; Var Rakam1 : Rakamlar ; Gun1 : Gunler; Rakam : RakanKumesi; Gun: GünKumesi;• Rakam1 değişkeni Rakamlar veri tipinde olduğu icin 0-9 aralığında bir değer içerebilir. Rakam ise RakanKumesi tipinde olduğu için 0-9 aralığındaki değerlerden herhangi bir sayıda eleman içerebilir. Benzer şekilde Gun1 değişkeninde haftanın günlerinden biri saklanabilirken, Gun degişkeninde haftanın günlerinden oluşmuş bir küme saklanabilir.• Pascalda küme sabitleri köşeli parantezler içinde yazılır. Örneğin 0-9 aralığında çiftsayılardan oluşan küme sabiti şu şekilde yazılır: [ 0, 2, 4, 6, 8]• Kümelerde elemanların sırası önemli olmadığı için yukarıdaki küme [ 2,0,4,8,6 ] veya [ 8,6,4,2,0 ] şeklinde de yazılabilir. Kümenin elemaları sıralı ise şu şekilde de yazılabilir: [ 0..4 ]• Kümenin elemanlarının sıralı olanlar iki nokta ile tanımlanır diğerleri virgülle ayrılır. Örneğin 0-9 rakamları ve A-F harflerinden oluşan onaltılı sayı kümesi şu şekildede yazılabilir : [ 0..9, A..F.]• Kümeye atanan değerler kümenin taban tipiyle aynı olması gerekmektedir. Yukarıda görüldüğü gibi kümeye değer atarken sabitler veya değişkenler kullanılabilmektedir. Gun kümesine Pazartesi, Çarşamba ve Cuma sabitleri atanırken Rakam kümesine Rakam1 değişkeninin içeriği atanmaktadır.• Pascalda boş küme içi boş köşeli parantezler kullanılarak belirtilir. Örneğin Rakam kümesi boş küme olarak aşagıdaki şekilde tanımlanabilir: Rakam : = [ ];
  41. 41. Küme Üyeliği• Bir elemanın verilen kümenin elemanı olup olmadığını bulmak için in ilişkisel operatörü kullanılır. Küme üyeliğini test etmek için kullanılan booean ifadesi aşağıdaki gibidir: eleman in küme• Bu ifade küme; küme sabiti, küme değişkini veya küme ifadesi şeklinde olabilir. Rakam1 ve Teksayi değişkenlerini aşağıdaki şekilde tanımlanır: Type Rakamalar = 0..9 ; RakamKümesi = set of Rakamlar ; Var Rakam1 : Rakamlar; TekSayı : RakamKümesi ;• TekSayi kümesine Teksayi : = [ 1,3,5,7,9] değerleri atandığında yazılan boolean ifadeleri ve sonuçları aşağıda görülmektedir: 4 in Teksayı Yanlış 5 in Teksayı Doğru• Yukarıdaki ifadelerde 4 ve 5 sabit olarak kullanılmıştır. Bu ifadelerde sabit yerine değişkenlerde kullanılabilir. Eğer Rakam1 değişkenine 4 değerini atayarak aşagıdaki ifadeler yazılabilir: Rakam1 in TekSayi Yanlış Rakam1+1 in TekSayı Doğru
  42. 42. Küme İşlemleri• Nümerik değerler ve aritmetik operatörler kullanılarak aritmetik ifadelerden nümerik sonuçlar elde edildiği gibi kümeler ve küme operatörleri kullanılarak yazılacak küme ifadelerinden de küme tipinde sonuçlar elde edilir.• Verilen iki küme kullanılarak yeni bir küme oluşturulabilir. Oluşturulacak kümenin elemanları ; verilen kümelerin tüm elemanları, ortak elemanları veya farklı elemanları olabilir. Bu yeni kümeler sırasıyla ; birleşim, kesişim, ve fark kümeleridir.• Birleşim işlemi + işareti ile gösterilir ve sonuç verilen kümelerin tüm elemanlarını içerir. [1,2,5] + [2,4]..... [1,2,4, 5]• Kesişim işlemi * işareti ile gösterilir ve sonuç verilen kümelerin ortak elemanlarını içerir: [1,2,5] * [2 ,4].... [2]• Fark işlemi - işareti ile gösterilir ve sonuç A kümesinin B’de olmayan elemanlarıdır: [A,B,G,H] - [A,B,C,D]....[G,H]• İfadelerde kullanılacak kümelerin taban tiplerinde aynı olması gerekmektedir. Verilecek bir küme ifadesinde öncelikler kesişim işlemi (*) daha sonra birleşim veya fark işlemi (+/-) yapılır. Aritmetik ifadelerde olduğu gibi parantezler kullanılarak işlem sırası değiştirilebilir.
  43. 43. Kümelerin Karşılaştırılması• İlişkisel operatörler yardımıyla iki kümenin eşit olup olmadıklarına veya bir kümenin diğerini kapsayıp kapsamadığına bakılabilir. Aşagıda iki küme arasında kontrol edilebilecek ilişkiler görülmektedir.• Ave B kümeleri ayni eleinanlardan oluşuyorsa eşittir (A=B),• Ave B kümelen aym elemanlardan oIuşmuyorsa eşit degildir (A<>B),• A küniesinin her elemanı B kumesinin de elemanı ise A kümesi B kumesinin alt kumesidir (A<=B) veya B, Ayi kapsar( B>=A).• Kümelerin karşılaştırılması ile ilgili örnekler ve sonuçları aşağıda görülmektedir: [1,2,3] = [1,3,2] Doğru [1,2,3] <> [1,3,2,] Yanlış [1,2,3] <= [1,3,24] Doğru [1,2,3] >= [1,3,2,4] Yanlış Kümelerin Okunması ve Yazdırılması• Bir çok veri tipinde olduğu gibi küme tipi de standart Read ve Write prosedürleri ile okutulup yazdırılamaz. Okuma işleminde küme elemanları teker teker okunarak başlangıçta boş olan kümeye birleşme işlemi ile eklenir. Kümeyi yazdırmak için taban tipinin alabileceği tüm değerlerin küme içinde yer alıp almadığı in ifadesi ile kontrol edilir, yer alıyorsa yazdırılır.
  44. 44. BÖLÜM 8 : DOSYALAR Metin Dosyalar• Tekst dosyalarının temel elemanı karakterlerdir. Tekst dosyasında 0-9 rakamları, A..Z büyük harfler a..z küçük harfler, noktalama işaretleri, diğer semboller ve kontrol karakterleri yer alabilir. Karakterler satırlar şeklinde düzenlenmiştir. Satır uzunluğunda herhangi bir sınırlama yoktur. Satır sayısında da bir sınırlama yoktur. Sınırlama ancak yardımcı belleğin kapasitesinden ileri gelebilir.• Dosya bir editör kullanılarak yazıldığında dosya sonu karakteri editör tarafından otomatik olarak eklenir. Eğer dosya kullanıcı tarafından giriliyorsa ^Z (Kontrol-Z) gibi bazı kontrol karakterlerinin kullanıcı tarafından girilmeis gerekir.• Tekst dosyaları yalnız çıkış veya yalnız giriş için kullanılabilir. Diğer deyişle bir tekst dosyası hem giriş hem de çıkış için kullanılamaz Tekst dosyası kullanabilmek için TEXT tipinde bir dosya değişkeninin tanımlanması gerekir: var GirisDosyasi, CikisDosyasi : text ;
  45. 45. • Dosyaların kullanılmadan önce açılması gerekir. Açma işlemi mevcut bir dosyadan veri okumak için yapılabileceği gibi verileri yazılabileceği yeni bir dosya oluşturmak için de yapılabilir. Dosya açılmadan önce yardımcı bellekte dosyanın adının ne olduğunun belirtilmesi gerekir. Bu amaçla assign ifadesi kullanılır. Örneğin tekst olarak tanımlanan GirisDosyasinın adı GIR.DAT ise Assign (GirisDosyasi, GIR.DAT ) ; İfadesiyle dosyanın adı belirtilir. Tekst dosyasının okunması• Aşağıda GIR DAT dosyasını okuyarak ekrana yazan programın tamamı görülmektedir. Program TekstOku ; var GirisDosyasi : text; Begin assing (GirisDosyasi, GIR. DAT) ; reset (GirisDosyası) do while not eof (GirisDosyasi) do Begin ReadLn (GirisDosyasi, Sayi, Kare,Kup); WriteLn (Sayi,Kare,Kup); end Close (GirisDosyası) ; end
  46. 46. Metin Dosyaya Yazma Verilen tekst dosyalarına yazdırılabilmesi için dosyanın rewrite ifadesiyle açılması gerekmektedir. Rewrite• ifadesi diskette belirtilen isimde dosya yoksa oluşturur varsa dosyanın içindekileri siler. Rewrite ifadesi ile açma işlemi yapılmadan önce dosya okumada olduğu gibi assing ifadesiyle dosya değişkenin temsil ettiği dosyanın adının belirtilmesi gerekir. Örneğin verileri yazdırmak amacıyla CIKTI.DAT adlı dosyayı CikisDosyasi adlı dosya değişkenini, kullanarak Assing (CikisDosyasi, CIKTI.DAT) ; Rewrite (CikisDosyasi) ; ifadeleriyle açabilir. Dosyaya verileri yazdırmak için standart Write Prosedürü kullanılır. Daha öncekikullanımından farklı paremetre olarak dosya değişkeninin belirtilmesidir. İşlemler bittikten sonra açılan dosya yine close ifadesi ile kapatılmalıdır.• Aşağıda 1den 100e kadar sayıları kareleri ve küpleri ile birlikte tekst sosyaya yazan program görülmektedir:• Program TekstYaz ; Var CikisDosyasi : text; Sayi : integer ; Begin Assing (CikisDosyasi, CIKTI.DAT) ; Rewrite (CikisDosyasi); for sayi : = 1to 100 do WriteLn (CikisDosyasi, Sayi :10,Sayi* Sayi:10,Sayi*Sayi*Sayi:10); Close (CikisDosyasi); end
  47. 47. İkili Dosyalar• İkili dosyalar bir kaç yönden tekst dosyalarından farklıdır. İkili dosyalar rasgele erişilebilirdirler yani dosyayı satır satır okumak yerine dosyanın herhangi bir yerine doğrudan erişebilirsiniz. İkili dosyanın okunması program DataFiles;var f: file of Byte; b: Byte;begin Assign(f,MyFile.txt); Reset(f); Seek(f,0); Read(f,b);end
  48. 48. İkili Dosyaya Yazma• Write komutu ile dosyaya bir değer yazmak için öncelikle o değeri bir değişkene atamak gerekir. Yazmak istediğimiz yeri bulmak için Seek komutunu kullanırız. Ve ayrıca unutmamalıyız ki ikili dosyalar 1’den değil 0’dan başlar: program DataFiles;var f: file of Byte; b: Byte;begin Assign(f,MyFile.txt); Reset(f); b := 1; Seek(f,0); Write(f,b);end.
  49. 49. BÖLÜM 9 : POINTERS Typed pointer’ları deklare etmek ve kullanmak• Bir typed pointer deklare etmek için bu pointer’in işaret etmesini istediğiniz değişken türünün önüne bir ^ işareti koymalısınız. Bir tamsayiyi işaret eden bir pointer örneği şu şekildedir: var p: ^integer;• @ işareti bir değişkenin önüne konularak o değişkenin adresi elde edilir. Daha sonra bu adres bir pointer’a kaydedilir, çünkü pointer’lar adres tutan değişkenlerdir. Bir tamsayinin adresini tutan bir pointer şu şekilde elde edilebilir: program Pointers;var i: integer; p: ^integer;begin p := @i;end.
  50. 50. Bir tamsayi değişkenini işaret eden bir pointer kullanarak o tamsayi değişkeninin değerini değiştiren program örneği• aşağıdaki gibidir: program Pointers;var i: integer; p: ^integer;begin i := 1; p := @i; p^ := 2; writeln(i);end Hafızadan yer ayırmak ve bu yeri geri vermek ise şu şekilde yapılır:• program Pointers;var p: ^integer;begin new(p); p^ := 3; writeln(p^); dispose(p);end
  51. 51. Untyped pointer’ları deklare etmek ve kullanmak• Deklerasyonu şu şekildedir:var p: pointer;• Bu tür pointer kullanırken new ve dispose yerine getmem ve freemem fonksiyonlarini kullanırız: program Pointers;var p: pointer;begin getmem(p,sizeof(integer)); freemem(p,sizeof(integer));end.
  52. 52. Furkan EYBEK 05104414Teşekkürler…

×