23 3- Turbo Pascal Programlamada Giriş – Çıkış İşlemleri 3.1 Turbo

Transkript

23 3- Turbo Pascal Programlamada Giriş – Çıkış İşlemleri 3.1 Turbo
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
3- Turbo Pascal Programlamada Giriş – Çıkış İşlemleri
3.1 Turbo Pascal Bilgisayar Programına Veri Girişi
Programlamanın en önemli kısımlarından birisi programa veri girişinin
yapılmasıdır.
Yazdığımız
bir
bilgisayar
programına
dış
ortamdan
aktaracağımız verilerin veya dış ortama aktaracağımız verilerin belirli
komutlar yardımı ile yapıldığını bilmekteyiz. Bu işlemlerin yapılmasına
yardımcı olan veya bu işlemleri gerçekleştiren ve parametreleri olan
komutlar vardır. Pascal bilgisayar programlama dili ile programlama
yaparken yazdığımız bilgisayar programlarına dış ortamdan veri girişi
formatlı ve formatsız olarak iki yarı şekilde girilmektedir. Ayrıca veri
girişinin dış ortamdan alınması ayrı bir işlemi gerektirmeden yalnızca aygıt
ve transfer değişkenleri ile sağlanmaktadır. Turbo pascal bilgisayar
programlama dilinde ekran aygıtlarını kullanabilmek için USES CRT; durum
bildirgecini kullanmak zorunludur. Bu bildirgeci programın isimlendirildiği
yerin hemen altında yazmalıyız.
i)
Bilgisayar Programına Formatsız Veri Girişi
Pascal
bilgisayar
formatlanmasına
programına
genellikle
veri
gerek
girişi
yapılırken
kalmamaktadır.
Veri
verinin
girişini
formatlamak yerine veri giriş aygıtının seçilmesi önemlidir. Verilerin
formatlanarak giriş yapılacak aygıttan yapılması örneğin dosya veya
disk aygıtı gibi gerektiği durumda verinin girileceği değişken ile bir
dosya değişkenin belirlenmesi gereklidir. Verinin atanacağı değişkenin
ihtiyacı olan bu dosya değişkeni programın başında değişken tanımlama
kısmında tanımlanır.
Dosya değişkenlerinin tanımlanmasından sonra değişkene girilecek
değer aşağıdaki komut yardımı ile atanır.
Readln(değişken);
Read(değişken);
Bu iki komut aslında aynıdır. Aralarındaki temel fark readln()
komutundan sonra bilgisayarın imleci (cursor) bir alt satıra geçerek
23
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
programa veri girişi bekler. Eğer read() komutunu kullanarak veri girişi
yaparsak imleç verinin girilmesi için read() satırında bekler. Bu
komutları
kullandıktan
sonra
verilerimizin
bilgisayar
programına
girilmesi için bilgisayarın klavyesindeki ENTER tuşuna basmalıyız. Aksi
takdirde
bilgisayar
komutları
okuyacak
fakat
giriş
işlemi
tamamlanmayacaktır. Veri girişi işlemini tamamlamak için mutlaka
bilgisayar klavyesindeki ENTER tuşuna basmalıyız.
Program Ilk_Karakter ;
var
k1, k2, k3 : char;
ilk_k : char;
begin
Write ('Herhangi üç karakter girin --> ');
ReadLn (k1, k2, k3);
if k1 < k2 then
ilk_k := k1
else
ilk_k := k2;
if k3 < ilk_k then
ilk_k := k3;
WriteLn (ilk_k, ' karakteri diğerlerinden
öncedir.')
end.
Yukarıdaki programda klavyeden girilen herhangi üç karakteri küçükten
(bir öncekinden sonraya) büyüğe doğru sıralayan pascal bilgisayar
programı görülmektedir. bu programda sadece karakter tipindeki
verilerin klavyeden girilmesi görülmektedir. Veri girişleri formatsızdır.
ii)
Bilgisayar Programına Formatlı Veri Girişi
Turbo pascal bilgisayar programına formatlı veri girişi yapabilmemiz için
önce dosya işlemlerinden bahsetmemiz gereklidir. Turbo
24
pascal
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
bilgisayar programlama dilinde dosya işlemleri yapabilmek için önce
dosya değişkeni kavramını açıklamamız gereklidir.
Dosya değişkeni bildiğimiz değişkenler gibi kullanılmayan sadece
bilgisayar
programı
ile
programa
aktaracağımız
değişkenlerin
değerlerini veya içeriğini bilgisayar programı ile dış ortam arasında
aktarma işlevini görür. Dosya değişkeni her dosya için veya dış
ortamdan aktarılacak her ayrı dosya verisi için ayrı belirlenmelidir. Eğer
aktarılacak olan veri ayrı dosyalarda ise değişkenlerinde ayrı olma
zorunluluğu vardır.
Program Dosya_veri;
Var
Dosya_adi : FILE OF INTEGER;
Sayi : Integer;
Begin
ASSIGN(Dosya_adi, ‘c:\Temp\VeriDosya.dat’);
Reset(Dosya_adi);
While not EOF( Dosya_adi) do
Begin
Readln(Dosya_adi,Sayi);
Writeln(Sayi:2,’’)
End;
Close(Dosya_adi);
END.
Bu
bilgisayar
programında
“C:\temp\VeriDosya.dat”
adlı
disk
üzerindeki dosyadan veri okunması işlemi gerçekleştirilmektedir. Veri
girişinin sağlanması için okunacak olan dosyanın disk üzerinde olması
şarttır. Dosya bulunmadığı zaman program çalışma hatası verecek veya
duracaktır.
Disk üzerinde daha önce açılmamış bir dosya var ise öncelikle bu
dosyanın oluşturulması gereklidir. Daha sonra bu dosyanın açılması ve
belirlenen dosya değişkeni ile bu dosyaya ulaşılması gerekir.
25
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
Dosya_adi : FILE OF INTEGER;
Tanımlaması disk üzerindeki dosyaya ulaşılırken kullanılacak olan dosya
değişkenin
tanımlanması
işlemi
yapılmaktadır.
Daha
sonra
ASSIGN(Dosya_Değ_adi) ile dosya oluşturulmakta veya daha önceden
oluşturuldu ise bu dosyaya ulaşılmaktadır. Reset(Dosya_Değ_adi) ile
imleç dosyanın başına gitmektedir. Burada önemli olan bu komutu
kullanmadan mutlaka dosyanın açılması gereklidir. Dosyadan verilerin
okunması
işlemi
Readln(Dosya_değ_adi,
değişken);
ile
yapılmaktadır.
Dosya giriş işlemlerini biz daha çok metin (text) tabanlı dosyalar için
kullanmaktayız. İkilik (inary) dosyalar için bu işlem çok farklı değildir.
İkilik dosya için değişkelerin kullanılan dosya değişkenlerinin tipi ikilik
dosya
tipine
uygun
olarak
değiştirilmelidir.
Diğer
yazı
kuralları
değişmeden uygulanabilmektedir.
3.2 Turbo Pascal Bilgisayar Programından Veri Çıkışı
Yazdığımız programların sonucunu görmek veya değerlerin ara sonuçlarını
takip etmek gibi bazı istekleri yapabilmek için bilgisayar programının
çıktılarını görmek istemekteyiz. Turbo Pascal bilgisayar programında
işlediğimiz verilerin dış ortama aktarılması için kullanılan komutun ve
parametrelerinin
kullanımı
aynı
dış
ortamdan
veri
programa
veri
aktarırken kullanılan yönteme benzemektedir. Aradaki fark bir komut giriş
işlemini yaparken diğer komut çıkış işlemini yapmaktadır. Turbo pascal
bilgisayar programından dış ortama veri ve bilgi aktarmak için verilerin
uygun tipte ve seçilen dış ortam aygıtlarının uygun ve çalışır durumda
olması gerekir.
Bilgisayar programından dış ortama verilen formatlı ve formatsız olarak
aktarılabilmektedir. Formatlı verilerde değişkenlerin içerdiği değerin hangi
tip ve yönde olacağı önemlidir. Turbo pascal bilgisayar programlama
dilinde
programdan
write(değişken);
veri
çıkışı
için
yazım
şekli
writeln(değişken);
kullanılır.
Program
veya
içerisinde
kullanacağımız veri çıkışı haricinde ekran veya dosyaya yazmak istediğimiz
26
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
yazı veya değişken değerlerini ise iki üst virgül arasında yazarak sağlarız.
Bu iki üst tırnak arasında kalan yazı veya değerler olduğu gibi istenen çıkış
aygıtında görünür. Bu gösterim bize daha çok herhangi bir neden ile
değişmesini istemediğimiz yazılar veya değerlerin görülmesi, bir dosya
veya değerin alabileceği değerlerin isimlendirilmesi sırasında isimlerinin
değişmemesi gibi durumlarda yardımcı olmaktadır. Örneğin bir dosyaya
değişkenin değerini yazdırmak istiyoruz fakat sıralı olarak birden fazla x1,
x2, y1, y2 gibi değişkenler var. Bu durumda değişkelerin hangisinin hangi
değeri alabileceğinin ayrılması veya çıkış aygıtına değerlerin yazılması
gerekir.
i)
Bilgisayar Programından Formatsız Veri Çıkışı:
Turbo pascal bilgisayar programından formatsız veri çıkışı almak çok
kolaydır. Burada yapılması gereken sadece writeln(değişken);
veya
write(değişken);
komutları
ile
içerisinde
yazılı
olan
yazı,değişkenlerin veya değerlerinin yazılmasını sağlamaktır. Geçerli
çıkış
aygıtına
yazdırmak
istediklerimiz
için
writeln(‘Ekranda
Göster’); şeklinde yazı ile göstermek istediğimizi gösterebiliriz.
Program Uc_Ciz ;
const
sat_sayi = 5;
Bos = ' ';
Yildiz = '*';
var
Satir, Bosluk, Yild_sayi : Integer;
begin
for Row := 1 to sat-sayi do
begin
for Bosluk := sat_sayi - Satir downto 1 do
Write (Bos);
for Yild_sayi := 1 to 2 * Satir - 1 do
Write (Yildiz);
27
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
WriteLn
end
end.
ii)
Bilgisayar Programından Formatlı Veri Çıkışı:
Turbo Pascal bilgisayar programlama dilinde formatlı veri çıkışı ilk
başta biraz anlaşılmaz gelir. Oldukça kolay olmasına rağmen bir çok
kullanıcı bu karışıklığın içerişinde kaybolur. Burada dikkat edilmesi
gereken en önemli husus bilgisayar hafızada değişkenler için yer
ayırırken hizalama işleminde daima sağ taraftan başlamaktadır.
var sayi: string;
writeln(sayi:5);
şeklinde yazılarak formatlanan veri geçerli çıkış aygıtı (ekran, yazıcı
veya dosya) yazılırken sağ taraftan hizalanarak yazılır. Hafızada
sayi adli değişken için beş haneli bir yer ayrılmıştır. Daha sonra bu
ayrılan beş haneli yere sayi adlı karakter kümesi yazılmıştır.
1
2
3
4
5
s
a
y
i
Şekil 3.1 Çıkış Aygıtında Formatlı Veri İçin Ayrılan Yer.
Görüldüğü gibi yazılar sağ taraftan hizalanarak yazılmıştır. Integer
tipte bir örnek verecek olursak aşağıdaki gibi genelleştirebiliriz.
Var sayi: integer;
Sayi:=1234;
Writeln(sayi:5);
1
2
3
4
5
1
2
3
4
Şekil 3.2 Çıkış Aygıtında Formatlı Veri İçin Ayrılan Yer.
28
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
Diğer bir örnek verecek olursak üç ardışık yazılması gereken veri
tipine göre genelleştirebiliriz.
var
sayi1, sayi2: integer;
sayi1:=77;
sayi2:=478;
writeln(sayi1:3, sayi2:4, -45:4)
burada ekrana 3+4+3 toplamı 10 hane kadar yer açılır. Daha sonra
açılan bu yerlere değişkenler veya değerleri yerleştirilir.
1
2
3
4
5
6
7
8
9
10
1
2
3
1
2
3
4
1
2
3
7
7
4
7
8
-
4
5
Şekil 3.3 Çıkış Aygıtında Formatlı Ayrı Veriler İçin Ayrılan Yer.
Formatladığımız verilerin içerdiği değerler bazı durumlarda formatlı
olarak belirlediğimiz alanı geçebilir. Bu durumda Turbo Pascal aşan
kısmı için ekrana veya geçerli çıkış aygıtına sığacak kadar yer açarak
değeri yazar. Veri kaybını engelleyerek her değeri ayrılan alana
yazılmasını sağlar.
Dosyaya yazdırılacak olan formatlı veriler için öncelikle okuma
işleminde olduğu gibi yazdırma işleminde de dosyayı açmak gerekir.
Dosya açılmadan yapılmaya çalışılan işlemlerde Turbo Pascal hata
kodları üretecek ve programın çalışması duracaktır. Formatlı veri
yazdırma
işlemi
bize
önleyerek
yazdırılmasını
değişkenlerin
sağlayacaktır.
değerlerinin
karışmasını
Değişkenlerin
tiplerinin
değişmesi ile formatlı veri tipleri ile çalışırken bazı durumlarda dikkat
edilmesi gereken bir çok özel durum ortaya çıkabiliyor. Tam sayı
tipindeki
bir
değişken
ile
gerçel
tipte
olan
formatlanması birbirinden ayrı olmasını gerektiriyor.
29
bir
değişkenin
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
Gerçel tipte olan verilerin formatlanmasında kullanılan yöntem aynı
olmasına rağmen aralarındaki temel fark ondalık (mantis) kesimi
gösteren
noktanın
da
bir
hane
ile
gösterilmesidir.
Örneğin,
a:=23.4567 gibi bir sayıyı ele alalım ondalık düzende gösterirken 23
tamsayı kesimi 4567 ise ondalık kesimidir. Birbirinden bir nokta
yardımı
ile
ayrılmıştır.
Bu
noktanın
bilgisayarda
gösterilmesi
zorunludur. Aksi takdirde ondalık kesimin gösterilmeyişinden dolayı
hesaplamalarda
ve
gösterimlerde
sonuç,
yuvarlama
ve
hesap
hataları ile karşılaşmamız kaçınılamaz olmaktadır.
a:=23.4567 sayısını formatlamak istediğimizde ondalık kesimin
ayıracını
göstermeliyiz.
Aşağıda
a
değişkeninin
alacağı
değeri
formatlı şekilde nasıl gösterileceğine örnek olarak verilebilir. Gerçel
tipte formatlamada ilk sayı formatlanacak olan sayının tam sayı
kısmını gösterir. İkinci sayı ise formatlanan değişkenin ondalık
kısmını göstermektedir. Burada unutulmaması gereken en önemli
şey tam sayı ve ondalık sayı kısmı toplamına noktanın da dahil
edilmesi gerektiğidir. Değişkenin alacağı değerlerin tam sayı kısmı 3
hane ondalık kısmı 5 hanedir. Buna ek olarak ondalık gösterici olan
noktanın göstericisi de bir hanedir. Bundan dolayı gerçel sayılar
gösterilirken ondalık göstericisi olan noktanın da bir hane olarak
hesaplanması gerekmektedir.
writeln(a:5:5)
1
2
3
4
5
6
7
8
9
10
2
3
.
4
5
6
7
Şekil 3.4 Çıkış Aygıtında Formatlı Gerçel Tip Verilerinin Gösterimi.
Yukarıdaki yazımın ekran çıktısının görünümü ise aşağıdaki gibi olur.
_ _ _ 23.4567
Başka bir örnek inceleyelim, bu örnekte test için incelenen bir sayı
ve yıldızlar olduğunu yazmaya çalışalım. Sayı ilk olarak tamsayı
30
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
(integer) tipinde, ikinci sayı ise gerçel (real) tipte olsun. Bu sayıların
yerleşimini görmek için yıldızları (*) kullanalım.
Program sayi_frmt;
var
sayi_1: integer;
sayi_2: real;
Begin
sayi_1:=1234;
sayi_2:= 23.4567;
writeln(‘****’,sayi_1:1,’****’);
writeln(‘****’,sayi_1:2,’*****’);
writeln(‘****’,sayi_1:5,’*****’);
writeln(‘****’,sayi_2:4:2,’****’);
writeln(‘****’,sayi_2:6:4,’****’);
writeln(‘****’,sayi_2:10:5,’****’);
End.
Bu programın ekran çıktısı ise aşağıdaki gibi olur.
****1234****
****1234****
**** 1234****
****23.4****
****23.456****
****
23.4567****
İlk sırada sayı kendisi için ayrılan yer küçük olmasına rağmen toplam
yeri kadar ekranda görünür. İkinci sırada yer alan sayı yine
kendisine ayrılan yerden küçük olmasına rağmen yine ekranda tam
olarak görünür. Üçüncü satırda yer alan tam sayı kendisine ayrılan
31
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
yerden hane sayısı olarak az olduğundan fazladan ayrılan yer
ekranın sol tarafında boş olarak görünür.
Gerçel tipte olan formatlamalar için ayrılan yer dördüncü sırada
sayi_2:4:2 şeklinde olmasından dolayı toplam 4 hane ve ondalık
kısım ise yalnızca bir hane olarak görünmektedir. Ondalık gösterime
ait olan nokta mantis kısmı diye belirlenen noktalı kısımdan
hesaplandığı için tam sayı kısım görünüşünde olmaz. Bu yüzden sayı
bir hanesi ondalık bir hane nokta ve iki hane tam sayı kısmını
gösterir. Beşinci sırada yer alan gösterimde sayi_2:6:4 şeklindeki
formatlama işleminde sayı olduğu gibi görülmektedir. Burada sayı
için
gerekli
olan
alan
sayının
tamamını
kapsayacak
şekilde
verilmiştir. Bundan dolayı ekranda sayı tam olarak görülmektedir. en
son satırda yer alan gösterimde sayının tamamı yer almış ve sayının
içerdiği değerden fazla olduğu için ekranda sayının sol tarafında 4
hane boşluk kalmıştır. Eğer ondalık kısın göstericisi sıfır ise gerçel
sayının ondalık kısmı kendisine en yakın olan tam sayıya yuvarlanır.
Gerçel tipte tanım yapılan herhangi bir değişkeninde tam sayı kısmı
isteniyor ise sayi_2:6:0 şeklindeki formatlama işlemi ile tam sayı
kısmı elde edilir.
Turbo
Pascal
bilgisayar
programlama
dilinde
gerçel
tipte
değişkenlerin formatlanması işleminde üstel gösterim olarak bilinene
bilimsel sayı formatlama şekli yaygın olarak kullanılmaktadır. Bu
kullanımın amacı yüksek hesap kapasitesine sahip veya bilimsel
hesaplama kabiliyetine sahip olan bilgisayar programları yazmaktır.
Programcı bazı durumlarda yüksek hassasiyetli sayıla ile uğraşması
gerekebilir. Gerçel tipte daha fazla karşılaşılan bu durumlardan
hesaplanacak
durumu
olan değer yuvarlama hatası denilen istenmeyen
ortaya
çıkarmaması
için
ondalıklı
sayıların
üstel
gösteriminden yararlanılır. Bu aynı zamanda bilgisayarın hafızasını
etkin kullanmaya yönelik bir istemdir.
32

Benzer belgeler

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları Dosya değişkenlerinin tanımlanmasından sonra değişkene girilecek değer aşağıdaki komut yardımı ile atanır. Readln(değişken); Read(değişken); Bu iki komut aslında aynıdır. Aralarındaki temel fark re...

Detaylı

5- Turbo Pascalda Kullanılan Döngü Yapıları

5- Turbo Pascalda Kullanılan Döngü Yapıları Başka bir örnek inceleyelim, bu örnekte test için incelenen bir sayı ve yıldızlar olduğunu yazmaya çalışalım. Sayı ilk olarak tamsayı

Detaylı