N m Mİ - III, Fortran IV, Fortran 66, Fortran 77, Fortran 90, Fortran 95, Fortran 2003 ve Eyll 2010da Fortran 2010 adıyla bilinen geliştirilmiş versiyonları da ...

Download N m Mİ -   III, Fortran IV, Fortran 66, Fortran 77, Fortran 90, Fortran 95, Fortran 2003 ve Eyll 2010da Fortran 2010 adıyla bilinen geliştirilmiş versiyonları da ...

Post on 08-May-2018

226 views

Category:

Documents

9 download

TRANSCRIPT

  • Arz

    u E

    rdem

    20

    10

    -20

    11

    BA

    HA

    R D

    N

    EM

    FO

    RT

    RA

    N

    2010-2011 Bahar Dnemi Matematik Blm ders notlar

    Koceali niversitesi erdem.arzu@gmail.com

    http://fef.kocaeli.edu.tr/yonetim/goruntu.php?action=Hsayfa&numara=100025http://umm.kocaeli.edu.tr/dosyalar/index.htm

  • GR

    AMA:

    Problem zme kavramn gelitirmek ve incelemek

    Problem zerken baka yollar dnmek ve gelitirmek

    Problemi zmek iin ncelikle, problemin nasl bir duruunun veya tavrnn olduunu

    dnmemiz gerekmektedir. Ve bu bazen grnd kadar kolay olmamaktadr. Bunun iin

    2 temel yntem ele alnabilir:

    1. Doal diller

    2. Yapay diller

    DOAL DLLER

    Pek ok insann kullanm olduu dillerdir. Fakat zaman zaman farkllklar mevcut olabilir.

    rnein

    o 3 yandaki bir ocuk ile yetikinin konumas arasndaki farklar

    o Bir araba yapmnda, fiziki ile mhendisin kullanm olduu dil arasndaki farkllklar

    o Yeni teknolojilerin kullanmlarnn anlatlmasnda ii ve yneticilerin kullanm

    olduu diller, vb.

    Veya doal diller bazen ok anlaml da olabilirler. rnein

    Yal bir adam ve kadn yolda yryorlar.==> Kadn ve adam ikisi de yal m?

    Bu yzden problemin tanmlanmas ve zlmesinde doal dilleri kullanrken ok dikkatli

    olmalyz!

    YAPAY DLLER

    En ok kullanlan yapay diller ise teknik terim ve notasyonlardr:

    Terimler

    o Scaklk (C, F)

    o Basn ((Pa)-Pascal, (N/m2) Newton/m2)

    o Ktle ((kg), (g), (t) - ton), vb.

    Notasyonlar

    o Cebir (N,Z,Q,R,C ile gsterilen say kmeleri)

    o Temel hesaplar ( )

    o Mantk ( )

  • ALGORTMA

    Bir problemi veya problemin bir parasn zmek iin kullanlan admlar dizisidir.

    Hata! Sra belirtilmemi.Tost ve yada yumurta piirmek iin bir algoritma yaznz.

    ncelikle piirmek iin eksiklerimizin olup olmadn kontrol etmek ve varsa bunlar

    tamamlamak iimizin yarsn yapmak demektir. Buna gre

    1. htiya listesini belirleriz

    sonra ise

    2. Yaplacaklar adm adm sralarz. Burada admlarmzn tam olmas gerekmektedir. rnein

    yumurta yapmnda ya koymadan yumurtalar krarsak yumurtalarmz yanabilir gibi

    PROGRAM DLLER

    PROGRAM DL NEDR?

    Problemi zmek iin bilgisayarn anlamlandrd bir aratr. Problemlerin eitlilii ile

    birlikte programlarn eitlilii meydana gelmitir.

    Programn ilk olarak 0-1 i kullanan bir dijital ara olarak balamtr. Ve 0-1 ikilisinin

    kullanmnn yetersiz geldii durumlarda ise programlar gelitirilmitir.

    FORTRAN (FORMULA TRANSLATON)

    1954ten 1957 ye kadar IBM ve John Backus tarafndan gelitirilen bir dildir. Problemlerin

    bilimsel olarak zlmesinde kullanlr ve renmesi olduka kolaydr. Bilimsel olarak hala

    kullanlan bir dildir ve zellikle eitim sektrnde uygun olmas sebebiyle kullanlr. 1958 de

    Fortan II versiyonu ile yenilenmitir. Fortran III, Fortran IV, Fortran 66, Fortran 77, Fortran 90,

    Fortran 95, Fortran 2003 ve Eyll 2010da Fortran 2010 adyla bilinen gelitirilmi versiyonlar

    da mevcuttur.

    COBOL (COMMON BUSNESS ORENTATED LANGUAGE)

    dnyas tarafndan kabul edilen bir programdr. Bilimsel hesaplamalardan daha ok daha

    karmak tarzdaki problemler iin kullanlr.

    ALGOL

    1950lerde gelitirilen ve UNESCO tarafndan desteklenen bir dildir. Ve Algol 60, Algol 68 gibi

    versiyonlar ile gelitirilmitir.

    PASCAL

  • Pascal dizayn eden Niklaus Wirth, Algol 68in disaynnda bulunmutur. Pascal grnt

    olarak Algol 68 ile benzerlikler tarken daha etkili ve renmesi daha kolay bir dildir.

    BASC (BEGNNERS ALL PURPOSE SYMBOLC INSTRUCTON CODE)

    Kemeny ve Kurtz tarafndan Dartmouth da, 1960larda gelitirilmitir. renmesi kolay

    olduu gibi baz yetersizliklerinden dolay ok fazla eletiri alan bir dildir.

    C

    Brian Kernighan ve Dennis Ritchie tarafndan gelitirilen yksek seviyede gelimeler ieren

    bir dildir.

    MATLAB(MATRX LABORATORY)

    C, C++ ve Fortran dillerini iinde barndran bir ara yzdr. 1970 lerde University of New

    Mexicoda Cleve Moler tarafndan oluturulmu ve 2000 lerde MathWorks tarafndan

    gelitirilmitir.

  • VER TPLER

    SABTLER

    INTEGER (TAM SAYI)

    Tamsay trdr ve snrldr. lemcinin ve bilgisayarn kapasitesine gre snr deiir.

    rrrnnneeekkk:::

    1234 tamsaydr ancak 1234. deildir.

    REAL (REEL SAYI)

    8 basamaa kadar deien bir sabittir.

    rrrnnneeekkk:::

    1234.

    1234E3=1234000

    -23456. = -2.3456E4

    DOUBLE

    16 basamaa kadar deien reel saylardr. Reel saylardaki E sembol yerine D sembol

    kullanlr.

    rnek:

    1234D3=1234000

    CHARACTER (KARAKTER)

    Tek harf veya harfler btndr. Tek trnak iinde yazlr.

    rnek:

    S

    Abab

    Bugn hava ok gzel

    Yanl kullanm

  • Yanl kullanm

    Yanl kullanm

    Karakter ilemlerinde kesme iareti kullanmak iin iki kesme iareti tanmlanmaldr.

    rrrnnneeekkk::: Bugn Slann doum gn

    LOGCAL (MANTIKSAL)

    Doru ve yanl deerlerini alan mantksal sabitlerdir.

    rrrnnneeekkk::: . true ve .false

    COMPLEX (KOMPLEKS SAYILAR)

    Kompleks saylar reel say ikilileri olarak tanmlanr.

    rrrnnneeekkk::: (1.2345,-6.5E4) 1.2345 reel ksm, -6.5E4 sanal ksm olarak tanmlanr.

    DEKENLER

    Deikenler, programn depolad giri, k, sabit ve ara deerlerdir. Deikenlerin

    isimlerinde alfabetik karakter ve say bulunabilir. Ancak isimler harflerle balamaldr ve 31

    karakterden uzun olmamaldr. Ayrca deikenleri programn banda tanmlamalyz!

    rrrnnneeekkk:::

    A3, A_2, loop3, sam, A3B4 Doru

    123x, 0A, _abc Yanl

    Fortran byk ve kk harf ayrm yapmaz!

    rrrnnneeekkk::: NUMBER ve NUMber isimli deikenler ayndr!

    Sabitler gibi deikenlerinde tipleri mevcuttur ve tipler sabit tipleri gibidir. Programn

    balangcnda deiken tiplerini tanmlarken ok dikkatli olunmaldr. Eer deiken

    tanmlamay yapmazsanz, Fortran otomatik olarak bir belirleme yapar:

    I,J,K,L,M,N harfleri ile balayan deikenler tam saydr,

    A -H ve O Z harfleri ile balayan deikenler reel say olarak atanr.

    CHARACTER*7:: PROG PROG=FORTRAN

  • EKRANA YAZMAK

    VARSAYILAN FORMATTA YAZMAK

    EKRANA YAZMAK

    VARSAYILAN FORMATTA YAZMAK

    LOGCAL:: D D=.TRUE.

    PROGRAM NASIL YAZILIR VE ALITIRILIR?

    Fortran ara yz iin kullanlacak program Force 2.0 dr.

    Yeni dosya amak iin FLE NEW

    Var olan dosyay amak iin FLE OPEN

    En son alm olan dosyalar amak iin FLE REOPEN

    Kaydetmek, Farkl formatta kaydetmek ve tm dosyalar kaydetmek iin FLE SAVE,

    FLE SAVE AS, FLE SAVE ALL kullanlr. Dosya uzantlar .f olarak kaydedilir.

    Program veya tm programlar kapatmak iin FLE CLOSE, FLE CLOSE ALL

    Program altrmak iin RUN (F9)

    Program derlemek iin RUN COMPLE (CTRL+F9)

    Derlenen program amak iin RUN EXECUTE (SHFT + F9)

    Program durdurmak iin RUN STOP (CTRL+ F12)

    WRTE(*,*)

    Programn ktlarnn ekranda grnmesi ve yazdrlmas iin kullanlr. Parantez iindeki ilk *

    iareti ktnn nereye yazlacan ikinci * ise hangi formatta yazlacan belirtir.

    WRITE(*,*)

    READ(*,*)

    Programn girilerinin okunmas iin kullanlr. Write da olduu gibi parantez iindeki ilk *

    iareti ktnn nereye yazlacan ikinci * ise hangi formatta yazlacan belirtir.

    READ (*,*)

    Klavye

    Read (*,*)

    Bilgisayar

  • PROGRAMI ADLANDIRMAK VE BTRMEK

    Program yazarken aadaki gibi program ile balamal stop ve end ile bitirmeliyiz.

    Program Program_ad . lemler . Stop End Program_ad

    Program kaydederken kaydedeceimiz ad ve Program_ad ayn olmak zorunda deildir

    ancak hangi programn neyi ifade ettiini anlamamz asndan ayn adlar vermekte fayda

    vardr.

    COMMENT (YORUM) SATIRLARI

    almayan ve yorumda bulunulacak veya aklama yaplacak satrlar iin C, ! iaretlerinden

    biri kullanlr.

    rrrnnneeekkk::: Merhaba tantma memnun oldum. Ben yazdran program,

    hi.f

    rrrnnneeekkk::: ki saynn toplamn yazdran program,

    top.f

    rrrnnneeekkk::: Deiken tiplerinin hassasiyeti ile ilgili program. (x=3.4 y=3 ve tanmlama integer

    olarak ve x/(x-y) ifadesini buldursun!),

    Degisken.f

    rrrnnneeekkk::: Kompleks saylarda 4 ilemi hesaplayan program,

    Kompleks.f

    Bilgisayar

    write (*,*)

    Ekran

  • OPERATRLER

    ARTMETK OPERATRLER

    Operator Aklama

    + Toplama veya pozitif say

    - karma veya negatif say

    * arpma

    / Blme

    ** Kuvvet

    MATEMATKSEL FONKSYONLAR

    Fonksiyon Aklama

    ABS (x) X in mutlak deer

    COS (x) x in Cosine deeri (radian olarak)

    EXP(x) Exponential Fonksiyon

    INT(x) Xin tam ksm

    LOG(x) X in doal 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 yakn tamsayya yuvarlatlmas

    SIN(x) X in Sine deeri (radian olarak)

    SQRT(x) x in karekk

    MANTIKSAL OPERATRLER

    Operator Aklama

    .NOT. Mantksal negatiflik

    .AND. Mantksal birleme

    .OR. Mantksal ayrlma

    .EQV. Mantksal eitlik

    .NEQV. Mantksal eitsizlik

    .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

    rrrnnneeekkk::: employed=.true, age=50 test = employed .AND. (agesmall) , test = .NOT. test deerleri nedir?

  • rrrnnneeekkk::: test = (5*3>12) .EQV. (6*2>8), test = (5*313), test = (5*3>12) .NEQV. (6*2

  • rrrnnneeekkk::: Aadaki ifadeleri dardan girilen deerler iin sonular bulduran programlar,

    A+B-C+2AB-7,

    ,

    ,

    ,

    ,

  • KONTROL FADELER

    IF KOUL

    If karar yaps, bir koul saland zaman yaplacak ilemleri kapsar. Kontrol edilecek koul

    ifadesinin sonucu True deerini alrsa, If End If blou arasndaki kodlar altrlr.

    If (art) Then Komutlar ElseIf (art) Komutlar ElseIf (art) Komutlar Else Komutlar End If

    Eer birden fazla koulumuz yoksa ancak birden fazla komutumuz varsa

    If (art) then Komutlar End If

    Tek artmz 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

    rnek:

    1 , 0

    ,0 2( )

    3 ,2 4

    4 , 4

    x

    x xf x

    x

    x x

    ile tanmlanan fonksiyonun dardan girilen x deerine

    gre ( )f x i hesaplayan program,

    rnek: 2( ) 5 3f x x x fonksiyonu iin sgn ( )f x fonksiyonunu hesaplayan ,

    rnek: Dardan girilen herhangi bir saynn negatifi pozitif veya 0 olduunu veren program,

    rnek: Dardan girilen bir saynn tek mi ift mi olduunu veren program,

    rnek: Dardan girilen 2 saydan byk olan veren program yaznz.

    rnek: 1.vize ve 2. Vize durumlarna gre not hesab yapan ve gemesi iin finalden ka

    almas gerektiini veren program,

  • SELECT CASE

    Tekrarlamal If koulu yerine Select Case yaps da kullanlabilir.

    SELECT CASE( ifade ) CASE( deeri ) koullar ... CASE DEFAULT koullar 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 gre hangi mevsimde olduu belirten program,

    rnek: Belirtilen tarihteki ayn ka gn srdn veren algoritmay yaznz.

    AY.f

  • rnek: Dardan girilen tek haneli bir sayy yaz ile yazdran programn VBasic dilinde yaznz.

    SAYI.f

    rnek: Katl bir otoparkta arabalar girite plaka numaralar, sahibinin ad ve giri saati kaydedilecektir. Garaj yneticisi araba sahibi gelip plakasn veya ismini sylediinde arabann kalma sresi ile orantl olan cretini bulup fiini 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 Mays

    Ikizler - 21 Mays - 21 Haziran

    Yengec - 22 Haziran - 22 Temmuz

    Aslan - 23 Temmuz - 23 Austos

    Basak - 24 Austos - 23 Eyll

    Terazi - 24 Eyll - 23 Ekim

    Akrep - 24 Ekim - 22 Kasm

    Yay - 23 Kasm -21 Aralk

    Oglak - 22 Aralk -20 Ocak

    Kova - 21 Ocak - 19 ubat

    Balik - 20 ubat - 20 Mart

    Bur izelgesine gre ay ve gn girdiimizde hangi burcumuzun olduunu veren program.

    BURC.f

  • GOTO

    Program durdurmadan nce baka bir ifadeye ynlendirmek istiyorsak GOTO ifadesini

    kullanrz.

    ...

    IF( x100 ) THEN

    inner: DO i=1,n

    ...

    END IF main

    END DO inner !illegal, inner must be within main

    EXT

    Koullu olarak DO dngsnden kmak iin kullanlr.

    do

  • ifadeler if (mantksal ifade) exit komutlar end do

    rnek: Dardan girilen N saysna gre 1den Ne kadar olan saylarn karelerinin toplamn

    hesaplayan program,

    DO1.f

    rnek: Dardan girilen N saysna gre; T1,1den Ne kadar saylarn toplam; T2, 1den Ne kadar tek saylarn toplam; T3 de 1den Ne kadar ift saylarn toplamdr. Buna gre T1, T2,

    T3 deerlerini hesaplayan program

    DO2.f

    rnek: 1-N arasnda girilen pozitif saylardan negatif say girii olduunda dngden kp

    yeniden giri yapmasn salayan program,

    DO3.f

    rnek: Tm kenarlar tamsay ve hipotens 20den kk olan tm dik genleri bulduran program

    rnek: Dardan girilen bir N tamsays iin 1-N arasnda ka tane asal say olduunu bulduran program

    rnek: Dardan girilen N deerine gre (N>20), 0-N aras tm saylarn toplamn, 5-N-6 aras tek saylarn arpmn, 14-N aras ift saylarn toplamn hesaplayan program

    rnek: ln 1 x fonksiyonun seriye alm ......432

    )1ln(432 xxx

    xx eklindedir.

    Buna gre dardan girilen x iin ln 1 x deerini hesaplayan program,

    rnek: arctan x fonksiyonun seriye alm ......!5!3

    arctan53 xx

    xx eklindedir. Buna

    gre dardan girilen x iin arctan x deerini hesaplayan program

    rnek: Dardan girilen x iin ......53

    53 xxxT ; 1x deerini hesaplayan program,

  • rnek: Dardan girilen x iin ......5

    1

    3

    1153 xxx

    T ; 1x deerini hesaplayan

    program,

    rnek: Dardan girilen x iin ......3

    )1(

    2

    )1(13

    3

    2

    2

    x

    x

    x

    x

    x

    xT ; 2/1x deerini

    hesaplayan program,

    rnek: Dardan girilen n saysna gre 2222

    11......

    3

    11

    2

    11

    1

    11

    na arpmn

    bulduran program,

    rnek: Dardan girilen n saysna gre 1 1 1

    ....sin1 sin1 sin 2 sin1 sin 2 ... sin

    an

    seri toplamn bulduran program,

    rnek: Dardan girilen n saysna gre

    n

    na

    1....

    2

    11

    !.....

    2

    11

    !2

    1

    !1 ifadesini bulduran

    program,

    DO WHLE

    Tekrarlamal ifadelerde koul salandka ilemlerin salanmas iin kullanlan bir komuttur.

    do while(mantksal ifade) komutlar end do

    rnek: Dardan girilen 10 tabanndaki pozitif bir tamsaynn, belirtilen tabandaki karln hesaplayan program,

    rnek: Verilen N saysn oluturan tek rakamlarn toplamn bulmak iin program yaznz.

    rnek: M tabannda verilen N saysnn 10 tabannda deerini bulmak iin program yaznz.

  • DZLER

    Birden fazla giri yaplp, programda kullanlacak olan deiken trlerini dizi olarak

    tanmlamamz gerekir. Dizilerin 2 boyutlu durumunu ise matris olarak dnrz.

    Aada 8 elemanl bir dizi rnei grmekteyiz.

    Aadaki ise 2 satr ve 4 stundan oluan bir matrisi gsterir.

    Fortran dilinde dizi ve matrisleri aadaki kullanmlar 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)

    Aadaki rnekte bir telefon rehberi rnei verilmitir. Matris gibi dndmzde 1.

    Stun kiilerin adlarn, 2. Stun kiilerin adreslerini ve 3. Stun ise bunlara karlk gelen

    telefon numaralarn ifade eder ve her bir satr iin kiilerin bilgilerini doldurabiliriz.

  • Bir baka rnek olarak aadaki kitap katolounu verebiliriz: 1. Stun kitabn yazarn, 2.

    Stun kitabn adn ve 3. Stun ise yayn evini belirtir. rnein 4. Stun yaym yl ve 5.

    Stunda da fiyat bilgileri ilan bir izelgeye geniletebiliriz.

    Ve son rnek olarak da bir snfn ders notu tablosunu verebiliriz:

    DZLERN ZELLKLER

    gsterimi ile 8 elemanl a dizisinin 5. Eleman

    belirtmekteyiz.

    gsteriminde ise b matrisi 5x4 lk bir matristir ve taral ksm

    b matrisinin 4. Satrnn 2. Stun elemann gsterir.

  • Aadaki rnekte ise aylara gre saanak ya miktar verilmitir:

    Dizilerin indisleri her zaman pozitif olmak zorunda deildir!

    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 tanmlar

    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 lk bir matris verir.

    CHARACTER M(3,4)*7, V(9)*4

    rnek: Dardan girilen N boyutlu bir A dizisinin tm elemanlarnn toplamn hesaplayan program.

    rnek: Dardan girilen N boyutlu bir A dizisinin tm elemanlarnn karelerinin toplamn hesaplayan program.

    rnek: Dardan girilen N boyutlu A ve B dizilerin toplayarak C dizisini oluturan program.

    rnek: Dardan girilen N boyutlu A ve B dizilerinin karlkl elemanlarnn arpmndan oluan C dizisini oluturan program. .

    rnek: Dardan girilen N boyutlu A dizisini bir k katsays ile arpp B dizisini oluturan program.

    rnek: Dardan girilen N boyutlu bir A dizisini elemanlarnn ters srada yazlmasyla elde edilen B dizisini bulduran program.

    rnek: Dardan girilen N boyutlu A ve B vektrlerinin i arpmn hesaplayan program.

  • rnek: Dardan girilen N boyutlu A dizisini aritmetik, geometrik ve harmonik ortalamalarn hesaplayan program.

    rnek: 0B says verildiinde 11a ; ,.....4,3,2 ,112 iaa ii kural ile tanmlanan

    dizisinin B den kk olan tm elemanlarn bulmak iin program yaznz.

    rnek: Dardan girilen NxN tipinde A ve B matrislerinin toplamn hesaplayan program.

    rnek: Dardan girilen NxN tipinde A matrisinin izini (ana kegen zerindeki elemanlarn toplamn) hesaplayan program.

    rnek: Dardan girilen NxN tipinde A matrisinin 2. kegen zerindeki elemanlarn toplamn hesaplayan program.

    rnek: Dardan girilen NxN tipinde A matrisinin 2. satr elemanlarnn toplamn hesaplayan program.

    rnek: Dardan girilen NxN tipinde A matrisinin 2. stun elemanlarnn toplamn hesaplayan program.

    rnek: Dardan girilen NxN tipinde A matrisinin tm elemanlarnn toplamn veren program.

    rnek: Dardan girilen NxN tipinde A matrisinin transpozesini veren program.

    rnek: Dardan girilen N saysna gre NxN tipinde birim matris oluturan program.

    rnek: Dardan girilen NxN tipinde A ve B matrislerinin arpmn hesaplayan program.

    rnek: Dardan girilen NxN tipinde A matrisinin esas kegenin st ksmnda kalan elemanlarn toplamn veren program.

  • FORMAT

    OPEN

    Read ve Write komutlarnda bir veriyi giri yaparken veya yazdrrken bilgisayar ekranndaki

    dosyaya yazdryorduk Hlbuki var olan bir dosyadaki veriyi kullanabileceimiz gibi

    verilerimizi saklamak ve bir dosyaya da yazdrmak isteyebiliriz. Bunun iin dosya amak

    gerekmektedir. Fortranda dosya ama ilemi ise OPEN komutu ile yaplr.

    OPEN (UNIT=say,FILE=dosyann ad) OPEN (UNIT=10,FILE=fibonacci.DAT)

    rnek: Dardan verdiiniz 3x3 lk bir matrisi txt uzantl bir dosyaya yazdrn.

    OPEN1.f

    DO dngsne girilmeden okutma ve yazdrma yapmak iin

    WRITE (2,*) ((A(I,J),J=1,N),I=1,N) READ (*,* ) ((A(I,J),J=1,N),I=1,N)

    Komutu da kullanlabilir.

    TAM SAYILAR, I FORMATI

    Bazen programda varsaylan format kullanmak yetersiz olabilir. zellikle de verilerimizi

    dosyadan okutuyorsak Format zelliklerini bilmemiz gerekmektedir. Read ve Write

    komutlarndaki ikinci * sembol yerine belirtilen format tantlabilir. Tamsay format iin

    kullanm:

    Iw (idth) w: toplam karakter says I3 iin 123, -93

    rnein,

    write(*,10) i,j,k

    10 format(i2,i4,i10)

    Ifadesi ile I,j,k tamsaylarn toplam olarak srasyla 2,4 ve 20 basamakl olarak belirtmeliyiz.

    Ayn formatta birden fazla sayy formatlar iin

  • 2I8 8 basamakl 2 tam sayy belirtir.

    rnek: 5,7,2 basamakl tam say girii ve yazdrlmas iin program,

    REEL SAYILAR, F FORMATI

    Reel say format iin kullanm:

    Fw.d w: toplam karakter says, ondalkl basamaklarda dahil olmak zere, d ise ondalkl basamak F8.3 iin 1234.678, -234.678

    rnein,

    write(*,10) T,S

    10 format(F5.2,F7.4)

    Ifadesi ile T,S reel saylarn toplam olarak srasyla 5 basamakl-2 ondalkl ve 7 basamakl-4

    ondalkl 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 sayy formatlar iin

    2F8.3 8 basamakl, 3 ondalkl 2 reel sayy belirtir.

    rnek: 3 ondalkl 7 basamakl, 5 ondalkl,8 basamakl reel say girii ve yazdrlmas iin program,

    KARAKTERLER, A FORMATI

    Karakter format iin kullanm:

  • Aw w: toplam karakter says A5 iin ABCDE

    rnein,

    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 iin

    2A4 4 harfli 2 karakteri belirtir.

    rnek: 7 ve 12 karakterli deikeleri okutun ve yazdrn,

    CONTROL FONKS YONLARI

    Yeni bir satrdan yazdrmak iin / sembol kullanlr.

    Boluk vermek iin ise X sembol kullanlr.

    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

    Komutlarndan sonar ekrandaki grnt:

    The value is 100 units.

    a = 101_ _ _

    b = 201_ _ _

    a and b = 101_ _ _ 201

  • ALT PROGRAMLAR

    Sin, Sqrt gibi fonksiyonlar kullandmzda aslnda alt programlar kullanm oluyoruz. Bu

    fonksiyonlar Fortrann yazlmnda verilen fonksiyonlardr. Bizde bu fonksiyonlar gibi

    fonksiyon yazp alt program tanmlayabiliriz. Alt programlar, Fortrann belirli olan

    ileyiinden bamsz olarak ele alabiliriz. Ayr ayr yazlabilir ve derlenebilir. Byk

    programlar yazarken, program alt programlar blmek, programn doruluunu test etmek

    amacyla olduka kullanl bir yntemdir. Alt programlarn dier bir avantaj ise, alan bir

    alt programnz dier pek ok ana programda kullanabilirisiniz.

    2 trl alt program ele alacaz:

    1. Functions: isimleri ile arlrlar. rnein sin(x).

    2. Subroutines: alt programlarn en genelidir. ok kompleks programlarn 1 veya 1 den

    fazla cevab olmas durumlarnda alrlar.

    RETURN

    Alt programlar sonlandrmadan nce alt programa gnderme yapan komuttur. Alt

    programlarda END komutundan nce kullanlmaldr.

    CHARACTER*25 TEXT

    TEXT = "Some kind of minor catastrophe"

    CALL OOPS ( TEXT )

    STOP

    END

    SUBROUTINE OOPS ( S )

    CHARACTER S* 32

    WRITE (*,*) S

    RETURN

    END

    FUNCTON

    Function kullanmlar ana programda olmaldr ve ana programn END komutundan

    sonra yazlmaya balamaldr.

    Function kullanm Function ile balayan ve argumanlar olan bir kullanmdr.

  • function bigroot(a,b,c)

    Function kullanmlar END ifadesi ile bitmelidir.

    end function function_name

    END ifadesinden nce kesinlikle RETURN ifadesi kullanlmaldr.

    Function kullanmlarnda da kontrol ifadeleri (if,do,select) kullanlabilir

    Function ifadelerinde de deiken tipleri ayn ekilde geerlidir.

    Function kullanmlarnda 1 (tek) deer hesaplanr!

    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

    Yukardaki rnek, 2.dereceden bir polinomun kklerinden en byn buldurmak iin

    Function komutu kullanlarak yaplmtr.

    rnek: Kombinasyonu fonksiyon kullanarak ve kullanmayarak bulan program

    rnek: fonksiyonu iin ifadesini fonksiyon kullanarak ve

    kullanmayarak hesaplayan program, ayn rnek iin ifadesinin hesaplanmasn

    genelletiriniz.

    rnek: xe fonksiyonunun seriye alm 2

    1 ...1! 2! !

    Nx x x xe

    N eklindedir. Buna gre,

    dardan girilen x ve N deerine gre xe I funksiyon kullanarak ve Fortrann ktphanesinde kullanlan fonksiyon ile kalatracak ekilde program,

    SUBROUTNES

    Function ifadesi ile tek bir deer hesaplanabilirken, Subroutines ifadesi ile birden ok deer

    hesaplanabilecei gibi hibir deer de hesaplanmayabilir.

  • Subroutine, ana programn iinde bulunan bir alt programdr ve ana programn END

    komutundan sonra yazlmaya balanr

    Subroutine komutu, Subroutine ile balayan ve argumanlar olan bir kullanma

    sahiptir.

    subroutine(orig,sorted,N)

    Subroutine komutu END ifadesi ile biter

    END komutundan nce RETURN kullanlmaldr

    Subroutine ile birden fazla deer kts alnabildiinden deiken tipleri

    belirtilmelidir. Deiken tipleri ana programda tanmland kurallar geerlidir.

    Subroutine komutunda dizi/matrisleri de tanmlayabilir ve sonu olarak dizi/matris

    kts alabilirsiniz.

    Aadaki rnekte ise 2. Dereceden bir polinomun kklerini bulduran bir programdr:

    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 byk elemanlarn karlatran program,

  • rnek: A NxM, B ise NxK boyutlu matrisler olmak zere, satrlarnn en bynden oluan dizilerin i arpmn veren program (Euclid i arpm!)

    rnek: Dardan girilen NxN tipindeki A, B, ve C matrislerini kullanarak T T TD A BC CB C B ABC matrisini oluturan program

    GRDoal DillerYapay dillerAlgoritmaProgram dilleriFortran (FORmula TRANslation)Cobol (Common Business Orientated Language)AlgolPascalBasic (Beginners All Purpose Symbolic Instruction Code)CMatlab(Matrix laboratory)

    VER TPLERSabitlerInteger (Tam Say)Real (Reel Say)DoubleCharacter (Karakter)Logical (Mantksal)Complex (Kompleks Saylar)

    DeikenlerProgram nasl yazlr ve altrlr?Write(*,*)Read(*,*)Program adlandrmak ve bitirmekComment (Yorum) satrlar

    OPERATRLERAritmetik OperatrlerMatematiksel FonksiyonlarMantksal Operatrler.NOT..AND..OR..EQV..NEQV.

    likisel Operatrlerlem ncelii

    KONTROL FADELERIf KoulSelect CaseGotoDoExitDo While

    DZLERDizilerin zellikleri

    FORMATOpenTam saylar, I FormatReel Saylar, F FormatKarakterler, A FormatControl Fonksiyonlar

    ALT PROGRAMLARReturnFunctionSubroutines

Recommended

View more >