Arzu Erdem FORTRAN 2010-2011 BAHAR DÖNEMİ. 2010-2011 Bahar Dönemi Matematik Bölümü ders notları. Koceali Üniversitesi erdem.arzu@gmail.



Benzer belgeler
ÖDEV (Vize Dönemi) CEVAPLAR. 1. Ekrana Merhaba Dünya! yazdıran algoritmanın akış diyagramını çiziniz ve sözde kod olarak yazınız.

Diziler. Yukarıdaki bilgileri bilgisayar belleğinde saklamak için aşağıdaki gibi değişkenler tanımlanır ve değerler bu değişkenlere aktarılır :

GİRİŞ/ÇIKIŞ VE TANIMLAMA DEYİMLERİ

k ise bir gerçek sayı olsun. Buna göre aşağıdaki işlemler Matlab da yapılabilir.

BÖLÜM 2: ALGORİTMALAR

OMÜ HAVACILIK VE UZAY BİLİMLERİ FAKÜLTESİ METEOROLOJİ MÜHENDİSLİĞİ BÖLÜMÜ MET103 BİLGİSAYAR PROGRAMLAMA I BÜTÜNLEME SINAVI

Pythonda değişkenlerin türlerini tanımlamaya gerek yoktur

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

4- ALGORİTMA (ALGORITHM)

Algoritma ve Programlamaya Giriş


SAB104 Bilgisayar Programlama

Bilgisayar Programlama MATLAB

FORTRAN da Giriş/Çıkış Ve Tanımlamalar

Program akıģı sırasında belirtilen satır numaralı yere gitmek için kullanılır. Genel formu: [<satır numarası>] GOTO <satır numarası 1> GOTO n

BİLGİSAYAR PROGRAMLAMA MATLAB

DATA Deyimi. ii) DIMENSION NUM(5) DATA NUM / 1, 2, 3, 4, 5 / Bu durumda 5 elemanlı NUM dizisi, sırasıyla, 1'den 5'e kadar değerleri saklar.

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod)

Algoritma ve Akış Diyagramları

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

HSancak Nesne Tabanlı Programlama I Ders Notları

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

C Programlama Dilininin Basit Yapıları

Matlab da Dizi ve Matrisler. Mustafa Coşar

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

4- ALGORİTMA (ALGORITHM) M.İLKUÇAR - 1

PROGRAMLAMAYA GİRİŞ DERS 2

BM202 SAYISAL ÇÖZÜMLEME

PASCAL PROGRAMLAMA DİLİ YAPISI

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

Örnek...3 : Aşağıdaki ifadelerden hangileri bir dizinin genel terim i olabilir?

MATLAB a GİRİŞ. Doç. Dr. Mehmet İTİK. Karadeniz Teknik Üniversitesi Makine Mühendisliği Bölümü

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

program uc_hata implicit none integer : x(5),i

Algoritma ve Programlama: Karar Yapıları ve Döngüler

I=[1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1] % 4x4 lük birim matris

BİLGİSAYAR PROGRAMLAMA DERSİ

Dr. Fatih AY Tel:

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

BİL1001 Bilgisayar Bilimlerine Giriş 1

BMT 101 Algoritma ve Programlama I 7. Hafta. Yük. Müh. Köksal Gündoğdu 1

Fen ve Mühendislik Uygulamaları ile MATLAB

<fn> FORMAT (a1,a2,a3,...) : format deyiminin satır numarasıdır READ, WRITE deyimleri ile verilir. : alan bildirim deyimleridir.

Algoritma ve Akış Diyagramları

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

MATLAB İLE PROGRAMLAMAYA GİRİŞ. Nedim TUTKUN Elektrik Elektronik Mühendisliği Bölümü

TABAN ARĠTMETĠĞĠ. ÇÖZÜM (324) 5 = = = = 89 bulunur. Doğru Seçenek C dir.

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Fortran komut satırı toplam 80 kolon ve 5 bölgeden oluģur. Komut satırının yapısı aģağıdaki gibidir:

Bilgisayar Programlama

FORTRAN Değişkenleri

ALGORİTMA (ALGORITHM) M.İLKUÇAR -

C PROGRAMLAMA YRD.DOÇ.DR. BUKET DOĞAN PROGRAM - ALGORİTMA AKIŞ ŞEMASI

EM205 26/9/2014. Programlamaya giriş Algoritmalar. Amaçlar

BİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2

Bölüm 2 - C ile Programlamaya Giriş

Örnek...3 : Aşağıdaki ifadelerden hangileri bir dizinin genel terim i olabilir? Örnek...4 : Genel terimi w n. Örnek...1 : Örnek...5 : Genel terimi r n

Internet Programming II

Microsoft Office Excel 2007

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

1 PROGRAMLAMAYA GİRİŞ

Pascal Programlama Dili

LYS MATEMATİK DENEME - 1

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Günümüz bilgi toplumunda bilgisayar, her alanda kendine yer edinmiş ve insana, bir çok işlemde yardımcı olarak büyük kolaylık sağlamaktadır.

BİLGİSAYAR PROGRAMLAMA DERSİ

PROGRAMINIZI ANĠ SONLANDIRMAK ĠSTEDĠĞĠNĠZ YER BĠR DÖNGÜNÜN ĠÇĠ ĠSE NE OLUR?????????

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECİOĞLU 1

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

BMT 101 Algoritma ve Programlama I 3. Hafta. Yük. Müh. Köksal GÜNDOĞDU 1

Excel' de formüller yazılırken iki farklı uygulama kullanılır. Bunlardan;

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

1. GİRİŞ 1.1. GENEL BAKIŞ 1.2. KULLANICI ARAYÜZÜ

1. BÖLÜM Polinomlar BÖLÜM II. Dereceden Denklemler BÖLÜM II. Dereceden Eşitsizlikler BÖLÜM Parabol

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

Dersin Sorumlusu: Yrd. Doç. Dr. Birol SOYSAL. Sunumları Hazırlayan: Doç. Dr. Bülent ÇAKMAK

ALGORİTMA VE PROGRAMLAMA I

1. BÖLÜM Mantık BÖLÜM Sayılar BÖLÜM Rasyonel Sayılar BÖLÜM I. Dereceden Denklemler ve Eşitsizlikler

BİLGİSAYAR PROGRAMLAMA DERSİ

SAYILAR DOĞAL VE TAM SAYILAR

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

C PROGRAMLAMA DİLİNE GİRİŞ

Olimpiyat Soruları. sonuçları tekrar fonksiyonda yerine koyup çıkan tüm sonuçları toplayan program (iterasyon sayısı girilecek)

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

ALGORİTMA NEDİR? (Adım adım işlem basamaklarının yazılmasıdır.)

Matematiksel Operatörler

Örnek bir Algoritma. Örneğimiz bir insanın evden çıkıp işe giderken izleyeceği yolu ve işyerine girişinde ilk yapacaklarını tanımlamaktadır.

MATEMATİK. Doç Dr Murat ODUNCUOĞLU

PROGRAMLAMAYA GİRİŞ VE ALGORİTMA «YTÜROK» EĞİTMEN:REHA ÖZGÜR ŞİMŞEK

Fortran da kullanılan giriş çıkış komutları PRINT, WRITE ve READ dir.

SEÇİM İŞLEMLERİ. Yüzde Hesaplamaları HÜCRE KOPYALAMA & TAŞIMA FORMÜL GİRİŞİ FORMULLER 3) DÖRT İŞLEM. a) Bugün: b) Şimdi: c) Topla: d) Çarpım:

Alt programlar- Deyim Fonksiyonları

BİL-142 Bilgisayar Programlama II

EXCEL DE ARİTMETİKSEL İŞLEMLER

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

FORTRAN Değişkenleri Nasıl Olmalı?

BLGM BÖLÜM. Problem Çözme Kavramları (Algoritma ve Akış Şemaları)

Transkript:

FORTRAN Arzu Erdem 2010-2011 BAHAR DÖNEMİ 2010-2011 Bahar Dönemi Matematik Bölümü ders notları Koceali Üniversitesi erdem.arzu@gmail.com

GİRİŞ AMAÇ: Problem çözme kavramını geliştirmek ve incelemek Problem çözerken başka yollar düşünmek ve geliştirmek Problemi çözmek için öncelikle, problemin nasıl bir duruşunun veya tavrının olduğunu düşünmemiz gerekmektedir. Ve bu bazen göründüğü kadar kolay olmamaktadır. Bunun için 2 temel yöntem ele alınabilir: 1. Doğal diller 2. Yapay diller DOĞAL DİLLER Pek çok insanın kullanmış olduğu dillerdir. Fakat zaman zaman farklılıklar mevcut olabilir. Örneğin o 3 yaşındaki bir çocuk ile yetişkinin konuşması arasındaki farklar o Bir araba yapımında, fizikçi ile mühendisin kullanmış olduğu dil arasındaki farklılıklar o Yeni teknolojilerin kullanımlarının anlatılmasında işçi ve yöneticilerin kullanmış olduğu diller, vb. Veya doğal diller bazen çok anlamlı da olabilirler. Örneğin Yaşlı bir adam ve kadın yolda yürüyorlar.==> Kadın ve adam ikisi de yaşlı mı? Bu yüzden problemin tanımlanması ve çözülmesinde doğal dilleri kullanırken çok dikkatli olmalıyız! YAPAY DİLLER En çok kullanılan yapay diller ise teknik terim ve notasyonlardır: Terimler o Sıcaklık ( C, F) o Basınç ((Pa)-Pascal, (N/m 2 ) Newton/m 2 ) o Kütle ((kg), (g), (t) - ton), vb. Notasyonlar o Cebir (N,Z,Q,R,C ile gösterilen sayı kümeleri) o Temel hesaplar ( ) o Mantık ( )

ALGORİTMA Bir problemi veya problemin bir parçasını çözmek için kullanılan adımlar dizisidir. Hata! Sıra belirtilmemiş.tost ve yağda yumurta pişirmek için bir algoritma yazınız. Öncelikle pişirmek için eksiklerimizin olup olmadığını kontrol etmek ve varsa bunları tamamlamak işimizin yarısını yapmak demektir. Buna göre 1. İhtiyaç listesini belirleriz sonra ise 2. Yapılacakları adım adım sıralarız. Burada adımlarımızın tam olması gerekmektedir. Örneğin yumurta yapımında yağı koymadan yumurtaları kırarsak yumurtalarımız yanabilir gibi PROGRAM DİLLERİ PROGRAM DİLİ NEDİR? Problemi çözmek için bilgisayarın anlamlandırdığı bir araçtır. Problemlerin çeşitliliği ile birlikte programların çeşitliliği meydana gelmiştir. Programın ilk olarak 0-1 i kullanan bir dijital araç olarak başlamıştır. Ve 0-1 ikilisinin kullanımının yetersiz geldiği durumlarda ise programlar geliştirilmiştir. FORTRAN (FORMULA TRANSLATİON) 1954 ten 1957 ye kadar IBM ve John Backus tarafından geliştirilen bir dildir. Problemlerin bilimsel olarak çözülmesinde kullanılır ve öğrenmesi oldukça kolaydır. Bilimsel olarak hala kullanılan bir dildir ve özellikle eğitim sektöründe uygun olması sebebiyle kullanılır. 1958 de Fortan II versiyonu ile yenilenmiştir. Fortran III, Fortran IV, Fortran 66, Fortran 77, Fortran 90, Fortran 95, Fortran 2003 ve Eylül 2010 da Fortran 2010 adıyla bilinen geliştirilmiş versiyonları da mevcuttur. COBOL (COMMON BUSİNESS ORİENTATED LANGUAGE) İş dünyası tarafından kabul edilen bir programdır. Bilimsel hesaplamalardan daha çok daha karmaşık tarzdaki problemler için kullanılır. ALGOL 1950 lerde geliştirilen ve UNESCO tarafından desteklenen bir dildir. Ve Algol 60, Algol 68 gibi versiyonları ile geliştirilmiştir. PASCAL

Pascal ı dizayn eden Niklaus Wirth, Algol 68 in disaynında bulunmuştur. Pascal görüntü olarak Algol 68 ile benzerlikler taşırken daha etkili ve öğrenmesi daha kolay bir dildir. BASİC (BEGİNNERS ALL PURPOSE SYMBOLİC INSTRUCTİON CODE) Kemeny ve Kurtz tarafından Dartmouth da, 1960 larda geliştirilmiştir. Öğrenmesi kolay olduğu gibi bazı yetersizliklerinden dolayı çok fazla eleştiri alan bir dildir. C Brian Kernighan ve Dennis Ritchie tarafından geliştirilen yüksek seviyede gelişmeler içeren bir dildir. MATLAB(MATRİX LABORATORY) C, C++ ve Fortran dillerini içinde barındıran bir ara yüzdür. 1970 lerde University of New Mexico da Cleve Moler tarafından oluşturulmuş ve 2000 lerde MathWorks tarafından geliştirilmiştir.

VERİ TİPLERİ SABİTLER INTEGER (TAM SAYI) Tamsayı türüdür ve sınırlıdır. İşlemcinin ve bilgisayarın kapasitesine göre sınır değişir. Örrnneekk: : 1234 tamsayıdır ancak 1234. değildir. REAL (REEL SAYI) 8 basamağa kadar değişen bir sabittir. Örrnneekk: : 1234. 1234E3=1234000-23456. = -2.3456E4 DOUBLE 16 basamağa kadar değişen reel sayılardır. Reel sayılardaki E sembolü yerine D sembolü kullanılır. Örnek: 1234D3=1234000 CHARACTER (KARAKTER) Tek harf veya harfler bütünüdür. Tek tırnak içinde yazılır. Örnek: S Abab Bugün hava çok güzel Yanlış kullanım

Yanlış kullanım Yanlış kullanım Karakter işlemlerinde kesme işareti kullanmak için iki kesme işareti tanımlanmalıdır. Örrnneekk: : Bugün Sıla nın doğum günü LOGİCAL (MANTIKSAL) Doğru ve yanlış değerlerini alan mantıksal sabitlerdir. Örrnneekk: :. true ve.false COMPLEX (KOMPLEKS SAYILAR) Kompleks sayılar reel sayı ikilileri olarak tanımlanır. Örrnneekk: : (1.2345,-6.5E4) 1.2345 reel kısım, -6.5E4 sanal kısım olarak tanımlanır. DEĞİŞKENLER Değişkenler, programın depoladığı giriş, çıkış, sabit ve ara değerlerdir. Değişkenlerin isimlerinde alfabetik karakter ve sayı bulunabilir. Ancak isimler harflerle başlamalıdır ve 31 karakterden uzun olmamalıdır. Ayrıca değişkenleri programın başında tanımlamalıyız! Örrnneekk: : A3, A_2, loop3, sam, A3B4 Doğru 123x, 0A, _abc Yanlış Fortran büyük ve küçük harf ayrımı yapmaz! Örrnneekk: : NUMBER ve NUMber isimli değişkenler aynıdır! Sabitler gibi değişkenlerinde tipleri mevcuttur ve tipler sabit tipleri gibidir. Programın başlangıcında değişken tiplerini tanımlarken çok dikkatli olunmalıdır. Eğer değişken tanımlamayı yapmazsanız, Fortran otomatik olarak bir belirleme yapar: I,J,K,L,M,N harfleri ile başlayan değişkenler tam sayıdır, A -H ve O Z harfleri ile başlayan değişkenler reel sayı olarak atanır. CHARACTER*7:: PROG PROG= FORTRAN

LOGİCAL:: D D=.TRUE. PROGRAM NASIL YAZILIR VE ÇALIŞTIRILIR? Fortran ara yüzü için kullanılacak program Force 2.0 dır. Yeni dosya açmak için FİLE NEW Var olan dosyayı açmak için FİLE OPEN En son açılmış olan dosyaları açmak için FİLE REOPEN Kaydetmek, Farklı formatta kaydetmek ve tüm dosyaları kaydetmek için FİLE SAVE, FİLE SAVE AS, FİLE SAVE ALL kullanılır. Dosya uzantıları.f olarak kaydedilir. Programı veya tüm programları kapatmak için FİLE CLOSE, FİLE CLOSE ALL Programı çalıştırmak için RUN (F9) Programı derlemek için RUN COMPİLE (CTRL+F9) Derlenen programı açmak için RUN EXECUTE (SHİFT + F9) Programı durdurmak için RUN STOP (CTRL+ F12) WRİTE(*,*) Programın çıktılarının ekranda görünmesi ve yazdırılması için kullanılır. Parantez içindeki ilk * işareti çıktının nereye yazılacağını ikinci * ise hangi formatta yazılacağını belirtir. WRITE(*,*) EKRANA YAZMAK VARSAYILAN FORMATTA YAZMAK READ(*,*) Programın girişlerinin okunması için kullanılır. Write da olduğu gibi parantez içindeki ilk * işareti çıktının nereye yazılacağını ikinci * ise hangi formatta yazılacağını belirtir. READ (*,*) EKRANA YAZMAK VARSAYILAN FORMATTA YAZMAK Klavye Bilgisayar Read (*,*)

Ekran Bilgisayar write (*,*) PROGRAMI ADLANDIRMAK VE BİTİRMEK Program yazarken aşağıdaki gibi program ile başlamalı stop ve end ile bitirmeliyiz. Program Program_adı. İşlemler. Stop End Program_adı Programı kaydederken kaydedeceğimiz ad ve Program_adı aynı olmak zorunda değildir ancak hangi programın neyi ifade ettiğini anlamamız açısından aynı adları vermekte fayda vardır. COMMENT (YORUM) SATIRLARI Çalışmayan ve yorumda bulunulacak veya açıklama yapılacak satırlar için C,! işaretlerinden biri kullanılır. Örrnneekk: : Merhaba tanıştığıma memnun oldum. Ben yazdıran program, hi.f Örrnneekk: : İki sayının toplamını yazdıran program, top.f Örrnneekk: : Değişken tiplerinin hassasiyeti ile ilgili program. (x=3.4 y=3 ve tanımlama integer olarak ve x/(x-y) ifadesini buldursun!), Degisken.f Örrnneekk: : Kompleks sayılarda 4 işlemi hesaplayan program, Kompleks.f

OPERATÖRLER ARİTMETİK OPERATÖRLER Operator Açıklama + Toplama veya pozitif sayı - Çıkarma veya negatif sayı * Çarpma / Bölme ** Kuvvet MATEMATİKSEL FONKSİYONLAR Fonksiyon Açıklama ABS (x) X in mutlak değer COS (x) x in Cosine değeri (radian olarak) EXP(x) Exponential Fonksiyon INT(x) X in tam kısmı LOG(x) X in doğal logaritması MAX(xl,..., Xn) xl,...,xn nin Maximumu

MIN(xl,..., xn) xl,..., xn nin Minimumu MOD(x,y) x (mod y); x - INT(x/y) * y NINT(x) X in en yakın tamsayıya yuvarlatılması SIN(x) X in Sine değeri (radian olarak) SQRT(x) x in karekökü MANTIKSAL OPERATÖRLER Operator.NOT..AND..OR..EQV..NEQV. Açıklama Mantıksal negatiflik Mantıksal birleşme Mantıksal ayrılma Mantıksal eşitlik Mantıksal eşitsizlik.not. Logic 1.NOT. (Logic 1) TRUE FALSE FALSE TRUE.AND. Logic 1 Logic 2 (Logic 1).AND. (Logic 2) TRUE TRUE TRUE TRUE FALSE FALSE

FALSE TRUE FALSE FALSE FALSE FALSE.OR. Logic 1 Logic 2 (Logic 1).OR. (Logic 2) TRUE TRUE TRUE TRUE FALSE TRUE FALSE TRUE TRUE FALSE FALSE FALSE.EQV. Logic 1 Logic 2 (Logic 1).EQV. (Logic 2) TRUE TRUE TRUE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE.NEQV. Logic 1 Logic 2 (Logic 1).NEQV. (Logic 2) TRUE TRUE FALSE TRUE FALSE TRUE FALSE TRUE TRUE FALSE FALSE FALSE Örrnneekk: : employed=.true, age=50 test = employed.and. (age<45) değeri nedir? Örrnneekk: : name = James test = (name='dimitris').or. (name='james') değeri nedir? Örrnneekk: : big=100, small=2 test =.NOT. (big>small), test =.NOT. test değerleri nedir?

Örrnneekk: : test = (5*3>12).EQV. (6*2>8), test = (5*3<12).EQV. (6*2<8) değerleri nedir?. Örrnneekk: : test = (5*3>12).NEQV. (6*2>13), test = (5*3>12).NEQV. (6*2<13) değerleri nedir?. Operatorler.f İLİŞKİSEL OPERATÖRLER Operator.LT..LE..EQ..NE..GT..GE. Açıklaması Küçük Küçük veya eşit Eşit Eşit deği Büyük Büyük veya eşit İŞLEM ÖNCELİĞİ Sıra İşlem Bilgisayar Dili 1 Parantezler () 2 Üs alma A**B 3 Çarpma ve Bölme A*B, A/B 4 Toplama ve Çıkarma A+B, A-B

Örrnneekk: : Aşağıdaki ifadeleri dışarıdan girilen değerler için sonuçları bulduran programlar, A+B-C+2AB-7,,,,,

KONTROL İFADELERİ IF KOŞUL If karar yapısı, bir koşul sağlandığı zaman yapılacak işlemleri kapsar. Kontrol edilecek koşul ifadesinin sonucu True değerini alırsa, If End If bloğu arasındaki kodlar çalıştırılır. If (Şart) Then Komutlar ElseIf (Şart) Komutlar ElseIf (Şart) Komutlar Else Komutlar End If Eğer birden fazla koşulumuz yoksa ancak birden fazla komutumuz varsa If (Şart) then Komutlar End If Tek şartımız varsa Then ve End If kullanmayabiliriz. IF (TODAY.EQ.MONDAY) THEN. ELSEIF (TODAY.EQ.TUSDAY) THEN. ELSEIF (TODAY.EQ.WEDDAY) THEN. ELSEIF (TODAY.EQ.THRDAY) THEN. ELSEIF (TODAY.EQ.FRIDAY) THEN. ELSEIF (TODAY.EQ.SATDAY) THEN.

ELSEIF (TODAY.EQ.SUNDAY) THEN. ELSE there has been an error. The variable TODAY has taken on an illegal value. ENDIF If (Şart) Komutlar 1, x 0 Örnek: f( x) x,0 x 2 3,2 x 4 ile tanımlanan fonksiyonun dışarıdan girilen x değerine 4 x, x 4 göre f() x i hesaplayan program, Örnek: 2 f ( x) x 5x 3 fonksiyonu için sgn f( x ) fonksiyonunu hesaplayan, Örnek: Dışarıdan girilen herhangi bir sayının negatifi pozitif veya 0 olduğunu veren program, Örnek: Dışarıdan girilen bir sayının tek mi çift mi olduğunu veren program, Örnek: Dışarıdan girilen 2 sayıdan büyük olanı veren programı yazınız. Örnek: 1.vize ve 2. Vize durumlarına göre not hesabı yapan ve geçmesi için finalden kaç alması gerektiğini veren program,

SELECT CASE Tekrarlamalı If koşulu yerine Select Case yapısı da kullanılabilir. SELECT CASE( ifade ) CASE( değeri ) koşullar... CASE DEFAULT koşullar END SELECT select case season case ('summer') leaves =.true. sun =.true. case('winter') leaves =.false. sun =.false. case('spring','autumn') leaves =.true. sun =.false. case default write(*,*) 'mistake in season name' end select Örnek: Verilen aya göre hangi mevsimde olduğu belirten program, Örnek: Belirtilen tarihteki ayın kaç gün sürdüğünü veren algoritmayı yazınız. AY.f

Örnek: Dışarıdan girilen tek haneli bir sayıyı yazı ile yazdıran programın VBasic dilinde yazınız. SAYI.f Örnek: Katlı bir otoparkta arabalar girişte plaka numaraları, sahibinin adı ve giriş saati kaydedilecektir. Garaj yöneticisi araba sahibi gelip plakasını veya ismini söylediğinde arabanın kalma süresi ile orantılı olan ücretini bulup fişini kesebilecek program, OTOPARK.f 0-2 saat 1,5 YTL 2-8 saat 3 YTL 8-24 saat 5 YTL Örnek: Koc - 21 Mart - 20 Nisan Boga - 21 Nisan - 20 Mayıs Ikizler - 21 Mayıs - 21 Haziran Yengec - 22 Haziran - 22 Temmuz Aslan - 23 Temmuz - 23 Ağustos Basak - 24 Ağustos - 23 Eylül Terazi - 24 Eylül - 23 Ekim Akrep - 24 Ekim - 22 Kasım Yay - 23 Kasım -21 Aralık Oglak - 22 Aralık -20 Ocak Kova - 21 Ocak - 19 Şubat Balik - 20 Şubat - 20 Mart Burç çizelgesine göre ay ve günü girdiğimizde hangi burcumuzun olduğunu veren program. BURC.f

GOTO Programı durdurmadan önce başka bir ifadeye yönlendirmek istiyorsak GOTO ifadesini kullanırız.... IF( x<10 ) GOTO 10... 10 STOP Örnek: Yaş girişi ve negatif sayı girilmesi durumunda tekrar giriş yaptıran program, DO DO *kontrol cümlesi+ komutlar END DO Veya DO sayac = başlangıç, bitiş [,adım] komutlar END DO Döngüleri yazarken çakışmamasına veya kontroller le birlikte düzgün kullanımına dikkat ediniz! main: IF( sum>100 ) THEN inner: DO i=1,n... END IF main END DO inner!illegal, inner must be within main EXİT Koşullu olarak DO döngüsünden çıkmak için kullanılır. do

ifadeler if (mantıksal ifade) exit komutlar end do Örnek: Dışarıdan girilen N sayısına göre 1 den N e kadar olan sayıların karelerinin toplamını hesaplayan program, DO1.f Örnek: Dışarıdan girilen N sayısına göre; T1,1 den N e kadar sayıların toplamı; T2, 1 den N e kadar tek sayıların toplamı; T3 de 1 den N e kadar çift sayıların toplamıdır. Buna göre T1, T2, T3 değerlerini hesaplayan program DO2.f Örnek: 1-N arasında girilen pozitif sayılardan negatif sayı girişi olduğunda döngüden çıkıp yeniden giriş yapmasını sağlayan program, DO3.f Örnek: Tüm kenarları tamsayı ve hipotenüsü 20 den küçük olan tüm dik üçgenleri bulduran program Örnek: Dışarıdan girilen bir N tamsayısı için 1-N arasında kaç tane asal sayı olduğunu bulduran program Örnek: Dışarıdan girilen N değerine göre (N>20), 0-N arası tüm sayıların toplamını, 5-N-6 arası tek sayıların çarpımını, 14-N arası çift sayıların toplamını hesaplayan program 2 3 4 x x x Örnek: ln 1 x fonksiyonun seriye açılımı ln(1 x ) x... şeklindedir. 2 3 4 Buna göre dışarıdan girilen x için ln 1 x değerini hesaplayan program, 3 5 x x Örnek: arctan x fonksiyonun seriye açılımı arctanx x... şeklindedir. Buna 3! 5! göre dışarıdan girilen x için arctan x değerini hesaplayan program 3 5 x x Örnek: Dışarıdan girilen x için T x... ; x 1 değerini hesaplayan program, 3 5

Örnek: Dışarıdan girilen x için T 1 1 1 x 3 3x 5 5x... ; x 1 değerini hesaplayan program, Örnek: Dışarıdan girilen x için T 2 3 x 1 ( x 1) ( x 1) 2 3 x 2x 3x... ; x 1/ 2 değerini hesaplayan program, Örnek: Dışarıdan girilen n sayısına göre a 1 1 1 1 1 1 1... 1 2 2 2 2 1 2 3 n çarpımını bulduran program, Örnek: Dışarıdan girilen n sayısına göre seri toplamını bulduran program, a 1 1 1... sin1 sin1 sin 2 sin1 sin 2... sin n Örnek: Dışarıdan girilen n sayısına göre program, a 1! 1 2! 1 1 2... 1 n! 1 1... 2 n ifadesini bulduran DO WHİLE Tekrarlamalı ifadelerde koşul sağlandıkça işlemlerin sağlanması için kullanılan bir komuttur. do while(mantıksal ifade) komutlar end do Örnek: Dışarıdan girilen 10 tabanındaki pozitif bir tamsayının, belirtilen tabandaki karşılığını hesaplayan program, Örnek: Verilen N sayısını oluşturan tek rakamların toplamını bulmak için program yazınız. Örnek: M tabanında verilen N sayısının 10 tabanında değerini bulmak için program yazınız.

DİZİLER Birden fazla giriş yapılıp, programda kullanılacak olan değişken türlerini dizi olarak tanımlamamız gerekir. Dizilerin 2 boyutlu durumunu ise matris olarak düşünürüz. Aşağıda 8 elemanlı bir dizi örneği görmekteyiz. Aşağıdaki ise 2 satır ve 4 sütundan oluşan bir matrisi gösterir. Fortran dilinde dizi ve matrisleri aşağıdaki kullanımlar ile belirtiriz: DIMENSION name(bound) DIMENSION name (bound1,bound2) REAL name(bound) INTEGER name(bound) CHARACTER name(bound) LOGICAL name(bound) REAL name (bound1,bound2) INTEGER name (bound1,bound2) CHARACTER name (bound1,bound2) LOGICAL name (bound1,bound2) Aşağıdaki örnekte bir telefon rehberi örneği verilmiştir. Matris gibi düşündüğümüzde 1. Sütun kişilerin adlarını, 2. Sütun kişilerin adreslerini ve 3. Sütun ise bunlara karşılık gelen telefon numaralarını ifade eder ve her bir satır için kişilerin bilgilerini doldurabiliriz.

Bir başka örnek olarak aşağıdaki kitap katoloğunu verebiliriz: 1. Sütun kitabın yazarını, 2. Sütun kitabın adını ve 3. Sütun ise yayın evini belirtir. Örneğin 4. Sütun yayım yılı ve 5. Sütunda da fiyat bilgileri ilan bir çizelgeye genişletebiliriz. Ve son örnek olarak da bir sınıfın ders notu tablosunu verebiliriz: DİZİLERİN ÖZELLİKLERİ belirtmekteyiz. gösterimi ile 8 elemanlı a dizisinin 5. Elemanı gösteriminde ise b matrisi 5x4 lük bir matristir ve taralı kısım b matrisinin 4. Satırının 2. Sütun elemanını gösterir.

Aşağıdaki örnekte ise aylara göre sağanak yağış miktarı verilmiştir: Dizilerin indisleri her zaman pozitif olmak zorunda değildir! REAL V(-5:5) v(-5),v(-4),v(-3),v(-2),v(-1),v(0),v(1),v(2),v(3),v(4),v(5) elemanları ile 11 boyutlu bir dizi tanımlar REAL A(3:5, 3:5) A(3,3),A(3,4),A(3,5), A(4,3),A(4,4),A(4,5), A(5,3),A(5,4),A(5,5) elemanları ile birlikte 3x3 lük bir matris verir. CHARACTER M(3,4)*7, V(9)*4 Örnek: Dışarıdan girilen N boyutlu bir A dizisinin tüm elemanlarının toplamını hesaplayan program. Örnek: Dışarıdan girilen N boyutlu bir A dizisinin tüm elemanlarının karelerinin toplamını hesaplayan program. Örnek: Dışarıdan girilen N boyutlu A ve B dizilerin toplayarak C dizisini oluşturan program. Örnek: Dışarıdan girilen N boyutlu A ve B dizilerinin karşılıklı elemanlarının çarpımından oluşan C dizisini oluşturan program.. Örnek: Dışarıdan girilen N boyutlu A dizisini bir k katsayısı ile çarpıp B dizisini oluşturan program. Örnek: Dışarıdan girilen N boyutlu bir A dizisini elemanlarının ters sırada yazılmasıyla elde edilen B dizisini bulduran program. Örnek: Dışarıdan girilen N boyutlu A ve B vektörlerinin iç çarpımını hesaplayan program.

Örnek: Dışarıdan girilen N boyutlu A dizisini aritmetik, geometrik ve harmonik ortalamalarını hesaplayan program. 2 Örnek: B 0 sayısı verildiğinde a 1 1 ; ai a i 1 1, i 2,3,4,... kuralı ile tanımlanan dizisinin B den küçük olan tüm elemanlarını bulmak için program yazınız. Örnek: Dışarıdan girilen NxN tipinde A ve B matrislerinin toplamını hesaplayan program. Örnek: Dışarıdan girilen NxN tipinde A matrisinin izini (ana köşegen üzerindeki elemanların toplamını) hesaplayan program. Örnek: Dışarıdan girilen NxN tipinde A matrisinin 2. köşegen üzerindeki elemanların toplamını hesaplayan program. Örnek: Dışarıdan girilen NxN tipinde A matrisinin 2. satır elemanlarının toplamın hesaplayan program. Örnek: Dışarıdan girilen NxN tipinde A matrisinin 2. sütun elemanlarının toplamını hesaplayan program. Örnek: Dışarıdan girilen NxN tipinde A matrisinin tüm elemanlarının toplamın veren program. Örnek: Dışarıdan girilen NxN tipinde A matrisinin transpozesini veren program. Örnek: Dışarıdan girilen N sayısına göre NxN tipinde birim matris oluşturan program. Örnek: Dışarıdan girilen NxN tipinde A ve B matrislerinin çarpımını hesaplayan program. Örnek: Dışarıdan girilen NxN tipinde A matrisinin esas köşegenin üst kısmında kalan elemanların toplamını veren program.

FORMAT OPEN Read ve Write komutlarında bir veriyi giriş yaparken veya yazdırırken bilgisayar ekranındaki dosyaya yazdırıyorduk Hâlbuki var olan bir dosyadaki veriyi kullanabileceğimiz gibi verilerimizi saklamak ve bir dosyaya da yazdırmak isteyebiliriz. Bunun için dosya açmak gerekmektedir. Fortranda dosya açma işlemi ise OPEN komutu ile yapılır. OPEN (UNIT=sayı,FILE= dosyanın adı ) OPEN (UNIT=10,FILE= fibonacci.dat ) Örnek: Dışarıdan verdiğiniz 3x3 lük bir matrisi txt uzantılı bir dosyaya yazdırın. OPEN1.f DO döngüsüne girilmeden okutma ve yazdırma yapmak için WRITE (2,*) ((A(I,J),J=1,N),I=1,N) READ (*,* ) ((A(I,J),J=1,N),I=1,N) Komutu da kullanılabilir. TAM SAYILAR, I FORMATI Bazen programda varsayılan format kullanmak yetersiz olabilir. Özellikle de verilerimizi dosyadan okutuyorsak Format özelliklerini bilmemiz gerekmektedir. Read ve Write komutlarındaki ikinci * sembolü yerine belirtilen format tanıtılabilir. Tamsayı format için kullanım: Iw (idth) w: toplam karakter sayısı I3 için 123, -93 Örneğin, write(*,10) i,j,k 10 format(i2,i4,i10) Ifadesi ile I,j,k tamsayılarını toplam olarak sırasıyla 2,4 ve 20 basamaklı olarak belirtmeliyiz. Aynı formatta birden fazla sayıyı formatları için

2I8 8 basamaklı 2 tam sayıyı belirtir. Örnek: 5,7,2 basamaklı tam sayı girişi ve yazdırılması için program, REEL SAYILAR, F FORMATI Reel sayı format için kullanım: Fw.d w: toplam karakter sayısı, ondalıklı basamaklarda dahil olmak üzere, d ise ondalıklı basamak F8.3 için 1234.678, -234.678 Örneğin, write(*,10) T,S 10 format(f5.2,f7.4) Ifadesi ile T,S reel sayılarını toplam olarak sırasıyla 5 basamaklı-2 ondalıklı ve 7 basamaklı-4 ondalıklı olarak belirtmeliyiz. REAL :: itest=123.4567!number to write... WRITE(*,*) itest! 1.2345670E+02 -not F format WRITE(*, (F8.0) ) itest! 123. WRITE(*, (F10.4) ) itest! 123.4567 WRITE(*, (F10.5) ) itest! 123.45670 WRITE(*, (F10.9) ) itest!********** WRITE(*, (2F8.4) ) itest, 7654321!123.4567765.4321 WRITE(*, (2F10.4) ) itest, 7654321! 123.4567 765.4321 Aynı formatta birden fazla sayıyı formatları için 2F8.3 8 basamaklı, 3 ondalıklı 2 reel sayıyı belirtir. Örnek: 3 ondalıklı 7 basamaklı, 5 ondalıklı,8 basamaklı reel sayı girişi ve yazdırılması için program, KARAKTERLER, A FORMATI Karakter format için kullanım:

Aw w: toplam karakter sayısı A5 için ABCDE Örneğin, write(*,10) b 10 format(a8) Ifadesi ile b yi 8 karakter olarak belirtmeliyiz. CHARACTER(LEN=8) :: long= Bookshop CHARACTER(LEN=1) :: short= B... WRITE(*,*) long! Bookshop WRITE(*, (A) ) long!bookshop WRITE(*, (A8) ) long!bookshop WRITE(*, (A5) ) long!books WRITE(*, (A10) ) long! Bookshop WRITE(*, (A) ) short!b WRITE(*, (2A) short, long!bbookshop WRITE(*, (2A3) short, long! BBoo Aynı formatta birden fazla karakter formatları için 2A4 4 harfli 2 karakteri belirtir. Örnek: 7 ve 12 karakterli değişkeleri okutun ve yazdırın, CONTROL FONKSİYONLARI Yeni bir satırdan yazdırmak için / sembolü kullanılır. Boşluk vermek için ise X sembolü kullanılır. INTEGER :: n=1234!number to write... WRITE(*, (I4, 2X, I4) ) i, i-1!1234 1233

WRITE(*, (I4, 4X, I4) ) i, i-1!1234 1233 INTEGER :: value = 100 INTEGER :: a=101, b=201... WRITE(*, ( The value is, 2X, I3, units. ) ) value WRITE(*, ( a =, 1X, I3, /, b =, 1X, I3) ) WRITE(*, ( a and b =, 2(1X, I3) ) ) a, b Komutlarından sonar ekrandaki görüntü: The value is 100 units. a = 101 _ b = 201 _ a and b = 101 _ 201

ALT PROGRAMLAR Sin, Sqrt gibi fonksiyonları kullandığımızda aslında alt programları kullanmış oluyoruz. Bu fonksiyonlar Fortranın yazılımında verilen fonksiyonlardır. Bizde bu fonksiyonlar gibi fonksiyon yazıp alt program tanımlayabiliriz. Alt programları, Fortranın belirli olan işleyişinden bağımsız olarak ele alabiliriz. Ayrı ayrı yazılabilir ve derlenebilir. Büyük programlar yazarken, program alt programlar bölmek, programın doğruluğunu test etmek amacıyla oldukça kullanışlı bir yöntemdir. Alt programların diğer bir avantajı ise, çalışan bir alt programınızı diğer pek çok ana programda kullanabilirisiniz. 2 türlü alt program ele alacağız: 1. Functions: isimleri ile çağırılırlar. Örneğin sin(x). 2. Subroutines: alt programların en genelidir. Çok kompleks programların 1 veya 1 den fazla cevabı olması durumlarında çalışırlar. RETURN Alt programları sonlandırmadan önce alt programa gönderme yapan komuttur. Alt programlarda END komutundan önce kullanılmalıdır. CHARACTER*25 TEXT TEXT = "Some kind of minor catastrophe" CALL OOPS ( TEXT ) STOP END SUBROUTINE OOPS ( S ) CHARACTER S* 32 WRITE (*,*) S RETURN END FUNCTİON Function kullanımları ana programda olmalıdır ve ana programın END komutundan sonra yazılmaya başlamalıdır. Function kullanımı Function ile başlayan ve argumanları olan bir kullanımdır.

function bigroot(a,b,c) Function kullanımları END ifadesi ile bitmelidir. end function function_name END ifadesinden önce kesinlikle RETURN ifadesi kullanılmalıdır. Function kullanımlarında da kontrol ifadeleri (if,do,select) kullanılabilir Function ifadelerinde de değişken tipleri aynı şekilde geçerlidir. Function kullanımlarında 1 (tek) değer hesaplanır! program fn1 real:: a,b,c,bigroot!! Program to demonstrate the use of a FUNCTION subprogram! write(6,10) read(5,*) a, b, c write(6,20) bigroot(a, b, c) 10 format(' Enter the coefficients a, b, c '/) 20 format(' The larger root is ',F12.6) stop end program fn1!! End of main program! function bigroot(a, b, c) real:: bigroot, a, b, c, test, root1, root2!! Function to find largest root of a quadratic! If no real roots then function returns value -9.0E35

! test = b*b - 4.0*a*c if(test.ge.0.0) then root1 = (-b + sqrt(test)) / (2.0 * a) root2 = (-b - sqrt(test)) / (2.0 * a) if(root2.gt.root1)then bigroot = root2 else bigroot = root1 end if else bigroot = -9.0e35 end if return end function bigroot Yukarıdaki örnek, 2.dereceden bir polinomun köklerinden en büyüğünü buldurmak için Function komutu kullanılarak yapılmıştır. Örnek: Kombinasyonu fonksiyon kullanarak ve kullanmayarak bulan program Örnek: fonksiyonu için ifadesini fonksiyon kullanarak ve kullanmayarak hesaplayan program, aynı örnek için genelleştiriniz. 2 N x x x x ifadesinin hesaplanmasını x Örnek: e fonksiyonunun seriye açılımı e 1... şeklindedir. Buna göre, 1! 2! N! x dışarıdan girilen x ve N değerine göre e I funksiyon kullanarak ve Fortran ın kütüphanesinde kullanılan fonksiyon ile kaşılaştıracak şekilde program, SUBROUTİNES Function ifadesi ile tek bir değer hesaplanabilirken, Subroutines ifadesi ile birden çok değer hesaplanabileceği gibi hiçbir değer de hesaplanmayabilir.

Subroutine, ana programın içinde bulunan bir alt programdır ve ana programın END komutundan sonra yazılmaya başlanır Subroutine komutu, Subroutine ile başlayan ve argumanları olan bir kullanıma sahiptir. subroutine(orig,sorted,n) Subroutine komutu END ifadesi ile biter END komutundan önce RETURN kullanılmalıdır Subroutine ile birden fazla değer çıktısı alınabildiğinden değişken tipleri belirtilmelidir. Değişken tipleri ana programda tanımlandığı kurallar geçerlidir. Subroutine komutunda dizi/matrisleri de tanımlayabilir ve sonuç olarak dizi/matris çıktısı alabilirsiniz. Aşağıdaki örnekte ise 2. Dereceden bir polinomun köklerini bulduran bir programdır: program subrout1 implicit none real:: a,b,c,root1,root2 logical:: realroots! demonstration of simple subroutine write(*,10) read(*,*) a,b,c! call solvit(a,b,c,root1,root2,realroots)! if (realroots) then write(*,20) root1,root2 else write(*,*) 'Sorry, there are no real roots' endif! 10 format('enter 3 coefficients')

20 format('the roots are',2f12.6) stop end!!subroutine solvit! subroutine solvit(a,b,c,root1,root2,realroots) implicit none real::a,b,c,root1,root2,test logical::realroots! test=b**2-4*a*c! if(test>=0.0) then root1 = (-b + sqrt(test))/(2.0*a) root2 = (-b - sqrt(test))/(2.0*a) realroots =.true. else realroots =.false. end if! return end Örnek: N ve M boyutlu A ve B dizilerinin en büyük elemanlarını karşılaştıran program,

Örnek: A NxM, B ise NxK boyutlu matrisler olmak üzere, satırlarının en büyüğünden oluşan dizilerin iç çarpımını veren program (Euclid iç çarpımı!) Örnek: Dışarıdan girilen NxN tipindeki A, B, ve C matrislerini kullanarak T T T D A BC CB C B ABC matrisini oluşturan program