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