Jeofizik Jeofizikte Bilgisayar Uygulamaları ( fortran programlama dili ) FORTRAN Programlama DiliProgramlama ve Temel Kavramlar Program; Bilgisayara ne yapmas ı gerekti ğ ini bildiren komutlar (Kod, Deyim) toplulu ğ una verilen isimdir. Bu komutlar ı veren ki ş iye Programc ı , komutlar ı n tamam ı na ise Programlama dili denir. Herhangi bir dil bilen bir programc ı ile bilgisayar (Makine dili biliyor) aras ı ndaki ileti ş imin gerçekle ş mesi: Birbirleri ile farkl ı dilleri konu ş an iki yabanc ı ki ş inin ( İ ngilizce , Türkçe vb.) bir araya gelip görü ş mesine benzetilebilir. Bu görü ş me ancak bir çevirmen arac ı l ığı ile gerçekle ş ebilir. Benzer ş ekilde bilgisayar üreticileri ayn ı sorunu programc ı n ı n dilini bilgisayar ı n makine diline çevirecek ‘ Derleyici Programlar ’ geli ş tirerek çözmektedirler.DERLEY İ C İ VE YORUMLAYICI KAVRAMLARI Yaz ı lan programlar ı makine diline çeviren, makine dilinde elde edilen sonuçlar ı bizlerin anlayabilece ğ i biçime dönü ş türen programlara Derleyici veya Yorumlay ı c ı denir. Kaynak komutlar ı n makine diline çevrilmesi : Kaynak Program Derleyici (Compiler) Yorumlay c (Interpreter) Makine Dili İ kili say (BI nary digi T-BIT) format ndaki g ö sterime makine dili denir. Mant ksal olarak “ 1 ” var, “ 0 ” yok anlam ndad r. Say sal sistemler ikili mant ğ a g ö re ç al ş rlar.Derleyici: Bir programlama dili ile yaz ı lm ı ş olan program ı makine dilini kullanarak amaçlad ığı m ı z programa dönü ş türür. Derleyicinin çevirme i ş lemi genellikle üç ad ı mdan olu ş ur; 1. Sözel Analiz (Lexical Analysis) 2. Yaz ı m Hatas ı Analizi (Syntax Analysis) 3. Kod üretimi (Code Generator) Sözel Analizde kaynak kodlar ı n ı olu ş turan kelimler incelenip bu kelimelerin kaynak dilinde kar ş ı l ı klar ı olup olmad ı klar ı kontrol edilir, Yaz ı m hatas ı analizinde kaynak kodlar ı n ı n yaz ı ld ığı programlama dilinin kendi kurallar ı içerisinde do ğ ru yaz ı l ı p yaz ı lmad ığı kontrol edilir. Kod üretimi a ş amas ı nda ise tan ı m ı yap ı lan komutlara kar ş ı l ı k gelen makine dili komutlar ı üretilir. Bu ad ı mlar birbirine paralel olarak gerçekle ş tirilir ve kaynak komutlar amaçlanm ı ş olan koda çevrilmi ş olur. Yorumlay c : Program komutlar n n ilk sat r ndan son sat r na kadar belirtilmi ş olan deyim ve i ş lemleri inceleyerek kaynak program n hatalar n n d ü zeltilmesine olanak veren ve ç al ş mas n sa ğlayan programd r. Herhangi bir komut sat r n n ç al ş t r lmas nda bir hata ile kar ş la ş t ğ nda ç al ş may durdurur ve hatal olan sat r programc ya bildirir. Derleyici ile Yorumlay c n n Fark : Derleyici program n tamam n kontrol eder, herhangi bir sat r nda hata varsa program sat rlar bittikten sonra hatay g ö sterir. Yani kaynak kodu bir defa ç evirir. Yorumlay c ise program n herhangi bir sat r nda hata varsa ç al ş rken hatal olan sat ra geldi ğinde durur ve hata mesaj verir. Hata d ü zeldikten sonra tekrar birinci sat rdan itibaren kodu ç evirir.PROGRAMLAMA D İ LLER İ 1.1. Makine Dili ile Kodlama Problemimiz ö ncelikle, bilgisayar n ö zellikleri ve mevcut komutlarla yapabilece ği i ş lemler dizisi bi ç iminde ifade edilir; daha sonra programc taraf ndan bu, bilgisayar n makine dilinde yaz l r. Makine dilinde yaz lan bu program gerekli veri ile birlikte, bilgisayarca do ğrudan uygulanabilir ve aranan sonu ç lar bulunur. Ancak makine dili ile programlamada baz ö nemli g üç l ü kler ortaya ç kmaktad r. T ü m komutlar n makine dili ile kodlanmas ; komutlar n makine taraf ndan uyguland ğ s rada yaz lmas ve yanl ş l kla ya da ba ş ka bir nedenle baz komutlar atlanm ş sa, bundan sonraki b ü t ü n komutlar n araya eklenenler i ç in ö telenmesi ve adreslemenin yenilenmesi zorunlulu ğu;b ü t ü n program d ü zenlemesinin programc taraf ndan yap lmas ; programc n n kulland ğ bilgisayar ç ok iyi anlam ş olma gere ği bu g üç l ü klere ö rneklerdir. 1.2. Programlama Sistemleri Programlama sistemleri genel olarak derleyici programdan olu ş ur ? (bir programlama dili ve bir birle ş tirici). Programlama dili, programc taraf ndan kolayca ö ğrenilebilecek ve yaz labilecek, bilgi i ş lem sisteminin yap m ö zellikleri ve yap lacak i ş lemler aras nda uzla ş ma sa ğlayabilecek bir ş ekilde olmal d r. Bu dil i ç inde, di ğer herhangi bir dildeki gibi, dilbilgisi, noktalama ve yazma kurallar olaca ğ a ç kt r. Bir bilgisayarda programlama sistemlerinin (derleyicilerin) ? bulunmas makine dilinde programlaman n g üç l ü klerini b ü y ü k ö l çü de azalt r. Birle ş tirici program ve derleyiciler, programlar n makine dili d ş nda probleme y ö nelmi ş bir dilde haz rlanabilmesi olana ğ n sa ğlar. Programlama dilinde makine diline ç eviriyi, birle ş tirici ya da ? derleyici arac l ğ ile, bilgisayar n kendisi yapmaktad r. 1.3. Sembolik Programlama Sistemleri Sembolik programlama sistemleri, programc y makine dili ile kodlaman n g üç l ü klerinden b ü y ü k ö l çü de kurtarmaktad r ancak, belli bir bilgisayara g ö re haz rland klar ndan ve sistemin programlama dilinin k smen makineye y ö nelik olmas ndan dolay makine dili d ü zeyinde ç al ş an, ö ğrenilmeleri olduk ç a uzun s ü ren sistemlerdir ve her bilgisayar i ç in farkl d r, di ğer bir deyi ş le makineye ba ğ ml d r dolay syla her bilgisayarda ayni dil kullan lamamaktad r.1.4. Probleme Y ö nelmi ş Diller ve Derleyiciler FORTRAN, COBOL, PASCAL, ALGOL, C, C++, vb. programlama ? sistemlerine baz ö rneklerdir. Bu t ü r programlama sistemleri ile ç al ş mada, temel program n derleyici program arac l ğ ile bilgisayarca, belli kurallara uyarak makine dili program na ç evrilmesine derleme denir. Derleme s ras nda rastlanan dil kurallar na ayk r olan hatalar ö zel hata mesajlar ile bilgisayarca programc ya bildirilir. Probleme y ö nelmi ş dillerin en ö nemlilerinden biri, bilimsel ve m ü hendislik ? ara ş t rma ve uygulamalar i ç in geli ş tirilen ve en yayg n olarak kullan lan FORTRAN dilidir. FORTRAN ad , form ü l ç evirisi anlam ndaki, İ ngilizce "FORmula TRANslation" kelimelerinin ilk hecelerinden olu ş ur. FORTRAN dili say sal hesapla ilgili herhangi bir problemin kolayl kla ifade edilebilmesini sa ğlayacak bi ç imde d üşü n ü lm üş t ü r. Komutlar ya da deyimler herhangi bir g üç l ü k olmaks z n anla ş labilir ve yorumlanabilir. Baz deyimler problemin matematiksel ba ğ nt lar na ç ok benzer. Tarihçe; IBM'de çal ı ş an John W. Backus ve ekibi 1953 y ı l ı n ı n sonlar ı nda, assembler diline alternatif olarak IBM 704 ana-bilgisayar ı nda daha verimli çal ı bilecek bir programlama dili önermi ş ler, "The IBM Mathematical FORmula TRANSslating System" isimli 32 deyim i çeren ilk Fortran derleyicisini geli ş tirmi ş ler ve 1957 y ı l ı nda da ğı t ı m ı na ba ş lam ı ş lard ı r Takip eden y ı llarda yeni sürümler geli ş erek, 1958'de FORTRAN II ve FORTRAN III, 1961'de FORTRAN IV, 1966'da FORTRAN 66 1977'de FORTRAN 77 derleyicileri kullan ı ma sunulmu ş tur. Uzun bir s üre sonra, bir çok önemli de ğ i ş iklikler yap ı lm ı ş ve ANSI 1992 standard ı ile tescillenmi ş hali ile Fortran 90 sürümü olu ş turulmu ş tur. Hemen ard ı ndan, birkaç k üçük de ğ i ş iklikle Fortran 95 geli ş tirilmi ş tir. Fortran 90/95 sürümlerinde nesne tabanl ı özellik kazanm ı ş t ı r. Daha sonralar ı nesneye dayal ı (object-oriented) ve genel programlama (generic-programming) özellikleri eklenerek Fortran 2003 standard ı belirlenmi ş tir. 2008 y ı l ı nda da "Co-Array Fortran" özelli ğ i ile paralel i ş lem (parallel processing) yetene ğ i kazanm ı ş t ı r. IBM 704 IBM 360Neden Fortran? Fortran, say ı sal hesaplamada güçlü ve yeterince esnek bir dildir. ? Fortran, tan ı mlay ı c ı adlar ı küçük-harf büyük-harf ayr ı m ı ? yapmaz (case insensitive). Yani Tablo veya tablo veya TABLO de ğ i ş ken adlar ı ayn ı de ğ i ş keni temsil eder. Fortran, basit bir yap ı s ı oldu ğ u için, programlama giri ş iyi bir ? dildir. Fortran, farl ı platformlada derleyicilere sahiptir. ? Fortran, özel veri tipi tan ı mlamas ı na izin verir. ? Fortran, di ğ er dillerde olamayan esnek kütüphane ? fonksiyonlar ı na sahiptir. Fortran, say ı sal hesaplamada C/C++, Java ve görsel programlama ? dillerinden daha güçlü ve h ı zl ı d ı r. 2.1. G İ R İ Ş Program bir komutlar ( deyimler ) dizisidir ve herhangi bir problemin çözümü için kullan ı lan hesap düzenini tan ı m ı d ı r . Çözümde bir bilgisayardan yararlan ı lacaksa , program ı n bilgisayar özellilerine uygun bir 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 belirli dallanmalar ı 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. FORTRAN sistemi , FORTRAN dili ve FORTRAN derleyicisinden olu ş ur . 2.2. SAYILAR Bilimsel çal ı ş malarda, mühendislik ara ş t ı rmalar ı ve uygulamalarda 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 veya hassasiyet( prezisyon ) denir . Say ı lar ikiye ayr ı l ı r : tam say ı lar , gerçel say ı lar . ? Tam say ı lar desimal noktas ı olmayan say ı lard ı r . Bunlar ı n büyüklük s ı n ı rlar ı ? bilgisayar özelliklerine ba ğ l ı d ı r . Gerçel say ı lar ise 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 2.3. 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 hassasiyet (presisyon) hanesi kadar rakamla gösterilir ; di ğ er hanerler bilgisayar özelliklerine göre ya kesilir , ya da yuvarlat ı l ı r . 2.4. Fortran Alfabesi FORTRAN alfabesi 10 nümerik , 26 alfabetik ve 13 özel karakterden olu ş maktad ı r . 2.5. Karakterler Simge/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 2.6. Fortran Deyimleri Bir FORTRAN program ı bir tak ı m deyimlerden olu ş ur . ? Deyimler program ı n hesap düzeni ile ilgili olarak , bilgisayara bilgi verilmesini, i ş lemlerin yap ı lmas ı n ı ve uygulamas ı n ı , gerekli kararlar ı n verilmesini, sonuçlar ı n d ı ş ortama al ı nmas ı n ı sa ğ lar Deyimlerle ba ğ lant ı kurabilmek için , deyimler numaralanabilir . ? Uygulama s ı ras ı yönünden deyim numaralar ı n ı n s ı ras ı n ı n bir önemi yoktur . Deyim numaralar ı sadece hesap düzeninin gere ğ i olarak bu deyimlerle dallanabilme olana ğı sa ğ lar; iki deyime asla ayn ı numara verilemez . 3.1. DEY İ MLER , GÖREVLER İ ve ADLARI 3.1.1 Aritmetik deyimler; Yap ı lacak i ş lemleri denetler 3.1.2. Giri ş -Ç ı k ı ş deyimleri; D ı ş ortamla bilgisayar aras ı nda bilgi al ı ş veri ş i sa ğ lar 3.1.3. Yönetim deyimleri; Programdaki deyimlerin icra s ı ras ı n ı yönetir 3.1.4. Bildiri deyimleri; Derleyiciye bilgi verir 3.1.5. Altprogram deyimleri; Alt programlar ı tan ı mlamaya ve kullanmaya yarar 3.1.1 Aritmetik deyimler De ğ i ş ken = tan ı mlama 3.1.2 Giri ş / Ç ı k ı ş deyimleri Giri ş /ç ı k ı ş deyimleri bilgisayarla d ı ş ortam aras ı ndaki bilgi al ı ş veri ş ini sa ğ lar, Çevre bellekte bilgi saklanmas ı yada çevre bellekten bilgi al ı nmas ı olana ğı n ı sa ğ lar. Giri ş /ç ı k ı ş birimini ve ortam ı n ı belirler, Bilginin giri ş ortam ı nda yerle ş me ve ç ı k ı ş ortam ı nda yerle ş tirilme biçimini belirler, Bellekte bilgi al ı ş veri ş i yapacak data alanlar ı n ı belirtir. Ba ş l ı ca Giri ş / Ç ı k ı ş deyimleri ş unlard ı r; READ ? PRINT ? WRITE ? FORMAT ? Birçok programlama dilinde standart giri ş klavye, standart ç ı k ı ş kullan ı c ı ekran ı (monitör) olarak belirlenmi ş tir. Ancak veri giri ş /ç ı k ı ş ı bir dosyadan da yap ı labilir. Bu durum a ş a ğı daki ş ekilde gösterilmi ş tir Klavye Dosya PProgram READ ........ PRINT ....... WRITE ...... Ekran Dosya G İ R İ Ş DERLEY İ C İ ÇIKI ŞFortran'da, giri ş için READ, ç ı k ı ş için PRINT ve ? WRITE deyimleri kullan ı l ı r. Bu deyimlerin formatl ı (formated) ve formats ı z veya serbest format (free format) olmak üzere iki kullan ı m ı vard ı r. Formats ı z kullan ı mda okuma/yazma biçimi derleyici taraf ı ndan, formatl ı kullan ı m ı ise programc ı taraf ı ndan belirlenir.