Turbo Pascal 7.0 - Endüstri Muhendisliği Bölümü

advertisement
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
Giriş
Kaynak Kodlar
Object Kodlar
Hata Kontrolü
Hatasız Object Kodlar
Derlenmiş 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ır
Program içerisinde değişmeyen sabitler Const kısmında
tanımlanır
Programı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ılmaz
Tü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
shortint
Integer
Longint
byte
word
Sınır
-128, 127
- 32768, 32767
-2147483648, 21474483647
0,255
0,65535
Büyüklük
8 bit
16 bit
32 bit
8 bit
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ır
var
maas :Real;
Tip
Real
Single
Double
Extented
Sinir
2.9e-39,1.7e38
1.5e-45,3.4e38
5.0e-324, 1.7e308
3.4e-4932,1.1e4932
Büyüklük
6 byte
4 byte
8 byte
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ımlama
var
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;
var
calis_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
Var
Ay: ogr_ay;
Diğer örnek;
Type
butce_egitim = (konaklama, yemek, eglence,kitap,
harc);
harcama = array of [butce_egitim] of real;
Var
masraf: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 then
Writeln(‘x pozitif’)
Else
Writeln(‘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 do
begin
sayi:=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
begin
readln(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 verilmeli
Sonuç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/yazma
Dosya yeniden açma
Dosya 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) dosyalar
a. TİPLİ (Doğrudan erişimli) dosyalar
b. 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;
Begin
s:=‘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;
begin
assign(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;
begin
assign(d,'C:\Dene.dat’);
reset(d);
while not d(eof) do begin
readln(d,satir);
writeln(satir);
end;
close(d);
end.
Dosya İşlemleri 2. Binary Dosyalar
a.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=record
isim:string[30];
adres:string[50];
tel:string[10];
borc:real;
end;
var dosya : type of kayittipi;
Dosya İşlemleri 2. Binary 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,’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 (Fonksiyonlar)
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)
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 do
isim:=‘ahmet’;
adres:=‘sebelek’;
borc:=1000000;
end;
Dosya İşlemleri 2. Binary Dosyalar (örnek program)
type kt=record
a: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 Dosyalar
REWRITE:
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 Byte
Yazı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 Dosyalar
BLOCKWRITE:
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.
Download