|
ozgurnaci
|
 |
« Yanıtla #1 : 09 Mayıs 2008, 18:39:26 » |
|
FORTrAN TARİHÇE
PROGRAMLAMA DILLERI Programlama dilleri iki ana bolumde toplanabilira )Makinaya yonelmis diller ya da makina dilleri,(b )probleme yonelmis diller ve bunlara iliskin programlama sistemleri.
Makine Dili ile Kodlama
Problem once,bilgisayarin ozellikleri ve mevcut komutlarla yapabilecegi islemler dizisi biciminde ifade edilir;sonra programci tarafindan bu, bilgisayarin makina dilinde yazilir.Elde edilen makina dilindeki program gerekli veri ile birlikte,bilgisayarca dogrudan dogruya icra edilebilir ve aranan sonuclar bulunur.Ancak makina dili ile programlamada bazi onemli guclukler ortaya cikar.Butun komutlarin makina dili ile kodlanmasi; komutlarin makina tarafindan icra olunacak sirada yazilmasi ve yanlislikla ya da baska bir nedenle bazi komutlar atlanmissa, bundan sonraki butun komutlarin araya eklenenler icin otelenmesi ve adreslemenin yenilenmesi zorunlulugu;butun lojik ve program duzenlemenin programci tarafindan yapilmasi;programcinin kullandigi bilgisayari cok iyi anlamis olma geregi bu gucluklere orneklerdir.
Programala Sistemleri
Programala sistemleri genel olarak bir dil ve bir birlestirici ya da derleyici programdan olusur.Programlama dili,programci tarafindan kolayca ogrenilebilecek ve yazilabilcek,bilgi islem sisteminin yapim ozellikleri ve yapilacak islemler arasinda uzlasma saglayabilecek bir bicimde olmalidir.Bu dilin,diger herhangi bir dildeki gibi, dilbilgisi,noktalama ve yazma kurallari olacagi aciktir.
Bir bilgisayarda programlama sistemlerinin bulunmasi makina dilinde programlamanin gucluklerini onemli olcude azaltir.Birlestirici program ve derleyiciler,programlarin makina dili disinda probleme yonelmis bir dilde hazirlanabilmesi olanagini saglar.Programlama dilinde makina diline ceviriyi,birlestirici ya da derleyici araciligi ile,bilgisayarin kendisi yapar. Programlama sisteminin dili makinaya ya da programa yonelmis olabilir.
Sembolik Programalama Sistemleri
Sembolik programlama sistemleri,programciyi makina dili ile kodlamanin gucluklerinden buyuk olcude kurtarir;fakat belli bir bilgisayara gore hazirlandiklarindan ve sistemin programlama dilinin kismen makinaya yonelik olmasindan dolayi makina dili duzeyinde calisan ,ogrenilmeleri oldukca uzun suren sistemlerdir ve her bilgisayar icin farklidir,diger bir deyisle makinaya baglidir;her bilgisayarda ayni dil kullanilamaz.
Probleme Yonelmis Diller ve Derleyiciler
FORTRAN,COBOL,ALGOL, vb. bu tur programalama sistemlerine bazi orneklerdir.Bu tur programlama sistemleri ile calismada,temel programin derleyici program araciligi ile bilgisayarca,belli kurallara uyarak makima dili programina cevrilmesine derleme denir.Derleme sirasinda rastlanan dil kurallarina aykiri olan hatalar ozel hata mesajlari ile bilgisayarca programciya bildirilir. Probleme yonelmis dillerin en onemlilerinden biri,bilimsel ve muhendislik arastirma ve uygulamalari icin gelistirilen ve en yaygin olarak kullanilan FORTRAN dilidir.FORTRAN adi,formul cevirisi anlamindaki, ingilizce "FORmula TRANslation" kelimelerinin ilk hecelerinden olusur.FORTRAN dili sayisal hesapla ilgili herhangi bir problemin kolaylikla ifade edilebilmesini saglayacak bicimde dusunulmustur.Komutlar ya da deyimler herhangi bir gucluk olmaksizin anlasilabilir ve yorumlanabilir.Bazi deyimler problemin matematiksel bagintilarina cok benzer. FORTRAN programlama sistemi 1954 yilinda J.W Backus tarafindan onerilmis ve ilk kez 1957 yili baslarinda IBM 704 Bilgi Islem Sisteminde kullanilmistir.1960 yilinda BURROUGHS kendi bilgisayarlari icin bir FORTRAN derleyicisi hazirlamistir.Gunumuze kadar cesitli FORTRAN programlama sistemleri gelistirilmis ve kullanilmistir.FORTRANII,FORTRANII-D,FORTRANIV bunlarin en onemlilerine orneklerdir.Genel olarak,bir sonraki islemin bir oncekine gore daha gelismis oldugu ve programlamada daha genis olanaklar sagladigi soylenebilir.
FORTRANA GİRİŞ
Program bir komutlar ( deyimler ) dizisidir ve erhangi bir problemin çözümü için kullanılan hesap düzeninitanımıdır . Çözümde bir bilgisayardan yararlanılacaksa , programın bilgisayar özellikerine uygun ibr programlama dili ile yazılması gerekir . Bilgisayar , programdaki komutları aksi belirtilmedikçe , yazıldığı sırada yerine getirir . Gereğinde program bir komutlar kümesinin belli düzende tekrarlanmasını yada duruma göre belirlidallanmaları sağlayacak özel komutlarda içerebilir ; böylece programı kısaltmak mümkün olur . FORTRAN programlama dili oldukça basittir ve normal matematik diline çok yakındır. FPRTRAN sistemi , FORTRAN dili ve FORTRAN derleyicisinden oluşur .
Sayılar
Bİlimsel , mühendislik araştırmaları ve uygulamada yapılan hesapların çoğunda değişik büyüklükte sayılarla çalışılır . Güvenilir sonuçlar elde edilmesi için bu hesaplarda mümkün olduğu kadar çok anlamlı rakamı olan sayılarla çalışılması gerekir . Sabit kelime uzunluklu ve değişken kelime uzunluklu bilgisayarda bir sayının gösterilmesi için bellekte sabit sayıda pozisyon ayrılır . Bu sabit pozisyon sayısına incelik ( prezisyon ) denir . Sayılar ikiye ayrılır : tam sayılar , gerçel sayılar . Tam sayılar desimal noktası olmayan sayılardır . Bunlarn büyüklük sınırlarıbilgisayar özelliklerine bağlıdır . Gerçel sayılar desimal noktalı ondalık sayılardır . Gerçel sayıların bilgisayar belleğinde saklanmasından önce bilgisayarca sayı düzenlenir . Diğer bir deyişle desimal nokta sayının sıfırdan farklı en önemli rakamın soluna kaydırılır ve gerekli düzeltme 10 un üsleri şeklinde sayının yanına yazılır . Düzenlenmiş sayının kesirli kısmımantis , desimal noktanın kaydırıldığı hane sayısına üs denir . Gerçel sayıların büyüklük sınırları da bilgisayar özelliklerine bağlıdır
Fortran Aritmetiği
Bilgisayarla yapılan hesaplarda işleme giren büyüklüklerin tamsayı yada gerçel sayı olması , işlemlerin yapılışı ve sonuçlar yönünden büyük farklılıklar gösterir . Tamsayı aritmetiği , tamsayılarla yapılan işlemler anlamındadır ; her işlemin sonucu da tamsayı olacak biçimde kesilir , yuvarlatma yapılmaz . Kesme işlemi öncelik sırasına göre yapılan bütün işlemler için söz konusudur . Bu nedenle bu tür aritmetik işlemlerin yapılış sırası ve parantezler çok önemlidir . Tamsayılar programlarda eleman numarası , indis, vb. amaçlar için kullanılır . Aritmetik işlemler çoğunlukla gerçel sayılarla yapıldığından tamsayı artimetiğinin bu özelliği bir sakınca değildir . Gerçel sayı aritmetiği , gerçel sayılarla yapılan işlemler anlamındadır . Burada kesirler prezisyon hanesi kadar rakamla gösterilir ; diğer hanerler bilgisayar özellikerline göre ya kesilir , ya da yuvarlatılır . Kesme hataları ve diğer sayısal hesap yöntemleri konusudur .
Fortran Alfabesi
FORTRAN alfabesi 10 nümerik , 26 alfabetik ve 13 özel karakterden oluşur .
KARAKTERLER SİMGE / ANLAM Nümerik 0 1 2 3 4 5 6 7 8 9 Alfabetik A B C D E F G H I J K L M N O P R S T U V W Y Z Özel boşluk boşluk bırakma = yerine koyma + artı - eksi * çarpı / bölü ( aç parantez ) kapa parantez . nokta , virgül ' apotrof " tırnak & ve işareti
Fortran deyimleri
Bir FORTRAN temel programı bir takım deyimlerden oluşur . Deyimle programın hesap düzeni ile ilgili olarak , bilgisayara bilgi verilmesini , işlemlerin yapılmasını ve icrasını , gerekli kararların verilmesini , sonuçların dış ortama alınmasını sağlar Deyimerle bağlantı kurabilmek için , deyimler numaralanabilir . İcra sırası yönünden deyim numaralarının sırasının bir önemi yoktur . Deyi numaraları sadece hesap düzeninin gereği olarak bu deyimlerle dallanabilme olanağı sağlar ; iki deyime aynı numara verilemez .
Fortran İsimleri
Fortran dilinde dilinde indissiz ve indisli değişkenlere , FORTRAN arşiv fonksiyonların , aritmetik deyim fonksiyonlarına , FUNCTİON altprogramlama isimle verilir FORTRAN isimerl birincisi nümerik olmayan 1 - 6 alfabetik ya da nümerik karakterden oluşur ; özelkarakterler kullanılamaz . Aynı isim birkaç elemana verilemez . Komutlar için ayrılan özel kelimeler FORTRAN özel ismi olarak kullanılamaz DEYİMLER VE SAYISI GÖREVİ ADLARI Aritmetik deyimler yapılacak işlemleridenetler değişken = ifade Giriş Çıkış deyimleri Dış ortamla bilgisayararasında bilgi alışverişi sağlar READ WRITE FIND FORMAT REWİND BACKSPACE ENDFILE REDREAD NAMELIST
Yönetinm deyimleri Programdakideyimlerin icra sırasını yönetir Şartsız GO Hesaplanmış GO TO Atanmış GO TO Aritmetik IF Mantıksal IF DO CONTINUE pause STOP END Bildiri deyimleri Derleyiciye bilgi verir DIMMENSION COMMON EQUIVALANCE IMPLICIT Tip deyimi EXTERNAL DATA Altprogram deyimleri Alt programları tanımlamaya ve kullanmaya yarar FUNCTİON SUBROUTİNE CALL RETURN ENTRY BLOCK DATA
FORTRAN-KONTROL DEYiMLERi
*Bu bölümde bulabilecekleriniz?
1.CALL deyimi
2.CONTINUE deyimi
3.DO deyimi
4.END deyimi
5.GO TO deyimleri
6.IF deyimleri
7.PAUSE deyimi
8.RETURN deyimi
9.STOP deyimi
*CALL DEYIMI
-Kontrolu bir subroutine altprogramina aktarir,
-Gerçek argümanlarin ifadelerini degerlendirir,
-Gerçek argümanlarla yapay argümanlari belirler.
Genel formati:CALL ad [([arg1[,arg2>[,arg3>....> )>
Burada ad,bir subroutine altprograminin veya bir ENTRY(giris ) noktasinin adidir.Bu ad,FUNCTION,
SUBROUTINE ve ENTRY deyimindeki yapma bir argümanin adi olabilir.
arg, subroutine altprogrami tarafindan istenen gerçek bir argümanin adidir.Bu argüman bir degisken,
bir sabite,dizi elemani,dizi adi,aritmetik,lojik veya karakter ifade olabilir.Ayrica bir FUNCTION,
SUBROUTINE adi olabilir veya CALL deyiminin bulundugu program biriminde bulunan ifa
edilebilir bir deyimin deyim numarasinin basina (* ) gelerek bir argüman olusturulabilir.
Eger gerçek argüman yoksa parantez kullanilmaz.CALL deyimi kontrolu subroutine altprogramina aktarir ve
CALL deyiminde bulunan gerçek argümanlarin degerleri yerine yapay degiskenleri getirir.
*CONTINUE DEYIMI
Continue deyimi ifa edilebilir bir kontrol deyimidir,fakat ifanin sirasina etki etmez.Bu deyim DO döngüsünün sonunu
belirlemek amaciyla veya programda bir etiket görevi için kullanilir.
Genel formati:CONTINUE
Continue deyimi ifanin sirasina etki etmediginden kaynak programin herhangi bir yerinde kullanilabilir.Genellikle DO
döngüsünün son deyimi,kosulsuz veya assign'e bagli GO TO,blok IF, ELSE IF, ELSE , END IF, STOP, RETURN , END,
aritmetik IF,baska bir DO deyimi veya lojik IF deyimi olamaz.Bundan kaçinmak için CONTINUE deyimi kullanilir.
Örnek:Asagidaki program parçasindaki ilk CONTINUE deyimi etiket amaciyla ,ikinci CONTINUE deyimi ise DO döngüsünün sonunu belirtmek için kullanilmistir. IF (A-B )15,20,15
15 X=A+B**2
20 CONTINUE
.
.
DO 40 I=1,K
KN(I )=X+I
40 CONTINUE
.
.
*DO DEYIMI
DO deyimi kendisinden sonra gelen ve belirlenen bir deyime kadar olan tüm deyimleri tekrar tekrar ifa edilmesini saglar.Bu deyimler <<DO döngüsü>>olarak
adlandirilir.Genel formati:Araligin sonu ffffDO degiskeniyyyy Baslangiç degerigggg Son deger rrrrArtis
kkkkjjjjjjjjjjjjjjkkkkkDOuu d1[,>jjjjjjjjjjjjjjjjjjj illllllllllç= iiiiiiiiiiim1 lllllllll,+kkk m2 ssssss[,m3>
Burada d1,DO deyiminin bulundugu programda ve DO deyiminden sonra gelen ifa edilebilen bir deyimin numarasidir.
d1'den sonra gelen virgül seçimliktir.i, DO degiskeni olarak adlandirilan bu degisken ,bir tamsayi,gerçel veya çift duyarlikli bir degiskendir(dizi elemani olamaz )
m1,m2,m3 bir tamsayi,gerçel veya çift duyarlikli aritmetik ifadedir.m1,m2 ve m3 ifadelerinin degerleri ,eger gerekirse ,DO degiskeni i'nin tipine dönüstürülür.
m3 seçimliktir ve hiçbir zaman sifir olamaz.Eger m3 belirtilmezse degeri 1 olarak alinir ve m3'den sonra virgül konmaz.
Asagidaki kurallarin geçerli olmasi halinde DO döngüsü içindeki deyimler ifa edilir.
a )m1,m2'den küçük veya esit ve m3 sifirdan büyükse
b )m1,m2'den büyük veya esit ve m3 sifirdan küçükse
Eger m1,m2 ve m3 arasindaki iliskilerden biri dogruysa ,ilk önce DO döngüsü içindeki ilk deyim ifa edilir.Bu anda i'nin baslangiç degeri m1' dir.Her bir
ardisik iterasyonda i'nin degeri m3 kadar artirilir.Iterasyon sayisi MAX(INT((m2-m1+m3 )/m3 ),0 ) oluncaya kadar döngü devam eder.
ÖrnekO 5 IX=1,12,4 deyimi ile döngü, (m2-m1+m3 )/m3=(12-1+4 )/4=15/4=3,75
INT(3,75 )=3
MAX(3,0 )=3 kez tekrarlanir.
ffffEger ilk anda i'nin degeri m2'yi geçerse iterasyon durur ve kontrol d1'den sonraki deyime geçer.DO'nun tamamlanmasindan sonra DO degiskeni i'nin son degeri
m2'yi geçer.
Eger (a ) ve (b )'deki iliskilerden biri dogru degilse kontrol dogrudan d1'den sonraki deyime geçer.
DO degiskeni DO döngüsü içinde yeniden tanimlanamaz.Bununla birlikte , m1,m2 veya m3'ün DO döngüsü içindeki degerleri ,iterasyon sayisini degistirmeksizin
yeniden tanimlanabilir.
Dogru DO deyimleri: DO 50,INT=1,5,2
DO 60X=BAS,BIT,ART
DO 3,A=20,3,-3
DATA deyiminde üstü kapali belirtilen DO:
Bir data deyimindeki üstü kapali belirtilen DO listesinin genel formati: (dliste,i=m1,m2[,m3> )
Burada dliste, dizi eleman adlarinin ve üstü kapali belirtilen DO'larin listesidir.i,bir tamsayi degisken adi olup üstü kapali belirtilen DO degiskeni olarak adlandirilir.
m1,m2 ve m3 degerlerinin herbiri bir tamsayi sabite veya bir tamsayi sabitenin adidir.Ayrica tamsayi sabite adlari veya tamsayi sabitelerden olusan bir ifade olabilir.
m3 seçimliktir,eger kullanilmazsa 1 olarak kabul edilir ve m3'den önceki virgül kullanilmaz.
Üstü kapali belirtilen DO döngüsünün tamamlanmasindan sonra DO degiskeni tanimsizdur ve bir DATA deyiminde ,atama deyiminde veya READ deyiminde
degeri belirtilinceye kadar kullanilmaz.
Örnek:15 boyutlu bir matrisin olusturulmasi.
DIMENSION A(15,15 )
DATA ((A(I,J ),J=1,15 ), I=1,15 )/225*0./
DATA (A(I,I ),I=1,15 )/15*1./
Bir Giris Çikis deyimindeki üstü kapali belirtilen DO:
Bir giris çikis deyimindeki listede üstü kapali belirtilen DO döngüsü kullaniliyorsa, bu döngü ile belirlenen degerler bir dis ortamdan bellege veya bellekten bir dis
ortama aktarilacaktir.Giris/çikis deyimindeki üstü kapali belirtilen DO deyiminin genel formati:
(dliste,i=m1,m2[,m3> )
Burada dliste, bir giris/çikis listesidir. i, tamsayi,gerçel veya çift duyarlikli degisken adi olup DO degiskeni olarak adlandirilir.
m1,m2 ve m3 tamsayi, gerçel veya çift duyarlikli aritmetik ifadedir. m1,m2 ve m3 ifadelerinin degerleri DO degiskeni i'nin tipine dönüstürülür.
m3 seçimliktir ve sifir degerini alamaz,kullanilmazsa 1 olarak kabul edilir ve m3'den önceki virgül de yazilmaz.
Örnek: Farzedelimki A bir degisken, B,C ve D ise tek boyutlu diziler olsun. B,C ve D'nin 20 elemanli oldugunu kabul edersek,
READ(UNIT=5 )A,B,(C(I ),I=1,4 ),D(4 ) deyimi ile ilk deger A'ya,sonraki 20 deger B'ye ,daha sonraki dört deger C'nin ilk dört degeri olarak C'ye ve son deger de D'nin 4'üncü elemanina okunur veya WRITE(UNIT=9 )A,B,(C(I ),I=1,4 ),D(4 ) deyimi ile önce A'nin degeri,sonra B'nin 20 degeri,daha sonra C'nin ilk dört degeri ve son olarak da D'nin 4'üncü degeri yazilir.
rrreEger gerekiyorsa üstü kapali belirtilen DO'lar bir arada kullanilabilir.Mesela 10*20'lik bir A dizisi ile 10 boyutlu bir B dizisini göz önüne alalim.
A'nin herbir satiri okunduktan sonra ,B'nin bir elemanini okutmak istiyorsak,asagidaki deyimi kullanabiliriz:
READ(UNIT=5 ) ((A(I,J ), J=1,20 ), B(I ), I=1,10 )
Benzer sekilde A'nin herbir satirini yazdiktan sonra B'nin bir elemanini yazdirmak için asagidaki deyimi kullaniriz:
WRITE(UNIT=9 ) ((A(I,J ), J=1,20 ), B(I ), I=1,10 )
DO DEYIMINE ILISKIN KURALLAR:
1.DO döngüsü içinde herhangi bir fortran deyimi kullanilabilir.Fakat döngünün son deyimi kosulsuz veya assign'e bagli GO TO, blok IF, ELSE IF, ELSE, END IF,
STOP,RETURN ,END ,aritmetik IF,lojik IF veya bir baska DO deyimi olamaz.Bundan kaçinmak için genelde DO döngüsünün son deyimi olarak CONTINUE
deyimi kullanilir.
2.Bir DO alani içinde baska DO döngüleri olabilir.Ancak içteki DO alaninin tamami distaki DO alaninin içinde kalmalidir. Içteki DO ile distaki DO alanlarinin bitisi
ayni deyime rastlayabilir.
DO 10ffI = 1,NggggggggggggggggggggggggggDO 100 K = 1,N,2
DO 15 hJ = 1,Mrerrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr DO 105 L = 1,M,3
....... ......hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh ........... .........
....... ......s..ssssssssssssssssssssssssssssssss s ........... ..........
15 CONTINUE ..........................................100 CONTINUE
10 CONTINUE ........................................o105 CONTINUE
dogru oldugu halde ...................................... yanlistir.
3.DO alani içinde DO nun indisleyici parametreleri olan i , m1 , m2 ve m3 ü degistiren, yeniden tanimlayan bir deyim kullanilamaz.Mesela asagidaki program birimindeki M = I + 1 deyimi hatalidir.
........ .........
M = 2
DO 5. I = M,5
M = I + 1
X = A(I )*B(M )
5 CONTINUE
........ ............
4.DO alani içinden bu alanin disina atlamak mümkündür. Sapma aninda DO degiskeninin degeri son aldigi degerde kalir.Fakat DO alani içine bu alanin disindan girmek mümkün degildir.Çünkü bu durumda DO degiskeninin degeri belirlenemez.
*END DEYIMI
Bir programin sonunu tanimlayan END deyimi anaprogramin veya function, subroutine veya blok data altprogramlarinin ifasini durdurur.
Genel formati: END
END deyimine numara verilebilir.Bu deyim bir program biriminin son deyimi olup, programdaki herhangi bir deyimden önce gelemez.Eger anaprogramda ise,
anaprogramin ifasini durdurur, altprogramda ise RETURN deyimi gibi islem görür.
END deyimi ifa edildigi anda ,altprogramdaki yapma argümanlar ile gerçek argümanlar arasindakibaglanti kesilir.Altprogramdaki tüm birimler asagidakiler hariç
olmak üzere tanimsiz olur. -SAVE deyiminde tanimlanan birimler,
-Etiketsiz COMMON'daki birimler,
-Baslangiçta tanimlanan birimlerden yeniden deger almamis veya tanimsiz olmamis olanlar,
-Hiç olmazsa baska bir program biriminde de görünen bir altprogramdaki etiketli COMMON bloklar.
Function altprogramindaki END deyimi:
Tüm function altprogramlari END deyimi ile bitmelidir.Ayrica bu altprogramlarda RETURN deyimi de bulunabilir.END deyimi fiziksel olarak altprogramin sonunu belirler.
Subroutine altprogramindaki END deyimi:
Tüm subroutine altprogramlari END deyimi ile bitmelidir.Ayrica RETURN deyimleri de bulunabilir(altprogramin farkli yerlerinde ).END deyimi altprogramin fiziksel olarak bittigini belirler.Eger bir subroutine altprogramin ifasi esnasinda END deyimine ulasilirsa ,bu deyim RETURN deyimi gibi ifa edilir.
*GO TO DEYIMLERI
GO TO deyimleri kontrolu programdaki ifa edilebilen bir deyime aktarir.Üç tür GO TO deyimi vardir:
-Assign'a bagli GO TO deyimi,
-Hesaplanmis GO TO deyimi,
-Kosulsuz GO TO deyimi.
Assign'a bagli GO TO deyimini görmeden , bir atama deyimi olan ASSIGN deyimini inceleyelim.
Assign deyimi: ASSIGN deyimi tamsayi bir degiskene bir sayi atar.
Genel formati: ASSIGN d TO i
Burada d, ASSIGN deyimini içinde bulunduran bir program birimindeki ifa edilebilen bir deyimin veya bir FORMAT deyiminin numarasidir.
i, 4 bayt uzunlugunda olan bir tamsayi degiskenin (bir dizi elemani olamaz ) adidir. Bu degisken deyim numarasi d'ye atanmaktadir.
Deyim numarasi ASSIGN deyiminin bulundugu program birimindeki bir deyimin numarasi olmalidir.ASSIGN deyiminin ifasi , bir degiskenin bir deyim numarasi
tarafindan tanimlanmasi ile olur.Bu degisken ,Assign'a bagli GO TO deyiminde veya bir giris/çikis deyiminde belirlenen bir format deyiminde verilen deyim
numarasi ile tanimlanabilmelidir.Bir deyim numarasi ile tanimlanan bu tamsayi degisken ,ayni veya farkli deyim numaralari ile veya bir tamsayi deger ile yeniden
tanimlanabilmelidir. Eger d ifa edilebilen bir deyim numarasi ise i degiskeni Assign'a bagli bir GO TO deyiminde kullanilabilir.
Eger d bir FORMAT deyiminin numarasi ise i degiskeni format kontrolu bir, READ, WRITE veya PRINT deyimindeki format tanimlayicisi olarak kullanilmalidir.
Assign'a bagli GO TO deyimi:
Assign'a bagli GO TO deyimi , i nin o andaki degerine bagli olarak kontrolu d1 , d2 , d3 ,..... ile numaralandirilmis deyime saptirir.Örnegin i nin degeri d2 ise
GO TO ... deyimi ile d2 nolu deyime sapilir.
Genel formati: GO TO i [ [, >(d1 [ , d2>[ , d3 >... ) >
Burada i , bir ASSIGN deyimi ile bir deyim numarasi atanan 4 bayt uzunlugundaki bir tamsayi degiskendir(bir dizi lemani olamaz ).
d assign'a bagli GO TO deyimini içinde bulunduran program birimindeki ifa edilebilen bir deyimin numarasidir.
ddd( d1 , d2 , .... ) ile gösterilen numaralari listesini kullanmak zorunlu degildir.Eger bu liste kullanilmazsa i den sonra gelen virgül de kullanilmaz.
Ayrica bu liste kullanilsa da i den sonraki virgül kullanilmayabilir.Assign'a bagli GO TO deyiminin kullanildigi program biriminde bulunan ve i degiskenine atanan
deyim numarasi listedeki deyim numaralarindan biri olmalidir.Deyim numarasi listede birden çok görülebilir.Yani , d1 = dj = .... olabilir.
Mesela, GO TO I , (10,25,50 ) deyiminde :Eger tamsayi degisken I'ya o anda t atanan deger deyim numarasi 50 ise GO TO.... deyiminden sonra 50 nolu deyime sapilir; Eger I'ya atanan deger deyim numarasi 10 ise bir sonraki adimda 10 nolu deyime sapilir.Mesela,
ASSIGN 10 TO KOD
GO TO KOD , (10 , 20 ,30 )
.............
10.. A = B
............
20.. A = C
...........
30.. A = D
.............
program biriminde GO TO deyiminden sonra 10 nolu deyime sapilir ve B' nin degeri A' ya tasinir.
Hesaplanmis ( Computed ) GO TO deyimi :
Hesaplanmis GO TO deyimi , m nin o andaki degeri 1,2,3,.... degerlerine bagli olarak kontrolu d1 , d2 , d3 ,.... numarali deyimlerden birine aktarir.
Genel formati: GO TO ( d1 , [ , d2> [ ,d3 >... ) [ , > m
Burada d , hesaplanmis GO TO deyiminin içinde bulundugu programdaki ifa edilebilen bir deyimin numarasidir. Ayni deyim numarasi parantez içinde birden fazla kullanilabilir. m , tamsayi bir ifadedir. m den önceki virgül seçimliktir.Eger m nin degeri , n parantez içindeki deyim numaralarinin sayisi olmak üzere , 1 < m < n araliginin disinda ise hesaplanmis GO TO deyiminden sonraki deyim ifa edilir.
Örnek : 5 .GO TO ( 1,2,3,2 ) , IX
1. A = A + 1.0
...GO TO 3
2 .A = A + 2.0
3 .CONTINUE
Kosulsuz GO TO deyimi :
Kosulsuz GO TO deyimi kontrolu deyim numarasi belirlenen deyime aktarir. Bu GO TO deyiminin her ifa edilisinde kontrol ayni deyime aktarilir.
Genel formati: GO TO d
Burada d , kosulsuz GO TO deyiminin içinde bulundugu programdaki ifa edilebilen bir deyimin numarasidir.Bu deyimden sonra gelen ifa edilebilir herhangi bir deyimin , bir deyim numarasi olmasi gerekir, aksi halde bu deyim isleme konmaz veya ifa edilemez.
Örnek : ........
....GO TO 1
2. B = A * 200.0
..........
1. A = B + 10.0
...........
* IF DEYIMLERI
IF deyimleri verilen kosula bagli olarak ortaya çikan farkli durumlarda yapilacak islemi belirler.Üç tür IF deyimi vardir :
-Aritmetik IF
-Blok IF ; END IF , ELSE , ELSE IF
-Lojik IF
Aritmetik IF deyimi :
Aritmetik IF deyimi , aritmetik ifade ( m ) nin degeri sifirdan küçük, sifira esit veya sifirdan büyük oldugu zaman kontrolu d1 , d2 veya d3 numarali deyimlere aktarir. Ayni IF deyiminde bir deyim numarasi birden çok kullanilabilir.
Genel formati: IF ( m ) d1, d2 , d3
Burada m, kompleks tipte olmayan herhangi bir aritmetik ifadedir. d1 , d2 ve d3 ; IF deyiminin de içinde bulundugu programdaki ifa edilebilen bir deyimin numarasidir.Bu deyimden sonra gelen ifa edilebilir herhangi bir deyimin bir deyim numarasi olmasi gerekir; aksi halde bu deyim asla isleme konmaz veya ifa edilemez.
Blok IF deyimi :
Blok IF deyimi END IF deyimi ile birlikte kullanilir ve gerektiginde ELSE IF ve ELSE deyimleri ile de kullanilabilir.
Genel formati: IF ( m ) THEN
Burada m, herhangi bir lojik ifadedir. Blok IF deyimi ile ilgili olan iki terim vardir .Bunlar IF-level ve IF-block terimleridir.
IF-Level : Bir programdaki IF-level'larin sayisi blok IF deyimi ile END IF'den olusan deyimlerin sayisi ile hesaplanir.
IF-Block : Bir IF-block, blok IF deyiminden sonraki ilk deyim ile baslar son ELSE IF, ELSE veya END IF deyiminden önceki deyimde biter.Eger IF-block'un içinde ifa edilebilen bir de yim yok ise IF block bostur denir.
Kontrol bir IF blokunun içinden baska bir IF blokunun içine aktarilamaz.Bir blok IF deyiminin ifasinda önce m ifadesi degerlendirilir. Eger m nin degeri dogru(true ) ise IF-block'undaki ilk deyimden baslayarak sirasiyla deyimler ifa edilir.Eger m nin dogru ve IF-block bos ise kontrol bir sonraki END IF deyimine(ayni IF-level'inda olan ) aktarilir.Eger m nin degeri yanlis(false ) ise kontrol ayni IF-level'inda olan bir sonraki ELSE IF, ELSE veya END IF deyimlerine aktarilir.Bir blok IF deyimi DO döngüsü ile kesilemez, yani içiçe giremez.
END IF deyimi :
END IF deyimi bir IF-block'unu bitirir .Ifa sirasini degistirmez.
Genel formati: END IF
Her bir blok IF deyimi için ayni programda bir END IF deyimi bulunmalidir. Bu END IF deyimi blok IF deyiminin son deyimidir ve ifa sirasinaetki etmez.END IF deyimi DO döngüsü içinde olmamalidir.
Örnek : IF ( A . GT . B ) THEN
...........
END IF
ELSE deyimi :
Eger bir önceki blok IF veya ELSE IF kosulu yanlis olarak degerlendirildi ise ELSE deyimi ifa edilir.Normal ifa sirasini degistirmez.
Genel formati: ELSE
Bir ELSE-block ayni IF-level'indaki son END IF deyimi ile ELSE deyimi arsindaki ifa edilebilir deyimlerden olusur.Burada ELSE deyimi ile END IF deyimi ELSE-block'a dahil degildir.Bir ELSE-block bos olabilir.Bir IF-block'unda yalniz bir ELSE olabilir. Bir ELSE block'unun içinden bir baska ELSE block'unun içine geçilemez.ELSE deyimi DO döngüsü içinde kullanilamaz.
Örnek: IF ( A . EQ . B ) THEN
...........
ELSE
...........
END IF
ELSE IF deyimi :
Eger bir önceki bllok IF kosulu yanlis olarak degerlendiriliyor ise ELSE IF deyimi ifa edilir.
Genel formati: ELSE IF ( m ) THEN
Burada m, herhangi bir lojik ifadedir. Bir ELSE IF-block ayni IF-level'indaki son ELSE IF , ELSE veya END IF deyimi ile ELSE IF deyimi arasindaki ifa edilebilir deyimlerden olusur. Burada ELSE IF deyimi deyimi block'a dahil degildir.ELSE IF-block'u bos olabilir. Eger lojik ifade m nin degeri dogru ise ELSE IF-block'unun ilk deyimi ile normal ifa iskemleri gerçeklestirilir. Eger lojik ifade m dogru ve ELSE IF-block bos ise kontrol ayni IF-level'indaki son END IF deyimine aktarilir. Eger lojik ifade m yanlis ise kontrol ayni IF-lvel'indaki son ELSE IF, ELSE veya END IF deyimine aktarilir.
Kontrol bir ELSE IF-block'undan baska ELSE IF-block'una aktarilamaz. ELSE IF deyiminin deyim numarasi ile bir baska deyime geçilemez. Bir END IF deyimi DO döngüsü içinde kullanilamaz.
Örnek 1 : IF ( I . LT . J ) THEN
........
ELSE IF ( I . GT . J ) THEN
..........
END IF
Örnek 2 : IF ( I . LT . J ) THEN
..........
ELSE IF ( I . GT . J ) THEN
...........
ELSE
END IF
Örnek 3 : Asagidaki program sayisal notlari alfabetik notlara dönüstürmek için hazirlanmis basit bir uygulamadir. Blok IF deyimi kullanilarak hazirlanan bu program baska sekillerde de yazilabilir.
.....CHARACTER*1 N1/'A' / , N2/'B' /, N3/ 'C'/ ,N4/ 'D'/
1.. READ ( 5,5,END = 90 ) NO, NOT
5.. FORMAT ( I5,35X,I3 )
.....IF ( NOT.LE.25 ) THEN
.....WRITE ( 6,30 )NO , N4
.....ELSE IF ( NOT . LE .50 ) THEN
.....WRITE ( 6,30 )NO , N3
......ELSE IF ( NOT.LE.75 ) THEN
......WRITE ( 6,30 )NO , N2
......ELSE
......WRITE ( 6,30 )NO , N1
.....END IF
30 .FORMAT ( 5X,I5, 'NOT = ' , A1 )
......GO TO 1
90 . STOP
...... END
Lojik IF Deyimi :
Lojik IF deyimi bir lojik ifadeyi degerlendirir ve ifadenin degerinin dogru veya yanlis olmasina göre ya bir deyimi ifa eder veya lojik IF deyiminin altindaki ifadeyi gerçeklestirir.
Genel formati: IF ( m ) d
Burada m , herhangi bir lojik ifadedir. d , ifa edilebilir herhangi bir deyimdir. Bu deyim DO deyimi , baska bir lojik IF deyimi, END deyimi , blok IF , ELSE IF , ELSE veya END IF deyimi ve ayrica TRACE ON, TRACE OFF, INCLUDE veya DISPLAY deyimi olamaz. d bir deyim numarasi olamaz , ama içinde deyim numarasi bulundurulabilir( GO TO 50 gibi ).
Örnek : IF ( A . LE .0 . ) GO TO 50
............X = Y + Z
............IF ( A . EQ . B ) X = 2.0*Y/Z
............A = B/C
...50.....T = U**2
...........................
*PAUSE DEYIMI
PAUSE deyimi amaç programin ifasini geçici olarak keser ve bir mesajin görünmesini saglar.
Genel formati: PAUSE [ n > ,
........................PAUSE [ 'mesaj ' >
Burada n , 1-5 basamakli bir sayi , 'mesaj' , tirnaklarla kapanan bir karakter sabitedir.Bu sabite alfanumerik veya özel karakterlerden olusur. Bu literal sabite içinde tirnak kullanilacaksa bu çift tirnakla belirtilmelidir.
Eger n veya ' mesaj ' kullaniliyorsa kesilme aninda operatöre gerekli talimat verilir.Bu duraklama esnasinda operatör gerekli islemleri yaparak kontrolu programa geçirir ve PAUSE deyiminden sonra gelen deyim veya DO döngüsünün son iterasyonu ifa edilir.
*RETURN DEYIMI
RETURN deyimi kontrolu çagiran programa aktarir. Eger RETURN deyimi anaprogramda kullaniliyorsa STOP deyiminin yaptigi isi yapar. Bu deyim ya bir function veya subroutine altprograminda kullanilmalidir.
Function altprogramindaki RETURN deyimi :
Function altprogramlari RETURN deyimini bulundurmalidir.Bu RETURN deyimi lojik olarak hesaplama sonucunu belirler ve hesaplanan fonksiyon degerinin çagrilan programa geri dönmesini saglar.
Genel formati: RETURN
RETURN deyiminin ifasi ile altprogramdaki yapma argumanlar ile gerçek argümanlar arasindaki iliski kesilir.Altprograma giren argümanlarin tümü , asagidakiler hariç tanimsiz olur.
-SAVE deyiminde belirlenen argümanlar,
-DATA ve açik tip bildirme deyiminde kullanilan argümanlar,
-Etiketsiz COMMON deyimindeki argümanlar .
Subroutine altprogramindaki RETURN deyimi :
Subroutine altprogramlari da RETURN deyimi bulundurmalidir. Bu RETURN deyimi lojik olarak hesaplama sonucunu belirler ve kontrolu çagiran programa aktarir.
Genel formati: RETURN ( m )
Burada m , bir tamsayi ifadedir. RETURN deyiminde m kullanilmazsa veya m nin degeri birden küçük ise veya SUBROUTINE deyiminde belirlenen ( * ) asterisklerin sayisindan fazla ise kontrol CALL deyiminden sonraki deyime aktarilir. Böylece CALL deyiminin ifasi tamamlanir.Eger , n SUBROUTINE deyimindeki asterisklerin sayisi olmak üzere 1<=m<=n ise m nin degeri yapma argüman listesindeki m inci asteriski belirler. CALL deyimindeki geri dönüs belirleyicileri ile SUBROUTINE deyimindeki asteriskler arasinda birebir bir iliski olmalidir. Bu iliskiye göre herhangi bir asteriske karsilik gelen bir geri dönüs belirleyicisi bulunur ve RETURN deyiminin ifasi ile bu deyime sapilir.RETURN deyimi ifa edildiginde altprogramdaki yapma argümanlar ile gerçek argümanlar arasindaki iliski kesilir.Altprograma giren argümanlarin tümü, yukarida belirlenen üç gruptaki argümanlar hariç olmak üzere tanimsiz olur.
RETURN m ile birlikte kullanilan bir CALL deyiminin daha iyi anlasilmasi için hesaplanmis, GO TO deyimlerinden olusan deyim grubunun incelenmesi gerekir.Mesela asagidaki CALL deyimi :
CALL SUB ( X , * 10 , Y , * 20 , Z , * 30 ) asagidaki deyimlere denktir:
CALL SUB ( X , Y , Z , I )
GO TO ( 10 , 20 , 30 ) , I
Buradaki I çagrilan altprogramda 1, 2 veya 3 degerlerini alan bir degiskendir.Yukaridaki CALL deyiminde de m nin 1 olmasi halinde 10 nolu deyime , 2 olmasi halinde 20 nolu deyime , 3 olmasi halinde 30 nolu deyime sapilir.
*STOP DEYIMI
STOP deyimi amaç programin ifasini durdurur ve istenirse amaç programin ifasi sonunda bir mesajin yazilmasini saglar.
Genel formati: STOP [ n >
........................STOP [' mesaj '>
Burada n, 1-5 basamakli bir sayidir. mesaj, iki tirnak arasina yazilan ve alfanumerik veya özel karakterlerden olusan bir karakter sabitedir. Literal olmasi halinde bu literal içindeki bir tirnak pespese gelen iki tirnakla belirtilir.
Eger STOP'tan sonra n veya ' mesaj ' kullanilirsa , STOP ile birlikte gerekli bilgi operatöre iletilir.
|