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