52
programlamaya dair herşey... of programming Turbo PASCAL Ana Menü ................................................................................................................ 8 Alt menüler ............................................................................................................. 8 Programın Yazımı (Edit) .................................. ........... .................................................. 11 Programın Saklanması (Save) ................................................ ....................................... 12 Programın Derlenmesi (Compile) .......................................................... ........................ 12 Programın Çalıştırılması (Run) ................................................................... ................... 12 EXE Uzantılı Dosya Oluşturma ....................................................................... .................13 Turbo Pascal ‘da Kullanılan Komut ve Kelimeler ......................................................... 14 Program Başlığı ..................................................................................................... 17 Tanımlama Bloğu .................................................................................................. 17 Uygulama Bloğu .................................................................................................... 20 SABİTLER ....................................................................................................................... 23 Sabit (Constant) Tanımlama ....................................................................................... 23 Değiken (Variable) Tanımlama .............................................................................. 24 Değişken İsimleri ................................................................................................... 24 Değişken ve Sabit İsmi Seçilirken Dikkat Edilmesi Gereken Kurallar............................... 24 Değişken Tipleri ..................................................................................................... 25 Standart Değişken Tipleri ................................................................................................. 25 Tamsayı (Integer) Değişken Tipleri ................. ............. .................................................. 25 Gerçek (Real) Değişken Tipi ............................................................................................ 25 Karakter (character) Değişken Tipi .................................................................................. 25 String Değişken Tipi ......................................................................................................... 25 Boolean Değişken Tipi .................................................................................................... 26 Programcının Tanımladığı Değişken Tipleri ......................................................... 26 Tip Tanımlama ................................................................................................................. 26 Dizi Tipi Değişkenler .............................................................................................. 26 Dizi Tipi Değişkenlerin Tanımlanması .............................................................................. 26 Küme Tipi değişkenler ......................................................................................... 27 In operatörü ...................................................................................... ............................... 27 Küme Tipi Değişkenlerin Tanımlanması ................................................ ......................... 27 Küme Tipi Değişkenlere Değer Atama ............................................... ............................ 27 Küme İşlemleri ...................................................................................... .......................... 27 Sıralı Tip Değişkenler ............................................................................ ............... 27 Sıralı Tip Değişkenlerin Tanımlanması ................................................ ........... ............... 27 Sınırlı Tip Değişkenler............................................................................................. 27 Sınırlı Tip Değişkenlerin tanımlanması.................................................. ........................... 27 Sıralı Verilerin Yazdırılması.................................................................... .......................... 27 Sıralı Tip Veri Kullanmak Gerçekten Gerekli midir? ................................. ........................ 27 Record değişken Tipi............................................................................................... 28 Record Tipi Değişkenlerin Tanımlanması................................................. ........................ 28 Record Tipi Değişken Tanımlanması................................................................................. 28 Operatörler ............................................................................................................. 28 Aritmetik işlem Operatörleri................................................................................................ 28 İlişki Operatörleri................................................................................................................ 28 Mantıksal Operatörler........................................................................................................ 28 İÇİNDEKİLER TURBO PASCAL’A GİRİŞ EDİTÖR ...................................................................................................................8 PASCAL KAREKTER SETİ .............................................................................................. 13 PASCAL PROGRAMININ GENEL YAPISI ...................................................................... 16 SABİTLER DEĞİŞKENLER VE OPERATÖRLER .......................................................... 23 DEĞİŞKENLER ............................................................................................................... 23 TEMEL GİRİŞ / ÇIKIŞ KOMUTLARI WRITELN.......................................................................... .................................... 28 Anasayfa C Programlama Dili C++ DELPHI Basic Programlama Dili HTML Visual Basic JAVA PHP Assembler SQL XML CSS Pascal MySQL ASP ASP.NET Turbo PASCAL Algoritma Veri Tabanı DOS Hakkında Herşey Programlama Dilleri 0 Diğer Sonraki Blog» Blog

pascal programming

Embed Size (px)

Citation preview

programlamaya dair herşey...

of programming

Turbo PASCAL

Ana Menü ................................................................................................................ 8Alt menüler ............................................................................................................. 8Programın Yazımı (Edit) .................................. ........... .................................................. 11Programın Saklanması (Save) ................................................ ....................................... 12Programın Derlenmesi (Compile) .......................................................... ........................ 12Programın Çalıştırılması (Run) ................................................................... ................... 12EXE Uzantılı Dosya Oluşturma ....................................................................... .................13

Turbo Pascal ‘da Kullanılan Komut ve Kelimeler ......................................................... 14

Program Başlığı ..................................................................................................... 17Tanımlama Bloğu .................................................................................................. 17Uygulama Bloğu .................................................................................................... 20

SABİTLER ....................................................................................................................... 23Sabit (Constant) Tanımlama ....................................................................................... 23

Değiken (Variable) Tanımlama .............................................................................. 24Değişken İsimleri ................................................................................................... 24Değişken ve Sabit İsmi Seçilirken Dikkat Edilmesi Gereken Kurallar............................... 24Değişken Tipleri ..................................................................................................... 25Standart Değişken Tipleri ................................................................................................. 25Tamsayı (Integer) Değişken Tipleri ................. ............. .................................................. 25Gerçek (Real) Değişken Tipi ............................................................................................ 25Karakter (character) Değişken Tipi .................................................................................. 25String Değişken Tipi ......................................................................................................... 25Boolean Değişken Tipi .................................................................................................... 26Programcının Tanımladığı Değişken Tipleri ......................................................... 26Tip Tanımlama ................................................................................................................. 26Dizi Tipi Değişkenler .............................................................................................. 26Dizi Tipi Değişkenlerin Tanımlanması .............................................................................. 26Küme Tipi değişkenler ......................................................................................... 27In operatörü ...................................................................................... ............................... 27Küme Tipi Değişkenlerin Tanımlanması ................................................ ......................... 27Küme Tipi Değişkenlere Değer Atama ............................................... ............................ 27Küme İşlemleri ...................................................................................... .......................... 27Sıralı Tip Değişkenler ............................................................................ ............... 27Sıralı Tip Değişkenlerin Tanımlanması ................................................ ........... ............... 27Sınırlı Tip Değişkenler............................................................................................. 27Sınırlı Tip Değişkenlerin tanımlanması.................................................. ........................... 27Sıralı Verilerin Yazdırılması.................................................................... .......................... 27Sıralı Tip Veri Kullanmak Gerçekten Gerekli midir? ................................. ........................ 27Record değişken Tipi............................................................................................... 28Record Tipi Değişkenlerin Tanımlanması................................................. ........................ 28Record Tipi Değişken Tanımlanması................................................................................. 28Operatörler ............................................................................................................. 28Aritmetik işlem Operatörleri................................................................................................ 28İlişki Operatörleri................................................................................................................ 28Mantıksal Operatörler........................................................................................................ 28

İÇİNDEKİLERTURBO PASCAL’A GİRİŞEDİTÖR ...................................................................................................................8

PASCAL KAREKTER SETİ .............................................................................................. 13

PASCAL PROGRAMININ GENEL YAPISI ...................................................................... 16

SABİTLER DEĞİŞKENLER VE OPERATÖRLER ..........................................................

23

DEĞİŞKENLER ............................................................................................................... 23

TEMEL GİRİŞ / ÇIKIŞ KOMUTLARIWRITELN.......................................................................... .................................... 28

Anasayfa

C Programlama Dili

C++

DELPHI

Basic Programlama Dili

HTML

Visual Basic

JAVA

PHP

Assembler

SQL

XML

CSS

Pascal

MySQL

ASP

ASP.NET

Turbo PASCAL

Algoritma

Veri Tabanı

DOS Hakkında Herşey

Programlama Dilleri

0 Diğer Sonraki Blog» Blog Oluştur

WRITE.................................................................................................................... 28READLN................................................................................................................. 29READ.......................................................................... .......................................... 29FORMATLI ÇIKIŞ................................................................................................... 29Integer Sayıların Formatlanması....................................................................................... 29Real Sayıların Formatlanması.......................................................................................... 29Char Tipi Verilerin Formatlanması.................................................................................... 29String tipi Verileri Formatlamak......................................................................................... 30Boolean Tipi Verilerin Formatlanması............................................................................... 30

Compiler Bildirisi Tanımlamak.......................................................................................... 30FORWARD bildirisi........................................................................................................... 30R bildirisi.......................................................................... ................................................ 30I bildirisi.......................................................................... .................................................. 30I (INCLUDE DOSYA) Bildirisi............................................................................................ 30

IF ­THEN deyimi.............................................................................................................. 31IF ­THEN _ELSE deyimi................................................................................................... 31CASE ­OF deyimi.............................................................................................................. 32

GOTO deyimi.......................................................................... ..................................... 32FOR­DO deyimi............................................................................................................ 33WHILE­DO deyimi.............................................................................................................. 34REPEAT­UNTIL deyimi................................................................................................ 34

Sıralama (sort) işlemi ................................................................................................... 37iKi BOYUTLU DEĞİŞKENLER..................................................................................... 37

MKDIR prosedürü.................................................................................................. 38PARAMCOUNT fonksiyonu.................................................................................... 38PARAMSTR fonksiyonu......................................................................................... 39GETDIR prosedürü; ............................................................................................... 39CHDIR prosedürü................................................................................................... 39IORESULT fonksiyonu........................................................................................... 40RMDIR prosedürü.................................................................................................. 40GETDATE prosedürü............................................................................................. 41GETTIME prosedürü.............................................................................................. 41SETDATE prosedürü.............................................................................................. 42SETTIME prosedürü.............................................................................................. 42CHR fonksiyonu..................................................................................................... 42ORD fonksiyonu..................................................................................................... 43PRED fonksiyonu................................................................................................... 43SUCC fonksiyonu................................................................................................... 43TEXTBACKGROUND prosedürü........................................................................... 43TEXTCOLOR prosedürü......................................................................................... 43LOWVIDEO prosedürü........................................................................................... 44NORMVIDEO prosedürü........................................................................................ 44READKEY fonksiyonu............................................................................................ 44KEYPRESSED fonksiyonu...................................................................................... 44GOTOXY prosedürü................................................................................................ 45WINDOW prosedürü............................................................................................... 45COPY fonksiyonu................................................................................................... 45CONCAT fonksiyonu.............................................................................................. 45LENGTH fonksiyonu............................................................................................... 46POS fonksiyonu....................................................................................................... 46DELETE prosedürü................................................................................................ 46INSERT presedürü................................................................................................ 47STR prosedürü....................................................................................................... 47VAL prosedürü...................................................................................................... 47EXIT prosedürü...................................................................................................... 47HALT prosedürü...................................................................................................... 47DELAY prosedürü.................................................................................................. 47SOUND prosedürü................................................................................................. 48NOSOUND prosedürü............................................................................................ 48CLREOL prosedürü................................................................................................ 48DELLINE prosedürü............................................................................................... 48INSLINE prosedürü................................................................................................ 48

VERİ KONTROLÜ (COMPILER BİLDİRİLERİ) ..................................................... 30

PROGRAM AKIŞININ KONTROLÜDALLANMA DEYİMLERİ........................................................................................ 31

DÖNGÜLER........................................................................................................... 32

İNDİSLİ DEĞİŞKENLERİNDİSLİ DEĞİŞKENLERİNTANIMI................................................................................................................... 36TEK BOYUTLU DEĞİŞKENLER...................................................................................... 36

STANDART PROSEDÜR VE FONKSİYONLAR

WHEREX fonksiyonu............................................................................................ 48WHEREY fonksiyonu............................................................................................ 48RANDOM fonksiyonu............................................................................................. 48SIZE OF fonksiyonu............................................................................................... 48UPCASE fonksiyonu.............................................................................................. 48ABS fonksiyonu ..................................................................................................... 48INT fonksiyonu....................................................................................................... 49FRAC fonksiyonu................................................................................................... 49TRUNC fonksiyonu................................................................................................. 49ROUND fonksiyonu................................................................................................ 49ODD fonksiyonu..................................................................................................... 49SQR fonksiyonu.................................................................................................... 49SQRT fonksiyonu................................................................................................... 49SIN fonksiyyonu..................................................................................................... 49COS fonksiyonu..................................................................................................... 49ARCTAN fonksiyonu.............................................................................................. 50EXP fonksiyonu...................................................................................................... 50LN fonksiyonu......................................................................................................... 50

Prosedür Kuralları................................................................................................... 51Prosedürlerde Değer Aktarımı................................................................................ 51Değer Aktarmayan prosedürler (RAREMETRESİZ PROSEDÜRLER) ............................. 51Değer Aktaran Prosedürler (PAREMETRELİ PROSEDÜRLER)....................................... 52Tek Yönlü Değer Aktarımı................................................................................................. 52Çift Yönlü Değer Aktarımı................................................................................................. 52FONKS İYON ALT PROGRAMLARI...................................................................... 52FONKSİYON Tanımlama................................................................................................... 52Özyineleme (iç içe fonksiyon Kullanımı) .......................................................................... 53Alt Programların Yan Etkileri.............................................................................................. 53

Pascal Tarafından Desteklenmiş Unit’ler..................................................................... 53Programcı tarafından Yazılan Unıt ‘ler.......................................................................... 53

DOSYA KAVRAMI ........................................................................................................... 54TEXT DOSYALARI (SIRALI ERİŞİMLİ DOSYALAR) ...................................................... 54Text dosyalarda kullanılan Standart Fonksiyonlar.................................................. 54Dosya Yaratmak..................................................................................................... 54Dosyaya Bilgi Yazmak ............................................................................................ 54Dosyadan Bilgi Okumak.......................................................................................... 54Dosyaya Bilgi Eklemek............................................................................................ 54Dosyadan Bilgi Silmek............................................................................................. 56Dosyadaki Bilgiyi Değiştirmek................................................................................. 56

Dosya Yaratmak ..................................................................................................... 58Dosyaya Bilgi Yazmak............................................................................................. 58Dosyadan Bilgi okumak........................................................................................... 59Dosyadan Bilgi Aramak........................................................................................... 59Dosyadan Bilgi silmek............................................................................................. 59

GRAFİK DEYİMLERİ.................................................................................................... 71

Editör Zeminini ve Yazı Rengini Değiştirme...................................................................... 71Editör Programlarında Bul­Değiştir İşlemleri..................................................................... 72Fonksiyon Tuşlarında fonkiyonlar Atamak........................................................................ 72Programlara Şifreli Ulaşma............................................................................................... 73

Kursör Görüntüsünü Yok Etmek................................................................................... 74Mouse Koordinatları Gösteren Program....................................................................... 74

ALT PROGRAMLARPROSEDÜR ALTPROGRAMLARI..................................................................................................... 51

BİRİMLER (UNITS)

.............................................................................. 53

DOSYALAR

RECORD TİPİ DOSYALAR (RASGELE ERİŞİMLİ DOSYALAR) .................................. 58

PORT‘ LARIN KULLANIMIPARALEL PORT’UN KULLANIMI......................................................................... 60SERİ PORT’UN KULLANIMI......................................................................................... 67

GRAFİKGRAFİK MOD KAVRAMI ..................................................................................... 70EKRAN BOYUTLARI....................................................................................................... 70

ÖRNEK PROJE PROGRAMLARIEDİTÖR PROGRAMLARI YAZMAK....................................................................... 71

MOUSE PROGRAMLARI YAZMAK........................................................................ 73

Paralel Port’u Kullanarak Elektirikli Cihazlara Kumanda Eden Program....................... 76

RUN­TIME HATA MESAJLARI ................................................................................. 83

PASCAL yüksek seviyeli bir compiler dildir. Bu kompiler dilde kaynak programın tamamıÖnce makine diline çevrilir ve EXE uzantılı object program elde edilir. Daha sonra bu kaynak program DOS ortamında sadece ismi yazılarak çalıştırılır. Pascal kaynak programını yazmak için bir text editörü kullanmak gerekir. Turbo pascal’ınenönemli özelliklerinden birisi de yazma işlemlerini kolaylaştıran özel editörünün bulunmasıdır.

Turbo pascal programlarınızı yazacağınız IDE ortamında kullanılan editör komutlarını içerir.

Open... F3 : Daha önceden hazırlanmış olan programları ekrana getirir.

New : Yeni bir program yazmak gerektiğinde, yeni dosya açmak için kullanılır.

Save F2 : Editör içerisinde isim verilmiş bir program varsa , F2’ye basıldığında direkt olarak buprogram sürücüye kaydedilir .

Save as... : Edit penceresindeki bir programı başka bir isimle kaydetmek istenildiğindekullanılır.

Save all : Pascal editöründe birden fazla pencere açılarak programlar yazılmış ise hepsinibirden kaydetmek için kullanılır.

Change dir... : Aktif sürücüyü değiştirmek için kullanılır.

Print : Aktif penceredeki programı yazıcıdan almak için kullanılır.Get info... : Teknik bilgileri öğrenmek amacıyla kullanılır.

Dos shell: Geçici olarak dos ortamına geçmek için kullanılır.

Exit Alt­x : Turbo pascal editöründen çıkmak için kullanılır.

Restore Line : Silinmiş olan en son satırı kursörün bulunduğu pozisyona tekrar getirmek içinkullanılır.

Cut shift­Del : Seçilmiş bir text parçasını programdan silip, hafızaya alır.

Find... : Program içerisinde yazılmış olan harf veya kelimeyi bulmak için kullanılır.

Replace... : Program içerisinde yazılmış olan kelimeyi değiştirir.

Search again : Replace veya find ile bulunan kelimeden sonra aynı kelimeden olup olmadığınıarar.

ÇİZİM PROGRAMLARI YAZMAK.......................................................................... 75PARALEL PORT’UN KULLANIMI..................................................................................... 75

TURBO VISION.................................................................................................... 78

TURBO PASCAL HATA MESAJLARIICOMPİLER HATA MESAJLARI............................................................................. 80

DİZİN................................................................................................ 83

1.BÖLÜM

TURBO PASCAL‘ A GİRİŞ

EDİTÖRGenel Bilgiler

Ana Menü

Alt MenülerFILE menüsü

EDIT menüsü

SEARCH menüsü

Go to line number... : Kursörü program içerisinde istenilen bir satır numarasına komutlandırmakiçin kullanılır.

Run Ctrl­F9 : Programı derledikten sonra çalıştırmak için kullanılır. Program reset Ctrl­F2 : işaretlenen yeri silmek , programı başlangıç durumuna getirmek amacıyla kullanılır.

Go to cursor F4 : Programı kursörün bulunduğu pozisyona kadar çalıştırır.

Trace into F7 : Programı satır satır çalıştırır.

Step over F8 : Trace into ile aynıdır.

Compile Alt­F9 : Aktif pencerede bulunan program veya unıt derlenir.Make F9 : Aktif programı değişen unıt’leriyle derlemek için kullanılır.

Build : Programı bütün unit ‘ leriyle yeniden derlemek için kullanılır.

Destination Memory : Programı belleğe veya diske derlemesiniseçmek için kullanılır.

Watches : Watches seçeneğinin bir alt menüsü olan “ edit watch “ ekrana gelir.

Add Watch : Program çalışırken değerleri istenen değişenleri eklemek için kullanılır.

Edit Watch... : Program çalışırken değerleri izlenecek olan değişken isimlerini yazmamak vedeğiştirmek için kullanılır.

Compiler... : Derleme seçeneklerini değiştirmek için kullanılır.

Memory size... : Bellek büyüklüğünü değiştirmek için kullanılır.

Linker... :Bu komut seçilince “ linker “ iletişim penceresi açılır.

Debugger... : Debug menüsündeki seçeneklerin özelliklerini değiştirmek için kullanılır.

Directories... : Turbo pascal dosyalarının bulunduğu yeri görmek ve bu yerleri değiştirmek içinkullanılır.

Environment : Beş farklı iletişim kutusunun seçilebileceği bir pencere gelir.

Size/ move Ctrl­F5 : Aktif pencerenin ekranda kaydırılması için kullanılır.

Zoom F5 : Aktif pencerenin ekranda kapladığı alanı genişletmek için kullanılır.

Tile : Turbo editörde bulunan pencere birden fazla olduğunda, bu pencereleri daha küçükpencerelere bölerek hesini ekranda görmemizi sağlar.

Cassade : Ekrandaki birden fazla pencereyi üst üste getirme durumunu sağlar.

Next F6 : Üst üste duran pencerelerden bir sonrakini aktif hale getirir.Previous Shift­F6 : Cassade durumundaki pencerelerden bir öncekini aktif hale getirir.

Close Alt­F3 :Aktif pencereyi hafızadan ve ekrandan silmek için kullanılır.

Output : Dos ortamındaki program çıktılarını görmek için kullanılır.

User screen Alt­F5 : Dos ortamındaki program çıktılarını ekranın tamamını kaplayacak şekildegörmemizi sağlar.

List... Alt­0 : Açık bulunan penceredeki program dosyalarının isimlerini listeler.

Contents : Turbo pascal ‘daki bölüm başlıklarını ekrana getirerek, istenilen bölüm ile ilgili yardımıseçmek için kullanılır.

İndex Shift­ F1 : Help dsyasında bulunan komutların tümünü alfabetik sırrayla listelemek için

RUN menüsü

COMPILE menüsü

DEBUG menüsü

OPTIONS menüsü

WINDOW menüsü

HELP menüsü

kullanılır.

Topic search Ctrl­F1 : Kursörün üzerinde bulunduğu Pascal komutu ile ilgili İngilizce açıklamalarıekrana getirir.

Previous topic Alt­F1 : Önceden seçilen help seçeneklerine, geriye doğru birer adım giderekyardımı ekrana getirir.

Help on help : Help ekranının kullanılışınıaçıklayan satırlar ekrana gelir.

Bir Pascal programı yazmak için ilk önce editörde bulunan diğer programları silip, boş bir ekranoluşturmak gerekir. F10 tuşuna basıp FİLE seçeneğini ışıklandırırız. Sonra file menüsünün içinde bulunan NEWkelimesini seçip Enter tuşuna basarız. Böylece boş bir ekran açmış oluruz.Gereksiz yere açılmış NONAME... dosyalarını silmek için; ALT+F3 tuşlarına bir kaç defa basınız.EDIT, PW editöründe bir satır aşağı inmek için satır sonlarında enter tuşuna , içeri doğru girintiliyazmak için ise, tab tuşuna basılır.

Pascal programı örneği :

Programınızı yazdıktan sonra diskete kaydetmeniz gerekecektir.

F10 tuşuna basınız, sonra da F tuşuna basınız. Aşağı ok tuşuna basarak Save seçeneğiniışıklandırıp Enter tuşuna basınız. Bu işlem için başka bir yöntemde direkt olarak F2 tuşunabasmaktır.

Yazılan bir programın çalıştırılabilmesi için tüm hatalardan arındırılmış olması gerekir. Turbo PascalCompiler (TCP.EXE), kaynak program içerisinde bu gibi hataları bulur ve programcıya bildirir.Programcı bu hataları düzelttikten sonra tekrar derleme işlemini yapar. Compile komutunuçalıştırmak için, Alt+C tuşlarına basınız, Compile seçeneğini ışıklandırarak Enter tuşuna basınız.Bu işlem için başka bir yöntem ise Alt+F9 tuşlarına birlikte basmaktır.

F10 tuşuna sonrada R yazınız. Pencere içerisindeki ilk seçenek olan run seçeneği ilk anda ışıklıolduğundan Enter tuşuna basınız. Aynı işlem için daha kısa bir yöntem ise CTRL+F9 tuşlarınabasmaktır. Türbo Pascal sizin programınızı çalıştıracak ve ekranda program çıktısını çok kısa birsürede görüntüleyecek ve tekrar paskal ana menüsüne geri dönecektir.Program çıktısını görmek için Alt+F5 tuşlarına basınız. Program çıktısı siz herhangi bir tuşadokununcaya kadar görüntülenecektir. Herhangi bir tuşa basınca tekrar ana menüye dönülür.Program çıktısını yeniden görmek istediğiniz zaman tekrar Alt+F5 tuşlarına basınız.

Pascal kaynak programları (programcının editörde yazdığı program) derlendiğinde makine dilineçevrilir. Makine diline çevrilmiş olan dosyanın uzantısı EXE’dir. EXE uzantılı dosya olarak diskekaydetmek için, “Compile” Menüsünün altındaki “destination” seçeneğinin karşısındaki bilgiyi “disk”

Programın Yazımı (Edit )

Programın Saklanması (Save)

Programın Derlenmesi (Compile)

Programın Çalıştırılması (Run)

EXE Uzantılı Dosya Oluşturma

Program Merhaba ;begin Writeln(‘Merhaba’) Writeln(‘Turbo Pascal Dünyasına Hoş geldiniz’); Writeln(‘Güle güle’);end.

olarak değiştirmek gerekir. Bu bilgi “memory” olarak kalırsa, makine diline çevrilen kaynak programdiske kaydedilmez.Bazı uzun programların derlenmesi sırasında “out of memory” hatası ile karşılaşılabilir. Bu hatanınoluşmasını önlemek için “Option” menüsündeki “Linker Buffer” alanı “disk” olarak değiştirilir.

Pascal programlarının yazılmasında üç tür karakter kümesi kullanılır. Bunlar sayısal, alfabetik veözel işaret kümeleridir. Bu karakterler aşağıdaki tabloda verilmiştir.

0’ dan 9’ a kadar olan rakamlar.A’ dan Z’ ye İngiliz alfabesindeki büyük harfler.A’ dan Z’ ye İngiliz alfabesindeki küçük harfler.

Özel İşaretler

+ Toplama işlemi ve stringlerin birleştirilmesinde kullanılır.

­ / *Aritmetik işlemlerde sırayla çıkarma, bölme ve çarpma işlemleriyapmak için kullanılır.

< > = Karar işlemlerinde ilişkisel operatörler olarak kullanılırlar.

# $Sayı yada karakterin başına getirildiğinde başka bir değerigöstermesini sağlar

..Yanyana yazılan iki nokta, iki ayrı değeri ve bunlar arasında kalantüm değerleri göstermek için kullanılır.

[ ] Bir dizinin indisini göstermek için kullanılır.(. .) Bir dizinin indisini göstermek için kullanılır. Program içinde açıklama yapmak için kullanılır.(* *) Program içinde açıklama yapmak için kullanılır.:= Değişkenlere değer atamak için kullanılır.

.Nokta, program sonunu belirtmek için ve sayıların ondalık kısmınıyazarken virgül yerine kullanılır.

,Virgül, listelenecek bir dizi sayı ve stringi birbirinden ayırmak içinkullanılır.

;Noktalı virgül, Pascal deyim veya komutlarını birbirinden ayırmak içinkullanılır.

‘Tek tırnak sembolü, karakter yada stringlerin başlangıç ve sonunubelirtmede kullanılır.

:Bir değişkenin tipi tanımlanırken değişken listesinin sonundakullanılır.

( ) Prosedür parametreleri parantez içinde yazılır.$ Bu ikili karakter, derleyiciye yapılan bildiriler için kullanılır.

_Alt çizgi, derleyici tarafından karakter olarak kabul edilir ve genellikledeğişken ismi tanımlanırken kullanılır.

Yukarıdaki karakterler, açıklamalarda da belirtildiği gibi, derleyici için özel anlamları vardır. Bunedenle amacı dışında kullanılmamalıdır. Kullanıldığında ise syntax error (yazım kuralı hatası) ilekarşılaşılır.

Turbo Pascal’da Kullanılan

Komut ve Kelimeler

Pascal’ın Ayrılmış Kelimeleri (Reserved Words)

Pascal’da işlevleri dışında kullanılmayacak başka deyimlerde vardır. Pascal’da bunlara, reservedword (ayrılmış kelimeler) denir. Bunlar programcı tarafından tanımlanamazlar. Örneğin birdeğişken adı olarak kullanılamazlar.Reserved Word (Ayrılmış kelimeler) şunlardır ;

And Extended Not TypeArray File Of ToBegin Forward Or UntilBoolean For Procedure UnitByte Function Program UsesCase Goto Real VarChar If Record WhileConst Implementation Repeat WithDiv In Set WordDo Integer Shortint Xor

PASCAL KARAKTER SETİ

Karakterler AçıklamalarSayılarAlfabetik Karakterler

Downto Interface SingleDouble Label StringElse Longint TextEnd Mod Then

Turbo Pascal Komutları

Pascal’ da yine ayrılmış kelimelerden başka, özel özel işlevleri dışında kullanılamayacak standartprocedure, function, deişken ve tipler vardır. Standart function ve procedure’ler Pascal derleyiciiçerisinde tanımlanmışlar. Zaten Pascal’da kullanılan ve çoğu zaman komut veya deyim adı verilentüm kelimeler (örneğin; writeln, readln, lenght) birer procedure, yani alt programdır. Bunların hepsiPascal derleyicide hazır olarak tanımlanmıştır. Türbo Pascal kütüphanesi içerisinde hazır bulunanifadeler aşağıda görülmektedir.

Abs Erase Keypressed Randomize StrArctan Exit Lenght Read SuccAppend Exp Line Readln SoundAssign False Ln Readkey TextBar Filepos Lowvideo Rectangle TextcolorBar3d Filesize Lst Rename TextbackgroundChr Frac Maxint Reset TrueCircle Getdir Mkdir Rewrite TruncClose Getdate Normvideo Rmdir TruncateClosegraph Getmaxx Nosound Round UpcaseClrscr Getmaxy Odd Seek ValConcat Getmaxcolor Ord Setdate WherexCopy Gettime Outtext Settime WhereyCos Gotoxy Outtextxy Setcolor WindowDelline Graphresult Paramcount Setfillstyle WriteDelay Halt Paramstr Setlinestyle WritelnDelete Initgraph Pi SettextstyleDetect Ioresult Pos SinEllipse Insline Putpixel SizeofEof Insert Pred SqrEoln Int Random Sqrt

PASCAL PROGRAMININ GENEL YAPISI

ÖRNEK 1: Klavyeden isminizi girdiğinizde ekrana bir mesaj yazdıran program.

Programı yazdıktan sonra, kaydedeceğiniz sürücüyü ve directory’ü belirlemek için F10 tuşuna basıpsonrada File menüsünü seçiniz. Change dir... komutunu seçip enter tuşuna basınız. Şimdi edprogramlarınızı kaydedeceğiniz sürücü ve directory için A:\ yazıp enter tuşuna basınız. Bundansonra saklama işlemi için sadece program adını yazmanız yeterli olacaktır. Çünkü directory bundansonra A:\ dır.

Program merhaba; var isim : string ;begin Writeln(‘isminizi Yazıp Enter Tuşuna Basınız >’); Readln(isim); Writeln(‘merhaba ‘,isim,’.’); Writeln(‘Umarım Pascal öğrenmekten hoşlanırsın !’);End.

Oval: program

Örnek 1’deki programın genel yapısı üç kısımdan meydana gelir.

Program başlığı

Tanımlama bloğu

begin

Ana program bloğu

End.

Program Başlığı

Dizilim: PROGRAM progismi; PROGRAM progismi (Input, Output);

Dizilim diyagramı:

Örnek: Program Merhaba; Program Merhaba (Input, Output);

Bir program başlığı, program deyimi ve bir program isminin aralarına bir karakter boşlukbırakılarak aynı satırda yazılmasıyla oluşur. İkinci yazılış formu ise sadece standartPascal’ da geçerlidir. Input kelimesi klavyeden data girileceğini, output kelimesi iseprogram çıktısının ekrana yazılacağını belirtir. Türbo Pascal’da program başlığıkullanmak isteğe bağlıdır. Kullanılmaması hataya neden olmaz.

Tanımlama BloğuTanımlama bloğunda, programın çalışması esnasında kullanılacak tüm isimlerintanımlanması yapılır. Farklı amaçlar için kullanılan isimler, farklı tanımlama bloklarıiçinde tanımlanırlar. Bu bloklar için başlık olarak kullanılan bildiri deyimleri aşağıdalistelenmiştir.

Uses.................................... 1. Unit tanımlama bloğuLabel................................... 2. Etiket tanımlama bloğuConst.................................. 3. Sabit tanımlama bloğuType.................................... 4. Tip tanımlama bloğuVar...................................... 5. Değişken tanımlama bloğuProcedure........................... 6. Prosedür tanımlama bloğuFunction.............................. 7. Fonksiyon tanımlama bloğu

Tanımlama Bloğunun Bazı Özellikleri* Bir programda yukarıdaki tanımlama bloklarının tamamının kullanılması zorunludeğildir.* Tanımlama bloklarının program içerisindeki sırası da önemli olmadığı gibi, tanımlanan isimlerin program içinde kullanılmaları da zorunlu değildir.* Her bir tanımlama bloğu birden fazlada tekrarlanabilir.

USES bloğuAmaç: Turbo Pascal standart ünitesi altında tanımlanmış olan prosedür vefonksiyonları program içerisinde kullanabilmek amacıyla kullanılır.

Dizilim: USES ünitlistesi;

Örnek: Uses Crt, Dos, Printer, Verigir ;

Türbo Pascal’da bazı standart prosedürler (clrscr, gotoxy, gibi...) Unit denilen bir dosyaadı altında toplanmışlardır. Bu prosedürleri kullanabilmek için hangi Unit altındabulunduğunu Uses tanımlama bloğu içerisinde yazmak gerekir.

LABEL bloğuAmaç: Pascal programlama dilinde satır numarası bulunmayışı nedeniyle, “goto” komutu kullanıldığında program akışının hangi komut grubuna geçeceğini etiketler ilebelirtmek gerekir. Program içerisinde goto deyimi ile işlem görecek olan program satırınıbelirlemek amacı ile kullanılan etiketleri tanımlamak için kullanılır.Dizilim: LABEL etiket_listesi;

Dizilim diyagramı:

Örnek: Const Birdol=8704.56; İsim=’Onur’;

Const başlığı altında birden fazla sabit tanımlaması yapılabilir. Her sabit tanımlaması sonundanoktalı virgül ‘;’ kullanılır. Sabit değer olarak bir aritmetik işlem ifadesi yazılamaz.

TYPE bloğuAmaç: Programcı tarafından oluşturulan özel veri tiplerini tanımlamak amacıyla kullanılır.

Dizilim: TYPE Tip_ismi = tip_tanımı;

Örnek: Type Gunler=(Pazartesi, Sali, Carsamba, Persembe, Cuma, Cumartesi, pazar); Notlar=0..100; Sayi=set of 1..9; Kucuk=’a’..’z’; Tip tanımlama bloğu “Type” kelimesi ile başlar. Aynı blok içerisinde birden fazla faklı tiptanımlaması yapılabilir. Her tip tanımlaması birbirinden “;” ile ayrılmalıdır. Type bloğunda tanımlananveri tipleri, “Var“ bloğunda bir değişkenin tipini Tanımlarken kullanılırlar.

VAR bloğuAmaç: Program içerisinde kullanılacak değişken isimlerini tanımlamak amacı ile kullanılırlar

Dizilim: VAR değişken_listesi: tip;

Dizilim diyagramı:

Örnek: Var İsim , soyad : string; A, B : integer; C, D, E : integer;Değişken listesindeki herbir değişken için hafızada yer ayrılır. Değişkenin içerisine girilecek datanıntipi (string, integer....) iki nokta üst üste “:” ve noktalı virgül “;” arasına yazılarak belirtilir. Aynı tiptekideğişkenler birden fazla listeyle Var başlığı altında tanımlanabilir. Programcı tanım bloğundatanımlanan tipe sadık kalmalıdır.Uygulama bloğuUygulama bloğunda, program mantığı gereğince kullanılacak gerekli Pascal komutları yer alır.Turbo Pascal programında Basic dilinde olduğu gibi program satır numarası kavramı yoktur. Komutve tanımlamaları birbirinden ayırmak için her komut sonuna “;” konulmuştur. Ana program bloğu“begin” kelimesiyle başlar ve “end.” Kelimesiyle biter.

ÖRNEK 2: Doları Türk Lirasına çeviren program.

Bu program klavyeden girilen dolar miktarının Türk parası karşılığını bulur. Görüldüğü gibi birPascal uygulama bloğu “begin” kelimesi ile başlıyor, programın işlevlerini yerine getiren komutlarkurallarına göre yazıldıktan sonra”end” komutu ile bitiyor.

Amaç: Değişkenler içerisinde sabit değerleri yerleştirmek amacı ile uygulanır.

Dizilim: Sonuç_değişkeni:=ifade;

Dizilim Diyagramı:

Örnek: x := y + z + 2 ; x := 5 ; y :=z ; lira:= birdol * dol ; ad:=’Kemal’+’Atatürk’;

ifadeden elde edilen değer sonuç değişkenine atanır. Sonuç un önceki değeri bozulur ve yerineifadenin değeri yerleşir. İfade tek bir değişken veya sabit olabildiği gibi örnekte de görüldüğü gibiher ikisi de olabilir. Bir atama işlemi ‘;’ ile biter. Bir değişken içerisine atama yapmak için kullanılanişaretin ‘=’ olmayıp ‘:=’ olmasına dikkat ediniz. ‘= ’ işareti sabit tanımlama ve karşılaştırmaişlemlerinde kullanıldığını unutmayınız. Aritmetik atama işlemlerinde dikkat edilmesi gereken birkuralda, sonuç olarak adlandırılan değişkenin tipi, aritmetik işlem sonucunda elde edilen ifadeninsonucuna uygun olmalıdır.

Pascal Programlarının Genel Yapısı

Atama İşlemi

Program dolardan_liraya;Const Birdol=585800.25;Var dol; lira : real;begin Writeln(‘Kaç dolarınız var >’); Readln(dol); Lira:=birdol * dol ;Writeln(dol,‘ABD doları’,lira,’TL. eder.’);End.

Program program_ismi;Const Sabitismi=sabitdeğer; “ “ Sabitismi=sabitdeğer;Var değişken_listesi : tip; “ “ değişken_listesi : tip;Begin deyim ; “ “ deyim ;End.Program başlığı

Sabittanımlama

Taınlama bloğu

Değişkentanımlama

Pascal deyimleri Uygulama bloğu

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 birde fazla ‘end‘ deyimi içerebilir, ancak bu ‘end’ deyimleri program

sonunu değil alt blokların sonunu gösterir ve sonlarında ‘;’ vardır.9) Programın 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 konulması gerekmez.

Büyük ve Küçük Harf Kullanımı Pascal’da, standart deyim veya kullanıcının belirlediği isimlerin büyük veya küçük harflerleyazılması tamamen serbesttir. Çünkü Pascal derleyicisi büyük ve küçük harfler arasında ayırımyapmaz.Deyimler Arasındaki BoşluklarPascal programlarında satır numarası olmadığından, programın okunabilirliğini arttırmak gerekir.Pascal programlarında satır numarası olmadığından, programın okunabilirliğini arttırmak gerekir.Pascal’da bu konuda büyük bir serbesti vardır. Derleyici, komut ve semboller arasına konulacakboşlukları dikkate almaz. Bu sizin programınızı daha iyi okunabilir duruma getirmeniz için önemli birserbestliktir.Okunurluğu Kolaylaştıran Bazı Kurallar1.)Virgül ve aritmetik operatörlerden (*,­,:=,/) önce ve sonra bir boşluk bırakınız.

Netmaas = brut * vergi veya x := y * z / 2 gibi.

2.) Begin, end, var, const kelimeleri dışında kalan diğer program satırlarını içeriye girintili olarakyazınız.

Pascal Programlarının Yazım Kuralları

Var const Netmaas : real ; veya mypi = 3.14; gibi..

3.) Bir atama deyimi gibi iki karakter birlikte kullanılan sembolleri birbirinden ayırmayınız.A:=B*C; ifadesini,

A : = B * C ; şeklinde yazamadığımız gibi,A := B* C ; şeklinde de yazamayız.

4.) Tanımlama isimleri arasında boşluk bırakılmaz. Ancak okunurluğunu arttırmak için aralarına “_”konulabilir.

Net_maas bir_dol gibi.

2. Bölüm

SABİTLER DEĞİŞKENLER veOPERATÖRLER

SABİTLERBir programın çalışması boyunca değişmeyen değerler “sabit” (constant) olarak adlandırılır.Sabitler const bloğu içerisinde tanımlanırlar. Turbo Pascal derleyicisi tarafından önceden tanımlıolan bazı sabit isimleri vardır. Bu sabit isimlerinin const bloğu içerisinde tekrar tanımlanmasınagerek yoktur.

Pi = 3.1415926536 False = False True = True

Maxint = 32767Minint = ­32768 dir.

NOT:Falsenin türkçe anlamı yanlış demektir. Truenin ise doğru demektir.

Sabit (Constant) TanımlamaDizilim: CONST sabit_ismi=sabit_değer;

Dizilim Diyagramı:

ÖRNEK: Const Birdol=588000.36 ; İsim=’onur’ ;

Pascal programları içerisinde sabit kullanmak programın okunurluğunu arttırır. Const başlığıaltında birden fazla sabit tanımlaması yapılabilir. Her sabit tanımlaması sonunda ‘;’ kullanılır.sabitdeğer olarak aritmetik işlem ifadesi yazılamaz.

DEĞİŞKENLERDeğişkenler verileri bellekte tutmak için kullanılırlar. Her tanımlanan değişken bellekte belirli bir yerayrılmasına neden olur. Değişkenler içerisine programın akışı içerisinde farklı değerler atanabilir.İçerisinde değer bulunan bir değişkene yeni bir değer daha atandığında, bu değeri içindebarındırır. Bu nedenle değişken adını alırlar.

Değişken (Variable) Tanımlama

Dizilim: VAR değişken_listesi : tip;Dizilim Diyagramı:

Örnek: Var İsim , soyad : string ; A , B : integer ; C , D , E : integer ;Değişken listesindeki herbir değişken için hafızada yer ayrılır. Değişkenin içerisine girilecek datanıntipi “:” ve “;” arasına yazılarak belirtilir. Değişken listesindeki değişken isimleri birbirinden “,” ileayrılır. Aynı tipteki değişkenler birden fala listeyle “var” başlığı altında tanımlanabilir. Programcıtanım bloğunda tanımlanan tipe sadık kalmalıdır. İnteger tipte tanımlanmış bir değişkene stringtipte bir bilgi giremeyiz.

Bir değişkenin bellekte veri tutabilmesi için bellek hücresine bir isim verme zorunluluğu vardır.Anlamlı değişken adları oluşturmanız, hem program tasarımında hemde programlarınızınokunabilmesi açısından yarar getirir. Ancak isim verirken uyulması gereken bazı kurallar vardır. Bukurallar, sabit, tip, değişken, procedure, function, etiket isimleri verirken de aynen geçerlidir.

Değişken ve Sabit İsmi Seçilirken Dikkat EdilmesiGereken Kurallar1.) Daima bir harfle başlaması gerekir. Değişken isimleri rakamla başlayamaz.2.) Pascal ayrılmış kelimesi veya pascal komutlarından oluşamaz.3.) 63 karakterden daha fazla olamaz. Eğer daha uzun bir isim verilirse ilk 63 karakter geçerli olur.4.) Aritmetik işlem operatörlerini içeremezler.5.) Değişken isimleri arasında boşluk bırakılmaz. Ancak okunurluğu arttırmak için ‘_’ konulabilir.6.) İçerisine atanacak değeri anımsatacak kısaltmalardan oluşmalıdır.7.) Türkçe karakterleri içeremez.

Geçerli Değişken Veya Sabit İsimlerine Örnekler Harf1, Cm, A, ad_soyad, Lira, Sayilar, Isim, Adres1Geçersiz Değişken Veya Sabit İsimlerine Örnekler 1Harf, Var, Const, Lira*Dolar, Ahmet’in, Ad­Soyad, Ülker, Şeker

Değişken TipleriPascal’da 15 ayrı değişken tipi vardır. Bu tiplere ek olarak kendi değişken tiplerinizi detanımlayabilirsiniz. Her değişkenin bir tipi olmalıdır. Bir değişkenin tipi, o değişken için ayrılan bellekbölgesinde ne tür veriler tutabileceğini ifade eder.Standart Değişken TipleriStandart veri tipleri Turbo Pascal tarafından belirlenen tipler vardır ki bunlara özel veri tipi denir.Standart veri tipleri aşağıda belirtilmiştir.

1) Integer tipi verilera) Shortintb) Longintc) Byted) Word

2) Real tipli verilera) Realb) Singlec) Doubled) Extended

Değişken İsimleri

3) Char tipi veriler4) String tipi veriler5) Boolean tipi veriler6) Array tipi veriler7) File tipi veriler8) Text tipi veriler

Tamsayı (Integer) Değişken TipleriAritmetik işlemlerde kullanılan pozitif ve negatif tam sayılardır. Integer tipte sayıların ondalık hanesibulunmaz.

CLRSCR ProsedürüTurbo Pascal kütüphanesinde bulunan bu prosedür parametresiz olarak kullanılır. Ekranı silmeyeve kürsörü 1. satır 1. sütuna getirmeye yarar.

Gerçek (Real) Değişken TipiOndalık nokta içeren ve üslü biçimde ifade edilen sayılara real tip sayılar denir. Pascalda 4 tipgerçek sayı vardır. (real, single, double, extended)

Karakter (Char) Değişken tipiChar tipi veriler, 255 adet olan ASCII karakterlerin sadece bir tanesinden oluşurlar. Char tipi verilertek tırnak ‘ ’ içerisine yazılmalıdırlar. Char tipi değişkenler hafızada 1 byte’lık yer işgal ederler.

String Değişken TipiString tipi veriler, tek tırnak ( ‘) içerisine alınan ve bilgisayar klavyesinden girilebilen karakterkümesinden oluşmuştur. Bir stringin hafızada kapladığı yer karakterlerin toplam sayısına eşittir. Busayı en fazla 255 olabilir. Tırnak içerisinde bulunan boşluk karakterleri de bu sayının içerisindedir.Bir string değişken tanımlanırken bu tipe ait verilerin uzunluklarının ne kadar olacağı köşeliparantezler “[” ve “]” içinde belirtilmelidir. Belirtilmediği takdirde uzunluk 255 olarak kabul edilir.

Boolean Değişken TipiBir karşılaştırma sonucunda elde edilen değer eğer bir değişken içerisine atanmak isteniyorsa, budeğişken boolean tipi olarak var bloğu içerisinde tanımlanmalıdır. Tanımlanan değişken için bellektebir byte’lık yer ayrılır. Boolean tipi bir değişken içerisine klavyeden ancak true veya false kelimelerigirilebilir.

Programcının Tanımladığı Değişken TipleriPascal da tanımlı olmayan, programcı tarafından type tanımlama bloğunda yaratılan ve özelamaçlar için kullanılan veri tipleridir. Pascal’ın standart veri tipleri bir programda tanıma gerekduyulmaksızın kullanılabilir. Ancak bazı durumlarda verilerin işlenmesinde yetersiz kaldıklarıgörülür. Programcı tarafından yaratlabilecek olan 5 özel veri tipi vardır.

1. Küme veri tipi (set type)2. Sıralı veri tipi (scalar type)3. Sınırlı veri tipi (subrange type)4. Record veri tipi (record type)5. Dizi veri tipi (array type)

Tip TanımlamaTip tanımlama bloğu type kelimesiyle başlar. Aynı blok içerisinde birden fazla farklı tip tanımlamasıyapılabilir. Her tip tanımlaması birbirinden ‘;’ ile ayrılmalıdır. Type bloğunda tanımlanan veri tipleri,Var bloğunda bir değişkenin tipini tanımlarken kullanılırlar.

Dizi Tipi DeğişkenlerAynı tipteki birden fazla bilginin tutulduğu değişkenlere (array) dizi tipi değişken denir. Programiçerisinde aynı tür bilginin aynı anda saklanması durumu söz konusu olunca, dizi tipi değişkenlerdenyararlanılır. Minindis değeri ‘0’, Maxindis değeri ‘32767’ olabilir. Köşeli parantez içerisine yazılandeğerler boolean veya char tipi veri olabileceği gibi, sınırlı tip bir veri de olabilir.

Küme Tipi DeğişkenlerAynı tipte ve birbiriyle ilgili bilgilerden oluşan nesneler topluluğuna küme denir. Elemanı olmayankümeye boş küme denir. Pascal daki kümelerde matematikteki tanımı gibidir.

1. Küme elemanları aynı tip olmalıdır.2. Küme elemanları real sayılardan oluşmaz.

Kümeyi oluşturan elemanların arasına ‘,’ konularak “[ ]” içerisine yazılırlar. Küme elemanları birbiriniizleyen dizisel değerlerden oluşuyorsa en küçük ve en büyük değerlerin arasına iki nokta ‘:’ konulur.

IN OperatörüIN operatörü, bir, elemanın bir küme içerisinde bulunup bulunmadığını test eder.

Küme Tipi Değişkenlerin TanımlanmasıDeğişken listesinde birden fazla değişken yazıldığında, değişkenler arasına “,” konulması gerekir.

Küme tipi değişkenler direkt olarak “var” bloğunda tanımlandığı gibi, “type” bloğunda özel bir tip ismiyaratılarak ta tanımlanabilirler.

Küme Tipi Değişkenlere Değer AtamaKü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. Bir küme tipi değişken ifadelerde kullanılmadan önce birbaşlangıç değeri almalıdır.

Küme İşlemleriKüme tipi verilerde, matematikte ifade edildiği gibi bileşim, kesişim ve fark kümesi olarak üç şekildeifade edilir.

Sıralı Tip DeğişkenlerPascal’da integer sayılar ve İngiliz alfabesindeki büyük ve küçük harfler sıralı tip verilerdir. Yanibirbiri ardısıra gelen değerlerdir.Bazı programlarda bu sıralı tipler yeterli olmayabilir. Bu durumdaprogramcı özel bir sıralı tip yaratmalıdır.

Sıralı Tip Değişkenlerinin TanımlanmasıBir sıralı tip, o tipin alabileceği tüm değerleri gösteren değerleri içeren bir liste ile tanımlanır.Listedeki değerler birbirinden “,” ile ayrılır ve parantez içerisine alınırlar. Sıralı tip olarak tanımlanandeğerler for do döngüsünde de kullanılabilir.

Sınırlı Tip DeğişkenlerÇoğu programlarda değişkenler içerisine girilecek değerlerin alt ve üst sınırı bilinir.ancak programiçerisinde biz bu sınırları tanımlarsak, compiler hatalı girilen bir veri olduğunda programı durdururve gerekli hata mesajını ekrana yazar.

Sınırlı Tip Değişkenlerinin Tanımlanması

Type bloğu içerisinde tanımlanan “sınırlı_veri_tipi_ismi” yeni tanımlanan bir veridir. “alt sınır” bu veritipine atanabilecek olan en küçük değer, “üst sınır” ise bu veri tipine atanabilecek en büyükdeğerdir. Alt sınır ve Üst sınır sıralı tip olmalıdır. Alt sınır her zaman üst sınırdan daha küçükolmalıdır.

3.Bölüm

TEMEL GİRİŞ / ÇIKIŞ KOMUTLARIWRITELNAmaç:String ve sayısal sabitleri yada değişken içerisindeki değerleri ekrana veya printereyazdırmak için kullanılır.çıkış listesine yazılanlar alt alta yazılır.ÖRNEK:3 Writeln komutu ile yapılan sitringlerin ekrana yazdırılması.

Uses crt; Begin Writeln(‘merhaba ‘); Writeln(‘dünya’)

End.

Program çıktısıMerhabaDünya

WRITEAmaç: String ve sayısal sabitleri yada değişken içerisindeki değerleri ekrana veya printereyazdırmak için kullanılır.çıkış listesine yazılanlar yan yana yazılır.Örnek 4:

Uses crt;Begin Write(‘ahmet’);

Write(‘okula git’); Readln;

End.

Program çıktısı

Ahmet okula git

READLNAmaç:Çevre aygıtlardan(klavye,disk...),değişkenler içerisine veri girmek için kullanılır.

ÖRNEK 5:Uses crt;Var Ad,soy,no:string;

Begin Write(‘adınızı giriniz’ :);readln(ad); Write(‘soyadınızı giriniz’ :);readln(soy); Write(‘numaranızı giriniz :’);readln(no); Clrscr; Write(ad); Write(soyad); Write(no);

Readln;End.

Program çıktısıAdınızı giriniz : soyadınızı giriniz :numaranızı giriniz :

FORMATLI ÇIKIŞİnteger Sayıların FormatlanmasıÖrnek: X:4 sayı:3Örneğin,x:456 ise, writeln(x:8); deyimi ile sayının ekrana yazılışı şöyle olur.

4 5 6

Real Sayıların FormatlanmasıÖrnek: X:4: ,Toplam:9:3Örneğin,x:=34.56 ise, writeln(x:8:3); deyimi ile sayının ekrana yazılışı şöyle olur.

3 4 : 5 6 0

Char Tipi Verilerin FormatlanmasıÖrnek: Writeln(c:6); Writeln( ‘a’:4’);Örneğin, a:=’K’ ise, writeln(a:7) deyimi ile karekterin ekranda görünümü aşağıdakigibi olur.

K

String Tipi Verilerin FormatlanmasıÖrnek: Writeln(‘TÜRKİYE’:16);

T Ü R K İ Y E

VERİ KONTROLÜ(COMPILER BİLDİRİLERİ)Compiler Bildirisi TanımlamakAmaç:Turbo Pascal derleyicisinin bazı özelliklerini, compıler bildirileri ile kontrol altında tutmak içinkullanılır.Örnek: $B­ $R+ $ INCLUDE.PAS $B­ ,$R+, $I

4.Bölüm

PROGRAM AKIŞININ KONTROLÜDALLANMA DEYİMLERİIF­THEN deyimiAmaç: Belli bir koşul oluştuğunda program akışını bir sonraki deyime geçirmek için kullanılır.

ÖRNEK 6: If­then deyiminin kullanılışı.Klavyeden 1 sayısı girildiğinde ekrana ’’kapalı’’ ve 0 Girildiğinde ‘’açık’’ mesajını veren program.Uses crt;Var A:integer;Begin Write(‘sayı giriniz(1veya0) : ‘);readln(a); İf a:=1 then Writeln(‘kapalı’); İf a:=0 then Writeln(‘açık’); Readln;End.

Program çıktısıSayı giriniz (1veya 0) :0Açık

IF­THEN_ELSE deyimiAmaç:Belli bir koşul oluştuğunda program akışını bir sonraki deyime geçirmek için kullanılır.

ÖRNEK 7: Uses crt;Var A,b:integer;Begin Clrscr; Writeln(‘1.sayıyı gir’);readln(a); Writeln(‘2.sayıyı gir’);readln(b); If a>b then Writeln(‘1.sayı >2.sayı’); Else Writeln(‘2.sayı >1.sayı’);Readln;End.

Program çıktısı1.sayıyı gir 102.sayıyı gir 51.sayı > 2.sayı

CASE­OF deyimiAmaç:bir değerin birden fazla değer ile karşılaştırmasını yaparak,bu eşitliğin bulunmasıdurumunda belli program parçalarının işlenmesini sağlamak için kullanılır.

ÖRNEK 8: Uses crt; Var

Harf:char; Begin Writeln(‘bir harf girin:’); readln(harf); Case harf of ‘A ‘............’Z’ :Writeln(‘büyük harf’); ‘A ‘............’Z’ :Writeln(‘küçük harf’); else Writeln(‘Bu harf değil’); Readln; End.

GOTO,FOR­DO,REPEAT­UNTIL

Amaç: Program akışının değiştirilmesi gereken yerlerde kullanılır.ÖRNEK 9: 1’den 5’e kadar olan sayıları ekrana yanyana yazdıran program.

Uses crt; Var Sayac:integer; Label Tekrar; Begin Clrscr; Sayac:=0; Tekrar : Sayac:=sayac+1; Write(sayac,’ ‘); İf sayac<5 then goto tekrar; End.

Amaç:Belli bir program parçasını üst üste önceden belirlenen sayıda tekrarlamak için kullanılır.

Örnek 10: 1’den 10’a kadar olan tam sayıları ekrana yan yana birer boşluk bırakarak yazdıranprogram.

Uses crt; Var İ :integer; begin Clrscr; For i:=1 to 10 do write (i,’ ‘); End.

Program çıktısı 1 2 3 4 5 6 7 8 9 10

ÖRNEK 11:Ekrana A’dan G’ye kadar olan harfleri,her defasında bir sonraki harfle birlikte yanyana yazdıran program. Uses crt ; Var Harfyaz,sonharf: char; Begin Clrscr; For sonharf:=’A’ to ‘G’ do Begin For harfyaz:=’A’ to sonharf do Write(harfyaz); Writeln; End; End.

Program çıktısı A AB

DÖNGÜLER

GOTO DEYİMİ

FOR­ DO deyimi

ABC ABCD ABCDE ABCDEF ABCDEFG

Amaç:Bir program bloğunun belli bir şart sağlanana kadar tekrar edilmesi için kullanılır.

ÖRNEK 12: Klavyeden girilen cümle içerisinde kaç adet sesli harf olduğunu bulan program. Uses crt; Ch:char; Say:integer; Begin Say:=0; Write(‘Bir cümle yazınız >’); While not eoln do Begin Read(ch); İf ch in [‘A’,’a’,’E’,’e’,’İ’,’i’,’I’,’ı’,’O’,’o’,’ö’,’ö’,’U’,’u’,’ü’,’ü’] then Begin Say:=say+1; End; Writeln(‘yazılan cümlede’,say,’tane sesli harf vardır.’) End.

Amaç: Bir program bloğunun,belli bir şart sağlanana kadar ard arda işlenmesini sağlar.

ÖRNEK 13: Klavyeden girilen 10 sayıdan Tek ve Çift sayıların toplamını alt alta yazdıranprogram. Uses crt ; Var A:array[1..10] of integer; E:integer; T:longint; Begin Clrscr; For E:= 1to 10 do Begin Write (E,’.sayıyı gir......:’);readln(A[E]); End; T:=0; E:=0; Repeat E:= E+1; İf A[E] dıv 2<>A[E] / 2 then Begin T:=T+A[E]; End; Until 1=10; Writeln(‘tek sayıların toplamı :’,T); T:=0; 1:=0; Repeat E:=E+1; İf A[E dıv 2= A[E] /2 then Begin T:=T+A[E]; End; Writeln(‘çift sayıların toplamı:’ ,T); Readln; end.

Program çıktısı

WHILE­DO deyimi

REPEAT­UNTIL deyimi

1.sayı gir........: 4 2. sayı gir........: 5 3. sayı gir........: 9 4. sayı gir........: 2 5. sayı gir........: 3 6. sayı gir........: 1 7. sayı gir........: 5 8. sayı gir........: 8 9. sayı gir........: 2 10. sayı gir.......:9 Tek sayıların toplamı =32 Çift sayıların toplamı=16

5.Bölüm

TEK BOYUTLU DEĞİŞKENLERAynı tipte olan verileri sıralı biçimde bellekte tutmak amacıyla tanımlanan değişkenlere dizi (array)tipi değişken denir.

ÖRNEK 14: Klavyeden girilen 5 sayının giriliş sırasının tersine yazdırılması.

Uses crt ; Type İntarray =array [1..5] of integer ; Const N= 5; Var Sayı :intarray ; İ,j:integer; Begin Clrscr; For i :=1 to 10 do Begin Write (i,’.sayıyı gir>’); readln (sayı [i] ); End; For j :=n down to 1 do Writeln (j,’. Sayi =’,sayi [j] ); End.

Program çıktısı

1.sayı gir > 34 2. sayı gir >5 3. sayı gir >56 4. sayı gir >87 5. sayı gir >39

5. sayı=39 4. sayı=87 3. sayı=56 2. sayı=5 1. sayı=34

Sıralama (sort) İşlemi

İNDİSLİ DEĞİŞKENLER

ÖRNEK 15: Klavyeden girilen 5 sayının sıralanıp ekrana yazdırılması (büyükten küçüğe). Uses crt; Var A: array [1..5] of integer; I ,k ,m:integer; Begin Clrscr; For I :=1to 5 do Begin Writeln (I,’.sayıyı gir :’); readln (a[I] ); End; For I := 1 to 4 do For k := I +1 to 5 do İf A [k] >A [I] then Begin M := A [ I ]; A : [ I ] := A[ k ]; A [k] :=m; End; For I := 1 to 500 Begin Writeln (A [ I ]); End; Readln; End.

Program çıktısı

1. sayı gir : 8 2. sayı gir : 6 3. sayı gir : 9 4. sayı gir : 5 5. sayı gir : 2

9 8 6 5 2

İKİ BOYUTLU DEĞİŞKENLERTek boyutlu diziler için kullanılan değişkenler ,aynı cinsten verileri bellekte saklamak için kullanılır.

6.Bölüm

STANDART PROSEDÜR VE FONKSİYONLAR

MKDIR prosedürüAmaç:Pascal programlarında bir alt directory yaratmak için kullanılır.

ÖRNEK 16 : Aktif directory içerisine,klavyeden girilen bir string adıyla directory açan program.

Uses crt ; Var Di:string; Begin Write (‘açmak istediğiniz directory ismi >’); readln(di); Mkdir (di); Mkdir (‘lotus’); Mkdir (‘lotus\müsteri’); End.

Program çıktısı

Açmak istediğiniz directory ismi > BASIC

Amaç: Komut satırındaki paremetre sayısını verir.ÖRNEK 17: Komut satırından paremetre girilip girilmediğini kontrol eden program.

Uses crt; Begin İf paramCount < 1 then Writeln(‘Komut satırında paremetre yoktur’) Else Writeln(ParamCount,’paremetre vardır’); End.

Program çıktısı

Komut satırında paremetre yoktur

PARAMSTR fonksiyonuAmaç: Komut satırındaki N inci paremetreyi veya N inci veriyi bir string olarak verir.ÖRNEK 18: Komut satırından girilen paremetreleri okuyup ekrana yazdıran program.

Uses crt; Var I :word; Begin For I:=1 to ParamCount do Writeln(paramstr( I ) ); End.

Amaç: Belirlenen sürücüdeki aktif directory ‘ü öğrenmek için kullanılır.ÖRNEK 19: Aktif sürücüdeki aktif directory ismini ekrana yazdıran program.

Uses crt; Var S:string; Begin Getdir(0,s); Writeln(‘ Aktif directory(‘,s,’) dır’); End.

Program çıktısı Aktif directory (A:\) dır

Amaç: Pascal programı ile directory değiştirmek için kullanılır. ÖRNEK 20: Önce aktif sürücüde PASCAL directory’si açıp daha sonra o directory içerisinegirerek ekranda gösteren program.

Uses crt; Var S:string; Begin Mkdır(‘PASCAL’; Chdır(‘PASCAL’); Getdır(0,S); Writeln(‘şu anda (‘,S,’) directory sine geçtiniz’); End.

Program çıktısı Şu anda (A:\ PASCAL) directory sine geçtiniz

Amaç: Pascal programları çalışırken oluşan run –time hata kod numarasının Pascal ortamınaalınmasını sağlar.

PARAMCOUNT fonksiyonu

GETDIR prosedürü

CHDIR prosedürü

IORESULT fonksiyonu

ÖRNEK 21: Klavyeden yanlışlıkla integer yerine karekter girildiğinde,programın akışını kesmedenhatayı kullanıcıya düzelttiren program. Uses crt; Var Intsay : integer; Label Hata; Begin $I­ hata: Write(‘bir sayı giriniz>’); readln(intsay); İf ioresult=106 then Begin Writeln(‘Tam sayı girişi yapmalısınız’); Goto hata; End; Writeln(‘Sayının karesi =’,intsay*intsay); End.

Program çıktısı Bir sayı giriniz >a Tam sayı girişi yapmalısınız Bir sayı giriniz >4 Sayının karesi =16

Uses crt; Begin $I­ RmDir (paramStr(1); İf Ioresult<> 0 then Writeln (‘directory silinemez ‘); Else Writeln (‘directory silindi’); End.

Amaç: Bilgisayarın daha önceden kurulmuş olan tarihini okumak için kullanılır.

ÖRNEK 23 : Sistemin tarihini gün,ay,yıl ve haftanın hangi günü olduğunu gösteren program.

Uses dos; Const Gunler:array [0..6] of String [9] = (‘Pazar’,’pazartesi’,’salı’,’çarşamba’, ’perşembe’,’cuma’,’cumartesi’); var y,a,g,hg:word; begin getdate (y,a,g,hg); Writeln(‘bugün ‘,g,’ / ‘,a,’ / ‘,y,’ ‘,günler [hg], ‘dir.’); End.

Program çıktısı Bugün 17/5/1997 Salı dir.

Amaç: Bilgisayarın daha önceden kurulmuş olan saatini okumak için kullanılır.

ÖRNEK 23 : Sistemin saatini ekranda gösteren program.

Uses dos; Var

RMDIR prosedürüAmaç:Alt directory’nin silinmesi için kullanılır.

ÖRNEK 22: Bir dos komutu gibi çalışan ve türkçe uyarı mesajı üreten directory silme programı.

GETDATE prosedürü

GETTİME prosedürü

Sa,da,sn,sl:word; Begin Gettime(sa,da,sn,sl); Writeln(‘saat=’ ,’sa, ’:’ ,da, ‘:’ ,sn, ‘.’ ,sl); End.

Program çıktısı Saat =3:48:20.80

Amaç: Sistemin tarihini yeniden kurmak için kullanılır.ÖRNEK 24: Sistemin tarihini klavyeden girilen sayılara göre kuran program. Uses dos; Var Yıl,ay,gun :word; Begin Write (‘yıl >’); readln(yıl); Write (‘ay >’); readln(ay); Write (‘gun >’); readln(gun); Setdate(yıl,ay,gun); End.

Amaç: Sistemin saatini yeniden kurmak için kullanılır.ÖRNEK 25: Sistemin saatini klavyeden girilen sayılara göre kuran program. Uses dos; Var Sa,da,sn,sl:word; Begin Write (‘saat >’); readln(sa); Write (‘dakika >’); readln(da);

Write (‘saniye >’); readln(sn);

Sl :=0; Settime (sa,da,sn,sl); End.

CHR fonksiyonuAmaç: ASCII kod numarasının karşılığını verir.ÖRNEK 26: ASCII kod numarası 14­25 arasında olan sayıların karakter karşılığını yanlarınanumaraları ile birlikte yan yana yazdıran program. Uses crt; Var I :integer; Begin Clrscr; For I :=14 to 225 do Write (i :3,’=’,chr(I) ); Writeln; Writeln (‘ ‘’65’’ in ASCII karşılığı =’ ,#65,’ dir’); Writeln (#7); End.

ORD fonksiyonuAmaç: Bir elemanın tanımlı olduğu kümede kaçıncı sırada olduğunu bulmak için kullanılır.CHRfonksiyonunun tersine çalışır.

ÖRNEK 27: Bir elemanın tanımlı olduğu kümede kaçıncı sırada olduğunu ve ‘’A’’ harfinin ASCIIkod numarasını bulan program.

Uses crt; Type Renkler =(kırmızı,mavi,yeşil,sarı,siyah); Begin Writeln(‘Yeşil in sıralı veri tipindeki sırası =’,Ord(yeşil) );

SETDATE prosedürü

SETTİME prosedürü

Writeln(‘ ‘’A’’ harfinin ASCII kodu ‘,Ord (‘A’),’ dır’); End.

Program çıktısı Yeşil in sıralı veri tipindeki sırası =2 ‘’A’’ harfinin ASCII kodu 65 dir

PRED fonksiyonuAmaç: Bir elemanın tanımlı olduğu listede o elemandan önce gelen elemanı bulmak için kullanılır.

ÖRNEK : PRED (‘B’)­­­­­­­­­­­ ‘A’

SUCC fonksiyonu

ÖRNEK : PRED (‘B’)­­­­­­­­­­­ ‘C’

ÖRNEK : TEXTBACGROUND (7);­­­ zeminin rengini beyaz yapar.

ÖRNEK : TEXTCOLOR (1);­­­­­­­ karakterlerin rengini mavi yapar.

ÖRNEK 28 : Lowvideo prosedürü ile karakter renklerini matlaştırma.

Uses crt; Begin TextAttr :=White; Lowvideo; Writeln (‘Bu karakterler açık gridir’); TextAttr :=green; Lowvideo; Writeln (‘Bu karakterler mat yeşildir’); End.

Amaç: Ekrana yazılan karekterleri parlak hale dönüştürmek için kullanılır.

Amaç: Klavyeden sadece bir karakter okuyup char tipi bir değişkene aktarmak için kullanılır.

ÖRNEK: Ch :=readkey;

Amaç: Programın çalışması esnasında klavyeden bir tuşa basılıp basılmadığını kontrol etmek içinkullanılır.

ÖRNEK 29 : Klavyeden bir tuşa basılıncaya kadar ekranı çeşitli karakterlerle dolduran program.

Amaç: Bir elemanın tanımlı olduğu listede o elemandan sonra gelen elemanı bulmak içinkullanılır

TEXTBACGROUND prosedürüAmaç: Text modunda zeminin rengini değiştirmek için kullanılır.

TEXTCOLOR prosedürüAmaç: Text modunda ekrandaki karakterin rengini değiştirmek için kullanılır.

LOWVIDEO prosedürüAmaç: Ekrana yazılan karekterleri mat hale dönüştürmek için kullanılır.

NORMVIDEO prosedürü

READKEY fonksiyonu

KEYPRESSED fonksiyonu

Uses crt; Begin Repeat Write (#176,#219,#178);

Until Keypressed; End.

Amaç: Kursör pozisyonunu istenilen ekranın istenilen koordinatlarına konumlandırmak içinkullanılır.

örnek: GOTOXY (1,1);­­­­­­­­­­­­­­Ekranın sol­üst köşesi

Amaç: Text modunda ekrana pencere açmak için kullanılır.

Örnek : Window (1,1,80,25);­­­­­­­Normal pencere yaratır.

Amaç: Bir string ifadenin istenilen bir bölümünü elde etmek için kullanılır.

ÖRNEK 30 : Bir string içerisinde istenilen bir bölümü ekrana yazdıran program. Uses crt ; Var St1,st2:string; Begin St1 :=’BILGISAYAR’; St2 :=(copy(st1, 1,4) ); Writeln(st1);writeln(st2); End.

Program çıktısı BİLGİSAYAR BİLGİ

Amaç: Birden fazla stringi birleştirmek için kullanılır.

ÖRNEK 31:İki stringi ‘+’ ile birleştiren program.

Uses crt; Var St1,st2:string; Begin St1:=Concat(‘Balık’,’esir’); St2:=’Balık’+’esir’; Writeln(st1); Writeln(st2); End.

Program çıktısı Balıkesir Balıkesir

Amaç: Bir stringin kaç karakterden oluştuğunu bulmak için kullanılır.

ÖRNEK: Length (‘Bilgisayar’);­­­­­­­­­­­­­10 tam sayı üretilir.

Amaç: Bir string içerisinde başka bir stringin kaçıncı sırada olduğunu bulmak için kullanılır.

ÖRNEK:Pos(‘A’,’BİLGİSAYAR’);­­­­­­­­­­­­7

GOTOXY prosedürü

WINDOW prosedürü

COPY fonksiyonu

CONCAT fonksiyonu

LENGTH fonksiyonu

POS fonksiyonu

Amaç: Bir stringin belirlenen sayıda karakterini silmek için kullanılır.

ÖRNEK: Delete(‘ABCDEF’,3,2)­­­­­­­­­’ABEF’

ÖRNEK 32 :Bir stringden bir bölümünü çıkardıktan sonra geriye kalanın karakterlerini birer birersilerek ekrana yazan program.

Uses crt ; Var St,st2:string; I :integer; Begin St :=’Uygulamalarla Temel Bilgisayar’; Delete (st); For I :=1 to length (st) do Begin Delete (st,length(st),1); Writeln(st);end; End.

Program çıktısı Uyar Uya Uy U

Amaç: Bir stringin arasını açarak başka bir string yerleştirmek için kullanılır.

ÖRNEK 33 : ‘’Mustafa Atatürk’’ içerisine Kemal stringi yerleştiren program.

Uses crt; Var S:string; Begin S:=’Mustafa Atatürk’; Insert (‘Kemal ‘,S,9); Writeln(S); End.

Program çıktısı

Mustafa Kemal Atatürk

Amaç: İnteger veya Real tipteki verileri String tipine dönüştürmek için kullanılır.ÖRNEK: STR(235); st=’235’

Amaç: String tipindeki sayıları Real veya İnteger tipe dönüştürür.ÖRNEK: VAL (‘723’ N,K); N=723 Kod=0

EXIT prosedürü Amaç: İşlenmekte olan program bloğundan direkt olarak çıkmak için kullanılır.

HALT prosedürü Amaç: İşlenmekte olan programı herhangi bir noktada sona erdirmek için kullanılır.

DELAY prosedürüAmaç: Çalışmakta olan bir programın işlenmesini belirlenen bir süre durdurur.ÖRNEK : DELAY (100) ;

DELETE prosedürü

INSERT prosedürü

STR prosedürü

VAL prosedürü

SOUND prosedürüAmaç:Bilgisayarın ses üreticisinden farklı sesler elde etmek için kullanılır.ÖRNEK : SOUND (350);

NOSOUND prosedürü

Amaç: Bir satırı sonuna kadar silmek için kullanılır.

Amaç: Kursörün bulunduğu satırı silmek için kullanılır.

Amaç: Kursörün bulunduğu satıra boş bir satır eklemek için kullanılır.

Amaç: Kursörün kaçıncı sütunda bulunduğunu öğrenmek için kullanılır.

Amaç: Kursörün kaçıncı satırda bulunduğunu öğrenmek için kullanılır.

Amaç: Rasgele sayı elde etmek için kullanılır.

Amaç: Standart tip veya özel tip değişkenlerin bellekte kapladığı byte miktarını verir.ÖRNEK : Sizeof (Integer) ; ­­­­­ sonuç 2 ‘dir.

Amaç: Küçük harfleri büyük harfe çevirmek için kullanılır.

Amaç: Bir sayının mutlak değerini almak için kullanılır.ÖRNEK: Abs (34); ­­­­­­­­­­­34 elde edilir.

Amaç: Kesirli bir tamsayının ,tamsayı kısmını elde etmek için kullanılır.ÖRNEK: Int (­18.58);­­­­­­­­­­­­18.0 elde edilir.

Amaç: Kesirli bir sayının ,kesirli kısmını elde etmek için kullanılır.ÖRNEK:Frac (­18.58); ­­­­­­­­­­­­­0.58 elde edilir.

Amaç: Kesirli bir sayının ,tamsayı kısmını elde etmek için kullanılır.ÖRNEK:Trunc (­18.58); ­­­­­­­­­­­­­18 elde edilir.

Amaç: Kesirli bir sayıyı yuvarlanmış olarak elde etmek için kullanılır.ÖRNEK: Round (­18.58); ­­­­­­­­­­­­­19 elde edilir.

Amaç: Sound prosedürü ile üretilen sesi kesmek için kullanılır.

CLREOL prosedürü

DELLINE prosedürü

INSLINE prosedürü

WHEREX prosedürü

WHEREY prosedürü

RANDOM fonksiyonu

SIZEOF fonksiyonu

UPCASE fonksiyonu

ABS fonksiyonu

INT fonksiyonu

FRAC fonksiyonu

TRUNC fonksiyonu

Round fonksiyonu

ODD fonksiyonuAmaç: Bir sayının tek veya çift olduğunu kontrol etmek için kullanılır.

ÖRNEK : Odd (3);­­­­­faalse

Amaç: Bir sayının karesini alır.ÖRNEK : Sqr(2);­­­­­­­ 4 elde edilir.

Amaç: Bir sayının karekökünü alır.ÖRNEK : Sqrt(5.76);­­­­­­­ 2.4 elde edilir

SIN fonksiyonuAmaç: Radyan cinsinden verilen bir açının sinüsünü elde etmek için kullanılır.ÖRNEK : Sin(30* pi/180) ;­­­­­­­­­0.50000000000

COS fonksiyonuAmaç: Radyan cinsinden verilen bir açının kosinüsünü elde etmek için kullanılır.ÖRNEK : Sin(30* pi/180) ;­­­­­­­­­0.86602540378

ARCTAN fonksiyonuAmaç: Tanjantı bilinen bir açının değerini radyan cinsinden elde etmek için kullanılır.ÖRNEK : Arctan (1.000); ­­­­­­­­0.78539816340 radyan

EXP fonksiyonuAmaç:Matematikteki e(2.71828183) sayısının N. kuvvetini elde etmek için kullanılır.

LN fonksiyonuAmaç: Bir sayının logaritmasını bulmak için kullanılır.

7. Bölüm

ALT PROGRAMLARPROSEDÜR ALT PROGRAMLARIProgramlama dillerinde ,ana program bloğunu parçalara ayırarak, ayrı program blokları olarak ele

SQR fonksiyonu

SQRT fonksiyonu

alınmasını sağlayan ve ALT PRORAMLAR adı verilen birimler oluşturmak oldukça kolaylık sağlar.Pascal’da iki tür alt program vardır. 1 ­) Prosedürler (Procedure) 2­ ) Fonksiyonlar (Function) 1 ­) Prosedürler (Procedure)ÖRNEK 34 : Procedure komutu ile ses ver ve ses kes programı. Uses crt ; Var A,b :integer ; C:char; Procedure ses ver; Begin Repeat A := A+100; Sound (A); Delay (100); Until A=1500; End; Procedure ses kes; Begin Nosound; End; Begin Clrscr; Repeat Writeln (‘1. ses ver:’); Writeln (‘2. ses kes:’); Write (‘seciminiz:’)readln(B); A:=0; Case B of 1:ses ver ; 2:ses kes; else write (‘Hatalı giriş yaptınız’); write (‘Ana menüye dönmek için 3’e basınız. Cıkmak için (h/H) basınız);readln; end; Untıl (C=’h’) or (C=’H’); End.

FONKSİYON ALT PROGRAMLARIKullanıcı tarafından tanımlanan fonksiyonlar, standart fonksiyonlar gibi yalnızca bir değerinhesaplanmasında kullanılır.

ÖRNEK 34 : 2 sayının 0 ‘dan 8’e kadar üslerini alan bir ana programda, us(x,y)adında birfonksiyon fonksiyonunu kullanma. Uses crt; Var J:integer; Function us (x: real ; n:integer) :real ; var Carpim:real; İ: integer; Begin Carpım:=1; For i:=1 to n do Carpım :=carpım *x; Us:=carpım; End; Begin Clrscr; For J:=0 to 8 do Writeln(‘2 nin ‘,j,’ nin ci kuvveti’, us(2,j): 5:0); End.

Program çıktısı 2 nin 0 nin ci kuvveti 1 2 nin 1 nin ci kuvveti 2 2 nin 2 nin ci kuvveti 3 2 nin 3 nin ci kuvveti 4

8. Bölüm

BİRİMLER (UNITS)Pascal Tarafından Desteklenmiş Unıt’ler

Ünite Kullanıldığı yerler­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­Crt Ekran,klavye ve ses kontrolünü sağlayan posedürlerin kullanılması gerektiğinde.Dos Bir çok DOS fonksiyonunun kullanılmasını destekler.Graph Grafik çizimi ile ilgili prosedürler kullanmak gerektiğinde.Printer Printer kontrol prosedürleri kullanmak gerektiğinde.Turbo 3 Prosedür veya fonksiyonları daha ileri versiyonda kullanılmak istenildiğinde.

Kullanıcının kendi ihtiyacına göre hazırladığı ünitelere, ’’ kullanıcı üniteleri ‘’ denir.

UNIT ünite_ismi;INTERFACE Global tanımlamalarIMPLEMENTATION Lokal tanımlamalar Global prosedür ve fonksiyonlarEND.

ÖRNEK 35 : Clrscr komutunu kullanarak ,türkçe isimli bir prosedürün tanımlandığı Unıt.

Unıt ekran; Interface Uses crt; Procedüre sil; Implementation Procedüre sil; Begin Clrscr; End; End.

9. Bölüm

DOSYALARDOSYA KAVRAMIDosyalar iki başlık altında yorumlanır.Program dosyasıŞu ana kadar yaptığımız dosyaların hepsi program dosyasıdır.Data dosyasıBu tür dosyalar program dosyası tarafından oluşturulmuştur.erişim yine program dosyasıtarafından gerçekleştirilir.İki tip Data dosyası vardır. 1­)Text dosyaları (sıralı erişimli data dosyası) 2­)Record tipi dosyalar (Rasgele erişimli data dosyaları)

TEXT DOSYALARI (SIRALI ERİŞİMLİ DOSYALAR)Text dosyaları karakter içeren satırlardan oluşur.Dosya içerisindeki her bir satır ,bu dosyanın birkaydı olarak kabul edilir.

Programcı Tarafından Yazılan Unıt’ler

UNIT Tanımlama

Text Dosyalarda Kullanılan Standart Fonksiyonlar

Amaç: Okuyucu kafanın kayıt sonu işareti üzerinde olup olmadığını kontrol etmek için kullanılır.

ÖRNEK : Eoln (dosya ); Eoln(d);

Dosyaya bilgi yazmak,Dosyadan bilgi okumak,Dosyaya bilgieklemek ve Dosyadan bilgi okumak.NOT :Dosyaya bilgi yazmak,Dosyadan bilgi okumak, Dosyaya bilgi eklemek ve Dosyadan bilgiokumak konularının birleştirilerek yapıldığı bir örnektir.

ÖRNEK 36: Text dosyasının içinde ‘’10­A sınıfının listesini yazan program. Uses crt ; Var Ad : array [1..27 ] of string; No :array [1.. 27 ] of string; I,A:integer ; dd:text; C: char; Procedüre kayıt_gir; Begin Clrscr; Assing (dd,’m.m’); Rewrite(dd); Writeln(dd,’10­avSınıf listesi ‘); Writeln (dd,’numarası ‘,adı ve soyadı ‘); For i := 1 to 27 do Begin Write (I,’.öğrencinin numarasını giriniz:’); readln(no [ I ] ); Write (I,’. öğrencinin adını ve soyadını giriniz:’); readln(ad [ I ] ); Writeln (dd,no [ I ],ad [ ı ] ); End; Close (dd); Readln; End; Procedüre kayıt_ekle; Begin Clrscr; Assing (dd,’ m.m ‘); Append(dd); For I :=1 to 27 do Begin Write (I,’.öğrencinin numarasını giriniz:’); readln(no [ I ] ); Write (I,’. öğrencinin adını ve soyadını giriniz:’); readln(ad [ I ] ); Writeln (dd,no [ I ],ad [ ı ] ); End; Close (dd); Readln; End; Procedüre kayıt_oku; Begin Clrscr; Assing (dd,’ m.m ‘); Reset (dd); Clrscr; While not eof (dd) do Begin Readln(dd,no [ 20 ],ad [ 20 ] ); Writeln (no [ 20 ],ad [20 ] ); End; Close (dd); Readln; End; Begin Repeat Clrscr;

EOLN Fonksiyonu

Writeln(‘1. kayıt girmek ‘); Writeln(‘2.kayıt ekleme2); Writeln(‘3.kayıt okuma’); Writeln(‘seçiminiz:’);readln (a); Case a of 1: Kayıt_gir; 2: Kayıt_ekle; 3: kayıt_oku; Else Writeln (‘hatalı giriş yaptınız’); Writeln (‘çıkmak için ( H/ h) basınız’); readln©; End; Untıl (c= ‘h’) or (c=’H’); End.

NOT :Dosyadan bilgi silmek,Dosyadan bilgi aramak ve Dosyadaki bilgiyi listelemek , konularınınbirleştirilerek yapıldığı bir örnektir.

ÖRNEK 37: Text tipi dosyalarda, bilgi giriş ,arama,silme,listeleme ile ilgili program.

Uses crt; Var Uz,x,i,no,not1,not2,not3 :integer; Ad,soy,ara :string; Y,ort :real; Dd:text; Dev,w,e :char; Bay :integer; Procedüre Bilgi_gir; Begin $I­ window (40,1,80,13 );textbackround(4);clrscr; assing (dd,’m.s’); append (dd); writeln(dd,’no adı soyadı 1.Not 2.Not 3.Not Ort ); (Write (‘öğrencinin Numarasını giriniz :’); readln (no); (Write (‘öğrencinin adnı giriniz :’); readln (ad); (Write (‘öğrencinin soyadını giriniz :’); readln (soy); (Write (‘öğrencinin 1.Notunu giriniz :’); readln(1.not); (Write (‘öğrencinin 2.Notunu giriniz :’); readln (2.not); (Write (‘öğrencinin 3.Notunu giriniz :’); readln (3.not); if ioresult <> 0 then Write (‘tekrar giriniz’); Delay (500); i := not1+not2+not3; y:=i/3; Writeln (dd,no:1,ad:15,soy:12,not1:10,not2:10,not3:10, ‘ ‘,y:5:0); Close(dd); End; Procedüre arama; Begin Clrscr; Assing(dd,’m.s’); Repeat Reset(dd); Write (‘aradığınız öğrencinin adı....’);readln(ara); Uz:= lenght (ara); Bay:=0; Clrscr; Writeln(’No Adı Soyadı 1.Not 2.Not 3.Not Ort ); While Not eof (dd) do Begin Readln (dd,ad,soyad); if ara =copy(dd,1,uz)then Begin

Dosyadan bilgi silmek,Dosyadan bilgi aramak vedosyadaki bilgiyi listeleme.

Writeln (ad,soy,ort;9,2);bay:=1; End; End; if bay =0 then writeln (‘aradığınız öğrenci listede yok ! ‘); write (devam için <enter> son(h/H)....’); dev:=readkey; Writeln; Until dev in [ ‘H’,’h’]; Close(dd); Writeln; End; Procedüre liste; Assing(dd,ad,soy); Write(ad:17,soy:11); End; Close(dd); Readln; End; Begin Clrscr; Repeat Writeln(‘1.Bilgi Girişi’); Writeln(‘2.Bilgi Ekleme’); Writeln(‘3.Bilgi Arama’); Writeln(‘4.Bilgi Listeleme’); Writeln(‘5.Çıkış’); Write(‘seçiminiz’);readln(x); Case X of 1: Bilgi_gir; 2: Bilgi_ekle; 3: Bilgi_arama; 4:Liste; 5:EXIT; Else Writeln(‘Hatalı giriş yaptınız’); Writeln(‘Ana menüye dönmek için bir Tuşa basınız:’); Write(‘çıkmak için (H/h)basınız:’);readln(W); End; Until W in [‘H’,’h’]; End.

(RASGELE ERİŞİMLİ DOSYALAR)

NOT:Dosya yaratmak,Dosyaya bilgi ekleme,ve Dosyadan bilgi okumak konularının birleştirilerekyapıldığı bir örnektir.

ÖRNEK 38 : Record Tipi dosyalar ile ilgili program.

Uses crt; Label Git; Type Kayit=record; No:integer; Ad:string[10]; Soy[10]; End; Var A,sil: string; Sec,ara:integer; ögrenci:kayit; cev,dev:char; dosya:file of kayit; procedüre kayit_ekle; begin assing(dosya,’nurdan.dat’); repeat

RECORD TİPİ DOSYALAR

rewrite(dosya); write(‘no ‘yu giriniz:’);readln(ögrenci.no); write(‘adı giriniz:’);readln(ögrenci.ad); write(‘soyadı giriniz:’);readln(ögrenci.soy); seek(ögrencino); Write(dosya,ögrenci); Writeln(‘devam etmek istiyormusunuz (‘E/H’); Cev :=readkey; Until cev in [‘H’,’h’]; Close (dosya); End, Procedüre liste; Begin Assing(dosya,’nurdan.dat’);reset(dosya); Writeln(‘No Ad Soyad’); Writeln(‘­­­­­­­­­­­­­­­­­­­­­­‘); Begin Seek (dosya,’ara’); Read(dosya,ögrenci); With ögrenci do Begin Writeln(No,ad:10,soy:10); End; End.

10.Bölüm

PORT’LARIN KULLANIMIPARALEL PORT’UN KULANIMI

Sistem ünitenizin arka tarafında 25 uçlu (pin), D tipi konnektöre paralel port denir.Bu port kullanarak sisteminizden dışarıya sinyal gönderebilir (Output) ya da dışarı ­dan gelen bir sinyali bilgisayarınıza girerek (Input) bilgisayarınızda işleyebilirsiniz. Bu portta bağlanan cihazlara gönderilen veya alınan sinyallerin seviyesi standartTTL seviyesindedir, yani 5 V’tur.Portun adından da anlaşıldığı gibi veri alış verişi 8 bit’likbir veri seti ile paralel olarak yapılır.Sistem ünitenize bağlı birden fazla paralel port buluna ­bilir. Paralel portlara LPT1, LPT2, LPT3 ... gibi isimler verilir.IBM uyumlu bilgisayarlardabulunan 25­pin’li D­tipi konnektörün uç bağlantı numaraları aşağıda görülmektedir.

PORT REGİSTERLERİ Bir paralel porta bağlanan cihazdan veri alış/verişi yerekaydedilmesi gerekir.İşte veri kaydı yapılan bu geçici belleğe register denilir.Her registerinhexadesimal olrak ifada edilen bir adresi vardır.Bu register adresleri 378H, 37AH, 379H’dir.

Şimdi bu port registerlerinin kullanılışına, bir paralel printerin kontrolünü örnek olarakverelim.

Data Latch, 378 H:Bu adrese yazılan data, printer buffer’ına ( tampon belleğine ) gönderilir ve burada saklanır.Yeni bir daha gönderilene kadar buradaki data sabit kalır.Bu adresteki da ­talar okununca printer buffer’i içerisinde bulunan veri elde edilir.

Printer Controls, 37A H:Paralel port kontrol sinyalleri bu port aracılığı ile yapılır.Ayrıca buadresteki datalar mikroişlemci tarafından okunabilir.Bu adrese gönderilen datalar ile printerinseçimi, çalışmaya başlatılması, otomatik satır ilerlemesi gibi işlemleri yaptırır.

Printer Status, 379 H: Paralel printerin durumu ( status ) hakkındaki datalar mikroprose ­sörün okuması için bu adreste saklanır.Bu adresteki datalar, printerin meşgul olması, sayfa sonu ­

na gelinmesi, printerde hata oluşması gibi priterin durumu ile ilgili bilgileri ifade eder.

Aşağıdaki tipik bir printerin giriş/çıkış sinyalleri gösterilmiştir.Bu tabloda “I” harfi Input,“O” harfi Output’u “N/A” kullanılmayan ucu gösterir.

PİN SİNYAL ADI PİN I/O DURUMU SİNYAL ADI1 O Strobe 14 O Auto Feed XT2 I/O D0 15 I Error3 I/O D1 16 O Initialize4 I/O D2 17 O Select Input5 I/O D3 18 N/A6 I/O D4 19 N/A Ground7 I/O D5 20 N/A Ground8 I/O D6 21 N/A Ground

9 I/O D7 22 N/A Ground10 I ACK 23 N/A Ground11 I Busy 24 N/A Ground12 I Printer Enable 25 N/A Ground13 I Select

Tablodan da anlaşılacağı gibi 2, 3, 4, 5, 6, 7, 8, 9 numaralı uçlar data uçlarıdır.Bu uçlardan hem data çıkışı ( Output ) hem de data girişi ( Input ) yapılır. Sadece sinyal giriş yapılabilecek uçlar 10, 11, 12, 15 numaraları uçlar,sadece sinyal çı­kışı yapılabilecek uçlar ise 1, 14, 16, 17 numaraları uçlardır. 2­9 numaralı data uçlarına sinyal göndermek için 378 adresi ile belirlenen register kul ­lanılır.Diğer uçları kullanabilmek için de 37A ve 379 adreslerinin kullanıldığını printer kontro ­lü için verdiğimiz örneklerde açıkladık.

Paralel Port Test Cihazının Yapımı

Paralel porta veri gönderen programların çalışıp çalışmadığını görebilmeniz amacıylabasit bir devre kuralım.Bu devreyi kurmak için aşağıdaki malzemelere ihtiyacınız olacak : 1 Adet Printer Konnektörü 1 Adet Segmet Display

7 Adet 330 Ohm Direnç1 Metre 8’li Data Kablosu

Portlara gönderilen sinyalin seviyesini görmek için en basit devre 2­9 uçlarından herbirine LED bağlamaktır.Aşağıda gördüğünüz devreyi bir delikli pertinax üzerine kurduktansonra uygun bir kutu içerisine yerleştirirseniz, port kontrolü için yapacağınız programların çık­tısını görmeniz mümkün olacaktır.Aksi halde bizim bu kitapta verdiğimiz örnek programlarınçıktılarını da görmeniz mümkün değildir.

PORT Komutu Amaç :Bilgisayarın bir paralel port register’ine veri yazmak veya registerden veri okumak amacıylakullanılır.

Dizilim : PORT [$Register_adresi ]:=veri; veri göndermek için

Integer_değişken:=PORT [$Register_adresi]; veri okumak için

Örnek : Port [$378]:=5; i:=port[$378]; Port komutu ile bir paralel port registerine veri göndermenizde o veri 2­9 numaralı uçlararasında görülür.Bir uca veri göndermek, o uçtaki gerilimin 5 V olması demektir.Yukarıda veri –lenilk örnekte 378 adresine 5 verisi gönderildiğinde paralel portun 2 ve 4 numaraları uçlarında5 V’luk gerilim görülür.İkinci örnekte adresi 378 olan port registerleri içerisindeki bilgi okunarak“i” değişkeni içerisine atanır.”i” değişkeninin tipi integer olmalıdır.

Port Registeri İçerisine Yazılacak Verinin Tespit Edilmesi Paralel portun data giriş ve çıkış uçları 2­9 olduğuna göre bu uçlara gönderilecek olan veri8 bit olmalıdır.Gönderilecek verinin binary karşılığı bulunduktan sonra bu sayı desimale dönüştü­rülmelidir.Örneğin paralel portun 2 ve 4 numaralı uçlarını 5 V’luk gerilim gönderelim.Bunun için 2­9

I/O DURUMU

Ground

sırasındaki uçları aşağıdaki gibi gösterebiliriz.

Pin Numarası9 8 7 6 5 4 3 2

Data Numarası D7 D6 D5 D4 D3 D2 D1 D0Display Segmenti g f e d c b aBasamak Değeri 128 64 32 16 8 4 2 15 V. Gönderilecek

Olan Uçlar1 1

Desimal Karşılığı 4 1

Yukarıdaki tablodan registere 5 sayısının gönderilmesi gerektiğini buluruz.Veriyi göndermek içinprogram içinde “port[$378]:=5” yazmak yeterlidir.Tabloya dikkat edilecek olursanız paralel porttest cihazında a ve c segmentlerinin yanacağını anlayacaksınız.Örnek 39 :7 segment displayın tüm LED’lerini belirli sürelerde yakıp söndüren program.

Program Port 1;Uses Dos,Crt;

Var

I : integer;Begin Repeat Port [$378]:=127; Delay (3000); Port [$378]:=0; Delay (3000); Until Keypressed;End.

Örnek 40 : 7 segment displayın LED’lerini a’dan g’ye doğru belirli aralıklara yakan ve herhangi birtuşa basınca duran program.

Program Port 2;

Uses Dos,Crt;Var I , J :integer;Begin Repeat For J:=0 to 7 do Begin Delay (4000); Port [$378]:=Trunc(Exp (J*Ln (2))); I:=Port [$378]; Writeln( I ); End; Until Keypressed;End.

7 segment displayın LED’lerini sırayla yakmak için 378 adresine 1, 2, 4, 8, 16, 32, 64sayılarını sırasıyla göndermek gerekir. “Trunc (Exp (J* Ln (2)))” ifadesi bu sayıları üretmek içinkullanılmıştır. “I:=Port [$378]” ifadesiyle 378 adresinden okunan veri “I” değişkeni içerisine atanmış ve“Writeln” komutu ile ekrana yazdırılmıştır.Daha önce de belirtildiği gibi 378 adresindeki “DataLatch” registerine yazılan veri, yeni bir veri gönderilinceye kadar paralel port uçlarında aynentutulur.Bu nedenle 378 adresindeki veri bir önceki komutla gönderilen veridir.

Örnek 41 : 7 segmentli displayın LED’lerini önce a’dan f’ye daha sonra f’den a’ya doğru yakan,bu işleme herhangi bir tuşa basıncaya kadar devam eden program.

Program kara_simsek;Uses Dos,Crt;

4+1=5

Var I, J :integer;Begin Repeat For J:=0 to 5 do Begin Delay(4000); Port [$378]:=Trunc(Exp (J*Ln(2))); I:=Port[$378]; Writeln( I ); End; For J:=5 downto 0 do Begin Delay(4000); Port [$378]:=Trunc(Exp (J*Ln(2))); I:=Port[$378]; Writeln( I ); End; Until Keypressed;End;

Örnek 42 : Klavyeden girilen 0­9 arasındaki sayıları 7 segment displayda gösteriri program.

Uses Dos,Crt;Var I, J:integer;Begin Repeat Clrscr; Writeln(‘ 0­9 Arasında Bir Sayı Giriniz ’); Write(‘ 99 Sayısı Girince İşlem Sona Erer : ‘);Readln( J ); Case J of 1: Port [$378]:=6; 2: Port [$378]:=91; 3: Port [$378]:=79; 4: Port [$378]:=102; 5: Port [$378]:=109; 6: Port [$378]:=124; 7: Port [$378]:=7; 8: Port [$378]:=127; 9: Port [$378]:=103; 0: Port [$378]:=63; End; I:=Port[$378]; Writeln( I ); Until J=99;End.

Örnek 43 : 0­9 arasındaki sayıları sıra ile 7 segment displayda gösteren program.”Delay” komutuile verilen süreyi değiştirilerek bir kronometre gibi kullanılabilir.

Uses Dos,Crt;Var I, J:integer;Begin Repeat For J:= 0 to 9 do Begin Delay(4000); Case J of 1: Port [$378]:=6; 2: Port [$378]:=91; 3: Port [$378]:=79; 4: Port [$378]:=102; 5: Port [$378]:=109; 6: Port [$378]:=124;

7: Port [$378]:=7; 8: Port [$378]:=127; 9: Port [$378]:=103; 0: Port [$378]:=63; End; I:=Port[$378]; Writeln( I ); End; Until Keypressed;End.

4. ve 5. Programlarda portlara gönderilecek verinin tespiti aşağıdaki gibi yapılmıştır.Örneğin 7segment displayda 3 sayısının görülmesi için a, b, c, d, g segmentlerinin yanması gerektiği bu­lunur.Daha sonra bu segmentlerin yanması için porta gönderilmesi gereken desimal sayı hesapedilir.

Port Numarası9 8 7 6 5 4 3 2

D7 D6 D5 D4 D3 D2 D1 D0Display Segmenti g f e d c b A

128 64 32 16 8 4 2 15 V Gönderilecek

Olan Uçlar1 1 1 1 1

Desimal Karşılığı 64 8 4 2 1

Yukarıdaki tabloda göre basamak değerlerinin desimal karşılığı toplanacak (64+8+4+2+1=79)olursa 3 sayısını displayda göstermek için parelel porta 79 sayısının gönderilmesi gerektiği bulunur.

Örnek 44 : 7 segment display’ın tüm LED’lerini belirli sürelerle yakıp söndüren program.

Uses Dos,Crt;Var I, J:integer;Begin Repeat Writeln(‘1.Fırını Çalıştır ‘); Writeln(‘2.Kapıyı Aç ‘); Writeln(‘3.Televizyonu Aç‘); Writeln(‘4.Müzik Setini Aç‘); Writeln(‘5.Salon Işığını Aç ‘); Writeln(‘6.Programdan Çıkış ‘); Write(‘Seçiminiz ­­­­­­­­>‘);Readln( J ); Case J of 1:Port [$378]:=1; 2:Port [$378]:=2; 3:Port [$378]:=4; 4:Port [$378]:=8; 5:Port [$378]:=16; 6:Exit; End; I:=Port[$378]; Writeln ( I );

Data Numarası

Basamak Değeri

Until J = 99 ;End.

1 13

25 14

Şekil 1­1:Paralel Port’un Pin’lerinin Yerleşimi

Şekil 1­2 :Paralel Port Test Cihazı

SERİ PORT’UN KULLANIMI

Sistem ünitesinin arkasında 25 pinli ve D tipindeki konnektörlerden biriside seri port’tur.Boseri port’a RS­232 port’u da denir.Pin sayısı ve görünüş olarak paralel port’a çok benzer, ancakpin numaraları farklıdır.

13 1

14 25Seri iletişim için bir tek kablo yeterlidir.Ancak gönderilen veri bit’lerinin karşı taraftan

doğru algılanabilmesi için zamanlamada yanlışlık olmaması gerekir.Yani bir birim ne zaman başlar,ne kadar sürer gibi problemlerin aşılması gerekir.Bunun için yapılacak iki şey vardır.Birincisi; verikablosunun yanına bir adet clock palsi kablosu ilave edilir ve bu kablo üzerinden peryodik palsleruygulanır.Her pals’in boyu bir birimin iletim süresi olarak kabul edilir.İkinci yol ise; sadece verikablosu olur.Veriler gönderildikten daha önceden alıcı tarafla anlaşılmış bir protokole uyulur.İkinciyönteme eşzamansız seri iletişim denilir.Bu tür iletişimde gönderilen her birime ayrılan süre,birimlerinin birbirini nasıl takip edeceği önceden belirlenmiştir.

PİN SİNYAL ADI PİN I/O DURUMU SİNYAL ADI

1 N/A Bağlı değil 14 N/A Bağlı değil2 O Data gönderme 15 N/A Bağlı değil3 I Data alma 16 N/A Bağlı değil4 O Gönderme isteği 17 N/A Bağlı değil5 I Göndermek için sil 18 N/A6 I Data seti hazır 19 N/A Bağlı değil

I/O DURUMU

Bağlı değil

7x330ohm

7 N/A Bağlı değil 20 O Data transfere hazır8 I RLDS 21 N/A Bağlı değil9 N/A Bağlı değil 22 I Ring indicate10 N/A Bağlı değil 23 N/A Bağlı değil11 N/A 20. pin’e bağlı 24 N/A Bağlı değil12 N/A Bağlı değil 25 N/A Bağlı değil13 N/A Bağlı değil

PC’LERDELİ PORT ADRESLERİ

Adresi Register Adı Açıklama

03F8 Transmitter Holding Gönderilecek verinin yazıldığı register03F8 Receiver Buffer Karşı taraftan alınan verinin yazıldığı register03F8 Divisor Latch, Low Byte İletişim hızının yazıldığı register03F9 Divisor Latch, High Byte İletişim hızının yazıldığı register03F9 Interrupt Enable Register Veri iletişiminin hangi koşullar altında kesme üreteceğini belirleyen register 03FA Interrupt Idendification Kesme olmuşsa, bu kesmenin hangi sebeple oluştuğu bilgisini içeren register 03FB Line Control Register İletişin parametrelerini belirleyen register03FC Modem Control Register Port uçlarındaki işaretlerin değerlerini belirleyen reg.03FD Line Status Register İletişimde bir hata oluşup oluşmadığını bilgisini içeren register03FE Modem Status Register Port uçlarına karşı taraftan verilen işaretlerin durumunu içeren register

11.BölümGRAFİK

GRAFİK MOD KAVRAMI

Çoğu programlama dillerinde olduğu gibi Turbo Pascal’da da PC’lerin ekran modlarınıkontrol eden çok güçlü prosedür ve fonksiyonlarına sahiptir.Şimdiye kadar yapılan programlar25x80 boyutlarındaki text modunda yapıldı.Bu bölümde Turbo Pascal’ın en sık kullanılan grafikfonksiyon prosedürlerini kullanmasını öğreneceksiniz.

Sisteminizin grafik sürücüsünü belirleyen “ *.BGI “ dosyaları da yine sisteminizinulaşabileceği bir disket veya hard diske kayıtlı olması gerekir.

Grafik ortamında yazılan yazıların istenilen fontta olmasını sağlayan “ *.CHR “ dosyaları dayine sisteminizle ulaşabileceğiniz bir sürücüde hazır bulunması gerekir.

EKRAN BOYUTLARI

Aşağıda, pek çok kullanılan HERCULES ve VGA grafik kartlarında kullanabilecek pixelsayılarını vermemize rağmen, kitapta verilen programlar her tür PC’de çalışacak şekilde

hazırlanmıştır.Ancak, bizim burada verdiğimiz grafik kartından farklı bir grafik kartına sahip olanbilgisayar kullanıyorsanız, ekranda herhangi bir noktayı doğru olarak tanımlayabilmemiz için grafikkartınızın pixel sayısını bilmeniz gerekir.Bu grafik elemanının X ve Y eksenlerinde tanımlanabile­cek nokta sayısına çözünürlük denir.

Y Y

X X

VGA ekran pixel sayıları HERCULES ekran pixel sayıları

Bazı Sürücüler ve Çözünürlükleri

Ekran Kartı Çözünürlük

CGACO 320x200CGAHi 640x200MCGACO 320x200MCGAMed 640x200MCGAHi 640x480EGALo 640x200EGAHi 640x350HercMonoHi 720x348ATT400CO 320x200ATT400Med 640x200AT400Hi 640x480PC3270Hi 720x350IBM8514Lo 640x480IBM8514Hi 1024x768

Grafik komutlarının kullanıldığı bir Pascal programı çalıştırabilmek için ekranı grafik modunageçirmek gerekir.Pascal’da bu işi gerçekleştiren prosedürleri aşağıda inceleyeceğiz.

Detect fonksiyonu

Amaç : Default grafik sürücüyü arayıp sisteme otomatik olarak dahil etmek için kullanılır.

Dizilim : int_değişken := DETECT

Örnek : Grsur : Detect;DETECTGRAPH Prosedürü

Amaç : Sistemin grafik sürücüsünü ve grafik modunu otomatik olarak bulur.

Dizilim : DETECTGRAPH (Grsürücü,Grmodu) ;

Örnek 45 : Sistemin sürücü kod numarasını ve grafik modunu bulup ekrana yazdıranprogram.

Program Grsur_GR_mod_Bul;Uses Graph ;

Grafik Ekranına Geçmek

0,0 0,0

639,479

719,347

Var Gs, Gm :Integer;Begin Detectgraph(Gs,Gm) ; Writeln (‘ Sisteminizin Grafik Sürücü Numarası =’,Gs) ; Writeln (‘ Sisteminizin Grafik Modu Numarası = ’,Gm);End.

INITGRAPH Prosedürü

Amaç : Sistemi text modundan grafik moduna geçirmek için kullanılır.

Dizilim : INITGRAPH (Grsürücü, Grmodu, GrsürücüPath) ;

Not : “ GrsürücüPath “ parametresinin değeri ‘ ‘ olarak verilirse, grafik sürücü dosyasınınaranacağı yer aktif sürücü olduğu varsayılmış olur.

CLOSEGRAPH Prosedürü

Amaç : Grafik modunu kapatıp tekrar text moduna geçmek için kullanılır.

Dizilim : CLOSEGRAPH ;

Her grafik moduna geçtikten sonra, genellikle program sonunda kullanılır.Kullanıldığında ekranısiler.

GRAPHRESULT Fonksiyonu

Amaç : Grafik komutlarının kullanılması esnasında oluşan hataları kontrol etmek için amacıylakullanılır.

Dizilim : Hatakodu := GRAPHRESULT ;

SETCOLOR Prosedürü

Amaç : Ekrana çizilecek çizgi rengini belirlemek için kullanılır.

Dizilim : SETCOLOR (Renk_kodu );

GETMAXCOLOR Fonksiyonu

Amaç : Kullanılan bilgisayarda kullanılabilecek en büyük renk kodu numarasını elde etmek içinkullanılır.

Dizilim : GETMAXCOLOR ;

LINE Prosedürü (Ekrana Çizgi Çizmek)

Amaç : Ekrana belirlenen iki koordinatı arasına çizgi çizmek için kullanılır.

Dizilim : LINE ( X1, Y1, X2, Y2 ) ;

Örnek 46 : Ekranın sol­üst köşesindeki belirlenen bölgeye rasgele renkte ve boyutta çizgilerçizdiren program.

Program line_ciz ;Uses Crt, Graph ;Var Gs, Gm:Integer ;Begin Detectgraph(Gs,Gm) ; Initgraph (Gs, Gm, ‘ ‘) ; If GraphResult <> 0 then Halt (1) ; Randomize ; Repeat Setcolor ( random (getmaxcolor+1)) ; Line (Random (200) , Random (200),Random (200), Random (200)) ; Delay (100) ; Until Keypressed ; Readln ;

Closegraph ;End.

GETMAXX ve GETMAXY Fonksiyonları

Amaç : Ekranda kullanılabilecek maximum X ve Y koordinatlarını bulmak için kullanılır.Dizilim : int_değ := GETMAXX ; int_değ := GETMAXY ;

RECTANGLE Prosedürü ( Dikdörtgen Çizmek )

Amaç : Ekrana iki köşe koordinatı belirlenen bir dikdörtgen çizmek için kullanılır.

Dizilim : RECTANGLE (X1, Y1, X2, Y2 ) ;

Örnek 47 : Ekranın kullanılabilecek alanını sınırlayan bir dikdörtgen çizen program.

Program rectangle_ciz ;Uses Graph ;Var Gs, Gm :Integer ;Begin Detectgraph (Gs, Gm) ; Initgraph (Gs, Gm, ‘ ‘ ) ; If GraphResult <> 0 then Halt (1) ; Rectangle (0, 0, GetMaxX,GetMaxY) ; Readln ; CloseGraph ;End.

CIRCLE Prosedürü ( Daire Çizmek )

Amaç : Koordinatları ve yarıçapı belirlenen bir daireyi ekrana çizmek için kullanılır.

Dizilim : CIRCLE ( X, Y, YARIÇAP ) ;

Örnek 48 : Ekrana değişik renklerde iç içe daireler çizdiren program.

Program circle_ciz ;Uses Crt, Graph ;Var Gs, Gm : Integer ; Yaricap : Integer ; Ch : char ;Begin Gs :=Detect ; Initgraph (Gs, Gm, ‘ ’) ; if GraphResult <> 0 then Halt (1); Randomize ; Repeat For yaricap := 1 to 5 do Begin Setcolor (Random (GetMaxcolor+1 )) ;0 Circle (100, 100, yaricap*10) ; Delay (100) ; End ; Ch := Readkey ; Until ch = # 27 ;End.

ELLIPSE Prosedürü

Amaç : Ekrana koordinatları belirlenen bir yere elips çizmek için kullanılır.

Dizilim : ELLIPSE ( X, Y, Baş_açı, Bit_açı, Xyarıçap, Yyarıçap ) ;

Örnek 49 : Ekranın belirlenen koordinatlarına bir tam, bir de yarım elips çizen program.

Program elips_ciz ;Uses Graph ;

Var Gs, Gm :Integer ;Begin Gs := Detect ; Initgraph (Gs, Gm, ‘ ‘) ; if GraphResult <> 0 then Halt (1) ; Ellipse (100, 100, 0, 360, 30, 50) ; Ellipse (100, 100, 0, 180, 50, 30) ; Readln ; CloseGraph ;End.

PUTPIXEL Prosedürü (Nokta Koymak)

Amaç : Ekranın belirlenen koordinatlarına belirlenen renkte nokta koymak için kullanılır.

Dizilim : PUTPIXEL (X, Y, Renk_kodu ) ;

Örnek 50 : Ekranın sol­üst köşesinde belirlenen bir alana içerisindeki rasgele yerlere rasgelerenklerde nokta çizen program.

Program put_pixel_ciz ;Uses Crt, Graph ;Var Gs, Gm :Integer ; Renk : Word ;Begin Gs := Detect ; Initgraph (Gs, Gm, ‘ ‘) ; if GraphResulr <> 0 then Halt (1) ; Randomize ; Repeat Renk := Random (100) ,Random (100), Renk ) ; Delay (10) ; Until KeyPressed ; Readln ; CloseGraph;End.

SETLINESTYLE Prosedürü

Amaç : Ekrana çizilecek olan çizginin tipini belirlemek amacıyla kullanılır.

Dizilim : SETLINESTYLE ( Çizgi_stili, Pattern, Çizgi_kalınlığı ) ;

Örnek 51 : Ekrana değişik çizgi stilinde ve kalınlıkta çizgi ve dikdörtgen çizen program.

Program ciz_stili ;Uses Graph ;Var Gs, Gm : Integer ;Begin Gs := Detect ; Initgraph (Gs, Gm, ‘ ‘) ; if GraphResulr <> 0 then Halt (1) ; Line (0, 0, 100, 0, ) ; SetLineStyle (DottedLn, 0, ThickWidth ) ; Line ( 0, 10, 100, 10 ) ; SetLineStyle (DashedLn, 0, NormWidth ) ; Rectangle (0, 20, 100,40 ) ; Readln ; CloseGraph ;End.

SETFILLSTYLE Prosedürü

Amaç : Sütun grafiği çizilirken, sütunları birbirinden ayırt etmek için içerisine çizilen çeşitlipaternleri seçmek için kullanılır.

Dizilim : SETFILLSTYLE ( Pattern, renk ) ;BAR Prosedürü (Sütun Grafiği Çizmek)

Amaç : Ekrana boyutları ve renkleri belirlenmiş sütun grafiği çizmek için kullanılır.

Dizilim : BAR (X1, Y1, X2, Y2 );

Örnek 52 : Ekrana rasgele renklerde ve rasgele patternlerle doldurulmuş sütun grafikleriçizen program.

Program bar_ciz ;Uses Crt, Graph ;Var Gd, Gm, I, Gen : Integer ; Ch :char ;Begin Gs := Detect ; Initgraph (Gs, Gm, ‘ ‘) ; if GraphResulr <> 0 then Halt (1) ; Gen := 20 ; Randomize ; Repeat For I := 1 to 5 do Begin SetFillStyle (Random (12), Random (GetMaxcolor)) ; Bar ( I* Gen, I*10, Succ ( I ) *Gen, 300 ) ; End ; Ch :Readkey ; Until ch = # 27 ; CloseGraph ;End.

BAR3D Prosedürü ( 3 Boyutlu Sütun Grafiği Çizmek )

Amaç : Ekrana üç boyutlu sütun grafiği çizmek için kullanılır.

Dizilim : BAR3D ( X1, Y1, X2, Y2, Derinlik, Üst ) ;

Örnek 53 : Ekrana değişik boy ve renkte 3 boyutlu sütun grafiği çizen program.

Program bar_boy3 ;İUses Crt, Graph ;Var Gs, Gm, I, Width :Integer ; Ch : Char ;Begin Gs := Detect ; Initgraph (Gs, Gm, ‘ ‘) ; if GraphResulr <> 0 then Halt (1) ; Width := 20 ; Randomize ; Repeat i := 5 ; While I < 20 do Begin SetFillStyle ( Random (12), Random (GetMaxcolor)) ; Bar3d (I*Width, I*10, Succ ( I )*Width, 300, 20, true ) ; İ := i+3 ; End ; Ch := Readkey ; Until Ch = # 27 ; CloseGraph ;End.

OUTTEXT ve OUTTEXTXY Prosedürleri

Amaç : Grafik ortamında ekrana yazı yazmak için kullanılır.

Dizilim : OUTTEXT ( ‘ String ‘) ; OUTTEXTXY (‘ String ‘) ;

Örnek 54 : Grafik ortamında default karakter stilinde Yazı yazdıran program.Program out_text_ciz ;Uses Graph ;Var Gs, Gm :Integer ;Begin Gs := Detect ; Initgraph (Gs, Gm, ‘ ‘) ; if GraphResulr <> 0 then Halt (1) ; Outtext (‘ Outtext komutu ile yazılıdı ‘) ; Outtext (‘ Karakterler Default Stildedir. ‘) ; OuttextXY (‘ 100, 100, ‘OuttextXY Komutu İle Yazılmıştır. ‘) ; Readln; CloseGraph ;End.

SETTEXSTYLE Prosedürü

Amaç : Grafik modunda ekrana yazılacak yazı tipini belirtmek amacıyla kullanılır.

Dizilim : SETTEXTSTYLE ( Font, Doğrultu, Genişlik ) ;

Örnek 55 : Grafik ortamında ekrana çeşitli font, doğrultu ve büyüklüklerde yazı yazdıranprogram.

Program Set_text_style ;Uses Graph ;Var Gs, Gm : Integer ;Begin Gs := Detect ; Initgraph (Gs, Gm, ‘ ‘) ; if GraphResulr <> 0 then Halt (1) ; SetTextStyle (TriplexFont, Horizdir, 1 ); OuttextXY (0, 1, ‘ Yatay TriplexFont ‘) ; SetTextStyle (GothicFont, Horizdir, 2 ); OuttextXY (0, 20, ‘ Yatay GothicFont ‘) ; SetTextStyle (3, Horizdir, 9 ); OuttextXY (0, 40, ‘ SansSerifFont ‘) ; SetTextStyle (3, VertDir, 4 ); OuttextXY (200, 100, ‘ Dikey SmallFont ‘) ; Readln ; CloseGraph;End.

12.BölümTURBO PASCAL HATA MESAJLARI

COMPİLER HATA MESAJLARI

Hata Kodu Mesaj Açıklama

1 Out of memory Sistemin hafızası yetersiz veya program çok büyük, CONFIG.SYS’den geçersiz sürücüleri çıkarınız.FILES=20, BUFFER=20 yapınız.2 Idenfiler expected Bir pascal reserved kelimesinin tanımla­ ma bloğunda kullanılıyor.3 Unkown idenfiler Var bloğunda tanımlanmamış bir değişken programda kullanılıyor.4 Duplicate idenfiler Bir değişken veya sabit aynı tanımlamama bloğunda iki defa tanımlanıyor.5 Synaxt error Program içerisinde geçersiz bir karakter kullanılıyor.6 Error in real constant Sabit real tanımlamada hata var.7 Error in integer constant Sabit integer tanımlamada hata var.8 String constant String sabitlerinin sonundaki tırnak unutulmuş veya fazladan tırnak konulmuş.10 Unexpected end of file Bir program bloğu sonuna end

yazılmamış veya “.” unutulmuş.11 Line too long Bir satıra 126 karakterden daha fazla yazılmış.12 Type idenfiler expected Type tanımlayıcı bekleniyor.13 Too many open files Aynı anda açık olan dosya sayısı çok fazla CONFIG.SYS deki FILES=20 olmalı.14 Invalid file name Dosya ismi geçersiz ya da belirtilen path yanlış.15 File not found Belirtilen dosya aktif directory içerisinde bulunamıyor.16 Disk full Disket veya harddisk dolu.17 Invalid compiler directive Geçersiz Compiler bildirisi.18 Too many files Aynı anda açılmış çı­ok sayıda dosya var.Gereksiz dosyaları

kapatınız.19 Undefined type in pointer Pointer tanımında bilinmeyen tip. Defination20 Veriable idenfiler expected Değişken tanımlayıcısı bekleniyor.21 Error in type Bu sembol ile tip tanımlamasına başlanamaz.Tip hatası var.26 Type mismatch Bir atama deyiminde değişken içine atanan değer ile değişken tipi arasında uyuşmazlık var.28 Lower bound greater than Sınırlı tip veri tanımında upper bound alt sınır, üst sınırdan fazla. Örneğin “type a=3..1”29 Ordinal type expected Real, string veya sınırlı tip veri burada kullanılamaz.30 Integer constant expected Sadece integer sabit kullanılabilir.31 Constant expected Burada sadece sabit kullanılır.32 Integer or real constant Sadece sayısal sabit kullanılabilir.33 Type idenfiler expected Tip tanımı gerekiyor.Tipinin tanımlanması gerekli olan bir değişkenin tipi tanımlanmamış.34 Invalid function result type Geçerli olan fonksiyon tipi sadece standart veri tipleri ve string tiptir.36 BEGIN expected Begin kelimesi unutulmuş.37 END expected End kelimesi unutulmuş.38 Integer expression expected İfade integer tipte olmalı.39 Ordinal expression expected İfade sıralı (ordinal) tip olmalı.40 Boolean expression expected İfade boolean olmalı.

41 Operand type does not match Aritmetik operatör bu tip operator veriler için uygun değil. Örneğin (‘A’ div ‘2’)42 Error in expression Bir ifade içersinde operatör yazmak unutulmuş.Örneğin “ a:=5* ”50 DO expected DO yazılmamış.54 OF expected OFF yazılmamış.55 INTERFACE expected INTERFACE yazılmamış.57 THEN expected THEN yazılmamış.58 TO or DOWNTO expected DO veya DOWNTO yazılmamış.62 Division by zero /, div veya mod operatörü ile bir sayının sıfıra bölümü oluşuyor.63 Invalid file type Readln komutu record tip dosyada veya Seek komutu text tipi dosyada kullanılmış.64 Cannot read or write Bu tip veri read veya write variables of this type komutu ile kullanılmaz.66 String variable expected Bu değişken string tip olmalı.67 String expression expected İfade string tipte olmamlı.73 Implementation expected Implementotion yazılmamış.74 Constant and case type Case deyiminin seçici değişkeni do not match ile etiket tipleri arasında uyumsuzluk var.75 Record variable expected Bu değişken record tip olmalı.76 Constant out of range Sınır dışında kalan bir sabit değer, değişkene atanmış.79 Integer or Real expected İfade integer veya real tipte olmalı.84 UNIT expected Unit yazılması gerekir.85 “;” expected “;” yazılması gerekir.86 “:” expected “:” yazılması gerekir.87 “,” expected “,” yazılması gerekir.88 “(“ expected “(“ yazılması gerekir.89 “)” expected “)” yazılması gerekir.90 “=” expected “=” yazılması gerekir.91 “:=” expected “:=” yazılması gerekir.92 “[“ or “(.” Expected “[“ veya “(.” yazılması gerekir.93 “]” or “.)” expected “]” veya “.)” yazılması gerekir.94 “.” Expected “.” yazılması gerekir.95 “..” expected “..” yazılması gerekir.97 Invalid FOR control For deyimi içerisindeki kontrol variable değişkeni imteger tipte olmalı.98 Integer variable expected Integer değişken kullanılmalı.102 String constant expected String sabit kullanılmalı.113 Error in statement Bu sembol ile bir deyim yazmaya başlanamaz.116 Must be in 8087 mode to Bu ifadenin derlenmesi için compile this compiler 8087 modunda olmalı.121 Invailed qualifier Array olarak tanımlanmamış bir değişken indexli olarak kullanılmaya çalışıyor.132 Critical disk error Kritilk bir disk hatası var. Örneğin sürücüde disket yok.133 Cannot evaluate this Bu ifade DEBUG fonksiyonu ile expected değerlendirilemez.Örneğin Sin fonksiyonu veya bir sabit watch penceresinde yazılmış.

RUN­TIME HATA MESAJLARI

Hata Kodu Mesaj Açıklama

1 Invalid function number Geçersiz fonksiyon numarası. Mevcut olmayan DOS Fonksiyonu çağrılıyor.2 File not found Reset,Append,Rename veya Erase komutlarıyla belirlenen dosya bulunamıyor.3 Path not found Reset, Rewritre, Append, Rename, Erase, Chdir, Mkdir Veya Rmdir komutlatıyla Belirtilen path bulunamıyor.4 Too many open file Aynı anda açılan dosya sayısı çok fazla FILES=20 olmalı.5 File access errror Reset, Append, Rewrite, rename Erase, Rmdir komutları

kullanıldığında ortaya çıkar.6 Invalid file handle Geçersiz bir dosya isteği DOS sistemine letilmiş.12 Invalid file access code Geçersiz dosya erişim kodu.15 Invalid drive number Getdir komutu ile geçersiz bir

sürücü numarası kullanılmış.16 Connat remove accross Rmdir komutu ile aktif directory directory silinmeye çalışıyor.17 Connat rename accross Rename komutu ile aynı drivers sürücüdeki dosyaların ismi değiştirilmeye çalışılıyor.100 Disk read error Read komutu ile EOF karakterinden sonraki bir kayıt okunmaya çalışıyor.101 Disk write error Close, write, writeln komutları ile dolu bir diskete işlem yapılıyor.102 File not assigned Assign komutu ile dosya bir temsilci değişkene atanmamış.103 File not open Açılmamış bir dosya üzerinde işlem yapılıyor.104 File not open for input Text dosyası giriş için açık değil.105 File not open for output Text dosyası çıkış için açık değil.106 Invalid numeric format Text dosyasından read veya readln komutu ile sayısal bir veri okunurken uygun olamayan bir sayısal değer ile karşılaşıldı.150 Disk is write protected Disket yazmaya karşı korumalı.151 Unknown unit Tanımsız ünite.152 Drive not ready Disket sürücüye takılmamış veya sürücü kolu kapatılmamış.154 CRC error in data Diskete kaydedilmiş datada hata var.156 Disk seek error Disktekten data okunurken hataya rastlandı.157 Unknown media type Disket DOS tarafından tanınmıyor.158 Sector not found Disket bozuk olduğundan data bulunamıyor.159 Printer out of paper Printer’e kağıt takılmamış.160 Device write fault Hardware hatası nedeniyle disket veya harddisk’e kayıt yapılamıyor.161 Device read fault Hardware hatası nedeniyle disket veya harddisk’ten data okunamıyor.162 Hardwae failure I/O portunda arıza tespit edildi.200 Division by zero /, div ceya mod operatörleriyle yapılan bölme işleminde sayının sıfıra bölümü oluşmakta.201 Range check error $R+ compiler bildirisi kullanıldığında bir değişkene sınırları dışında veri girilmekte veya bir dizi değişkenin boyutları sınır dışında kalıyor.205 Floating point overflow Tanımlanmamış bir real değişkene sınırları dışında veri atanmaya çalışılıyor.