Turbo Pascal 7.0 Öğr. Gör. İrfan MACİT Endüstri Mühendisliği Bölümü Üretim Yazılımları Laboratuarı Adana,2002
Feb 04, 2016
Turbo Pascal 7.0
Öğr. Gör. İrfan MACİTEndüstri Mühendisliği Bölümü
Üretim Yazılımları LaboratuarıAdana,2002
Giriş
Kaynak KodlarObject KodlarHata KontrolüHatasız Object KodlarDerlenmiş KodlarÇalıştırılabilir Kodlar (*.exe, *.com).... (Enter)
Giriş
cd c:\turbo\bin (Enter)Turbo (Enter)Menuler Kısa yol tuşlarıAlt Menuler
Pascal Program Genel Yapısı
Her Program program prog_adı; İle başlar.
Örneğin, program merhaba;program merhaba(input, output);program deneme;program deneme (input, output); bildirimleri aynıdır.
Değişken atama,var değişken; şeklindedir.
Örnek Kaynak Kodlar
program Hello (Input, Output);
{Her pascal bilgisayar programın üç kısımdan oluşur.} var { 1. Kısım değişken tanımlama bloğu,burada değişkenler tanımlanır} Letter1, Letter2, Letter3 : Char; {üç karakter tanımlanmış}
sayi: integer; {2. Kısım, fonksiyon ve alt program tanımlama bloğu, burada programın ana bloğu içerisinde
kullanılacak fonksiyon ve alt programlar yazılır.} begin {3. Kısım programın ana bloğu, program bloğu başlar } WriteLn (‘Programam üç adet karakter ve bir sayı girin >'); ReadLn (Letter1, Letter2, Letter3); WriteLn (‘Merhaba ', Letter1, Letter2, Letter3, sayi); WriteLn (az önce klavyeden bunları yazdınız...‘') end. {program bloğu biter}
Değişkenler ve Fonksiyonlar
Pascal bilgisayar programlama dilinde değişkenler yazılan bilgisayar programına veri göndermek ve sonuç almak için kullanılırlar.Fonksiyonlar program içerisinde tanımlanan ve hesaplanan bir değeri sadece bir kez kullanan program parçacıklarıdır. Fonksiyonlar tek başlarına derlenemez ve kullanılamaz
Alt Programlar (procedure)
Alt programlar programın içerisinde kullanılacak verilerin birkaç defa ve her defasında ayrı sonuç alması beklenen durumlarda kullanılır. Alt programlar da fonksiyonlar gibi tek olarak derlenemez ve çalıştırılamaz.Alt programlar (procedure() ) ve fonksiyonlar (function() ) ana program bloğu içerisinden çağrılırlar.
Program Tanımlama Bloğu
Pascal bilgisayar programında program tarafından kullanılacak çevre değişkenlerine ait bildirimler ve programın çalışması sırasında hangi çevresel birimleri nasıl kullanacağını gösteren bildirimdir.– Uses – Label– Type– Const– Procedure– Function– var
Pascal Programlamada Önemli Hususları
Program prog_adı ile başlar.Programda kullanılacak değişkenler var kısmında tanımlanmalıdırProgram içerisinde değişmeyen sabitler Const kısmında tanımlanırProgramın ana bloğu begin ile başlar ve end. ile biter.Fonksiyon ve alt programlar end ile biter sadece programın kendi end ifadesinde nokta vardır. Begin ifadesinden sonra ; kullanılmazTürkçe karakterler programın bildirim ve komut durumlarında parametre olarak kullanılmaz. Açıklama { ... } içerisinde program ile ilgili açıklamalar yapılır ve Türkçe karakterler kullanılabilir.
Değişken Bildirimleri (Integer)
Tam sayı değişkenlerinin tanımlanmasıvar
değişken_adı : integer;Tam sayı değişkenleri program içerisinde pozitif veya negatif tam sayı kullanılacağı durumlarda tanımlanır BoyutlarıTip Sınır Büyüklük
shortint -128, 127 8 bitInteger - 32768, 32767 16 bitLongint -2147483648, 21474483647 32 bitbyte 0,255 8 bitword 0,65535 16 bit
Değişken Bildirimleri (Real)
Real türü değişken tipi ondalıklı sayıları program içerisinde kullanmak gerektiğinde tanımlanırvar
maas :Real;Tip Sinir Büyüklük
Real 2.9e-39,1.7e38 6 byteSingle 1.5e-45,3.4e38 4 byteDouble 5.0e-324, 1.7e308 8 byteExtented 3.4e-4932,1.1e4932 10 byte
Değişken Bildirimleri (String)
String türü değişken veri tipinde program içerisinde kullanılarak karakter dizisi şeklindeki türler için kullanılır.var
evet, hayır : string;Karakter kümesi için tanımlamavar
adı, soyadı: string[15];
Değişken Bildirimleri (Char)
Char türü değişken veri tipinde program içerisinde kullanılarak tek karakter şeklindeki türler için kullanılır.var
cevap:char;
Değişken Bildirimleri (Programcı tipi)
Programcı türü değişken veri tipinde program içerisinde programcı tarafından tanımlanarak kullanılacak türler için kullanılır. Programcı tarafından tanımlanan bu türdeki veri tipleri diğer veri tipleri gibi tanımlanacak olan değişkenleri tanımlamakta da kullanılır. İlkel nesne tabanı olarak bilinir.
Değişken Bildirimleri (Programcı tipi)
Type type
gunler = (Pazartesi, Sali, Carsamba, Persembe, Cuma);aylik_gun = 1..31;
varcalis_gun : gunler;aylik_hesap_gun: aylik_gun;
Diziler
Birden fazla değer alabilecek değişkenlerin içeriğinde değer saklamak için kullanılan değişken tipidir. Vektörler, Matrisler, sayi küpleri.Type
multidim = array[index] of veri_tipi;
Örnek:
Type
yil_aylik = array[1..12]of type integer;
Diziler (Devam)
Örneğin, yıllık olarak okul ayları göstermek için;Type
Ogr_ay = [Ekim, Kasim, Aralik, Ocak, Mart, Nisan, Mayis, Haziran] of String
VarAy: ogr_ay;
Diğer örnek;Type
butce_egitim = (konaklama, yemek, eglence,kitap, harc);harcama = array of [butce_egitim] of real;
Varmasraf:harcama;
Şart Yapıları
Belirli bir durumda veya şartın gerçekleşmesi durumunda çalışması istenen program kodları için yazılır. Birinci tip şart yapısıIf şart then
Durum;
Şeklindedir çalışması istenen tek durum vardır aksi şart gerçekleşmesi halinde durum kodları çalışmaz. Örneğin;
If x < 0.0 then
Deger:= x*x;
Şart Yapıları (Devam)
İkinci tip şart yapılarında gerçekleşecek durum iki veya fazladır. duruma gerçekleşmemesi halinde diğer durumb kodlarının çalışır.
If Şart then
duruma Else
Durumb ;
Örneğin ;If x > 0 thenWriteln(‘x pozitif’)ElseWriteln(‘x negatif’);
Case durum Seçici
Case durum seçici birkaç değişik durumi arasından sadece birinin seçilmesi için kullanılır. Case durumi of seçim1 : kodlar;
seçim1 : kodlar;
seçim1 : kodlar;
.
.seçimn :kodlar;
end
Case durum Seçici (Devam)
Case not of
1, 50 : writeln(‘ümitsiz vaka’);
51, 65 : writeln(‘biraz gayret’);
66, 70 : writeln (‘hadi iyine yirttin’);
71, 85 : writeln (‘iyisin iyi’);
86,100 : writeln (‘tebrikler’);
End {case için end ...!}
Döngüler
Bir komut veya durumun birden fazla gerçekleştirilmesi istendiği durumlarda kullanılır. İki tip döngüden bahsedilebilir. Döngü için gerekli şartların birisi gerçekleşmesi durumunda çalıştırılacak kodlar ve durum, diğeri ise şart gerçekleştiği sürece çalıştırılacak durum ve kodlar.
Döngüler (while .. do)
while ifade/şart do Durum/kodlar
Döngüsü bir durum gerçekleştiği sürece çalıştırılacak kodlar için kullanılır
While say < 10 dobeginsayi:=say + sayi;end {while}
Döngüler (for .. do)
for sayac:= başlangıç_değeri to bitiş_değeri do durum/kodlar
Döngüsü şart gerçekleşinceye kadar durum/kodların çalışması için kullanılır
For i := 1 to 10 do beginreadln(sayi);say:= say + sayi;writeln(‘girilen sayilar toplami’,say);end;{for do için}
Önemli Noktalar
Pascal bilgisayar program kodlarını yazarken dikkat edilecek noktaların başında genel şablonuna ve yapısına uygun şekilde yazmalıProgram çalışması esnasında programın ne yaptığı yazılmalıGerekli açıklamalar program kodları içerisine yazılmalıDeğişkenlere değer atamak için uygun mesajlar verilmeliSonuçlar aktarılacak ortamlara istenen şekilde aktarılmalı
Hata Ayıklama (Debuging)
Hata oluşturan kodlar(bug)Yazım hataları (Syntax error)Mantık hataları (Logical error)Parametre hataları (Parameter error)Yanlış tip bildirimi (Typing error)Algoritmik hatalar (Algorithm error)Sayısal hatalar (Numeric error)
Dosya İşlemleri
Dosya giriş/çıkış değişkenlerinin tanımlanmasıDosya değişkenlerinin tiplerinin bildirimi Dosya açma/kapama – okuma/yazmaDosya yeniden açmaDosya formatlı yazma
Dosya İşlemleri (Devam)
Pascal programlama dilinde dosyalar yapılarına göre ikiye ayrılır:1. TEXT (Sıralı erişim) dosyaları2. BİNARY (İkilik) dosyalara. TİPLİ (Doğrudan erişimli) dosyalarb. TİPSİZ (Rasgele erişimli) dosyalar
Dosya İşlemleri 1. Text Dosyaları
Dosya okuma ve yazma için farklı olarak açılır.Kayıtlar dosyaya sırayla yazılır.Kayıtlar sırayla okunur.Önceki kayıtlara dönmek için tekrar dan açılmalıdır.Text dosyalarda bilgiler ana bellekte bulunan geçici bir tampon bellek aracılığı ile kalıcı ortamlara aktarılır. Bilgiler, tampon bellek dolunca veya dosya kapatılınca kalıcı ortamlara aktarılır.
Dosya İşlemleri 1. Text Dosyaları (Devam)
ASSIGN: Dosya değişkenine dosya ismi atamak için kullanılır.Yazım:ASSIGN(Dsy.Değ., Dsy.Adı);Örn:ASSIGN(D,’TEL.DAT’);ASSIGN(Dosya,’yazi.txt’);
REWRITE: Dosya oluşturmak ve kayıt eklemek için kullanılır. Dosya daha önceden mevcutsa kayıtlar silinir.Yazım:REWRITE(Dosya Değ.);Örn:REWRITE(D);REWRITE(Dosya);
Dosya İşlemleri 1. Text Dosyaları (Devam)APPEND: Dosyaya kayıt eklemek için kullanılır. Önceden mevcut dosyanın sonuna kayıtlar eklenir.Yazım:APPEND(Dosya Değ.);Örn:APPEND(D);APPEND(Dosya);RESET: Dosyadan kayıt okumak için kullanılır. Önceden mevcut dosyadan kayıtlar sırayla okunur.Yazım:RESET(Dosya Değ.);Örn:RESET(D);RESET(Dosya);
Dosya İşlemleri 1. Text Dosyaları (Devam)CLOSE: Açık olan dosyayı kapatmak için kullanılır. Yazım:CLOSE(Dosya Değ.);Örn:CLOSE(D);CLOSE(Dosya);
WRITE: Dosyaya EOLN bilgileri olmayan bir kayıt yazmak için kullanılır. Yazım:WRITE(Dsy.Dğ,değ1[,değ2.]);Örn:WRITE(D,adi,soyadi,tel);WRITE(Dosya,bilgi);
WRITELN: Dosyaya EOLN bilgileri olan bir kayıt yazmak için kullanılır. Yazım: WRITELN(Dsy.Değ,değ1,değ2...]);Örn:WRITELN(D,adi,soyadi,tel);WRITE(Dosya,bilgi);
Dosya İşlemleri 1. Text Dosyaları (Devam)
READ: Dosyadan EOLN bilgileri de dahil bir kayıt okumak için kullanılır. Yazım:READ(Dsy.Değ.,değ1[,değ2...]);Örn:READ(D,adi,soyadi,tel);READ(Dosya,bilgi);
READLN: Dosyadan EOLN bilgileri hariç bir kayıt okumak için kullanılır. Yazım:READLN(Dsy.Değ.,değ1 ,değ2...]);Örn:READLN(D,adi,soyadi,tel);READLN(Dosya,bilgi);
Dosya İşlemleri 1. Text Dosyaları (Devam)EOF: Dosya sonunu kontrol etmek için kullanılır. Dosya işaretçisi dosya sonu bilgisine ulaşınca değeri TRUE olur. Yazım:EOF(Dosya Değ.)Örn:EOF(D) EOF(Dosya)EOLN: Satır sonunu kontrol etmek için kullanılır. Dosya işaretçisi satır sonu bilgisine ulaşınca değeri TRUE olur. Yazım:EOLN(Dosya Değ.)Örn:EOLN(D) EOLN(Dosya)FLUSH: Tampon bellek dolmadan bilgilerin kalıcı ortamlara yazılmasını sağlar. Yazım:FLUSH(Dosya Değ.);Örn:FLUSH(D); FLUSH(Dosya);
Dosya İşlemleri 1. Text Dosyaları (Devam)SETTEXTBUF: Tampon bellek alanının değiştirilmesini sağlar. Normalde 128 Byte tır. Alan uzunluğu tanımı char tipli bir dizidir. Örn: var alan:array[1..256] of char;Yazım:SETTEXTBUF(Dsy.Değ,Alan Değ.);Örn:SETTEXTBUF(D,alan); IORESULT: Okuma/Yazma işlemlerinde hata kontrolü için kullanılır. Fonksiyonun dönüş değeri tamsayıdır. Sıfır ise hata yoktur.Yazım:IORESULT{$I-} ve {$I+} derleme direktifleri ile hata sonucu programın kırılması önlenir.ERASE: Tanımlanan dosyayı kalıcı birimden (disk,disket...) silmek için kullanılır.Yazım:ERASE(Dsy.Değ);Örn:ERASE(D); ERASE(Dosya);RENAME: Tanımlanan dosyanın adını değiştirmek için kullanılır.Yazım:RENAME(Dsy.Değ,Yeni isim);Örn:RENAME(D,’YEDEK.DAT’); RENAME(Dosya,’C:\TEL2.TXT’);
Dosya İşlemleri 1. Text Dosyaları Örnek Program
program dosya;var d:TEXT; s:string;
Begins:=‘Cukurova’; Assign(d,'deneme.dat'); {Dosya açılıyor}
Rewrite(d); write(d,s); writeln(d,’ÜNİVERSİTESİ'); write(d,’Mühendislik'); writeln(d,‘Fakültesi');Close(d);{ Dosya kapanıyor }
end.
Dosya İşlemleri 1. Text Dosyaları Örnek Program
program dosya_veri_oku;{Bu program dosyadan satır verisi okur }
var d:TEXT;satir:string;beginassign(d,'C:\Dene.dat');reset(d);readln(d,satir);writeln(satir);close(d);end.
Dosya İşlemleri 1. Text Dosyaları Örnek Program
program dosya_veri_oku;{Bu program tüm dosya verisini okur}
var d:TEXT;satir:string;beginassign(d,'C:\Dene.dat’);reset(d);while not d(eof) do beginreadln(d,satir);writeln(satir);end;close(d);end.
Dosya İşlemleri 2. Binary Dosyalara.Kayıt Tipi belirli (Doğrudan erişimli) dosyalar:Kayıtlar ASCII veya Byte olrak kaydedilebilir. Kayıtlar dosyaya aynı uzunlukta ve düzenli olarak kaydedilir. Böylece alanlar birbirinden rahatlıkla ayırt edilebilir ve herhangi bir kayıta direkt olarak erişilebilir.Özellikleri:-Bir editör ile düzenlenemez.-Dosya okuma ve yazma için aynı modla açılır.-Satır sonu işaretçisi olmaz.-Her kaydın başına 0-32767 arasında kayıt numarası yazılır.Tanımlama:Dosya değişkenleri VAR tanımlama bloğunda FILE OF <TipAdı> kullanılarak tanımlanır.Tip Adları:1. Integer : Her kayıt dosyada 2 Byte lık yer kaplar. Örn: var dosya : file of integer;2. Real : Her kayıt dosyada 6 Byte lık yer kaplar. Örn: var dosya : file of real; 3. Record : Tanımlanan alan tipleri ve uzunluklarına bağlı olarak kapladığı alan boyutu değişir.Record tipi Type tanımlama bloğunda tanımlanır.
Dosya İşlemleri 2. Binary Dosyalar (Devam)
Type kayittipi=recordisim:string[30];adres:string[50];tel:string[10];borc:real;end;var dosya : type of kayittipi;
ASSIGN: Dosya değişkenine dosya ismi atamak için kullanılır.Yazım:ASSIGN(Dsy.Değ., Dsy.Adı);Örn:ASSIGN(D,’TEL.DAT’);ASSIGN(Dosya,’STOK.DAT’);REWRITE: Dosya oluşturmak , kayıt eklemek ve okumak için kullanılır. Dosya daha önceden mevcutsa kayıtlar silinir.Yazım:REWRITE(Dosya Değ.);Örn:REWRITE(D);REWRITE(Dosya); RESET: Dosyadan kayıt okumak ve dosyaya kayıt yazmak için kullanılır. Dosya önceden mevcut olmalıdır.Yazım:RESET(Dosya Değ.);Örn:RESET(D);RESET(Dosya);
Dosya İşlemleri 2. Binary Dosyalar (Devam)
CLOSE: Açık olan dosyayı kapatmak için kullanılır. Yazım:CLOSE(Dosya Değ.);Örn:CLOSE(D);CLOSE(Dosya); WRITE: Dosyada bulunulan konuma kayıt yazmak için kullanılır. Yazım:WRITE(Dsy.Dğ,KayıtDeğ.]);Örn:WRITE(D,kayit);WRITE(Dosya,bilgi);READ: Dosyada bulunulan konumdan kayıt okumak için kullanılır. Yazım:READ(Dsy.Değ., KayıtDeğ.);Örn:READ(D,kayit);READ(Dosya,bilgi);
Dosya İşlemleri 2. Binary Dosyalar (Devam)
IORESULT: Okuma/Yazma işlemlerinde hata kontrolü için kullanılır. Fonksiyonun dönüş değeri tamsayıdır. Sıfır ise hata yoktur.Yazım:IORESULT{$I-} ve {$I+} derleme direktifleri ile hata sonucu programın kırılması önlenir.FILESIZE:Dosyadaki mevcut kayıt sayısını verir.Yazım:FILESIZE(DosyaDeğişkeni);Örn:FILESIZE(d);FILESIZE(Dosya);SEEK:Dosyada istenilen kayıt numarasına konumlanmak için kullanılır. Sıfır ile kayıt sayısının bir eksiği (FileSize()-1) arasında değer alabilir. Kayıt sayısındaki konum dosyanın sonudur.Yazım:SEEK(Dsy.Değ.,KayıtNo);Örn: SEEK(d,filesize(d)); SEEK(d,sira-1);SEEK(d,0);
Dosya İşlemleri 2. Binary Dosyalar (Fonksiyonlar)
FILEPOS:Dosyada o anda üzerinde bulunulan kaydın numarasını verir. Sonuç LongInt türündedir.Yazım:FILEPOS(DosyaDeğişkeni);Örn:FILEPOS(d);
FILEPOS(Dosya);
TRUNCATE:Dosya sonu işaretçisini (EOF) Bulunulan konuma yerleştirir.Yazım:TRUNCATE(DosyaDeğişkeni);Örn:TRUNCATE(d);TRUNCATE(Dosya);
Dosya İşlemleri 2. Binary Dosyalar (Fonksiyonlar)
Dosya İşlemleri 2. Binary Dosyalar (Fonksiyonlar)
WITH-DO:Kayıt tipi değişkenlerin alt değişkenlerini kayıt değişkenini kullanmadan kullanmak için kullanılan bir komuttur.Örnek:kayit.isim:=‘dene’;kayit. adres:=‘deneme’;kayit. borc:=1000000; yerine;with kayit doisim:=‘ahmet’;adres:=‘sebelek’;borc:=1000000; end;
Dosya İşlemleri 2. Binary Dosyalar (örnek program)
type kt=recorda:string[10];b:real;end; var d:file of kt; k:kt; Begin Assign(d,‘DeneRand.dat'); rewrite(d); k.a:='Ahmet Kara'; k.b:=123000;
write(d,k); k.a:='Hasan Sebelek'; k.b:=1; write(d,k); close(d); end.
Dosya İşlemleri 2. Binary Dosyalar
b. Kayıt Tipi Belirli Olmayan Dosyalar:Kayıtların yapısı belli değildir. Kayıtlar belirli uzunluktaki byte’lar halinde blok blok okunur veya yazılır. Bu nedenle BYTE dosyalar da denir. Okuma ve yazma için byte tipinde tanımlanan bir dizi değişken tampon hafıza olarak kullanılır.
Tipli dosyalardaki tüm komutlar WRITE ve READ hariç geçerlidir.
Tanımlama:Dosya değişkenleri VAR tanımlama bloğunda FILE kullanılarak tanımlanır.Örn: var dosya : file;
Dosya İşlemleri 2. Binary DosyalarREWRITE:Bilirli uzunlukta bilgi yazmak ve okumak üzere dosyayı oluşturmak için kullanılır. Uzunluk verilmezse 128 Byte Yazım :REWRITE(Dsy.Değ,uzunluk);Örn : ReWrite(d,1); ReWrite(dosya,1024);RESET:Bilirli uzunlukta bilgi okumak veya yazmak üzere dosyayı açmak için kullanılır. Uzunluk verilmezse 128 ByteYazım :RESET(Dsy.Değ,uzunluk);Örn : Reset(d,1); Reset(dosya,256);BLOCKREAD:Dosyadan bilirli uzunlukta bilgi okumak için kullanılır.Yazım :BLOCKREAD(Dsy.Değ,bellek, okunacak uzunluk,okunabilen uzunluk);Örn :BlockRead(d,tb,SizeOf(tb),ok); (SizeOf:Bellek değişkeninin uzunluğunu verir.)
Dosya İşlemleri 2. Binary DosyalarBLOCKWRITE:Dosyaya bilirli uzunlukta bilgi yazmak için kullanılır.Yazım :BLOCKWRITE(Dsy.Değ,bellek, yazılacak uzunluk,yazılabilen uzunluk);Örn :BlockWrite(d,tb,ok,yk);var okudosya,yazdosya:file;okukayit,yazkayit:word;bellek:array[1..256] of char;dosya1,dosya2:string;Begin write(’Okunacak dosya..:'); readln(dosya1); write('Yazılacak dosya..:'); readln(dosya2); Assign(okudosya,dosya1); Reset(okudosya,1); Assign(yazdosya,dosya2); rewrite(yazdosya,1); Repeat blockread(okudosya,bellek,sizeof(bellek),okukayit); blockwrite(yazdosya,bellek,okukayit,yazkayit); until (okukayit=0) or (okukayit<>yazkayit); close(okudosya); close(yazdosya);end.