Birçok insan Fortran'ı arkaik ve "ölü" bir programlama dili olarak algılar. Ancak, çoğu bilimsel ve mühendislik kodu Fortran'da yazılmıştır. Bu nedenle, F77 ve F90'da programlama, çoğu teknik programcı için gerekli bir beceri olmaya devam etmektedir. Ayrıca, en son Fortran standartları (2003, 2008, 2015), programcının OOP (nesne yönelimli programlama) gibi tüm modern dil özelliklerini kullanırken minimum çabayla yüksek verimli kod yazmasına olanak tanır. FORTRAN, "FORmula TRANslation"ın kısaltmasıdır ve grafik veya veritabanı uygulamaları yerine matematiksel ve sayısal uygulamalar için en uygun olanıdır. Çoğu fortran kodu, bir menü veya GUI arayüzü yerine bir dosyadan veya komut satırından metin girdisi alır.
adımlar
Bölüm 1/4: Basit Bir Program Yazma ve Derleme
Adım 1. Bir "Merhaba Dünya" programı yazın
Bu genellikle herhangi bir dilde yazan ilk programdır ve ekrana sadece "Merhaba dünya" yazdırır. Aşağıdaki kodu herhangi bir metin düzenleyiciye yazın ve helloworld.f olarak kaydedin. Her satırın önünde tam olarak 6 boşluk olmasına dikkat edin.
merhabaworld programı örtük yok karakter*13 merhaba_string merhaba_string = "Merhaba dünya!" (*, *) merhaba_string program sonu merhabaworld yaz
Uç: Boşluklar yalnızca Fortran'ın FORTRAN 77'ye kadar olan sürümlerinde gereklidir. Daha yeni bir sürüm kullanıyorsanız boşlukları bırakabilirsiniz. Programları daha yeni sürümden f77 ile değil f95 ile derleyin; dosya uzantısı olarak sadece.f yerine.f95 kullanın.
Adım 2. Programı derleyin
Bunu yapmak için komut satırına f77 helloworld.f yazın. Bu bir hata veriyorsa, muhtemelen henüz gfortran gibi bir Fortran derleyicisi kurmamışsınızdır.
Adım 3. Programınızı çalıştırın
Derleyici a.out adında bir dosya üretti../a.out yazarak bu dosyayı çalıştırın.
Adım 4. Az önce ne yazdığınızı anlayın
-
merhaba dünya programı
"helloworld" programının başladığını gösterir. Benzer şekilde,
program sonu merhaba dünya
- sonunu belirtir.
-
Varsayılan olarak, bir değişken türü bildirmezseniz, Fortran i'den n'ye bir harfle başlayan bir değişkene tamsayı ve diğerlerini gerçek bir sayı olarak kabul eder. kullanılması tavsiye edilir
örtük hiçbiri
- bu davranışa ihtiyacınız yoksa.
-
karakter*13 merhaba_string
- merhaba_string adlı bir karakter dizisini bildirir.
-
merhaba_string = "Merhaba dünya!"
- "Merhaba dünya!" değerini atar. bildirilen diziye. C gibi diğer dillerden farklı olarak, bu, diziyi bildirmekle aynı satırda yapılamaz.
-
(*, *) merhaba_string yaz
- merhaba_string'in değerini standart çıktıya yazdırır. İlk *, bazı dosyaların aksine standart çıktıya yazmak anlamına gelir. İkinci *, herhangi bir özel biçimlendirme kullanmamak anlamına gelir.
Adım 5. Bir yorum ekleyin
Bu kadar basit bir programda bu gerekli değildir, ancak daha karmaşık bir şey yazdığınızda faydalı olacaktır, bu yüzden onları nasıl ekleyeceğinizi bilmelisiniz. Yorum eklemenin iki yolu vardır.
- Tüm satırı tek başına olan bir yorum eklemek için, 6 boşluk olmadan doğrudan yeni satıra c yazın. Ondan sonra yorumunuzu yazın. Daha iyi okunabilirlik için c ile yorumunuz arasında bir boşluk bırakmalısınız, ancak bu gerekli değildir. kullanmanız gerektiğini unutmayın! Fortran 95 ve daha yeni sürümlerde c yerine.
- Kodla aynı satıra bir yorum eklemek için bir ! yorumunuzun başlamasını istediğiniz yer. Yine, bir boşluk gerekli değildir, ancak okunabilirliği artırır.
Bölüm 2/4: Girdiyi ve If-Yapılarını Kullanma
Adım 1. Farklı veri türlerini anlayın
- INTEGER, 1, 3 veya -3 gibi tam sayılar için kullanılır.
- REAL, 2.5 gibi tam olmayan bir sayı da içerebilir.
- COMPLEX, karmaşık sayıları saklamak için kullanılır. İlk sayı gerçek, ikincisi ise hayali kısımdır.
- KARAKTER, harfler veya noktalama işaretleri gibi karakterler için kullanılır.
- MANTIKLI,.true olabilir. veya.false.. Bu, diğer programlama dillerindeki boole türü gibidir.
Adım 2. Kullanıcının girdisini alın
Daha önce yazdığınız "Merhaba dünya" programında kullanıcı girişi almak işe yaramaz. Yeni bir dosya açın ve onu compnum.f olarak adlandırın. Bitirdiğinizde, kullanıcıya girdiği sayının pozitif mi, negatif mi yoksa sıfıra eşit mi olduğunu söyleyecektir.
- Program özeti satırlarını girin ve program özetini bitirin.
- Ardından, REAL türünde bir değişken bildirin. Beyanınızın programın başı ve sonu arasında olduğundan emin olun.
- Kullanıcıya ne yapması gerektiğini açıklayın. Yazma işleviyle bir metin yazın.
- Kullanıcının girdisini read işleviyle bildirdiğiniz değişkene okuyun.
program compnum gerçek r yazma (*, *) "Gerçek bir sayı girin:" oku (*, *) r programı sonlandır
Adım 3. Kullanıcının girdisini bir if-yapısı ile işleyin
arasına koy
(*, *) r'yi oku
ve
programı bitirmek
- Karşılaştırma.gt ile yapılır. (büyüktür),.lt. (küçüktür) ve.eq. (eşittir) Fortran'da.
- Fortran if, else if ve else'yi destekler
- Bir Fortran if-yapısı her zaman end if ile biter.
(r.gt. 0) ise (*, *) "Bu sayı pozitiftir" yazın. else if (r.lt. 0) ise (*, *) "Bu sayı negatiftir." yoksa (*, *) "Bu sayı 0'dır" yazın. eğer son
Uç: Daha fazla boşluk içeren if yapılarının içine kod girintisi yapmanız gerekmez, ancak okunabilirliği artırır.
Adım 4. Programınızı derleyin ve çalıştırın
Test etmek için bazı sayılar girin. Bir harf girerseniz, bir hata ortaya çıkar, ancak sorun değil çünkü program girişin harf, sayı veya başka bir şey olup olmadığını kontrol etmez.
Bölüm 3/4: Döngüleri ve Dizileri Kullanma
Adım 1. Yeni bir dosya açın
Bu konsept farklı olduğu için tekrar yeni bir program yazmanız gerekecek. Dosyayı addmany.f olarak adlandırın. Karşılık gelen program ve son program ifadelerinin yanı sıra örtük bir hiçbiri ekleyin. Bitirdiğinizde, bu program 10 sayı okuyacak ve toplamlarını yazdıracaktır.
Adım 2. 10 uzunluğunda bir dizi bildirin
Numaraları burada saklayacağınız yer burasıdır. Muhtemelen gerçek sayıların toplamını istediğiniz için diziyi gerçek olarak bildirmelisiniz. İle böyle bir dizi ilan edersiniz
gerçek sayılar(50)
(sayılar bir ifade değil, dizinin adıdır).
Adım 3. Bazı değişkenleri bildirin
numSum'u gerçek bir sayı olarak bildirin. Daha sonra toplamı saklamak için kullanacaksınız, ancak toplam zaten bir Fortran ifadesi tarafından alındığından, numSum gibi bir ad kullanmanız gerekir. 0'a ayarlayın. i'yi bir tamsayı olarak bildirin ve henüz herhangi bir değer atamayın. Bu, do döngüsünde yapılacaktır.
Adım 4. Bir do-loop oluşturun
Bunun diğer programlama dillerindeki karşılığı bir for döngüsü olacaktır.
- Bir do-döngüsü her zaman do ile başlar.
- do ile aynı satırda, ondan bir boşlukla ayrılmış, programın bittiğinde gideceği etikettir. Şimdilik sadece 1 yazın, etiketi daha sonra belirleyeceksiniz.
-
Bundan sonra, yine yalnızca bir boşlukla ayırarak yazın
ben = 1, 10
. Bu, döngüden önce bildirdiğiniz i değişkenini 1'lik adımlarla 1'den 10'a çıkaracaktır. Bu ifadede adımlardan bahsedilmemektedir, bu nedenle Fortran varsayılan 1 değerini kullanır.
ben = 1, 10, 1
-
Döngünün içine biraz kod koyun (daha iyi okunabilirlik için boşluklarla girinti yapın). Bu program için, dizi numaralarının i-inci elemanı ile numSum değişkenini artırmalısınız. Bu ifade ile yapılır
numSum = numSum + sayı(i)
- Döngüyü etiketli bir devam ifadesi ile sonlandırın. Yalnızca 4 boşluk yazın. Bundan sonra, 1 yazın. Bu, bittikten sonra do-loop'a gitmesini söylediğiniz etikettir. Ardından, bir boşluk yazın ve devam edin. Devam ifadesi hiçbir şey yapmaz, ancak bir etiket yerleştirmek için iyi bir yer sağlar ve aynı zamanda do döngüsünün sona erdiğini gösterir.
Do döngünüz şimdi şöyle görünmelidir:
1 i = 1 yap, 10 numSum = numSum + sayılar(i) 1 devam et
Uç: Fortran 95 ve daha yeni sürümlerde etiket kullanmanıza gerek yoktur. Sadece do deyimine bir tane koymayın ve döngüyü "devam" yerine "son do" ile bitirin.
Adım 5. numSum yazdırın
Ayrıca, örneğin "Sayılarınızın toplamı:" gibi bir bağlam vermek de mantıklı olacaktır. Her ikisi için de yazma işlevini kullanın. Kodunuzun tamamı şimdi aşağıdaki gibi görünmelidir:
program addmany örtük hiçbiri gerçek sayılar(10) gerçek numSum tamsayı i numSum = 0 yaz (*, *) "10 sayı girin:" oku (*, *) sayılar do 1 i = 1, 10 numSum = numSum + sayılar(i) 1 devam yaz (*, *) "Toplamları:" yaz (*, *) numSum program sonu addmany
Adım 6. Kodunuzu derleyin ve çalıştırın
Test etmeyi unutmayın. Girdiğiniz her sayının ardından ↵ Enter tuşuna basabilir veya aynı satıra birçok sayı girip aralarında boşluk bırakabilirsiniz.
Bölüm 4/4: Gelişmiş Kavramları Anlama
Adım 1. Programınızın ne yapacağına dair iyi bir fikriniz olsun
Girdi olarak ne tür verilere ihtiyaç duyulduğunu, çıktının nasıl yapılandırılacağını düşünün ve hesaplamanızın ilerlemesini izleyebilmeniz için bazı ara çıktıları ekleyin. Hesaplamanızın uzun süre çalışacağını veya birden fazla karmaşık adım içerdiğini biliyorsanız, bu çok yararlı olacaktır.
Adım 2. İyi bir Fortran referansı bulun
Fortran'ın bu makalede açıklanandan çok daha fazla işlevi vardır ve bunlar yazmak istediğiniz program için faydalı olabilir. Referans, bir programlama dilinin sahip olduğu tüm işlevleri listeler. Bu Fortran 77 için bir tane ve bu Fortran 90/95 için bir tane.
Adım 3. Alt rutinler ve fonksiyonlar hakkında bilgi edinin
Adım 4. Dosyalardan/dosyalara nasıl okunacağını ve yazılacağını öğrenin
Ayrıca giriş/çıkışınızı nasıl biçimlendireceğinizi öğrenin.
Adım 5. Fortran 90/95 ve daha yeni sürümlerin yeni özellikleri hakkında bilgi edinin
Yalnızca Fortran 77 kodunu yazacağınızı/koruyacağınızı biliyorsanız bu adımı atlayın.
Fortran 90'ın "Serbest Biçim" kaynak kodunu tanıttığını ve kodun boşluklar olmadan ve 72 karakter sınırı olmadan yazılmasına izin verdiğini unutmayın
Adım 6. Bilimsel Programlama ile ilgili bazı kitapları okuyun veya arayın
Örneğin, "Fortran'da Sayısal Tarifler" kitabı hem bilimsel programlama algoritmaları hakkında iyi bir metin hem de kodların nasıl bir araya getirileceğine dair iyi bir giriş niteliğindedir. Daha yeni sürümler, karma dil ortamında ve paralel programlamada nasıl programlanacağına ilişkin bölümleri içerir. Diğer bir örnek ise Arjen Markus tarafından yazılan "Modern Fortran in Practice". Kitap, Fortran programlarının en son Fortran standartlarına uygun olarak yirmi birinci yüzyıl tarzında nasıl yazılacağına dair bir fikir veriyor.
Adım 7. Birden çok dosyaya yayılmış bir programı nasıl derleyeceğinizi öğrenin
Fortran programınızın main.f ve morestuff.f dosyalarına yayıldığını ve ortaya çıkan ikili dosyanın allstuff olarak adlandırılmasını istediğinizi varsayalım. Ardından komut satırına aşağıdaki komutları yazmanız gerekecek:
f77 -c morestuff.f f77 -c main.f f77 -c morestuff.f f77 -o allstuff main.o morestuff.f
Ardından./allstuff yazarak dosyayı çalıştırın.
Uç: Bu, Fortran'ın daha yeni sürümleriyle aynı şekilde çalışır. Sadece.f'yi doğru uzantıyla ve f77'yi doğru derleyici sürümüyle değiştirin.
Adım 8. Derleyicinizin sağladığı optimizasyonu kullanın
Çoğu derleyici, kodunuzun verimliliğini artıran optimizasyon algoritmaları içerir. Bunlar genellikle derlenirken bir -O, -O2 veya -O3 bayrağı eklenerek açılır (yine fortran sürümünüze bağlı olarak).
-
Genel olarak, en düşük seviye -O veya -O2 seviyesi en iyisidir. Daha agresif optimizasyon seçeneğinin kullanılmasının karmaşık kodlarda hatalara yol açabileceğini ve hatta işleri yavaşlatabileceğini unutmayın! Kodunuzu test edin.
İpuçları
- Küçük programlarla başlayın. Kendi kodunuzu yaparken, problemin en önemli kısmını belirlemeye çalışın - veri girişi mi yoksa fonksiyonların çağrılması mı, döngünün yapısı (bunlar çok temel örneklerdir) ve oradan başlayın. Sonra bunun üzerine küçük artışlarla inşa edin.
- Fortran büyük/küçük harfe duyarlı değildir. Örneğin, bir "real Num" değişkeni bildirebilir ve ona bir değer atamak için sonraki satıra "num = 1" yazabilirsiniz. Ama bu kötü bir tarz, bu yüzden kaçının. Daha da önemlisi, Fortran, işlevler ve ifadeler durumunu da umursamıyor. İşlevleri ve ifadeleri BÜYÜK HARF ve değişkenleri küçük harfle yazmak oldukça yaygındır.
- EMACS, Not Defteri yerine kullanılabilecek iyi bir ücretsiz metin düzenleyicidir.
- İlk başta çevrimiçi bir IDE (entegre geliştirme ortamı) kullanmayı daha kolay bulabilirsiniz. İyi bir seçenek Kodlama Alanıdır. Orada Fortran-95 dahil çok sayıda programlama dili bulacaksınız. Başka bir seçenek de Ideone.