turbo pascal

84
 1 İÇİNDEKİLER TURBO PASCAL’A GİRİŞ EDİTÖR ................................................................................................................... 8  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ı (Ru n) ................................................................... ................... 12 EXE Uzantılı Dosya Oluşturma ....................................................................... .................13 PASCAL KAREKTER SETİ .............................................................................................. 13 Turbo Pascal ‘da Kullanılan Komut ve Kelimeler ......................................................... 14 PASCAL PROGRAMININ GENEL YAPISI ...................................................................... 16 Program Başlığı ..................................................................................................... 17 Tanımlama Bloğu .................................................................................................. 17 Uygulama Bloğu .................................................................................................... 20 SABİTLER DEĞİŞKENLER VE OPERATÖRLER ............................................... ........... 23 SABİTLER ....................................................................................................................... 23 Sabit (Constant) Tanı mlama ....................................................................................... 23 DEĞİŞKENLER ............................................................................................................... 23 Değiken (Variable) Tanımlama .............................................................................. 24 Değişken İsimleri ................................................................................................... 24 Değişken ve Sabit İsmi Seçilirken Dikkat Edilmesi Gereke n 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

Upload: mustafa-demirhan

Post on 17-Jul-2015

283 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 1/84

İÇİNDEKİLER

TURBO PASCAL’A GİRİŞ

EDİTÖR .............................................................................................................. Ana Menü ......................................................................................................... Alt menüler .....................................................................................................

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 ....................................................................... ..........PASCAL KAREKTER SETİ .......................................................................................

Turbo Pascal ‘da Kullanılan Komut ve Kelimeler ...................................................PASCAL PROGRAMININ GENEL YAPISI ................................................................

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

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

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

DEĞİŞKENLER .........................................................................................................Değiken (Variable) Tanımlama ........................................................................Değişken İsimleri .............................................................................................

Değişken ve Sabit İsmi Seçilirken Dikkat Edilmesi Gereken Kurallar..........................Değişken Tipleri ...............................................................................................

Standart Değişken Tipleri ...........................................................................................Tamsayı (Integer) Değişken Tipleri ................. ............. ............................................Gerçek (Real) Değişken Tipi ......................................................................................Karakter (character) Değişken Tipi ............................................................................String Değişken Tipi ...................................................................................................Boolean Değişken Tipi ..............................................................................................

Programcının Tanımladığı Değişken Tipleri ....................................................Tip Tanımlama ...........................................................................................................

Dizi Tipi Değişkenler ........................................................................................Dizi Tipi Değişkenlerin Tanımlanması ........................................................................

Küme Tipi değişkenler ...................................................................................In operatörü ...................................................................................... .........................

Page 2: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 2/84

Küme Tipi Değişkenlerin Tanımlanması ................................................ ...................Küme Tipi Değişkenlere Değer Atama ............................................... ......................Küme İşlemleri ...................................................................................... ....................

Sıralı Tip Değişkenler ............................................................................ .........Sıralı Tip Değişkenlerin Tanımlanması ................................................ ........... .........

Sınırlı Tip Değişkenler.......................................................................................Sınırlı Tip Değişkenlerin tanımlanması.................................................. .....................Sıralı Verilerin Yazdırılması.................................................................... .....................Sıralı Tip Veri Kullanmak Gerçekten Gerekli midir? ................................. ..................

Record değişken Tipi.........................................................................................Record Tipi Değişkenlerin Tanımlanması................................................. ..................Record Tipi Değişken Tanımlanması...........................................................................

Operatörler ....................................................................................................... Aritmetik işlem Operatörleri..........................................................................................İlişki Operatörleri..........................................................................................................

Mantıksal Operatörler...................................................................................................

TEMEL GİRİŞ / ÇIKIŞ KOMUTLARI

WRITELN.......................................................................... ..................................WRITE...............................................................................................................READLN............................................................................................................READ.......................................................................... ......................................FORMATLI ÇIKIŞ..............................................................................................

Integer Sayıların Formatlanması..................................................................................

Real Sayıların Formatlanması......................................................................................Char Tipi Verilerin Formatlanması...............................................................................String tipi Verileri Formatlamak....................................................................................Boolean Tipi Verilerin Formatlanması..........................................................................

VERİ KONTROLÜ (COMPILER BİLDİRİLERİ) ...................................................Compiler Bildirisi Tanımlamak......................................................................................FORWARD bildirisi.......................................................................................................R bildirisi.......................................................................... ............................................I bildirisi.......................................................................... .............................................

I (INCLUDE DOSYA) Bildirisi......................................................................................

PROGRAM AKIŞININ KONTROLÜ

DALLANMA DEYİMLERİ......................................................................................IF -THEN deyimi..........................................................................................................

Page 3: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 3/84

IF -THEN _ELSE deyimi..............................................................................................CASE -OF deyimi.........................................................................................................

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

GOTO deyimi.......................................................................... ................................FOR-DO deyimi......................................................................................................

WHILE-DO deyimi........................................................................................................REPEAT-UNTIL deyimi...........................................................................................

İNDİSLİ DEĞİŞKENLER

İNDİSLİ DEĞİŞKENLERİNTANIMI........................................................................................................

.. 36TEK BOYUTLU DEĞİŞKENLER.................................................................................

Sıralama (sort) işlemi ..............................................................................................

iKi BOYUTLU DEĞİŞKENLER................................................................................

STANDART PROSEDÜR VE FONKSİYONLAR

MKDIR prosedürü.............................................................................................PARAMCOUNT fonksiyonu...............................................................................PARAMSTR fonksiyonu....................................................................................

GETDIR prosedürü; ..........................................................................................CHDIR prosedürü..............................................................................................IORESULT fonksiyonu......................................................................................RMDIR prosedürü.............................................................................................GETDATE prosedürü........................................................................................GETTIME prosedürü.........................................................................................SETDATE prosedürü.........................................................................................SETTIME prosedürü.........................................................................................CHR fonksiyonu.................................................................................................ORD fonksiyonu................................................................................................

PRED fonksiyonu..............................................................................................SUCC fonksiyonu..............................................................................................TEXTBACKGROUND prosedürü......................................................................TEXTCOLOR prosedürü...................................................................................LOWVIDEO prosedürü......................................................................................NORMVIDEO prosedürü...................................................................................READKEY fonksiyonu.......................................................................................

Page 4: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 4/84

KEYPRESSED fonksiyonu................................................................................GOTOXY prosedürü..........................................................................................WINDOW prosedürü..........................................................................................COPY fonksiyonu..............................................................................................CONCAT fonksiyonu.........................................................................................LENGTH fonksiyonu.........................................................................................POS fonksiyonu.................................................................................................DELETE prosedürü..........................................................................................INSERT presedürü...........................................................................................STR prosedürü..................................................................................................VAL prosedürü..................................................................................................EXIT prosedürü.................................................................................................HALT prosedürü................................................................................................DELAY prosedürü..............................................................................................SOUND prosedürü............................................................................................

NOSOUND prosedürü.......................................................................................CLREOL prosedürü...........................................................................................DELLINE prosedürü..........................................................................................INSLINE prosedürü...........................................................................................WHEREX fonksiyonu........................................................................................WHEREY fonksiyonu........................................................................................RANDOM fonksiyonu........................................................................................SIZE OF fonksiyonu..........................................................................................UPCASE fonksiyonu..........................................................................................

 ABS fonksiyonu .................................................................................................

INT fonksiyonu...................................................................................................FRAC fonksiyonu..............................................................................................TRUNC fonksiyonu............................................................................................ROUND fonksiyonu...........................................................................................ODD fonksiyonu................................................................................................SQR fonksiyonu................................................................................................SQRT fonksiyonu..............................................................................................SIN fonksiyyonu.................................................................................................COS fonksiyonu.................................................................................................

 ARCTAN fonksiyonu..........................................................................................

EXP fonksiyonu.................................................................................................LN fonksiyonu....................................................................................................

Page 5: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 5/84

ALT PROGRAMLAR

PROSEDÜR ALTPROGRAMLARI.........................................................................................

.. 51 Prosedür Kuralları..............................................................................................Prosedürlerde Değer Aktarımı..........................................................................

Değer Aktarmayan prosedürler (RAREMETRESİZ PROSEDÜRLER) .......................Değer Aktaran Prosedürler (PAREMETRELİ PROSEDÜRLER).................................Tek Yönlü Değer Aktarımı............................................................................................Çift Yönlü Değer Aktarımı............................................................................................

FONKS İYON ALT PROGRAMLARI................................................................FONKSİYON Tanımlama.............................................................................................Özyineleme (iç içe fonksiyon Kullanımı) ....................................................................

 Alt Programların Yan Etkileri........................................................................................

BİRİMLER (UNITS) .............................................................................Pascal Tarafından Desteklenmiş Unit’ler................................................................

Programcı tarafından Yazılan Unıt ‘ler.....................................................................

DOSYALAR

DOSYA KAVRAMI ......................................................................................................TEXT DOSYALARI (SIRALI ERİŞİMLİ DOSYALAR) ..................................................

Text dosyalarda kullanılan Standart Fonksiyonlar.............................................Dosya Yaratmak...............................................................................................Dosyaya Bilgi Yazmak ......................................................................................Dosyadan Bilgi Okumak....................................................................................Dosyaya Bilgi Eklemek......................................................................................Dosyadan Bilgi Silmek.......................................................................................Dosyadaki Bilgiyi Değiştirmek...........................................................................

RECORD TİPİ DOSYALAR (RASGELE ERİŞİMLİ DOSYALAR) ..............................Dosya Yaratmak ...............................................................................................Dosyaya Bilgi Yazmak.......................................................................................

Dosyadan Bilgi okumak.....................................................................................Dosyadan Bilgi Aramak.....................................................................................Dosyadan Bilgi silmek.......................................................................................

Page 6: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 6/84

PORT‘ LARIN KULLANIMI

PARALEL PORT’UN KULLANIMI........................................................................SERİ PORT’UN KULLANIMI.....................................................................................

GRAFİK

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

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

ÖRNEK PROJE PROGRAMLARI

EDİTÖR PROGRAMLARI YAZMAK....................................................................Editör Zeminini ve Yazı Rengini Değiştirme.................................................................Editör Programlarında Bul-Değiştir İşlemleri................................................................Fonksiyon Tuşlarında fonkiyonlar Atamak...................................................................Programlara Şifreli Ulaşma..........................................................................................

MOUSE PROGRAMLARI YAZMAK.....................................................................Kursör Görüntüsünü Yok Etmek..............................................................................

Mouse Koordinatları Gösteren Program..................................................................

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

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

TURBO VISION....................................................................................................

TURBO PASCAL HATA MESAJLARII

COMPİLER HATA MESAJLARI...........................................................................

RUN-TIME HATA MESAJLARI ............................................................................

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

Page 7: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 7/84

 

1.BÖLÜM

TURBO PASCAL‘ A GİRİŞ

EDİTÖR

Genel Bilgiler PASCAL yüksek seviyeli bir compiler dildir. Bu kompiler dilde kaynak programın tamÖnce makine diline çevrilir ve EXE uzantılı object program elde edilir. Daha sokaynak 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.pascal’ın enönemli özelliklerinden birisi de yazma işlemlerini kolaylaştıran özel editbulunmasıdır.

Ana MenüTurbo pascal programlarınızı yazacağınız IDE ortamında kullanılan editör kom

içerir.

Alt Menüler 

FILE menüsü 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

olarak bu program sürücüye kaydedilir .Save as... : Edit penceresindeki bir programı başka bir isimle kaydistenildiğinde kullanılır.

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

Page 8: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 8/84

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.

EDIT menüsü Restore Line : Silinmiş olan en son satırı kursörün bulunduğu pozisyona tekrar geiçin kullanılır.

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

SEARCH menüsü 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ı kelimedeolmadığını arar.

Go to line number... : Kursörü program içerisinde istenilen bir satır numakomutlandırmak için kullanılır.

RUN menüsü 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ıç durgetirmek 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.

Page 9: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 9/84

COMPILE menüsü 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

DEBUG menüsü 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ı

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

OPTIONS menüsü 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

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

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

WINDOW menüsü 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 dahapencerelere bölerek hesini ekranda görmemizi sağlar.

Page 10: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 10/84

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 ge

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ı kaplşekilde görmemizi sağlar.

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

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

İndex Shift- F1 : Help dsyasında bulunan komutların tümünü alfabetik sırrayla listeiçin kullanılır. Topic search Ctrl-F1 : Kursörün üzerinde bulunduğu Pascal komutu ile ilgili İnaçıklamaları ekrana getirir.

Previous topic Alt-F1 : Önceden seçilen help seçeneklerine, geriye doğru biregiderek yardımı ekrana getirir.

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

Programın Yazımı (Edit )Bir Pascal programı yazmak için ilk önce editörde bulunan diğer programları silip, ekran oluşturmak gerekir.

F10 tuşuna basıp FİLE seçeneğini ışıklandırırız. Sonra file menüsünün içinde bNEW kelimesini 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.

Page 11: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 11/84

EDIT, PW editöründe bir satır aşağı inmek için satır sonlarında enter tuşuna , içergirintili yazmak için ise, tab tuşuna basılır.

Pascal programı örneği :

 

Programın Saklanması (Save)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çışıklandırıp Enter tuşuna basınız. Bu işlem için başka bir yöntemde direkt olarak F2basmaktır.

Programın Derlenmesi (Compile)

Yazılan bir programın çalıştırılabilmesi için tüm hatalardan arındırılmış olması gTurbo Pascal Compiler (TCP.EXE), kaynak program içerisinde bu gibi hataları bprogramcıya bildirir. Programcı bu hataları düzelttikten sonra tekrar derleme iyapar. Compile komutunu çalıştırmak için, Alt+C tuşlarına basınız, Compile seçeışıklandırarak Enter  tuşuna basınız. Bu işlem için başka bir yöntem ise Alt+F9 tubirlikte basmaktır.

Programın Çalıştırılması (Run)F10 tuşuna sonrada R yazınız. Pencere içerisindeki ilk seçenek olan run seçeneği il

ışıklı olduğundan Enter tuşuna basınız. Aynı işlem için daha kısa bir yöntem ise CTtuşlarına basmaktır. Türbo Pascal sizin programınızı çalıştıracak ve ekranda prçıktısını çok kısa bir sürede görüntüleyecek ve tekrar paskal ana menüsündönecektir.Program çıktısını görmek için Alt+F5 tuşlarına basınız. Program çıktısı siz herhatuşa dokununcaya kadar görüntülenecektir. Herhangi bir tuşa basınca tekrar ana mdönülür.

Program Merhaba ;begin

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

end.

Page 12: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 12/84

Program çıktısını yeniden görmek istediğiniz zaman tekrar Alt+F5 tuşlarına basınız.

EXE Uzantılı Dosya OluşturmaPascal kaynak programları (programcının editörde yazdığı program) derlendiğinde mdiline çevrilir. Makine diline çevrilmiş olan dosyanın uzantısı EXE’dir. EXE uzantılıolarak diske kaydetmek için, “Compile” Menüsünün altındaki “destination” seçenkarşısındaki bilgiyi “disk” olarak değiştirmek gerekir. Bu bilgi “memory” olarak kmakine diline çevrilen kaynak program diske kaydedilmez.Bazı uzun programların derlenmesi sırasında “out of memory” hatası ile karşılaşılabhatanın oluşmasını önlemek için “Option” menüsündeki “Linker Buffer” alanı “disk”değiştirilir.

PASCAL KARAKTER SETİPascal programlarının yazılmasında üç tür karakter kümesi kullanılır. Bunlar salfabetik ve özel işaret kümeleridir. Bu karakterler aşağıdaki tabloda verilmiştir.

Karakterler Açıklamalar  Sayılar  0’ dan 9’ a kadar olan rakamlar.

Alfabetik Karakterler   A’ dan Z’ ye İngiliz alfabesindeki büyük harfler.

 A’ dan Z’ ye İngiliz alfabesindeki küçük harfler.+ Toplama işlemi ve stringlerin birleştirilmesinde kullanılır.

- / * Aritmetik işlemlerde sırayla çıkarma, bölme ve çarpma işleyapmak 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 dgöstermesini sağlar 

..Yanyana yazılan iki nokta, iki ayrı değeri ve bunlar araskalan tü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.

Page 13: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 13/84

Özelİşaretler 

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

,Virgül, listelenecek bir dizi sayı ve stringi birbirinden ayırmakullanılır.

; Noktalı virgül, Pascal deyim veya komutlarını birbirinden ayiçin kullanılır.

‘Tek tırnak sembolü, karakter yada stringlerin başlangısonunu belirtmede kullanılır.

:Bir değişkenin tipi tanımlanırken değişken listesinin sonkullanı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 edgenellikle değişken ismi tanımlanırken kullanılır.

Yukarıdaki karakterler, açıklamalarda da belirtildiği gibi, derleyici için özel anlamları Bu nedenle amacı dışında kullanılmamalıdır. Kullanıldığında ise syntax error kuralı hatası) ile karşılaşılır.

Turbo Pascal’da KullanılanKomut ve Kelimeler 

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

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

  And Extended Not Type Array File Of ToBegin Forward Or UntilBoolean For Procedure UnitByte Function Program UsesCase Goto Real Var  Char If Record WhileConst Implementation Repeat WithDiv In Set WordDo Integer Shortint Xor  Downto Interface SingleDouble Label String

Page 14: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 14/84

Else Longint TextEnd Mod Then

Turbo Pascal Komutları

Pascal’ da yine ayrılmış kelimelerden başka, özel özel işlevleri dışında kullanılamastandart procedure, function, deişken ve tipler vardır. Standart function ve procedPascal derleyici içerisinde tanımlanmışlar. Zaten Pascal’da kullanılan ve çoğu komut veya deyim adı verilen tüm kelimeler (örneğin; writeln, readln, lenghtprocedure, yani alt programdır. Bunların hepsi Pascal derleyicide hazır tanımlanmıştır. Türbo Pascal kütüphanesi içerisinde hazır bulunan ifadeler agörülmektedir.

  Abs Erase Keypressed Randomize Str    Arctan Exit Lenght Read Succ  Append Exp Line Readln Sound  Assign False Ln Readkey TextBar Filepos Lowvideo Rectangle Textcolor  Bar3d 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 Wherey

Cos Gotoxy Outtextxy Setcolor WindowDelline Graphresult Paramcount Setfillstyle WriteDelay Halt Paramstr Setlinestyle WritelnDelete Initgraph Pi SettextstyleDetect Ioresult Pos SinEllipse Insline Putpixel Sizeof  Eof Insert Pred Sqr  Eoln Int Random Sqrt

Page 15: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 15/84

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çtuşuna basıp sonrada File menüsünü seçiniz. Change dir... komutunu seçip enter 

basınız. Şimdi ed programlarınızı kaydedeceğiniz sürücü ve directory için A:\ yazıptuşuna basınız. Bundan sonra saklama işlemi için sadece program adını yazmanızolacaktır. Çünkü directory bundan sonra A:\ dır.

Ö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 merhaba;var 

isim : string ;

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

End.

Page 16: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 16/84

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 bırakılarak aynı satırda yazılmasıyla oluşur. İkinci yazılış formu ise sadece sPascal’ da geçerlidir. Input kelimesi klavyeden data girileceğini, output kelimprogram çıktısının ekrana yazılacağını belirtir. Türbo Pascal’da program başlığı kulisteğ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 istanımlanması yapılır. Farklı amaçlar için kullanılan isimler, farklı tanımlama bloklartanımlanırlar. Bu bloklar için başlık olarak kullanılan bildiri deyimleri aşağıda listelenm

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ı zorunlu de* Tanımlama bloklarının program içerisindeki sırası da önemli olmadığı gibi, tanımisimlerin program içinde kullanılmaları da zorunlu değildir.* Her bir tanımlama bloğu birden fazlada tekrarlanabilir.

program Program ismi ;

Page 17: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 17/84

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

Dizilim: USES ünitlistesi;

Örnek: UsesCrt, Dos, Printer, Verigir ;

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

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

Dizilim diyagramı:

Örnek: ConstBirdol=8704.56;İsim=’Onur’;

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

const Sabit ismi = Sabit değer  ;

Page 18: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 18/84

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

Dizilim:  TYPE

Tip_ismi = tip_tanımı;

Örnek: TypeGunler=(Pazartesi, Sali, Carsamba, Persembe, Cuma, Cum

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 birdefaklı tip tanımlaması yapılabilir. Her tip tanımlaması birbirinden “;” ile ayrılmalıdır

bloğunda tanımlanan veri tipleri, “Var“ bloğunda bir değişkenin tipini Tanımkullanılırlar.

VAR bloğuAmaç: Program içerisinde kullanılacak değişken isimlerini tanımlamak amkullanı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çgirilecek datanın tipi (string, integer....) iki nokta üst üste “:” ve noktalı virgül “;” ayazılarak belirtilir. Aynı tipteki değişkenler birden fazla listeyle Var başlığı tanımlanabilir. Programcı tanım bloğunda tanımlanan tipe sadık kalmalıdır.

Var 

Değişken ismi : Tip ;

,

Page 19: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 19/84

Uygulama bloğuUygulama bloğunda, program mantığı gereğince kullanılacak gerekli Pascal komutalır. Turbo Pascal programında Basic dilinde olduğu gibi program satır numarası kyoktur. Komut ve tanımlamaları birbirinden ayırmak için her komut sonuna “;” konulm

 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üğbir Pascal uygulama bloğu “begin”  kelimesi ile başlıyor, programın işlevlerini yerinegetiren komutlar kurallarına göre yazıldıktan sonra”end” komutu ile bitiyor.

Atama İşlemiAmaç: 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’;

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.

Sonuç değişkeni := İfade ;

Page 20: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 20/84

ifadeden elde edilen değer sonuç değişkenine atanır. Sonuç un önceki değeri bozyerine ifadenin değeri yerleşir. İfade tek bir değişken veya sabit olabildiği gibi örnegörüldüğü gibi her ikisi de olabilir. Bir atama işlemi ‘;’ ile biter. Bir değişken içerisine yapmak için kullanılan işaretin ‘=’ olmayıp ‘:=’ olmasına dikkat ediniz. ‘= ’ işaretanımlama ve karşılaştırma işlemlerinde kullanıldığını unutmayınız. Aritmetik işlemlerinde dikkat edilmesi gereken bir kuralda, sonuç olarak adlandırılan değişkenaritmetik işlem sonucunda elde edilen ifadenin sonucuna uygun olmalıdır.

Pascal Programlarının Genel Yapısı

Program başlığı

Sabittanımlama

Taınlama bloğu

Değişkentanımlama

Pascal deyimleri Uygulama bloğu

Pascal Programlarının Yazım Kuralları

Noktalama İşaretleri ve Tanımlama Kuralları 1) Programlar, program başlığı ile başlar. Ancak kullanımı zorunlu değildir.2) Program içinde kullanılacak tüm isimler tanımlama bloğu içinde tanımlanmalıd3) 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 deyim

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’ de

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.

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.

Page 21: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 21/84

Büyük ve Küçük Harf KullanımıPascal’da, standart deyim veya kullanıcının belirlediği isimlerin büyü

küçük harflerle yazılması tamamen serbesttir. Çünkü Pascal derleyicisi büyük veharfler arasında ayırım yapmaz.Deyimler Arasındaki Boşluklar Pascal programlarında satır numarası olmadığından, programın okunabilirliğini argerekir. Pascal programlarında satır numarası olmadığından, programın okunabarttırmak gerekir. Pascal’da bu konuda büyük bir serbesti vardır. Derleyici, komsemboller arasına konulacak boşlukları dikkate almaz. Bu sizin programınızı dokunabilir duruma getirmeniz için önemli bir serbestliktir.Okunurluğu Kolaylaştıran Bazı Kurallar 1.)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 giolarak yazınız.

Var constNetmaas : real ; veya mypi = 3.14; gibi..

3.) Bir atama deyimi gibi iki karakter birlikte kullanılan sembolleri birbirinden ayırmay 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çaralarına “_” konulabilir.

Net_maas bir_dol gibi.

2. Bölüm

Page 22: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 22/84

SABİTLER DEĞİŞKENLER veOPERATÖRLER

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

Pi = 3.1415926536False = FalseTrue = TrueMaxint = 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: ConstBirdol=588000.36 ;İsim=’onur’ ;

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

DEĞİŞKENLER

Değişkenler verileri bellekte tutmak için kullanılırlar. Her tanımlanan değişken bellekte belirlayrılmasına neden olur. Değişkenler içerisine programın akışı içerisinde farklı değerler ataİçerisinde değer bulunan bir değişkene yeni bir değer daha atandığında, bu değeri içinde baBu nedenle değişken adını alırlar.

Değişken (Variable) Tanımlama

const Sabit ismi = Sabit de er  ;

Page 23: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 23/84

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 tipi “:” ve “;” arasına yazılarak belirtilir. Değişken listesindeki değişken isimleri birbirindeayrılır. Aynı tipteki değişkenler birden fala listeyle “var” başlığı altında tanımlanabilir. Pro

tanım bloğunda tanımlanan tipe sadık kalmalıdır. İnteger tipte tanımlanmış bir değişkentipte bir bilgi giremeyiz.

Değişken İsimleriBir değişkenin bellekte veri tutabilmesi için bellek hücresine bir isim verme zorunluluğu

  Anlamlı değişken adları oluşturmanız, hem program tasarımında hemde programokunabilmesi açısından yarar getirir. Ancak isim verirken uyulması gereken bazı kurallar vakurallar, sabit, tip, değişken, procedure, function, etiket isimleri verirken de aynen geçerlidir.

Değişken ve Sabit İsmi Seçilirken Dikkat EdilmesiGereken Kurallar 

1.) 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çe4.) 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 ‘_’ konula6.) İç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, Adres1

Geçersiz Değişken Veya Sabit İsimlerine Örnekler 

1Harf, Var, Const, Lira*Dolar, Ahmet’in, Ad-Soyad, Ülker, Şeker 

var  Değişken

ismi

: Tip ;

,

Page 24: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 24/84

Değişken TipleriPascal’da 15 ayrı değişken tipi vardır. Bu tiplere ek olarak kendi değişken tipleritanımlayabilirsiniz. Her değişkenin bir tipi olmalıdır. Bir değişkenin tipi, o değişken için bellek bölgesinde ne tür veriler tutabileceğini ifade eder.Standart Değişken Tipleri

Standart veri tipleri Turbo Pascal tarafından belirlenen tipler vardır ki bunlara özel veri tipStandart veri tipleri aşağıda belirtilmiştir.

1) Integer tipi veriler a) Shortintb) Longintc) Byted) Word

2) Real tipli veriler a) Realb) Single

c) Doubled) Extended

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

CLRSCR ProsedürüTurbo Pascal kütüphanesinde bulunan bu prosedür parametresiz olarak kullanılır. Ekranı ve 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. Pascaldgerç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 tiptek tırnak ‘ ’ içerisine yazılmalıdırlar. Char tipi değişkenler hafızada 1 byte’lık yer işgal ederle

String Değişken TipiString tipi veriler, tek tırnak ( ‘) içerisine alınan ve bilgisayar klavyesinden girilebilen kkümesinden oluşmuştur. Bir stringin hafızada kapladığı yer karakterlerin toplam sayısına eş

sayı en fazla 255 olabilir. Tırnak içerisinde bulunan boşluk karakterleri de bu sayının içerisBir string değişken tanımlanırken bu tipe ait verilerin uzunluklarının ne kadar olacağparantezler “[” ve “]” içinde belirtilmelidir. Belirtilmediği takdirde uzunluk 255 olarak kabul ed

Boolean Değişken Tipi

3) Char tipi veriler 4) String tipi veriler 5) Boolean tipi veriler 6) Array tipi veriler 7) File tipi veriler 8) Text tipi veriler 

Page 25: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 25/84

Bir karşılaştırma sonucunda elde edilen değer eğer bir değişken içerisine atanmak isteniyodeğişken boolean tipi olarak var bloğu içerisinde tanımlanmalıdır. Tanımlanan değişkbellekte bir byte’lık yer ayrılır. Boolean tipi bir değişken içerisine klavyeden ancak true veykelimeleri girilebilir.

Programcının Tanımladığı Değişken Tipleri Pascal da tanımlı olmayan, programcı tarafından type tanımlama bloğunda yaratılan amaçlar için kullanılan veri tipleridir. Pascal’ın standart veri tipleri bir programda tanımaduyulmaksızın kullanılabilir. Ancak bazı durumlarda verilerin işlenmesinde yetersiz kgö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ımyapılabilir. Her tip tanımlaması birbirinden ‘;’ ile ayrılmalıdır. Type bloğunda tanımlanan verVar bloğunda bir değişkenin tipini tanımlarken kullanılırlar.

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

Küme Tipi Değişkenler  Aynı tipte ve birbiriyle ilgili bilgilerden oluşan nesneler topluluğuna küme denir. Elemanı okü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 elebirbirini izleyen dizisel değerlerden oluşuyorsa en küçük ve en büyük değerlerin arasına iki konulur.

IN Operatörü

Page 26: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 26/84

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ı Küme tipi değişkenler direkt olarak “var” bloğunda tanımlandığı gibi, “type” bloğunda öze

ismi yaratı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 skullanılır. Küme değeri olarak, o kümeye atanabilecek küme elemanları olabilecesınırlandırılmış küme elemanları da olabilir. Bir küme tipi değişken ifadelerde kullanılmadabir baş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 üçifade edilir.

Sıralı Tip Değişkenler Pascal’da integer sayılar ve İngiliz alfabesindeki büyük ve küçük harfler sıralı tip verilerdbirbiri ardısıra gelen değerlerdir.Bazı programlarda bu sıralı tipler yeterli olmayabilir. Bu duprogramcı ö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ıListedeki değerler birbirinden “,” ile ayrılır ve parantez içerisine alınırlar. Sıralı tip olarak tandeğ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 piçerisinde biz bu sınırları tanımlarsak, compiler hatalı girilen bir veri olduğunda programı dve 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 sveri tipine atanabilecek olan en küçük değer, “üst sınır” ise bu veri tipine atanabilecek endeğ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 dahaolmalıdır.

3.Bölüm

type Sınırlı tipDeğişken ismi

=  Alt sınır  .. üst sınır  ;

Page 27: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 27/84

TEMEL GİRİŞ / ÇIKIŞ KOMUTLARIWRITELNAmaç:String ve sayısal sabitleri yada değişken içerisindeki değerleri ekrana veya

yazdı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

WRITE

Amaç: String ve sayısal sabitleri yada değişken içerisindeki değerleri ekrana veya yazdı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

Page 28: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 28/84

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;

BeginWrite(‘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ğıdolur.

Page 29: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 29/84

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 tutmkullanılır.Örnek: {$B-}

{$R+}{$ INCLUDE.PAS}

{$B- ,$R+, $I}

Page 30: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 30/84

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

ÖRNEK 6: If-then deyiminin kullanılışı.Klavyeden 1 sayısı girildiğinde ekrana ’’kapalı’’ vGirildiğinde ‘’açık’’ mesajını veren program.Uses crt;Var 

 A:integer;Begin

Write(‘sayı giriniz(1veya0) : ‘);readln(a);

İf a:=1 thenWriteln(‘kapalı’);İf a:=0 thenWriteln(‘açık’);Readln;

End.Program çıktısıSayı giriniz (1veya 0) :0

 Açık

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

Ö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 thenWriteln(‘1.sayı >2.sayı’);ElseWriteln(‘2.sayı >1.sayı’);

Readln;End.

Page 31: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 31/84

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;

BeginWriteln(‘bir harf girin:’); readln(harf);Case harf of ‘A ‘............’Z’ :Writeln(‘büyük harf’);‘A ‘............’Z’ :Writeln(‘küçük harf’);elseWriteln(‘Bu harf değil’);

Readln;End.

DÖNGÜLERGOTO,FOR-DO,REPEAT-UNTILGOTO DEYİMİ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.

Page 32: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 32/84

FOR- DO deyimiAmaç:Belli bir program parçasını üst üste önceden belirlenen sayıda tekrarlamak için kulla

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

Uses crt;Var 

İ :integer;beginClrscr;

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 birliktyana yazdıran program.

Uses crt ;Var 

Harfyaz,sonharf: char;Begin

Clrscr;For sonharf:=’A’ to ‘G’ doBegin

For harfyaz:=’A’ to sonharf doWrite(harfyaz);Writeln;

End;End.

Program çıktısıAABABCABCDABCDEABCDEFABCDEFG

Page 33: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 33/84

 WHILE-DO deyimiAmaç: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 prograUses crt;

Ch:char;Say:integer;

BeginSay:=0;Write(‘Bir cümle yazınız >’);While not eoln do

BeginRead(ch);İf ch in [‘A’,’a’,’E’,’e’,’İ’,’i’,’I’,’ı’,’O’,’o’,’ö’,’ö’,’U’,’u’,’ü’,’ü’] then

BeginSay:=say+1;

End;Writeln(‘yazılan cümlede’,say,’tane sesli harf vardır.’)

End. 

REPEAT-UNTIL deyimi

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ıraprogram.

Uses crt ;Var 

A:array[1..10] of integer;E:integer;T:longint;

BeginClrscr;For E:= 1to 10 do

BeginWrite (E,’.sayıyı gir......:’);readln(A[E]);

End;T:=0; E:=0;

Repeat

Page 34: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 34/84

E:= E+1;İf A[E] dıv 2<>A[E] / 2 then

BeginT:=T+A[E];

End;

Until 1=10;Writeln(‘tek sayıların toplamı :’,T);T:=0; 1:=0;

RepeatE:=E+1;İf A[E} dıv 2= A[E] /2 then

BeginT:=T+A[E];

End;Writeln(‘çift sayıların toplamı:’ ,T);

Readln;

end.

Program çıktısı

1.sayı gir........: 42. sayı gir........: 53. sayı gir........: 94. sayı gir........: 25. sayı gir........: 36. sayı gir........: 17. sayı gir........: 5

8. sayı gir........: 89. sayı gir........: 210. sayı gir.......:9Tek sayıların toplamı =32Çift sayıların toplamı=16

Page 35: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 35/84

5.Bölüm

 İNDİSLİ DEĞİŞKENLER

TEK BOYUTLU DEĞİŞKENLER Aynı tipte olan verileri sıralı biçimde bellekte tutmak amacıyla tanımlanan değişkenlere dizi (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;

BeginClrscr;For i :=1 to 10 do

BeginWrite (i,’.sayıyı gir>’); readln (sayı [i] );

End;For j :=n down to 1 doWriteln (j,’. Sayi =’,sayi [j] );

End.

Program çıktısı

1.sayı gir > 342. sayı gir >53. sayı gir >564. sayı gir >875. sayı gir >39

 5. sayı=39

4. sayı=873. sayı=562. sayı=51. sayı=34

 

Page 36: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 36/84

Sıralama (sort) İşlemi

Ö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;

BeginClrscr;For I :=1to 5 do

BeginWriteln (I,’.sayıyı gir :’); readln (a[I] );

End;For I := 1 to 4 doFor k := I +1 to 5 doİf A [k] >A [I] then

BeginM := A [ I ];A : [ I ] := A[ k ];A [k] :=m;

End;For I := 1 to 500

BeginWriteln (A [ I ]);

End;Readln;End.

Program çıktısı

1. sayı gir : 82. sayı gir : 63. sayı gir : 94. sayı gir : 55. sayı gir : 2

 98

652

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

Page 37: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 37/84

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 prog

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

PARAMCOUNT fonksiyonuAmaç: 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 thenWriteln(‘Komut satırında paremetre yoktur’)

ElseWriteln(ParamCount,’paremetre vardır’);

End. 

Program çıktısı

Komut satırında paremetre yoktur 

Page 38: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 38/84

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 doWriteln(paramstr( I ) );

End.

GETDIR prosedürü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 

CHDIR prosedü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çerisin

girerek 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.

Page 39: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 39/84

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

IORESULT fonksiyonuAmaç: Pascal programları çalışırken oluşan run –time hata kod numarasının Pascal ortamalınmasını sağlar.ÖRNEK 21: Klavyeden yanlışlıkla integer yerine karekter girildiğinde,programın akışınıkesmeden hatayı 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

BeginWriteln(‘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 >aTam sayı girişi yapmalısınızBir sayı giriniz >4Sayının karesi =16

 

Page 40: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 40/84

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 prog

Uses crt;

Begin{ $I- }RmDir (paramStr(1);İf Ioresult<> 0 then

Writeln (‘directory silinemez ‘);Else

Writeln (‘directory silindi’);End.

GETDATE prosedürü

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 progra

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;

begingetdate (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.

GETTİME prosedürü

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

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

Page 41: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 41/84

Uses dos;Var 

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

SETDATE prosedürü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.

SETTİME prosedürü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 fonksiyonu

Page 42: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 42/84

Amaç: 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ınumaraları ile birlikte yan yana yazdıran program.

Uses crt;Var I :integer;

BeginClrscr;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.C

fonksiyonunun tersine çalışır.

ÖRNEK 27: Bir elemanın tanımlı olduğu kümede kaçıncı sırada olduğunu ve ‘’A’’ harfinin Akod 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) );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 ku

ÖRNEK : PRED (‘B’)----------- ‘A’SUCC fonksiyonuAmaç: Bir elemanın tanımlı olduğu listede o elemandan sonra gelen elemanı bulmak için k

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

Page 43: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 43/84

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

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

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

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

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

Ö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.

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

READKEY fonksiyonuAmaç: Klavyeden sadece bir karakter okuyup char tipi bir değişkene aktarmak için kullanılı

ÖRNEK:  Ch :=readkey;KEYPRESSED fonksiyonuAmaç: Programın çalışması esnasında klavyeden bir tuşa basılıp basılmadığını kontrol etmkullanılır.

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

Page 44: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 44/84

Uses crt;Begin

Repeat

Write (#176,#219,#178);

  Until Keypressed;End.

 

GOTOXY prosedürü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

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

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

COPY fonksiyonuAmaç: 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İSAYARBİLGİ

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

Page 45: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 45/84

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

Uses crt;Var 

St1,st2:string;

BeginSt1:=Concat(‘Balık’,’esir’);St2:=’Balık’+’esir’;Writeln(st1);Writeln(st2);

End.

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

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

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

POS fonksiyonuAmaç: 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

DELETE prosedürü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 biresilerek ekrana yazan program.

Uses crt ;

Var St,st2:string;I :integer;

BeginSt :=’Uygulamalarla Temel Bilgisayar’;Delete (st);For I :=1 to length (st) do

Page 46: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 46/84

BeginDelete (st,length(st),1);Writeln(st);end;

End.

Program çıktısıUyar UyaUyU

INSERT prosedürü

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

STR prosedürüAmaç: İnteger veya Real tipteki verileri String tipine dönüştürmek için kullanılır.

ÖRNEK: STR(235); st=’235’

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

Page 47: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 47/84

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) ;

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

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

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

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

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

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

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

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

Page 48: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 48/84

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

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

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

INT fonksiyonu

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.

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

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

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

ODD fonksiyonuAmaç: Bir sayının tek veya çift olduğunu kontrol etmek için kullanılır.ÖRNEK : Odd (3);-----faalse

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

SQRT fonksiyonu Amaç: Bir sayının karekökünü alır.

Page 49: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 49/84

Ö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.

Page 50: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 50/84

7. Bölüm 

ALT PROGRAMLARPROSEDÜR ALT PROGRAMLARIProgramlama dillerinde ,ana program bloğunu parçalara ayırarak, ayrı program blokları olaralınmasını sağlayan ve ALT PRORAMLAR adı verilen birimler oluşturmak oldukça kolaylık sPascal’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

RepeatA := A+100;Sound (A);Delay (100);Until A=1500;End;

Procedure ses kes;BeginNosound;End;

BeginClrscr;Repeat

Page 51: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 51/84

Writeln (‘1. ses ver:’);Writeln (‘2. ses kes:’);Write (‘seciminiz:’)readln(B);A:=0;Case B of 

1:ses ver ;2:ses kes;elsewrite (‘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 bir fonksiyon fonksiyonunu kullanma. 

Uses crt;Var 

J:integer;Function us (x: real ; n:integer) :real ; var 

Carpim:real;İ: integer;

BeginCarpım:=1;For i:=1 to n doCarpı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 12 nin 1 nin ci kuvveti 22 nin 2 nin ci kuvveti 32 nin 3 nin ci kuvveti 4

Page 52: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 52/84

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ğiDos 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.

Programcı Tarafından Yazılan Unıt’ler Kullanıcının kendi ihtiyacına göre hazırladığı ünitelere, ’’ kullanıcı üniteleri ‘’ denir.

UNIT TanımlamaUNIT ünite_ismi;INTERFACE  Global tanımlamalar IMPLEMENTATION  Lokal tanımlamalar 

Global prosedür ve fonksiyonlar 

END.

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

Page 53: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 53/84

Unıt ekran;Interface

Uses crt;Procedüre sil;

ImplementationProcedü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ıkaydı olarak kabul edilir.

Text Dosyalarda Kullanılan Standart Fonksiyonlar  EOLN FonksiyonuAmaç: Okuyucu kafanın kayıt sonu işareti üzerinde olup olmadığını kontrol etmek için kulla

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

Dosyaya bilgi yazmak,Dosyadan bilgi okumak,Dosyaya bilgeklemek ve Dosyadan bilgi okumak.

Page 54: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 54/84

NOT :Dosyaya bilgi yazmak,Dosyadan bilgi okumak, Dosyaya bilgi eklemek ve Dosyadanokumak 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;BeginClrscr;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

BeginWrite (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;BeginClrscr;Assing (dd,’ m.m ‘);Append(dd);

For I :=1 to 27 doBegin

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;BeginClrscr;Assing (dd,’ m.m ‘);

Page 55: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 55/84

Reset (dd);Clrscr;

While not eof (dd) doBegin

Readln(dd,no [ 20 ],ad [ 20 ] );

Writeln (no [ 20 ],ad [20 ] );End;Close (dd);Readln;End;BeginRepeatClrscr;

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;

ElseWriteln (‘hatalı giriş yaptınız’);Writeln (‘çıkmak için ( H/ h) basınız’); readln©;

End;Untıl (c= ‘h’) or (c=’H’);End.

Dosyadan bilgi silmek,Dosyadan bilgi aramak ve dosyadakibilgiyi listeleme.

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

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

Page 56: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 56/84

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 thenWrite (‘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;BeginClrscr;Assing(dd,’m.s’);RepeatReset(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

BeginReadln (dd,ad,soyad);if ara =copy(dd,1,uz)then

Page 57: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 57/84

BeginWriteln (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;BeginClrscr;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;

ElseWriteln(‘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.

 

Page 58: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 58/84

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

NOT:Dosya yaratmak,Dosyaya bilgi ekleme,ve Dosyadan bilgi okumak konularının birleştyapı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;beginassing(dosya,’nurdan.dat’);repeatrewrite(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;

BeginAssing(dosya,’nurdan.dat’);reset(dosya);

Writeln(‘No Ad Soyad’);Writeln(‘----------------------‘);

Begin

Page 59: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 59/84

Seek (dosya,’ara’); Read(dosya,ögrenci);With ögrenci do

BeginWriteln(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 deniBu 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 standTTL seviyesindedir, yani 5 V’tur.Portun adından da anlaşıldığı gibi veri alış verişi 8 bit’lik

bir 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.

Page 60: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 60/84

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

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 adrestekitalar 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.Ayradresteki 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 mikrop-sörün okuması için bu adreste saklanır.Bu adresteki datalar, printerin meşgul olması, sayfa

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 I/O DURUMU SİNYAL ADI PİN I/O DURUMU SİNYAL AD

1 O Strobe 14 O Auto Feed X2 I/O D0 15 I Error3 I/O D1 16 O Initialize4 I/O D2 17 O Select Inpu

5 I/O D3 18 N/A Ground

6 I/O D4 19 N/A Ground7 I/O D5 20 N/A Ground8 I/O D6 21 N/A Ground9 I/O D7 22 N/A Ground

10 I ACK 23 N/A Ground11 I Busy 24 N/A Ground12 I Printer Enable 25 N/A Ground

Page 61: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 61/84

13 I Select

Tablodan da anlaşılacağı gibi 2, 3, 4, 5, 6, 7, 8, 9 numaralı uçlar data uçlarıdır.Bdan 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 sikışı 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 registe-lanılır.Diğer uçları kullanabilmek için de 37A ve 379 adreslerinin kullanıldığını printer kontrlü 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 ama

basit 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 Display7 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ındanbirine 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 çıktı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 KomutuAmaç :Bilgisayarın bir paralel port register’ine veri yazmak veya registerden veri okumak amkullanı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 numaraarasında görülür.Bir uca veri göndermek, o uçtaki gerilimin 5 V olması demektir.Yukarıda veilk ö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 okunar“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önderilece

veri 8 bit olmalıdır.Gönderilecek verinin binary karşılığı bulunduktan sonra bu sayı desimaledönüştü- rülmelidir.Örneğin paralel portun 2 ve 4 numaralı uçlarını 5 V’luk gerilimgönderelim.Bunun için 2-9 sırasındaki uçları aşağıdaki gibi gösterebiliriz.

Pin Numarası 9 8 7 6 5 4 3 2Data Numarası D7 D6 D5 D4 D3 D2 D1 D0

Display Segmenti g f e d c b a

Page 62: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 62/84

Basamak Değeri 128 64 32 16 8 4 2 15 V. Gönderilecek

Olan Uçlar 1 1

Desimal Karşılığı 4 1

Yukarıdaki tablodan registere 5 sayısının gönderilmesi gerektiğini buluruz.Veriyi göndermekprogram içinde “port[$378]:=5” yazmak yeterlidir.Tabloya dikkat edilecek olursanız paraletest 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;

BeginRepeat

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 herhatuşa basınca duran program.

  4+1=5

Page 63: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 63/84

Program Port 2;Uses Dos,Crt;Var 

I , J :integer;Begin

RepeatFor J:=0 to 7 do

BeginDelay (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, 3sayılarını sırasıyla göndermek gerekir. “Trunc (Exp (J* Ln (2)))” ifadesi bu sayıları üretmekkullanılmıştır.

“I:=Port [$378]” ifadesiyle 378 adresinden okunan veri “I” değişkeni içerisine ave “Writeln” komutu ile ekrana yazdırılmıştır.Daha önce de belirtildiği gibi 378 adresindekiLatch” registerine yazılan veri, yeni bir veri gönderilinceye kadar paralel port uçlarında aynetutulur.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 yabu işleme herhangi bir tuşa basıncaya kadar devam eden program.

Program kara_simsek;Uses Dos,Crt;Var 

I, J :integer;BeginRepeat

For J:=0 to 5 doBegin

Delay(4000);Port [$378]:=Trunc(Exp (J*Ln(2)));I:=Port[$378];

Writeln( I );End;For J:=5 downto 0 doBegin

Delay(4000);Port [$378]:=Trunc(Exp (J*Ln(2)));I:=Port[$378];

Page 64: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 64/84

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;

BeginRepeatClrscr;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” ko

ile verilen süreyi değiştirilerek bir kronometre gibi kullanılabilir.

Page 65: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 65/84

Uses Dos,Crt;Var 

I, J:integer;Begin

Repeat

For J:= 0 to 9 doBegin

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ğinsegment displayda 3 sayısının görülmesi için a, b, c, d, g segmentlerinin yanması gerektiği lunur.Daha sonra bu segmentlerin yanması için porta gönderilmesi gereken desimal sayı heedilir.

 

Page 66: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 66/84

Port Numarası 9 8 7 6 5 4 3 2Data Numarası D7 D6 D5 D4 D3 D2 D1 D0

Display Segmenti g f e d c b ABasamak Değeri 128 64 32 16 8 4 2 1

5 V GönderilecekOlan Uçlar 

1 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=7olursa 3 sayısını displayda göstermek için parelel porta 79 sayısının gönderilmesi gerektiğibulunur.

Ö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;

BeginRepeat

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 );

Until J = 99 ;

End.

 

Page 67: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 67/84

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 seriport’tur.Bo seri port’a RS-232 port’u da denir.Pin sayısı ve görünüş olarak paralel port’a çokbenzer, ancak pin numaraları farklıdır.

7x330ohm

Page 68: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 68/84

13 1

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

doğru algılanabilmesi için zamanlamada yanlışlık olmaması gerekir.Yani bir birim ne zamanne kadar sürer gibi problemlerin aşılması gerekir.Bunun için yapılacak iki şey vardır.Birincisikablosunun yanına bir adet clock palsi kablosu ilave edilir ve bu kablo üzerinden peryodik puygulanır.Her pals’in boyu bir birimin iletim süresi olarak kabul edilir.İkinci yol ise; sadece vkablosu olur.Veriler gönderildikten daha önceden alıcı tarafla anlaşılmış bir protokole uyuluryö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 I/O DURUMU SİNYAL ADI PİNI/O

DURUMUSİNYAL

1 N/A Bağlı değil 14 N/A Bağlı de2 O Data gönderme 15 N/A Bağlı de3 I Data alma 16 N/A Bağlı de4 O Gönderme isteği 17 N/A Bağlı de

5 I Göndermek için sil 18 N/A Bağlı de

6 I Data seti hazır 19 N/A Bağlı de

7 N/A Bağlı değil 20 O Data transfe8 I RLDS 21 N/A Bağlı de9 N/A Bağlı değil 22 I Ring ind

10 N/A Bağlı değil 23 N/A Bağlı de11 N/A 20. pin’e bağlı 24 N/A Bağlı de12 N/A Bağlı değil 25 N/A Bağlı de

13 N/A Bağlı değil

PC’LERDELİ PORT ADRESLERİ

Adresi Register Adı Açıklama

03F8 Transmitter Holding Gönderilecek verinin yazıldığı register 03F8 Receiver Buffer Karşı taraftan alınan verinin yazıldığı register03F8 Divisor Latch, Low Byte İletişim hızının yazıldığı register 

Page 69: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 69/84

03F9 Divisor Latch, High Byte İletişim hızının yazıldığı register 03F9 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 register 03FC Modem Control Register Port uçlarındaki işaretlerin değerlerini belirley03FD Line Status Register İletişimde bir hata oluşup oluşmadığını bilgisi

içeren register 03FE Modem Status Register Port uçlarına karşı taraftan verilen işaretlerin

durumunu içeren register 

Page 70: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 70/84

11.BölümGRAFİK

GRAFİK MOD KAVRAMI

Çoğu programlama dillerinde olduğu gibi Turbo Pascal’da da PC’lerin ekran modkontrol eden çok güçlü prosedür ve fonksiyonlarına sahiptir.Şimdiye kadar yapılan programl25x80 boyutlarındaki text modunda yapıldı.Bu bölümde Turbo Pascal’ın en sık kullanılan grafonksiyon 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ı da yine 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 kullanabilece

sayılarını vermemize rağmen, kitapta verilen programlar her tür PC’de çalışacak şekildehazırlanmıştır.Ancak, bizim burada verdiğimiz grafik kartından farklı bir grafik kartına sahip obilgisayar kullanıyorsanız, ekranda herhangi bir noktayı doğru olarak tanımlayabilmemiz içikartınızın pixel sayısını bilmeniz gerekir.Bu grafik elemanının X ve Y eksenlerinde tanımlancek nokta sayısına çözünürlük denir.

Y Y

X X

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

0,0 0,0

639,479 719,347

Page 71: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 71/84

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

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

CGACO 320x200

CGAHi 640x200MCGACO 320x200MCGAMed 640x200MCGAHi 640x480EGALo 640x200EGAHi 640x350HercMonoHi 720x348

 ATT400CO 320x200 ATT400Med 640x200 AT400Hi 640x480PC3270Hi 720x350

IBM8514Lo 640x480IBM8514Hi 1024x768

Grafik Ekranına Geçmek

Grafik komutlarının kullanıldığı bir Pascal programı çalıştırabilmek için ekranı gramoduna geç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 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ıran prog

Program Grsur_GR_mod_Bul;Uses Graph ;Var 

Gs, Gm :Integer;Begin

Page 72: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 72/84

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ü dosaranacağı 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 eksiler.

GRAPHRESULT Fonksiyonu 

Amaç : Grafik komutlarının kullanılması esnasında oluşan hataları kontrol etmek içinamacıyla kullanı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 etiçin kullanılır.

Dizilim : GETMAXCOLOR ;

Page 73: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 73/84

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 çizgilçizdiren program.

Program line_ciz ;Uses Crt, Graph ;Var 

Gs, Gm:Integer ;Begin

Detectgraph(Gs,Gm) ;Initgraph (Gs, Gm, ‘ ‘) ;

If GraphResult <> 0 thenHalt (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ırDizilim : 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 ;

Page 74: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 74/84

Var Gs, Gm :Integer ;

BeginDetectgraph (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 ;

BeginGs :=Detect ;

Initgraph (Gs, Gm, ‘ ’) ;if GraphResult <> 0 then Halt (1);Randomize ;Repeat

For yaricap := 1 to 5 doBegin

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.

Page 75: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 75/84

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ı

Dizilim : PUTPIXEL (X, Y, Renk_kodu ) ;

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

Program put_pixel_ciz ;Uses Crt, Graph ;Var 

Gs, Gm :Integer ;Renk : Word ;

BeginGs := 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.

Page 76: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 76/84

 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şpaternleri 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 çprogram.

Program bar_ciz ;Uses Crt, Graph ;Var 

Gd, Gm, I, Gen : Integer ;

Page 77: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 77/84

Ch :char ;Begin

Gs := Detect ;Initgraph (Gs, Gm, ‘ ‘) ;if GraphResulr <> 0 then Halt (1) ;

Gen := 20 ;Randomize ;Repeat

For I := 1 to 5 doBegin

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 ;

BeginGs := Detect ;Initgraph (Gs, Gm, ‘ ‘) ;if GraphResulr <> 0 then Halt (1) ;Width := 20 ;Randomize ;

Repeati := 5 ;While I < 20 do

BeginSetFillStyle ( Random (12), Random (GetMaxcolor)) ;Bar3d (I*Width, I*10, Succ ( I )*Width, 300, 20, true ) ;İ := i+3 ;

Page 78: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 78/84

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ıran p

Program Set_text_style ;Uses Graph ;Var 

Gs, Gm : Integer ;Begin

Page 79: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 79/84

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.

Page 80: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 80/84

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 pçok büyük, CONFIG.SYS’den geçsürücüleri çıkarınız.FILES=20,BUFFER=20 yapınız.

2 Idenfiler expected Bir pascal reserved kelimesinin tama bloğunda kullanılıyor.

3 Unkown idenfiler Var bloğunda tanımlanmamış birdeğişken programda kullanılıyor.

4 Duplicate idenfiler Bir değişken veya sabit aynıtanımlamama bloğunda iki defatanı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 v8 String constant String sabitlerinin sonundaki tırna

unutulmuş veya fazladan tırnakkonulmuş.

10 Unexpected end of file Bir program bloğu sonuna endyazılmamış veya “.” unutulmuş.

11 Line too long Bir satıra 126 karakterden dahafazla 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 dekiFILES=20 olmalı.

14 Invalid file name Dosya ismi geçersiz ya dabelirtilen path yanlış.

15 File not found Belirtilen dosya aktif directoryiç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ıdadosya var.Gereksiz dosyalarıkapatınız.

19 Undefined type in pointer Pointer tanımında bilinmeyen tip.Defination

20 Veriable idenfiler expected Değişken tanımlayıcısı

Page 81: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 81/84

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ı tipveri burada kullanılamaz.

30 Integer constant expected Sadece integer sabitkullanılabilir.

31 Constant expected Burada sadece sabit kullanılır.32 Integer or real constant Sadece sayısal sabit kullanılabilir33 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 vestring 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 tipdosyada veya Seek komutu texttipi dosyada kullanılmış.

64 Cannot read or write Bu tip veri read veya writevariables of this type komutu ile kullanılmaz.

Page 82: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 82/84

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 yazmayabaşlanamaz.

116 Must be in 8087 mode to Bu ifadenin derlenmesi içincompile this compiler 8087 modunda olmalı.

121 Invailed qualifier Array olarak tanımlanmamış bir  değişken indexli olarakkullanı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 ileexpected değerlendirilemez.Örneğin Sin

fonksiyonu veya bir sabit watchpenceresinde yazılmış.

Page 83: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 83/84

RUN-TIME HATA MESAJLARI

Hata Kodu Mesaj Açıklama

1 Invalid function number Geçersiz fonksiyon numarası.Mevcut olmayan DOSFonksiyonu çağrılıyor.

2 File not found Reset,Append,Rename veyaErase komutlarıyla belirlenendosya bulunamıyor.

3 Path not found Reset, Rewritre, Append,Rename, Erase, Chdir, Mkdir Veya Rmdir komutlatıylaBelirtilen 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, renameErase, Rmdir komutlarıkullanıldığında ortaya çıkar.

6 Invalid file handle Geçersiz bir dosya isteği DOSsistemine 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 directorydirectory 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ıtokunmaya çalışıyor.

101 Disk write error Close, write, writeln komutları iledolu 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 üzerindeiş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

Page 84: Turbo Pascal

5/14/2018 Turbo Pascal - slidepdf.com

http://slidepdf.com/reader/full/turbo-pascal-55a92f281923a 84/84

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 hata156 Disk seek error Disktekten data okunurken hatay

rastlandı.157 Unknown media type Disket DOS tarafından tanınmıyo158 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ıtyapılamıyor.

161 Device read fault Hardware hatası nedeniyle disketveya harddisk’ten data okunamıy162 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ınsıfıra bölümü oluşmakta.

201 Range check error {$R+} compiler bildirisikullanıldığında bir değişkenesınırları dışında verigirilmekte veya bir dizideğişkenin boyutları sınır dışında

kalıyor.205 Floating point overflow Tanımlanmamış bir real değişkensınırları dışında veri atanmayaçalışılıyor.