|
FORTRAN'A GİRİŞ
Fortran alfabesi 10 nümerik, 26
alfabetik ve 13 özel karakterden oluşur. Fortran dilinde
değişkenlere, arşiv fonksiyonlarına, aritmetik deyim
fonksiyonlarına, alt programlara isimler verilir. Fortran isimleri
birincisi nümerik olmayan 6 karakteri aşmayan alfabetik veya nümerik
karakterden oluşur. Fortran deyimleri isim olarak kullanılamaz.
Fortran77 komutlarının ekrana yerleştirilmesi şu biçimde olmalıdır:
1. kolona C yazılır ve diğer kolonlara açıklama yapılır.
2-5 kolonları arasına deyim numaraları yazılır.
6. kolona bir satıra sığmayan deyimlerin bir alt satıra yazılması
için bir karakter yazılır.
7-72 kolonları arasına FORTRAN komutları ve deyimleri yazılır.
SABİTLER VE DEĞİŞKENLER
Bir
programın icrası sırasında değeri değişmeyen büyüklüklere sabitler;
değeri değişen büyüklüklere ise değişkenler denilir.
Sabitler :
FORTRAN77 dilinde kullanılan sabitlerden bazıları şunlardır;
tamsayı, gerçel, çift incelikli, kompleks, mantıksal. Bu sabitler
çevirici tarafından rahatlıkla kabul edilir.
Değişkenler :
İki biçimde değişken vardır:
(a) İndissiz değişkenler :
İndissiz değişkenlerden bazıları, tamsayı, gerçel, çift incelikli,
kompleks ve mantıksal değişkenlerdir.
Değişken adı I,J,K,L,M,N harflerinden biriyle başlarsa bunun bir
tamsayı değişkeni olduğu anlaşılır. Bu harflerin dışında bir harfle
başlarsa bu değişken bir gerçel değişkendir. Diğer değişkenler
türleri için IMPLICIT veya tip bildiri deyimleri kullanılmalıdır.
(b) İndisli değişkenler :
FORTRAN77 dilinde bu tür değişkenlere dizi denilir.
Aritmetik ifadeler :
Bir aritmetik ifade sabitlerin, değişkenlerin, fonksiyonların
aritmetik işlem sembolleriyle birbirinden ayrılmış kombinezonlarını
içerir. Aritmetik işlem sembolleri, **(üs alma), *, /, + ve - dır.
Bunlar öncelik sırasına göre yazılmışlardır. Burada dikkat edilmesi
gereken durum, üs alınırken üssün kompleks büyüklük olması
gerektiğidir.
Mantıksal ifadeler :
Bir mantıksal ifade bir mantıksal sabit (.TRUE. veya .FALSE.) ve
değişken birbirlerine mantıksal işlem sembolleriyle bağlanmış
mantıksal fonksiyonları içerir. Mantıksal işlem sembolleri; .NOT., .AND.,
.OR. sembollerinden oluşur. Mantıksal ilişki sembolleri ise
şunlardır: .LT., .LE., .EQ., .NE., .GT., .GE.
ATAMA DEYİMLERİ
Atama deyimleri değişkenlere değer atamasında kullanılır. Aritmetik
atama deyiminde, işaretsiz değişken=aritmetik ifade şeklinde
yazılım vardır ve sağdaki aritmetik ifadenin değeri sayısal olarak
bulunur, bu değer soldaki değişkene atanır.
Mantiksal deyimi ise,
mantıksal değişken=mantıksal ifade
biçiminde yazılır. Yukarıdaki açıklamalar bunun için de geçerlidir.
ASSIGN deyimine burada değinilmeyecektir. Ayrıntılı bilgi için
herhangi bir FORTRAN77 kitabına başvurabilirsiniz.
GİRİŞ/ÇIKIŞ DEYİMLERİ
READ Deyimi :
Dış ortamdan bilgisayara bilgi aktarılmasını sağlar.
READ (i,n) liste genel biçiminde yazılır.
{{i}} giriş ünitesinin numarısını belirten bir tamsayı
sabitidir.
Klavyeden bilgi giriçi için i=$5$ yazılmalıdır.
{{n}} ise giriş bilgilerinin dış ortamda nasıl
yerleştirileceğini belirten ilgili FORMAT deyiminin numarasıdır.
READ deyimi bu şekliyle FORTRAN$77$ çeviricisi tarafından kabul
edilmektedir. Ancak verilen FORMAT bilgisine uygun giriş
yapılmadığında çevirirken bir hata mesaji oluşmasa bile programın
çalışması esnasında aksama olabilir. Buna dikkat edilmelidir.
İstenirse READ deyimi FORMATsız da kullanılabilir. Yine istenirse
liste tanımlı giriş de yapılabilir. Bu durum da READ deyimi şu
biçimde yazılır:
READ*, değişken listesi
Liste indissiz ve indisli değişken, dizi isimlerinden oluşur.
WRITE Deyimi :
Bilgisayar belleğinden dış ortama bilgi aktarılmasını sağlar.Genel
yazılımı :
WRITE (i,n) liste biçimindedir.
çıkış ünitesinin numarasını belirtir. Ekran için bu sayı i=$6$
dır.
$n$ ise çıkış bilgilerinin ekranda nasıl görüleceğini
belirten FORMAT numarasıdır.
WRITE deyimi bu şekliyle FORTRAN$77$ çeviricisi tarafından kabul
edilmektedir. Ancak, FORMAT'ta verilen alan birimlerinin WRITE
deyimindeki listeyle uyuşmasına özen gösterilmelidir.
İstenirse WRITE deyimi formatsız olarak kullanılabilir.
Eğer liste tanımlı çıkış yaptırmak istenirse bu çevirici tarafından
kabul edilmeyeceğinden,
WRITE ($6$ ,*) liste şeklinde kullanmak doğru olacaktır. WRITE*,
değişken listesi biçimindeki bir yazılım LINUX altında doğru
değildir.
Ama bunun yerine,
PRINT*, değişken liste yazılımını kullanabiliriz.
FORMAT Deyimi :
Bilgisayarlara bilgi giriş çıkışında dış ortam düzeni için
kullanılan bir deyimdir.
nformat $(f_{1},f_{2},..........,f_{n} )$ biçiminde yazılır.
n; READ ve WRITE deyimlerinde açıklanan deyim numarasıdır.
$f_{1},,f_{2},....,f_{n}$ ise READ ve WRITE deyimlerinde
belirtilen değişkenlerin dış ortama ne biçimde aktarılacağını gö
steren alan bildirileridir. FORMAT deyimi programın içinde herhangi
bir yerde bulunabilir, yalnız DO çevriminin son deyimi olamaz.
Çevirici tarafından kabul edilen alan bildirilerinden bazıları
şunlardır: X,I,F,E,D,L,G,A ve H tipi alan bildirileri. Bu alan
bildirileri gerektiği gibi kullanılırsa programın çevrilmesi ve
çalıştırılması sırasında herhangi bir sorun çıkmaz.
Aşağıda açıklanacak olan deyimler FORTRAN77 çeviricisi tarafından
kolayca algılanabilmektedir.
Şartsız GO TO deyimi :
Bu deyim programın icra sırasının numarası ile belirtilen deyime
dallanmasını sağlar.
GO TO n
biçiminde yazılır. Burada n, programın akışının dallanacağı deyim
numarasını gösteren bir tamsayı sabittir.
Hesaplanmış GO TO Deyimi :
Şartsız go to deyimi ile aynı görevi üstlenir. Ancak n sayısının
değeri sabit olmayıp bir tamsayı değişkenidir. Genel yazılımı :
GO TO $(n_{1},n_{2},.....n_{m})$, k biçimindedir.
İcra sırasında k=1,2,3,...., m olmas/i na göre dallanma
$n_{1},n_{2},.....n_{m}$ numaralı deyimlerle olur.
Aritmetik IF Deyimi :
Bu deyim programdaki deyimlerin icrasının şartlı olarak
değiştirebilmesi olanağını sağlar, bir aritmetik ifadenin değerinin
negatif, sıfır ya da pozitif olmasına göre gerekli deyimlere
dallanma olur.
IF(aritmetik ifade) $n_{1},n_{2},n_{3}$ biçiminde yazılır.
Aritmetik ifadenin değeri negatifse $n_{1}$, sıfırsa $n_{2}$ ve
pozitifse $n_{3}$ numaralı deyime dallanma olacaktır.
Mantıksal IF Deyimi :
Mantıksal (lojik) işlemlerin yapılabilmesini sağlayan bir deyimdir.
Bir mantıksal ifadenin doğru (TRUE) veya yanlış (FALSE) olmasına
göre gerekli yere dallanma olur.
IF(Mantıksal İfade) deyim
genel biçiminde yazılır.
Mantıksal ifade doğruysa bunu izleyen deyim, yanlış ise mantıksal IF
deyiminden sonraki deyim icra edilir. DO Deyimi :
Belirli işlemleri istenilen sayıda tekrarlamak, bir çevrim
oluşturmak için kullanılan bir yönetim deyimidir.
DO n $i=m_{1},m_{2},m_{3}$ genel biçiminde yazılır.
Burada i değeri tamsayı, gerçel ve çift incelikli bir değişken;
$m_{1}, m_{2}, m_{3}$ parametreleri de tamsayı ve değişken veya
aritmetik ifadeler olabilir.
$m_{1}$ $le$ $m_{2}$,$m_{3}$ $>$ 0 ve $m_{1}$ $ge$ $m_{2}$,
$m_{3}$ $< $ 0
koşullarından birinin sağlanması durumunda DO çevrimi çalışır, aksi
halde icra DO çevrimini atlayarak n. deyimden sonraki ilk deyimle
devam eder.
Kapalı DO çevrimleri DATA deyiminde kullanılırsa, i tamsayı
değişken; $m_{1}, m_{2}, m_{3}$ ise bir tamsayı sabit veya bunların
isimlerini bulunduran birer ifade durumundadırlar.
Uygulama olarak verilen örnekler içinde i, $m_{1}, m_{2}, m_{3}$
değişkenlerinin gerçel değerler aldığı bir DO çevrimi de
kullanılmıştır.
CONTINUE Deyimi :
Bu deyim CONTINUE genel şeklinde yazılır ve genellikle DO çevriminin
son deyimi olarak kullanılır. Programın başka kısımlarında
kullanılıp kullanılmaması arasında fark yoktur.
PAUSE, STOP ve END Deyimleri :
PAUSE deyimi programın icrasını geçici olarak durdurur.
PAUSE
PAUSE n
PAUSE bir bildiri biçimlerinde yazılabilir. n en çok 6 rakamlı bir
tamsayı sabit; bir bildiri ise en çok 45 karakteri olan bir karakter
dizisidir. Programın icrasını operatör tekrar başlatır ve akiş bir
sonraki deyimden devam eder.
STOP deyimi program icrasını durdurur. Bir FORTRAN 77
programında mutlaka bu deyim, son icra edilen deyim olarak
bulunmalıdır. Yazılımı genellikle STOP biçimindedir.
END deyimi bir programın fiziksel olarak son deyimidir. Bu
deyimin de bir programın sonunda mutlaka bulunması gerekir.
Programlama Mantığı
Bu bölümde size genel olarak programlama hakkında bilgi vermek
istiyorum.Aslında başta Pascalın tarihçesini yazmayı
düşünüyordum.Fakat daha sonra bunun eğitici bir yanı olmayacağını
düşündüğümden vazgeçtim.Eğer programlama hakkında çok az da olsa
deneyiminiz yoksa bu bölümün size faydası olacağından şüphem yok.
Bildiğiniz gibi bilgisayarlar insanların yapamadığı birçok karışık
işlem ve işleri çok zorlanmadan yaparlar.Fakat bu işlemleri
yapabilmesi için yine insanlar tarafından yazılmış programlar
kullanır.İşte bu yazılar dizisini takip ederek sizde bilgisayara
birtakım işler yaptıracaksınız.Belki ciddi programlar yazmanız için
ilk adımlarınız olacak bu yazı dizisi.Belki de sadece yeni bir
hobiniz daha olacak.Hatta bilgisayar programlarını yazmanız
zihninizi genişletecek.
Turbo Pascal Derleyicisi(ilk bölümde kurulumunu
anlattığımız) düz yazı biçimindeki kodu çalıştırılabilir bir
programa dönüştürecektir.Yani Not Defterinde birkaç satır kod
yazacağız ve derleyici vasıtasıyla bunu Windows'un çalıştırabileceği
.exe uzantılı bir programa dönüştüreceğiz.
Bir kere kodu derleyip programı oluşturduğumuzda .exe
uzantılı programı değiştirme şansımız olmayacak.Yapılan ufak
hataları düzeltmek için kaynak kodu değiştirip tekrar derlememiz
gerekecek.Zaten yazdığınız hatalı kodlar derlenmeyecek,işlem yarıda
kesilecektir.Turbo Pascal Derleyicisi bu aşamada nerde hata
yaptığınızı size bildirir.Böylece yaptığınız hatayı anlamanız çok
güç olmaz. Programlama deyince korkmanıza gerek yok.Çünkü pascal bir
takım dillerin aksine öğrenilmesi çok kolay ve kullanışlı bir
dildir.Orta seviyede bir İngilizcesi olan biri hiç zorlanmadan
pascal öğrenebilir.Çünkü pascal komutları İngilizce kelimeler ve
bunların kısaltmalarından oluşmaktadır."İngilizce bilmiyorum."
diye telaşlanmanıza da gerek yok.Pascal komutları kısa ve akılda
kalır yapıda kelimelerden oluşuyor.Bunlar aynı anda "Neden Pascal?"
sorularını da yanıtlıyor herhalde.
Programcılıkta veriyi saklamak için değişkenler
kullanılır.Bu değişkenleri kaplara benzetebiliriz.Nasıl kaplarda bir
şeyler muhafaza edebiliyorsak değişkenlerde de veri muhafaza
edebiliyoruz.Ve nasıl kapların içindekini
değiştirebiliyorsak,değişkenlerin içlerindeki veriyi de
değiştirebiliriz.
Bir bilgisayar programı genel olarak Girdi(Input)-->İşlem(Processing)-->Çıktı(Output)
mantığı ile çalışır.Yani klavye,fare gibi bir girdi aracından
girdiyi alır.Daha sonra işlemcide gerekli işlemleri gerçekleştirir
ve sonucu kullanıcıya monitör yada printer vasıtası ile
gösterir.Veri kaydetmesi gerektiğinde ise yine gerekli
kaynakları(disket,hard disk,tape v.b) kullanır. Yüzeysel olarak
Programlama Mantığı bu şekilde açıklanabilir.
Artık
bilgisayarımızda Turbo Pascal Derleyicisi ve bizde programlama
mantığı olduğuna göre yavaş yavaş örneklerle Turbo Pascal'ı ve
Pascal dilini öğrenmeğe başlayabiliriz.
Kodumuzu iki türlü yazabiliriz.Birinci yöntem kodu Not Defteri gibi
bir programda yazıp kaydettikten sonra derleyici ile derlemek.İkinci
yöntem ise Turbo Pascal'ın editörünü kullanarak kodu yazıp
derlemek.Eğer elinizde bu derslerin yazılı dökümü varsa ikinci
yöntemi kullanabilirsiniz.Eğer derslerin yazılı dökümü yoksa,onları
bilgisayar ortamında okuyup farklı bir Windows programıyla yazmanız
daha kolay olacaktır.Çünkü Turbo Pascal'ın orijinal editörü Dos
ortamında çalışıyor ve buda size çok vakit kaybettirebilir.Yinede
her şartta birinci yöntemi öneririm.Böylece ikide bir Windows'tan
çıkmanıza gerek kalmaz.
Pascal Kaynak Kodlarının(Derlenmemiş) uzantısı ".pas"dır.Turbo
Pascal değişik uzantılı dosyaları derleyebilir(Pascal kodu içermek
şartıyla),fakat ".pas" uzantısı yaygınlık kazanmış ve
benimsenmiştir.Bu yüzden Windows'a .pas uzantısını tanıtmamız
gerekebilir.Notepad ile bir şeyler yazıp 1.txt ismi ile
kaydedin.Daha sonra bunu Yeniden Adlandırarak(Rename) .txt
yerine .pas yazın.Dosya türünü değiştirmek istiyor musunuz
diyaloguna Evet cevabını verdikten sonra dosyayı çift
tıklayın "Birlikte Aç" penceresi açılacaktır.Dosya tanımına
Pascal Kaynak Kodu yazın.Program listesinden de Notepad'i
bulup seçin."Bu dosyayı açmak için her zaman bu programı kullan"
kutusunun seçili olduğuna dikkat ederek "Tamam" butonuna
basın.Böylece bilgisayarınız .pas uzantılı dosyalara ne isim
vereceğini öğrenmiş olur.
Başlat(Start)-->Çalıştır(Run) ile çıkan kutucuğa notepad
yazın.Böylece Windows'un klasik Not Defteri programı
çalışacaktır.Aşağıdaki kodu yazın.
Program ilk;
begin
end.
Bu kodu ilk.pas olarak Masaüstü(Desktop)'ne
kaydedin.Daha sonra tüm klasör pencerelerini kapatıp.Masaüstünde
iken Başlat-->Çalıştır deyip kutucuğa tpc ilk.pas
yazın.
Turbo Pascal Version 7.0 Copyright (c) 1983,92 Borland
International
ILK.PAS(3)
3 lines, 1472 bytes code, 668 bytes data.
yazısını görürseniz programınız derlenmiş demektir.Masaüstünde ilk
programınız olan Ilk.exe bulunuyorsa başardınız demektir.Eğer
bu aşamaya gelemediyseniz korkarım daha önceden bir hata
yapmışsınız.Kurulum yazısını tekrar inceleyin.
Ilk.exe'yi hevesle çalıştırdınız ama bir şey olmadı değil
mi?Olmaması çok doğal çünkü programın sadece ismi,başı ve sonu
var.Ama hiçbir işlem yok.Bu arada yapılacak işlemler begin
ile end komutları arasına yazılır.End komutunun sonundaki
nokta(.) ise programın bittiğini gösterir.Unutmayın bir
programda birden fazla begin ve end bulunabilir.Programı
bitiren end nokta ile program içerisindeki endler ise
noktalı virgül(;) ile sonlandırılmalıdır.
Genelde pascal kod satırı noktalı virgül(;) ile
sonlandırılır.Fakat bazı istisnai kodlarda noktalı virgül
kullanılmaz.Bunlar begin,repeat gibi değişik şekilde
sonlandırılan komutlardır.Endişe etmenize gerek yok zamanı gelince
her şeyi daha net anlayacaksınız.
Yukarıdaki kodu yorumlamak gerekirse "Program ilk;" satırı
programın isminin ilk olduğunu bildirir."begin" komutu
programın başlangıcını "end" komutu ise programın sonunu
belirtir.
Pascal ile yazılabilecek en basit program budur.
Genelde bir
programlama dili öğrenilirken ilk yazılan aktif program ekrana
"Merhaba Dünya" yazdıran programdır.Bu o kadar klasikleşmiştir
ki neredeyse bir standart haline gelmiştir.Bende bu kuralı bozmak
istemiyorum.İşte "Merhaba Dünya" programının kodları...
Program merhaba;
begin
write ('Merhaba Dunya');
end.
Derleyip çalıştırın sonucu göreceksiniz.Burada write komutu
parantez ve tırnak işaretleri arasındaki stringi(sayı olmayan-alfanümerik)
yazdırmaya yarar.Bu da aynı sonucu veren fakat kodu farklı olan bir
program.
Program merhaba2;
begin
write ('Merhaba ');
write ('Dunya');
end.
Gördüğünüz gibi tırnak işaretleri içindeki boşlukta programa
yansıyor.İsterseniz o boşluğu kaldırıp programı derlemeyi
deneyin.Merhaba ve Dunya kelimelerinin bitişik yazıldığını
göreceksiniz."write" komutu tek satıra yazı yazmak için
kullanılır."writeln" komutu ise stringi yazıp imleci bir alt
satıra atlatır.Aşağıdaki örneği inceleyin.
Program merhaba3;
begin
writeln('Merhaba Dunya');
writeln('Merhaba Mars');
writeln('Merhaba Saturn');
end.
"readln" komutu kullanıcının programa girdi girmesine izin
verir.Girdi girişi Enter tuşuyla sonlandırılır.Bu girdi bir
değişkene atanabilir yada hiçbirşey yapmadan kullanıcının Enter
tuşuna basması beklenebilir.Aşağıdaki örneği incleyin.
Program readln1;
begin
writeln('Programi sonlandirmak icin Enter tusuna basiniz.');
readln;
end.
|