materi tutorial 1b fortran

Upload: wibowo-unggul

Post on 19-Oct-2015

85 views

Category:

Documents


0 download

DESCRIPTION

fortran

TRANSCRIPT

  • Tutorial Metode Numeris dan Pemrograman Komputer 2012

    1

    Materi Tutorial 2 Pemrograman Komputer dengan Fortran

    Copyright Tim Asisten Metode Numeris dan Pemrograman Komputer 2012

    1. Struktur Program

    Dalam suatu pemrograman komputer umumnya dikenal istilah dengan main

    program dan subprogram. Main program merupakan program utama dimana seluruh

    proses perhitungan diintegrasikan dan diselesaikan. Di dalam suatu main program dapat

    terdiri dari satu atau lebih subprogram. Subprogram merupakan program otonom atau

    mandiri yang dapat dipanggil berulang kali oleh main program atau subprogram yang lain.

    Agar lebih jelasnya dapat dilihat bagan hubungan main program dan subprogram pada

    Gambar 1.

    Main

    Program

    Subprogram1 Subprogram2 Subprogram3

    Sub-subprogram1 Sub-subprogram2

    Gambar 1. Hubungan antara main program dan subprogram.

    Kaidah umum (tidak diharuskan) dalam struktur main program pada pemrograman

    komputer terdiri dari beberapa bagian seperti Input Data, Proses Utama, Looping,

    Display Hasil Program, dan pemanggilan Subprogram.

    Seluruh nilai variabel yang sifatnya tetap atau konstan umumnya dimasukkan ke dalam

    satu bagian yang disebut sebagai Input Data

    Bagian perhitungan dan/atau pemanggilan subprogram untuk membantu perhitungan

    dituliskan pada bagian proses.

  • Tutorial Metode Numeris dan Pemrograman Komputer 2012

    2

    Subprogram umumnya dituliskan pada lain dari main program dan bersifat sendiri atau

    otonom. Di dalam Fortran subprogram dikenali dengan statemen SUBROUTINE yang

    akan dibahas pada bagian yang lain.

    Proses perhitungan iterative atau berulang dikenal dengan istilah Looping.Beberapa

    statemen yang digunakan untuk Looping seperti DO dan WHILE. Selain Looping juga

    dikenal istilah percabangan program atau proses membagi program untuk menghitung

    beberapa proses dengan kondisi tertentu. Di dalam Fortran proses percabangan ini dapat

    dilakukan dengan menggunakan statemen IF.

    Ada kalanya suatu hasil pemrograman ingin ditampilkan dalam suatu jendela khusus.

    Pada Fortran fasilitas yang digunakan untuk menulis/ menampilkan hasil hitungan adalah

    WRITE sedangkan untuk mengatur format tampilan digunakan statemen FORMAT

    Secara umum struktur pemrograman dapat dilihat pada Gambar 2.

    Input

    Data

    ProsesSubproses/

    Subprogram

    Looping

    Display

    Akhir Program

    Mulai Program

    Gambar 2. Struktur pemrograman secara umum

  • Tutorial Metode Numeris dan Pemrograman Komputer 2012

    3

    2. Pembuatan subprogram

    Seperti yang telah disebutkan sebelumnya bahwa sebuah subprogram di dalam

    FORTRAN dikenali dengan menggunakan statemen SUBROUTINE. Kaidah penulisan

    SUBROUTINE pada FORTRAN untuk M argumen adalah sebagai berikut:

    SUBROUTINE NAMA_SUBROUTINE(ARG_1,ARG_2,,ARG_M)

    Penjelasan

    SUBROUTINE : merupakan pernyataan bahwa bagian yang ditulis setelah baris ini

    merupakan bagian dari subroutine dengan nama NAMA_SUBROUTINE

    NAMA_SUBROUTINE : merupakan identifikasi subroutine yang berfungsi sebagai

    nama panggil dan membedakan antara subroutine satu dengan subroutine yang lain.

    Nama subroutine mengikuti aturan penamaan variabel

    ARG_1,ARG_2,,ARG_M : merupakan argumen-argumen yang masuk dan keluar

    dari sebuah subroutine.

    Akhir dari statemen subroutine umumnya terdiri dari dua statemen yaitu:

    RETURN

    END

    Statemen RETURN berfungsi untuk mengembalikan arus program dari program

    terpanggil kepada program pemanggil

    3. Pemanggilan Subprogram

    Untuk memanggil sebuah subprogram digunakan statemen CALL dengan kaidah

    penulisan pada Fortran adalah sebagai berikut:

    CALL NAMA_SUBROUTINE(ARG_1,ARG_2,,ARG_M)

    Penjelasan

    CALL : merupakan pernyataan yang memanggil subprogram bernama

    NAMA_SUBROUTINE

    NAMA_SUBROUTINE : merupakan identifikasi subroutine.

    ARG_1,ARG_2,,ARG_M : merupakan argumen-argumen yang masuk dan keluar

    dari sebuah subroutine.

    NOTE:

  • Tutorial Metode Numeris dan Pemrograman Komputer 2012

    4

    Yang perlu diingat dalam penggunaan CALL adalah jumlah argumen yang digunakan

    harus sama persis pada saat pemanggilan dengan argumen yang digunakan pada

    subroutine.

    Hubungan argumen-argumen antara SUBROUTINE dengan CALL didasarkan pada

    posisi argument tersebut bukan berdasarkan nama dari argumen.

    Contoh:

    Buatlah sebuah program konversi suhu (T) dari Celcius (C) menjadi Fahrenheit (F)

    dengan menggunakan rumus sebagai berikut:

    32)(5

    9)( CTFT

    Algoritma pemrograman :

    1. Masukkan data T dalam C

    2. Hitung T(F) dengan menggunakan subprogram KONVERSI_SUHU dengan

    argument masuk berupa T(C) dan argumen keluar berupa T(F)

    3. Buat subroutine KONVERSI_SUHU

    4. Tampilkan hasil perhitungan dengan WRITE dan FORMAT

    Dengan algoritma tersebut disusun bahasa pemrograman dengan Fortran sebagai berikut

    C Konversi suhu(T) dari T(C) menjadi T(F)

    C dengan C adalah Celcius dan F adalah Fahrenheit

    C deklarasi data dan variabel

    REAL TC,TF

    TC=30

    C hitung T(F)

    CALL KONVERSI_SUHU(TC,TF)

    C tampilkan hasil hitungan

    WRITE(*,1)TC,TF

    1 FORMAT(2X,F6.2, C = ,F6.2, F)

    END

    C penulisan subroutine

    SUBROUTINE KONVERSI_SUHU(TC,TF)

    TF=9/5*TC+32

    RETURN

  • Tutorial Metode Numeris dan Pemrograman Komputer 2012

    5

    END

    4. Operator logika

    Operator-operator logika yang digunakan dalam Fortran diberikan pada tabel 1.

    Tabel 1. Operator Logika pada Fortran

    Pernyataan logic Notasi

    matematisnya

    Statemen pada

    Fortran

    Sama dengan = .EQ.

    Tidak sama dengan .NE. Lebih kecil dari < .LT.

    Lebih kecil dari atau sama dengan .LE. Lebih besar dari > .GT.

    Lebih besar dari atau sama dengan .GE. Atau .OR.

    Dan .AND.

    Bukan .NOT.

    Operator-operator tersebut umumnya akan digunakan pada pembuatan statemen kontrol

    5. Statemen kontrol

    Statemen kontrol yang digunakan pada Fortan berupa:

    5.1. GO TO

    a. GO TO tanpa syarat

    Bentuk Umum :

    GO TO n

    n merupakan label dari suatu instruksi selanjutnya yang harus dilakukan

    Contoh

    Algoritma perhitungan:

    1. Baca nilai A dan B

    2. Hitung nilai C=A*B

    3. Tuliskan C

    4. Kembali menuju 1.

    5. Selesai

    Program pada Fortran

    REAL A,B

  • Tutorial Metode Numeris dan Pemrograman Komputer 2012

    6

    10 WRITE(*,*)'Masukkan nilai A'

    READ(*,*)A

    WRITE(*,*)'Masukkan nilai B'

    READ(*,*)B

    C=A*B

    WRITE(*,20)C

    20 FORMAT ('Hasil perkalian A*B=',F12.4)

    GO TO 10

    END

    Hasilnya adalah perhitungan yang terus berulang meminta masukkan berupa nilai A

    dan nilai B. Untuk mengakhiri hitungan gunakan perintah CTRL+C pada jendela IDE

    b. GO TO dengan hitungan

    Bentuk Umum:

    GO TO (n1,n2,,nk),var

    n1,n2,,nk merupakan nomor statemen-statemen hitungan yang akan dituju dan

    digarap instruksinya sesuai dengan harga var

    var merupakan variabel integer

    Contoh

    Algoritma perhitungan:

    1. Baca nilai A,B,C,D,X,N

    2. Apabila N=1 maka hitung X dengan persamaan (a) hingga (d)

    Apabila N=2 maka hitung X dengan persamaan (b) hingga (d)

    ApabilaN=3 maka hitung X dengan persamaan (c) dan (d)

    Apaila N=4 maka hitung X dengan persamaan (d)

    3. Hitung nilai X

    a. X=A*B

    b. X=A*C

    c. X=A*D

    d. X=A*B*C*D

    4. Tuliskan X

    5. Selesai

    Program pada Fortran

    REAL A,B,C,D,X

    INTEGER N

  • Tutorial Metode Numeris dan Pemrograman Komputer 2012

    7

    WRITE(*,*)'Masukkan nilai A'

    READ(*,*)A

    WRITE(*,*)'Masukkan nilai B'

    READ(*,*)B

    WRITE(*,*)'Masukkan nilai C'

    READ(*,*)C

    WRITE(*,*)'Masukkan nilai D'

    READ(*,*)D

    WRITE(*,*)'Masukkan nilai N'

    READ(*,*)N

    GO TO (100,200,300,400)N

    100 WRITE(*,*)'Hitung X=A*B'

    X=A*B

    WRITE(*,20)X

    20 FORMAT('A*B=',F12.4)

    200 WRITE(*,*)'Hitung X=A*C'

    X=A*C

    WRITE(*,30)X

    30 FORMAT('A*C=',F12.4)

    300 WRITE(*,*)'Hitung X=A*D'

    X=A*D

    WRITE(*,40)X

    40 FORMAT('A*D=',F12.4)

    400 WRITE(*,*)'Hitung X=A*B*C*D'

    X=A*B*C*D

    WRITE(*,50)X

    50 FORMAT('A*B*C*D=',F20.4)

    END

    Hasilnya adalah perhitungan akan tergantung pada nilai N yang digunakan. Fortran

    akan mengeksekusi mulai dari nilai instruksi pada GO TO ke-N hingga akhir. Apabila

    N yang diberikan melebihi dari jumlah n1,n2, hingga nk maka seluruh perintah

    setelah GO TO akan dieksekusi.

    5.2.IF

    a. IF dengan hitungan

  • Tutorial Metode Numeris dan Pemrograman Komputer 2012

    8

    Perintah IF digunakan untuk mengecek isi suatu variabel atau hasil suatu pernyataan

    perhitungan apakah bernilai negatif, nol, atau positif kemudian berdasarkan hasil cek

    tersebut, program diperintahkan untuk menuju ke nomor statemen n1, atau n2, atau

    n3.

    Bentuk umum :

    IF (pr)n1,n2,n3

    pr : hitugangn atau suatu variabel, boleh real atau integer.

    n1,n2,n3 : nomor-nomor statemen yang akan dituju untuk dieksekusi instruksinya

    Apabila nilai dari pr 0 (positif) maka program akan menuju ke n2

    Contoh

    Akar-akar suatu persamaan kuadrat ax2+bx+c dapat berupa imajiner, real sama atau

    real berbeda. Untuk mengetahui jenis akar-akarnya dapat digunakan persamaan

    determinan (D)

    D=b2-4ac

    Apabila nilai D>0 maka akar-akar real dan berbeda

    Apabila nilai D=0 maka akar real dan sama

    Apabila nilai D

  • Tutorial Metode Numeris dan Pemrograman Komputer 2012

    9

    D=B**2-4*A*C

    WRITE(*,*)D

    IF (B**2-4*A*C)10,20,30

    10 WRITE(*,*) 'Akar imajiner'

    STOP

    20 WRITE(*,*) 'Akar real dan sama'

    STOP

    30 WRITE(*,*) 'Akar real'

    STOP

    END

    b. IF nalar

    Perintah IF pada IF nalar digunakan untuk membandingkan dua atau lebih

    variabelsecara nalar. Instruksi pada baris selanjutnya dari statemen IF akan dieksekusi

    apabila statemen IF bernilai benar.

    Bentuk umum:

    IF(ekspresi nalar) statemen

    ekspresi nalar yang digunakan pada Fortran disampaikan pada Tabel1.

    statemen merupakan statemen yang akan diproses apabila nilai ekspresi nalar bernilai

    benar.

    Contoh

    WRITE(*,*) 'Masukkan nilai A'

    READ(*,*)A

    WRITE(*,*) 'Masukkan nilai B'

    READ(*,*)B

    WRITE(*,*) 'Masukkan nilai C'

    READ(*,*)C

    DET=B**2-4*A*C

    IF (DET.LT.0) GO TO 100

    WRITE(*,10)DET

    10 FORMAT('Nilai Determinan=',F10.2)

    100 STOP

    END

    Apabila nilai DET lebih kecil dari 0 maka meloncat ke statemen 100 yaitu STOP.

    Apabila nilai DET tidak lebih kecil dari 0 maka statemen WRITE dan FORMAT

    akan dieksekusi.

  • Tutorial Metode Numeris dan Pemrograman Komputer 2012

    10

    5.3.IF-THEN-ELSE-ENDIF

    Struktur pemrograman dengan IF-THEN-ELSE-END memberikan keleluasaan

    kepada programmer dalam membuat suatu program yang mengandung suatu

    pengandaian dengan ekspresi nalar atau alternatif jalur program.

    Statemen pemrogramannya adalah sebagai berikut:

    IF (ekspresi nalar) THEN

    ELSEIF

    ELSE

    ENDIF

    Secara diagram alir dapat digambarkan seperti pada Gambar 3

    Statemen kelompok A

    IF

    ELSEIF

    Statemen kelompok B

    ENDIF

    YA

    TIDAK

    TIDAK

    YA

    Gambar 3. Bentuk diagram alir IF-THEN-ELSE-ENDIF

  • Tutorial Metode Numeris dan Pemrograman Komputer 2012

    11

    Statemen IF-THEN digunakan untuk menyatakan suatu blok statemen-statemen yang

    harus dieksekusi apabila suatu kondisi pada ekspresi nalar terpenuhi.

    Statemen ELSEIF-THEN digunakan untuk menyatakan suatu blok alternatif yang

    akan dieksekusi apabila kondisi ekspresi nalar selain ekspresi nalar pada IF-THEN

    terpenuhi.

    Statemen ELSE digunakan untuk menyatakan suatu blok alternatif yang harus

    dieksekusi apabila suatu ekspresi nalar dalam suatu statemen IF-THEN atau

    ELSEIF-THEN tidak terpenuhi

    Statemen ENDIF digunakan untuk menyatakan batas akhir dari suatu blok statemen

    IF-THEN

    Contoh

    Ingin dibuat sebuah program yang dapat mengkonversikan nilai angka ujian

    mahasiswa menjadi sebuah nilai huruf dengan syarat-syarat sebagai berikut:

    1. Nilai huruf A untuk nilai ujian diatas 85

    2. Nilai huruf B untuk nilai ujian diatas 75 dibawah 85

    3. Nilai huruf C untuk nilai ujian diatas 65 dibawah 75

    4. Nilai huruf D untuk nilai ujian diatas 50 dibawah 65

    5. Nilai huruf E untuk nilai ujian dibawah 50

    Program dengan Fortran

    REAL NILAI

    WRITE(*,*)'MASUKKAN NILAI UJIAN'

    READ(*,*)NILAI

    IF(NILAI.GT.85)THEN

    WRITE(*,*)'NILAI HURUF A'

    ELSEIF(NILAI.GT.75) THEN

    WRITE(*,*)'NILAI HURUF B'

    ELSEIF(NILAI.GT.65) THEN

    WRITE(*,*)'NILAI HURUF C'

    ELSEIF(NILAI.GT.50) THEN

    WRITE(*,*)'NILAI HURUF D'

    ELSE

    WRITE(*,*)'NILAI HURUF E'

    ENDIF

    END

    5.4.WHILE-DO

  • Tutorial Metode Numeris dan Pemrograman Komputer 2012

    12

    Statemen WHILE-DO digunakan untuk memerintahkan suatu kelompok statemen

    dikerjakan berulang-ulang apabila suatu ekspresi nalar masih dipenuhi

    Statemen pemrograman WHILE-DO adalah sebagai berikut

    WHILE (ekspresi nalar) DO

    (kelompok statemen akan dieksekusi apabila eksepresi nalar masih

    terpenuhi)

    ENDWHILE

    ENDWHILE digunakan untuk menyatakan batas akhir dari kalang (loop) WHILE

    Contoh

    Suatu perhitungan konversi suhu dari Celcius menjadi Fahrenheit ingin digunakan

    untuk menghitungan konversi suhu dari 30 hingga 60 oC.

    REAL TC,TF,TCF

    TC=30

    TCF=60

    WHILE(TC.LE.TCF)DO

    CALL KONVERSI_SUHU(TC,TF)

    WRITE(*,1)TC,TF

    1 FORMAT(2X,F6.2, C = ,F6.2, F)

    C TC baru dihitung dari TC lama+1

    TC=TC+1

    ENDWHILE

    END

    SUBROUTINE KONVERSI_SUHU(TC,TF)

    TF=9/5*TC+32

    RETURN

    END

    1. DO-ENDDO

    Apabila proses perhitungan berulang dengan WHILE-DO menggunakan suatu

    ekspresi nalar, maka perintah DO-ENDDO akan melakukan perhitungan berulang

    dengan spesifikasi jumlah perulangan yang telah diketahui.

    Statemen programnya adalah sebagai berikut:

    DO indeks=hm,ha,hl

  • Tutorial Metode Numeris dan Pemrograman Komputer 2012

    13

    ENDDO

    Dengan indeks merupakan variabel integer yang harganya berjalan mulai dari hm

    dengan langkah hl menuju harga akhir ha.

    hm merupakan harga awal dari variabel indeks

    ha merupakan harga akhir dari variabel indeks

    hl merupakan besar langkah dari variabel indeks

    contoh

    Contoh soal pada bagian DO akan diselesaikan dengan FOR-DO

    Ingin dibuat sebuah program yang menghitung persamaan berikut

    X=I2

    I=1,2,3,,50.

    REAL X

    INTEGER I,N

    N=50

    DO I=1,N,1

    X=I**2

    WRITE(*,*)X

    ENDDO

    WRITE(*,*)'PERHITUNGAN SELESAI'

    END

    6. Latihan soal

    1. Buatlah sebuah program perhitungan kapasitas panas fungsi suhu (Cp=f(T)) dengan

    persamaan sebagai berikut:

    2)(

    T

    CBTATCp

    Dengan T divariasikan dari suhu ruang 32oF hingga suhu 212

    oF. Diketahui untuk

    senyawa CO2(g) nilai konstanta A=10,34; B=0.00274 dan C= -195500. Satuan Cp

    adalah cal/mol/K dan T dalam K.

    2. Gas CO2 masuk pendingin pada suhu 90oC dengan massa 200 kg/jam. Massa air

    pendingin yang digunakan adalah 150 kg/jam dengan suhu masuk 30 oC dan suhu

    keluar 50 oC. Perkirakan suhu CO2 keluar pendingin dengan menggunakan program

    Fortran. Diketahui Cp CO2 seperti pada latihan soal nomor 1 dan Cp air dianggap

    tetap sebesar 4,18 J/kg/K.

  • Tutorial Metode Numeris dan Pemrograman Komputer 2012

    14

    3. Ingin dicari nilai turunan dari suatu fungsi y=f(x) dengan menggunakan pendekatan

    beda hingga (finite difference approximation/FDA) cara sentral.

    Turunan pertama dari y terhadap adalah dy/dx. Rumus FDA sentral untuk turunan

    pertama adalah sebagai berikut:

    x

    xxfxxf

    dx

    xdf

    dx

    dy

    2

    )()()(

    Apabila y=f(x) diketahui maka dengan menggunakan rumus tersebut dapat dihitung

    nilair turunan pertama dari y terhadap x pada suatu nilai x tertentu. misal diketahui

    y=f(x) sebagai berikut

    12)( 2 xxxfy

    Buatlah program untuk menghitung turunan pertama y pada suatu x tertentu! gunakan

    nilai x sebesar 0,01 dan nilai x=3. Adakah perbedaan hasil apabila digunakan nilai

    x yang lebih besar atau yang lebih kecil?

    (hasil secara analitis memberikan hasil dy/dx pada x=3 sebesar 8). Bandingkan hasil

    yang diperoleh dengan pedekatan FDA!

    4. Suatu fluida pada 2 atm dan 200 oC dipanaskan pada waktu mengalir di dalam pipa

    berdiameter 1 in dengan kecepatan 10 m/s. Hitunglah perpindahan pana per satuan

    panjang tabung jika terdapat kondisi fluks-kalor tetap pada dinding, dan suhu dinding

    dipertahankan sebesar 20 C diatas suhu fluida di sepanjang tabung.

    Diketahui sifat-sifat fisis fluida pada suhu 200oC sebagai berikut:

    =1,493kg/m3; Cp=1,025 kJ/kgoC; =2,57x10-5 kg/m/s; k=0.0386 W/m/oC;

    Bilangan Prandtl didefinisikan sebagai :

    k

    CpPr

    Bilangan Reynolds untuk pipa sebagai berikut:

    vDRe

    Bilangan Nusselt :

    k

    hDNu

    Hubungan Bilangan Nusselt dengan Reynolds dan Prandtl dapat didefinisikan sebagai

    berikut: 4,08,0 PrRe023,0Nu untuk aliran turbulen dalam pipa

    14,03/13/1Pr)(Re86,1

    wL

    DNu

    untuk aliran laminar

    Dengan merupakan densitas cairan, Cp adalah kapasitas panas, merupakan

    viskositas cairan, k merupakan konduktifitas cairan, v adalah kecepatan aliran cairan

    dalam pipa, D adalah diameter pipa, L merupakan panjang pipa dan h merupakan

    koefisien transfer panas konveksi dari dinding pipa ke cairan. Subskrip w

    menunjukkan air.

  • Tutorial Metode Numeris dan Pemrograman Komputer 2012

    15

    Aliran laminar dan turbulen ditentukan dengan menggunakan bilangan Reynolds.

    Apabila Bilangan Reynolds lebih besar dari 10000 maka aliran bersifat turbulen.

    Bilangan Reynolds yang lebih kecil dari 2100 maka aliran bersifat laminar. (Contoh

    6-1 pada Holman, 1988)

    Struktur ProgramPembuatan subprogramPemanggilan SubprogramOperator logikaStatemen kontrolGO TOGO TO tanpa syaratGO TO dengan hitungan

    IFIF dengan hitunganIF nalar

    IF-THEN-ELSE-ENDIFWHILE-DO

    Latihan soal