Sayfa: [1]   Aşağı git
  Yazdır  
Gönderen Konu: Bilgisayar Programlama Dersi ---- Fortran  (Okunma Sayısı 156 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
ozgurnaci
Administrator
Üye
*****

Karma: 41
Offline Offline

Cinsiyet: Bay
Mesaj Sayısı: 3925



WWW
« : 09 Mayıs 2008, 18:32:27 »

Fortan Nedir?


1954'de IBM tarafından üretilen IBM 704 için ilk sürümü John Backus ve ekibi tarafından geliştirilmiştir. Backus ve ekibi Kasım 1954'de "The IBM Mathematical FORmula TRANslating System: Fortran" isimli raporu yayınlamışlardır. Fortran ilk yüksek düzey programlama dili olmasa da 1950'deki yüksek programlama dilleri derlenmeden, bir çevirici(interpreter) yardımıyla çalıştırılıyordu. Bu da makine koduyla yazılan programlardan en az 10 kat daha yavaş çalışmalarına sebep oluyordu. 1950'lerdeki bilgisayarlar için hız çok şey ifade ettiğinden yazması zor da olsa makine kodu bu yüzden hala populerdi. İşte bu noktada Backus ve ekibi hem yüksek programlama dilleri gibi kolay yazılabilen hem de makine kodunda yazılmış gibi hızlı çalışan bir programlama dili sözüyle Fortran 'ı tanıttılar.

Fortran 'ı diğer yüksek düzey programlama dillerinden ayıran bir çevirici yerine bir derleyici(compiler) kullanmasıydı. Program yüksek düzey dilde yazıldıktan sonra makine koduna çevriliyor ve böylece hız kaybı engelleniyordu. Her ne kadar ilk derlenebilir yüksek düzey dilin Fortran olup olmadığı hala tartışma konusu olsa da, Fortran geniş kitleler tarafından kullanılmış ilk yüksek düzey derlenebilir dildir. İlk Fortran sürümü Fortran 0 'dır.

Sürümleri
Fortran 0 : İlk Fortran sürümünde hız için esneklikten vazgeçildi. Bu yüzden ilk sürümde program içindeki tüm değişkenlerin önceden tanımlanması gerekiyordu.

Fortran I : Ocak 1955'de başlayan çalışmalar Nisan 1957 bitirilerek Fortran I tanıtıldı. İlk sürümden farklı olarak değişken isimleri 6 karaktere kadar çıkabiliyordu, veri giriş çıkış sisteminin düzeni değiştirilmişti. Ayrıca if ve do ifadeleri içeriyordu. Daha önceleri tekrarlama işlemi için özyineleme(recursion) kullanılırken do ifadesi sayesinde fonksiyon içinde yineleme(iteration) işlemi gerçekleştirildi. Fortan I 'deki değişken isimleri I,J,K,L,M,N ile başlıyordu. Bunun sebebi de o zamanki bilgisayarların bilimsel çalışmlarında kullanıldığından ve bilim insanlarının denklemlerinde değişken olarak bu harfleri çok kullanmalarından kaynaklanıyordu.

Fortran II : 1958 baharında tanıtılan Fortran II, Fortran I 'deki bir çok hatayı düzeltiyordu. Getirdiği en önemli yenilik alt-programların ayrı ayrı derlenebilmesini sağlamaktı. Böylece alt-programda yapılan küçük bir değişim için tüm programı yeniden derlemek yerine, sadece alt-programın derlenmesi sağlandı. Bu zor olan ve genellikle makine hatası sonucu yarıda kalan derleme işlemine büyük bir kolaylık sağladı.

Fortran III : Fortan III tasarlanmasına rağmen asla geniş bir kullanım alanı bulamadı.

Fortran IV : 1960 ve 1962 yıllarında gelişmiş olan Fortran IV zamanın en geniş alanda kullanılmış programlama dili oldu. 1966'da Fortran 66 adı altında standart haline geldi(ANSI, 1966). Fortran IV büyük bakıma Fortran II 'nin gelişmiş haliydi. En önemli değişikliği mantıksal if ifadesi ve fonksiyonlara başka fonksiyonların parametre olarak aktarılabilmesiydi.

Fortran 77 : Fortran IV 'e ek olarak string işleme, mantıksal döngüler ve if ifadesine else ifadesi eklenmişti.

Fortran 90 : Fortran 77 'den epey farklı özellikleri vardır. En belirgin özelliği diziler için dinamik olarak yer ayrımının yapılabilmesidir. Ayrıca Case, Exit, Cycle, gibi yeni ifadeler eklenmiştir. Bir modul ünitesi eklenmiştir. Bu moduller Private veya Public ulaşım iznine sahip veri ve fonksiyon saklayabilmektedir. Ayrıca Fortran 77 'de olan bazı özelliklerde yeni sürümden çıkarılmıştır. Fortran 90 ile birlikte FORTRAN olan yazım şekli Fortran olarak değiştirilmiştir.

Fortran 95 : Fortran 95 ile dil hala evrimini devam ettirmektedir..
Logged


Geri sayım sen doğduğunda başladı! Eğer(9)canlı bile olsaydın en fazla(8)kez kaçabilirdin Ölümden! Bil ki(7)Düvele sultan dahi olsan yerin(6)Mekan olacak sana. En fazla(5)Metre kumaş götürebileceksin! Kapatacaksın (4)açsanda gözlerini! Bu(3)günlük dünyada Azraile (2)kat olup yalvarsanda(1)gün öleceksin! İşte, o an herşey (0) dan başlayacak.

Çünkü,ÖLÜM YENİDEN DOĞUŞTUR!
http://img223.imageshack.us/img223/2293/qaripx1pm0jcsu
ozgurnaci
Administrator
Üye
*****

Karma: 41
Offline Offline

Cinsiyet: Bay
Mesaj Sayısı: 3925



WWW
« 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.
Logged


Geri sayım sen doğduğunda başladı! Eğer(9)canlı bile olsaydın en fazla(8)kez kaçabilirdin Ölümden! Bil ki(7)Düvele sultan dahi olsan yerin(6)Mekan olacak sana. En fazla(5)Metre kumaş götürebileceksin! Kapatacaksın (4)açsanda gözlerini! Bu(3)günlük dünyada Azraile (2)kat olup yalvarsanda(1)gün öleceksin! İşte, o an herşey (0) dan başlayacak.

Çünkü,ÖLÜM YENİDEN DOĞUŞTUR!
http://img223.imageshack.us/img223/2293/qaripx1pm0jcsu
ozgurnaci
Administrator
Üye
*****

Karma: 41
Offline Offline

Cinsiyet: Bay
Mesaj Sayısı: 3925



WWW
« Yanıtla #2 : 09 Mayıs 2008, 18:41:33 »

DIZILER VE DIZI ELEMANLARI

Küme aralarinda ortak bir iliski bulunan nesneler toplulugudur.(Ornegin bir siniftaki ogrenciler ,bir ulkenin kentleri veya bir plinomun katsayilari gibi )

Eleman kümeyi olusturan nesnelere denir.

Dizi elemanlar küme icinde belli bir sira icinde ise kümeyin aldigi addir. Küme ve dizi arsindaki fark asagida gosterilmistir;



Indis elemanin dizi icindeki yerini belirleyen bilgiye denir.(Ornegin yukardaki dizide ucuncu elemanin adi Can'dir demek indise bir ornektir. ).Diziler tek boyutta tanimlanabilecegi gibi iki boyutta da tanimlanirlar.Asagidaki ornegi inceleyiniz;

dizi kullanmak ilk etapta getirdigi ifade kolayliklari ile goze carpmaktadir.Ornek olarak asaidaki polinomun degisik sekillerdeki yazilimlarini ve en sonda da dizi olarak bir tanimi verilmistir.anlayacaginiz uzere dizi kullanmak hem sadelesme hem de guncelleme saglamistir.guncelleme diyoruz cunku ifadede tek bir rakami degistirmek ,ki bu sayi 5'tir,ifadenin uzunlugu degistirmeden ifade avantaji sagliyor.

konumuz ile alakali olarak verilebilecek onemli bir ornek tipi ise siralama alogaritmasidir.

Ornegi inceleyiniz;

Tanim: Uzerinde toplama,ckarma ,carpma ve bolme islemle islemlerinin ozel olarak tanimlandigi bir ve iki boyutlu dizilere cebirde vektor ve matris adi verilir.Bu tanima iliskin,matris ve vektor kullanimina bir ornek alalim;

normalde seklinde yazilan bir uc bilinmeyenli bir denklem takimi,

katsayilar matrisi A ;

bilinmeyenler vektoru x ;

ve sabitler dizisi b ; kullanarak

A . x = b

seklinde yazilabilir.Burada seklinde tanimlanmis diziler olup , carpim islemi ozel kurallara gore yapilir.Bu sekilde yapildigi zaman denklem takimlarinin algoritmik yolla ,baska bir degisle proglamlama ve cozumu daha kolay ifade edilebilir.

Dizi kullaniminin programciya (algoritma tasarimcisina ) getirdigi anlatim kolayliklari,tum programlama dillerinde diziler ve diziler uzerinde islemleri kolaylastiran deyimlere yer verilmesine yol acmistir. Algol programlama dilinde "while ...do", Basic prog. dilinde "for ...next", Fortran prog. dilinde "Do" cevirimleri bu amaca yoneliktir.


ALT PROGRAMLAR

FUNCTION Alt programı
İlk deyimi FUNCTION deyimi olan enaz bir tek değer üretmek üzere bağımsız olarak yazılmış bir program
birimidir. Yapısı aşağıda gösterilmiştir.

FUNCTION alt program adı (argüman listesi )
...............
............... Fortran deyimleri
...............
alt program adı= aritmetik ifade
RETURN
END

Ana programdan FUNCTION alt programına geçiş, alt programa adının argümanlarla birlikte bir aritmetik ifade
de yer almasıyla sağlanır. Bu işlemi gösteren deyimi en basit biçimi ile şöyle olabilir:

değişken = alt program adı (argüman listesi )

Görüldüğü gibi alt program adı ve argüman listesi hem alt programın birinci deyiminde, hem de çağıran deyimde
yer almaktadır. Alt program adı programcı tarafında belirlenir ve alt programın yaptığı tüm işlemleri simgeler.
Ana programdan alt programa bilgi aktarımı argümanlar aracılığı ile olur. Argüman listeleri birbirinden virgülle
ayrılmış değişken ve sabitlerden oluşur. Her iki listedeki argümanların sayısı aynı olup, birbiriyle çakışan
argümanlar aynı türdedir. Alt programa geçiş sırasında çağıran deyimin argüman listesindeki değerler, alt
programın argüman listesindeki değişkenlere sıra ile verilir. Çakışan argümanların adları aynı olabilir, fakat
olmak zorunda değildir.

RETURN deyimi alt programdaki işlemlerin bittiğini gösterir. Bu deyimin işlenmesi çağıran programa (ana
program veya başka bir alt program ) geri dönülmesini sağlar. Bir FUNCTION alt programından ana programa
gönderilecek değer (sonuç ), RETURN deyiminden önce alt program adını taşıyan değişkene atanmak
zorundadır. Bu nedenledir ki, alt program adı tam sayı bir değişken ise geri gönderilen değer tamsayı, alt
program adı ondalıklı bir değişken ise geri gönderilen değer ondalıklıdır. Programcı dilerse alt programın birinci
deyiminde FUNCTION sözcüğünden önce REAL veya INTEGER yazarak alt programın türünü alt program
adına bağlı olmaksızın belirleyebilir.


SUBROUTINE Alt programı
SUBROTINE alt programları FUNCTION alt programlarına göre daha genel amaçlıdır. Yukarıda belirtildiği
gibi FUCTION alt programı ana programa sadece bir bilgi geri gönderebilir. SUBROUTINE alt programı için
böyle bir sınırlama yoktur. SUBRUOTINE alt programı argümansız olarak kullanılabilir. Bu şekilde kullanıldığı
zaman amaç programın akışını daha güzel ifade eden modüler bir program yapısı sağlamaktadır. FUNCTION alt
programının en az bir argümanı olması zorunludur.

FUNCTION ve SUBROUTINE alt programları arasında ki başka bir farklılıkta ayrıntıları aşağıda verilecek olan
ana programdan çağrılış biçimidir. Fakat alt program, bir deyimle bir algoritmayı gerçekleştirecek biçimde
tanımlanırsa, her iki tür alt programın özde çok benzer oldukları söylenebilir. SUBROUTINE alt programını
yapısı aşağıda verilmiştir:
SUBRUOTINE alt program adı (argüman listesi )
...............
............... Fortran deyimleri
...............
RETURN
END

Ana programdan SUBROUTINE alt programına geçiş, CALL deyimi ile sağlanır . Bu deyimin yapısı da
şöyledir:

CALL alt program adı ( argüman listesi )

Alt program adı programcı tarafından değişkenlere ad verme kurallarına uygun olarak kararlaştırılır.
SUBROUTINE alt programında tür söz konusu olmadığı için adın hangi harfle başladığı önemli değildir. Alt
programın birinci deyiminde yer alan argüman listesi ile ,ilişkili CALL deyiminin argüman listesi, argüman
sayısı ve türü açısından uyumlu olmak zorundadır. Başka bir deyişle, adları farklı olsa da her iki listede aynı
sırada buluna argümanlar aynı türde olmalıdır. Gerek ana programdan (çağıran programdan ) alt programa
aktarılan bilgiler gerekse alt programdan ana programa aktarılan bilgiler argümanlar aracılığıyla aktarılır. Bu
bilgiler her türde her türde skaler değerler olabileceği gibi diziler de olabilir. Eğer argüman diziyi simgeliyorsa,
büyüklüğü hem ana programda hem de alt programda bildirilmek zorundadır. Bu deyim işeme konulduğunda
argümanlar alt programda son alındıkları değerleri taşırlar.

Örnek:

Aşağıda bir SUBROUTINE alt programı ve bu alt programı ana programdan çağıran deyim verilmiştir.


.......... SUBROUTINE R ( A, B, X, Y ).
......... X = A * B
.......... Y = 2.0 * ( A+ B )
.......... RETURN
........ END

Alt programın adı R, argümanları A, B, X ve Y’dir. Görüldüğü gibi CALL deyiminden A, B, AL ve CEV
değişkenlerinden oluşan argüman listesi ile uyumludur. Alt programa geçildiği zaman ana programda A, B, AL
ve CEV değişkenlerinin sahip olduğu değerler alt programdaki A, B, AL ve CEV değişkenlerine verilir.
RETURN deyimi işleme konulduğunda bu kez A, B, X ve Y’nin alt programda aldıkları son değerler, ana
programda A, B, AL ve CEV değişkenlerine verilmiş olur. Görüldüğü gibi yukarıdaki örnekte A ve B
argümanları ana programdan alt programa, AL ve CEV ( veya X ve Y ) argümanları da alt programdan ana
programa bilgi aktarmaya aracı olmaktadırlar. Argümanların ana be alt programlarda aynı adı taşıması veya
taşımamamsının işlem üzerimde hiçbir etkisi olmadığı da vurgulanmalıdır.


COMMON : Alt programlar arasında bilgi alanları
Bir ana programla alt program arasında veya iki alt program arasında bilgi aktarımının argümanlar aracılığı ile
sağlandığı daha önce açıklanmıştı. Bu bilgi aktarımını gerçekleştirmenin bir başka yolu da program parçaları
arasında ortak bilgi alanlarının veya Fortran’ da ki adı ile COMMON alanlarının kullanılmasıdır. COMMON
alanları etiketli ve etiketsiz olarak ikiye ayrılır. Etiketsiz COMMON deyiminin yapısı şöyledir:

COMMON değişken listesi

Ortak bilgi alanında bulunması istenen değişkenleri değişkenler listesine birbirinden virgülle ayrılarak yazılır.
Değişken listesinden diziler bulunabilir fakat dizi elemanları bulunamaz. Eğer dizi adı değişken listesinde indisli
olarak yazılır ise , parantez içinde belirtilen tam sayı dizininin büyüklüğü olarak kabul edilir. Böylece ortak bilgi
alanında yer alan bir dizinin büyüklük bildirimi DIMENSION deyimi yerine COMMON deyimi ile de
yapılabilir. Ortak bilgi alanına ana programdan ve bir yada daha fazla alt programdan erişmek mümkündür.
Bunu için ortak bilgi alanına erişecek her ana ve alt programda COMMON deyimi yer almalıdır. Ayrıca bu
deyimlerin değişken listeleri, argüman listelerinde olduğu gibi uyumlu olmalıdır. Başka bir deyişle listeki
değişken sayısı aynı olmalı, çakışan değerlerin türleri farklı olmamalıdır.


Örnek:

DIEMENSION R (10 ) T (200 )
COMMON R,T

deyimleri ile
COMMON R (10 ) T (200 ) deyimi aynı sonucu sağlamaktadır.

Bir programda yer alan iki etiketsiz ortak bilgi alanlarının uzunlukları farklı olabilir. Aşağıda verilen deyimlerin
iki ayrı alt programda yer aldıkları kabul edilsin:

COMMON P, L, R (50 )
COMMON V, KOD, A ( 3 , 2 )

Görüldüğü gibi birinci deyim ile tanımlanan ortak bilgi alanı daha uzundur. Fakat iki deyin de aynı ortak bilgi
alanını tanımladığı için P ile V, L ile KOD, R dizisinin ilk altı elemanı ile A dizisinin sırasıyla (1,1 ), (2,1 ),
(3,1 ), (1,2 ), (2,2 ), (3,2 ) indisli elemanları eşleşmektedir.

Etiketli COMMON deyiminin yapısı şöyledir:

COMMON/etiket/değişken listesi

Etiket ortak bilgi alanına programcı tarafında verilen addır. Değişkenlere ad verme kuralına uygun olarak seçilir.
Değişken listesi orta bilgi alanında yer alan değişkenlerden oluşur. Listede diziler de bulunabilir. Etiketli ortak
bilgi alanı erişildiği her ana ve alt programda aynı etiket adını taşıyabilir COMMON deyimi ile tanımlanmak
zorundadır. Bu deyimlerle tanımlanan alanların uzunlukları aynı olmalıdır. Ayrıca değişkenler listesi aynı olmak
zorundadır.


BLOCK DATA Alt programı
Programda bazı değişkenlere, DATA deyimi ile başlangıç değeri verilebilir. Etiketlenmemiş bir ortak bilgi
alanında yer alan değişkenler DATA deyimi ile başlangıç değeri vermek mümkün değildir. Etiketlenmemiş bir
ortak bilgi alanında yer alan değişkenlere DATA deyimi ile değer atanması ise sadece BLOCK DATA alt
programında mümkündür. BLOCK DATA alt programında etiketli COMMON ve DATA deyimleri yer alır.

Örnek:

Aşağıda bir BLOCK DATA alt programı verilmiştir:

BLOCK DATA
COMMON / ALAN 1/ PROP ( 5 )
COMMON / ALAN 2/ I, D, HIZ
DATA PROP / 1.0035 , 0.735 , 0.782 , 1.4 , 0.02 /
DATA I, D, HIZ / 5, 0.18, 0.8 /
END

BLOCK DATA alt programının adı geçen ortak bilgi alanlarının erişildikleri diğer ana ve alt programlarda da
etiketli COMMON deyimleri ile bildirilmeleri gerektiği açıktır.


EQUIVALENCE Deyimi
EQUIVALENCE bildirim deyimi aynı bellek hücresine iki değişik adla erişilmesinin sağlar. Başka bir deyişle bu
deyim bir bellek hücresinin iki farklı değişken tarafından ortaklaşa kullanılmasını sağlar.

Bu deyim kullanılarak sağlanmak istene başlıca amaç, programın bellek gereksinimini azaltmaktır. bu deyimi
daha değişik amaçlar içinde kullanmak mümkündür. Bunlardan birkaçı tanesi örneklerde belirtilmiştir.


EQUIVALENCE deyiminin yapısı şöyledir:

EQUIVALENCE ( değişken-1, değişken-2 )

değişken-1 ve değişken-2 basit veya indisli değişken olabilir.

Örnek:

Bir programda iki boyutlu bir diziye tek indisle erişilmek isteniyorsa EQUIVALENCE deyimi kullanılabilir.

EQUIVALENCE ( MAT ( 1 , 1 ) , IVEK ( 1 ) )

Her iki dizinin büyüklüğünün DIMENSION deyimi ile bildirilmiş olması gerektiği not edilmelidir.

Örnek:

Bir programın çalışması sırasında değişik zamanlarda iki dizi, bellekte yer kazanılmak amacı ile çakıştırılabilir.
D dizisi, program C dizisi ile işlemlerini bitirdikten sonra kullanılan bir dizi olsun.

EQUIVALENCE ( D ( 1 ) , C ( 1 ) )

deyimi iki dizi için aynı bellek alanını ayırmaktadır.


EXTERNAL Deyimi
EXTERNAL deyimi bir alt programın, ismi argümanlar listesinde bulunan başak bir alt programı çağırabilmesini
olanağını sağlar. Bumu için çağırılan alt program ( FUNCTION veya SUBROUTINE ) isminin çağıran alt
program argümanlar listesinde yazılması ve EXTERNAL deyiminde bulunması gerekir.

EXTERNAL deyiminin yapısı şöyledir:

EXTERNAL s1, s2, s3,......,sn

Burada s1, s2, s3,......,sn çağıran alt program argümanlar listesindeki alt program isimleridir. EXTERNAL
deyimi ana program içinde, aritmetik deyim fonksiyonları ve icra edilebilen deyimlerden de önce gelmek üzere,
en başta bulunur.
Logged


Geri sayım sen doğduğunda başladı! Eğer(9)canlı bile olsaydın en fazla(8)kez kaçabilirdin Ölümden! Bil ki(7)Düvele sultan dahi olsan yerin(6)Mekan olacak sana. En fazla(5)Metre kumaş götürebileceksin! Kapatacaksın (4)açsanda gözlerini! Bu(3)günlük dünyada Azraile (2)kat olup yalvarsanda(1)gün öleceksin! İşte, o an herşey (0) dan başlayacak.

Çünkü,ÖLÜM YENİDEN DOĞUŞTUR!
http://img223.imageshack.us/img223/2293/qaripx1pm0jcsu
ozgurnaci
Administrator
Üye
*****

Karma: 41
Offline Offline

Cinsiyet: Bay
Mesaj Sayısı: 3925



WWW
« Yanıtla #3 : 09 Mayıs 2008, 18:43:20 »

Yan Bellek(Kütük ) Kullanımı

Kütük Açma
Fortran 77'de kütük yaratma ya da yaratılan kütüğü açma işlemi OPEN deyimi kullanılarak yapılır. Deyimin genel yazılışı:

OPEN (UNIT =nuf, FILE ='fna', STATUS ='st', ACCESS ='ac', FORM ='ft, RECL =rl )

biçimindedir. Burada:

nuf : Yaratılacak ya da açılacak kütüğün numarasıdır. Bulunması zorunludur.

fna : Yaratılacak ya da açılan kütük adıdır. Değişken kurallarına uyar.

st : Herhangi bir kütük daha önce yaratılmış ya da ilk defa yaratılacak olabilir. Eğer OPEN deyiminde st yerine NEW yazılırsa kütüğün yaratılmakta olduğu, OLD yazılırsa daha önce yaratılan bir kütüğün açılmakta olduğu anlaşılır.

ac : Kütüğe erişim sıralı ya da doğrudan olabilir. Belirtilmezsa sıralı erişim vardır.

ft : Kütük ile ilgili yapılacak okuma ya da yazma işlemlerinde format kullanılıp kullanılmayacağı belirtilir. Belirtilmezse sıralı erişim durumunda formatsız, dolaylı erişim durumunda formatlı olarak yapılır.

rl : Kayıtların uzunluklarını tanımlamakta kullanılır. En uzun kayıt uzunluğu alınır.

OPEN(13, STATUS='NEW', ACCESS='SEQUENTIAL', FORM='FORMATTED', RECL=15 )

Kütük Kapama
--------------------------------------------------------------------------------

Açılan kütüklerin kapanması işlemi CLOSE deyimi kullanılarak gerçekleştirilir. Genel yazılışı:

CLOSE (UNIT =nuf, STATUS ='st' )

biçimindedir. Burada:

st : Kütük kapatma türünü gösterir. Delete ve Keep durumları söz konusudur. Delete silmek, Keep saklamak için yazılır.

CLOSE(13, STATUS='KEEP' )

Kütükten Okuma
--------------------------------------------------------------------------------

Kütükten okuma yapılması işlemi READ deyimi ile olur. Genel yazılışı:

READ (UNIT =nuf, fs, END =sst, ERR =hst, REC =m )dl

biçimindedir. Burada:

nuf : Okuma yapılacak kütüğün numarasını

fs : Okuma için kullanılan formatın deyim numarasını

sst : Okuma işlemi bittiğinde ya da kütük sonunda devam edilecek kütük numarasını

hst : Okuma sırasında ortaya çıkabilecek hatalar durumunda devam edilecek deyim numarasını

m : Kütükte okutma yapılan kayıdın numarasını

dl : Birbirinden virgülle ayrılmış değerleri okutulacak değişkenleri gösterir.

READ(1,10,END = 20 )GR,LR,NRM

Kütüğe Yazma
--------------------------------------------------------------------------------

Herhangi bir kütüğe veri girilmek ya da yazılmak istendiğinde WRITE değimi kullanılır. Genel yazılışı:

WRITE (UNIT = nuf, fs, ERR = sst, REC = m )dl

biçimindedir. Burada:

sst : Yazma hataları durumunda devam edilecek deyim numarasını gösterir

WRITE(1,10, ERR = 100, REC=5 )D,E,F

ENDFILE deyimi
--------------------------------------------------------------------------------

Okuma işlemi sırasında sıralı bir kütükte kütük sonuna gidilmesini sağlar. Genel yazılışı:

ENDFILE (nuf )

biçimindedir. Burada nuf kütük numarasını gösterir.

ENDFILE(2 )

REWIND deyimi
--------------------------------------------------------------------------------

Kütüğün herhangi bir yerinden ilk tutanağa dönülmesini sağlar. Genel yazılışı:

REWIND(nuf )

biçimindedir. Burada nuf kütük numarasını gösterir.

READ(2 )

BACKSPACE deyimi
--------------------------------------------------------------------------------

Kütükte, bulunan tutanaktan bir önceki tutanağa geçilmesini sağlar. Genel yazılışı:

BACKSPACE(nuf )

biçimindedir. Burada nuf kütük numarasını gösterir.

BACKSPACE(2 )

Bazı Örnek Programlar
--------------------------------------------------------------------------------

1 )Aşağıdaki program sıralı bir kütük yaratır, bu kütüğe bilgileri yazar, kütüğü kitler ve kapatır. Daha sonra kütüğü açar ve kütükteki bilgileri okuyup ekrana yazar.

Dimension A(9,9 )
Open (Unit=5, File='Ver',Status='New' )
Read (*,* )A
Write (5,* )A
Close (5,Status='Keep' )
Open (5,File='Ver',Status='Old' )
Read (5,*,End=77 )A
Write (*,* )A
Goto 130
Close (5 )
Stop
End


2 )Öğrenci notlarını bulunduğu sıralı kütükten okuyan ve ortalamaları yazan bir program ise:

Dimension Onot (1500 )
Open (5, File='Onot' )
Do 50 I-1, 1500
Read (5,*,End=100 ) Onot (I )
Tnot=Tnot+Onot(I )
K=K+1
50 Continue
100 Ornot=Tnot/K
Write (*,* )Ornot
Stop
End
Logged


Geri sayım sen doğduğunda başladı! Eğer(9)canlı bile olsaydın en fazla(8)kez kaçabilirdin Ölümden! Bil ki(7)Düvele sultan dahi olsan yerin(6)Mekan olacak sana. En fazla(5)Metre kumaş götürebileceksin! Kapatacaksın (4)açsanda gözlerini! Bu(3)günlük dünyada Azraile (2)kat olup yalvarsanda(1)gün öleceksin! İşte, o an herşey (0) dan başlayacak.

Çünkü,ÖLÜM YENİDEN DOĞUŞTUR!
http://img223.imageshack.us/img223/2293/qaripx1pm0jcsu
DaRKNiGHT
Ziyaretçi
« Yanıtla #4 : 10 Mayıs 2008, 10:34:04 »

Bunu okuyunca fortran mı öğreneceğiz
Logged
ozgurnaci
Administrator
Üye
*****

Karma: 41
Offline Offline

Cinsiyet: Bay
Mesaj Sayısı: 3925



WWW
« Yanıtla #5 : 10 Mayıs 2008, 18:57:27 »

kısmen öğrenirsin. en azından okurken uygulama imkanın olursa önemli bir ölçüde öğrenirsin
Logged


Geri sayım sen doğduğunda başladı! Eğer(9)canlı bile olsaydın en fazla(8)kez kaçabilirdin Ölümden! Bil ki(7)Düvele sultan dahi olsan yerin(6)Mekan olacak sana. En fazla(5)Metre kumaş götürebileceksin! Kapatacaksın (4)açsanda gözlerini! Bu(3)günlük dünyada Azraile (2)kat olup yalvarsanda(1)gün öleceksin! İşte, o an herşey (0) dan başlayacak.

Çünkü,ÖLÜM YENİDEN DOĞUŞTUR!
http://img223.imageshack.us/img223/2293/qaripx1pm0jcsu
DaRKNiGHT
Ziyaretçi
« Yanıtla #6 : 10 Mayıs 2008, 20:03:33 »

Vay anasını ya =) Bu ne ya... Bu arada GS şampiyon gibi Tebrik edeyim seni =)
Logged
Sayfa: [1]   Yukarı git
  Yazdır  
 
Gitmek istediğiniz yer: