Tuesday, 31 January 2017

MODUL APLIKASI FORTRAN

Tujuan  :
            Setelah  membaca  bab  ini  diharapkan praktikan dapat menggunakan  Program Fortran dan mengerti bagaimana  cara  membuat program.

Perkembangan Fortran :
Fortran Singkatan Dari FORmula TRANslator, yang merupakan bahasa tingkat tinggi dan ber-orientasi pada rumus-rumus (formula) atau ke permasalahan teknik.
Referensi pertama mengenai Fortran baru dikeluarkan dalam bentuk laporan tahun 1954 oleh Programming Research Group, suatu divisi teknik terapan dari IBM baru  pada  tahun  1957  diterapkan
pada komputer IBM 704.

Struktur Program Fortran :
Dibagi menjadi 5 bagian kolom dan  tiap  baris  di  dalam program dapat berisi :
1. Metacommand
2. Komentar
3. Statement
4. Sambungan dari statement baris sebelumnya.

Aturan Penulisan Fortran :
  1. Kolom pertama merupakan Komentar atau metacommand (C, *, $).
2. Kolom 1 sampai 5 untuk penulisan label statement berupa angka.
3. Kolom 6 untuk indikasi sambungan dari baris sebelumnya.
4. Kolom 7 sampai 72 untuk penulisan Statement FORTRAN.
5. Kolom 73 sampai 80 tidak digunakan (Untuk Komentar bebas).
             
Elemen Program Fortran :
  1. Metacommand atau compiler directive sifatnya optional.
  2. Komentar berupa tulisan bebas.
     3. Statement merupakan inti yang berupa instruksi-instruksi.

Suatu statement dapat dibentuk dari elemen-elemen :
1. Konstanta                5. Verb
2. Operator                  6. Unit Specifier
3. Ungkapan                7. Format Specifier
4. Nama

Konstanta :
Numerik yang terdiri dari :
Konstanta Integer (Numerik Bilangan Bulat) 2 byte berkisar  antara -32767 sampai 32767 dan yang 4 byte  berkisar  antara  -2147483647 sampai 2147483647. Kontanta Real ketepatan tunggal (Pecahan), mempunyai batasan : 8.43E-37   sampai dengan   3.37E+38    Positif -3.37E+38   sampai dengan  -8.43E-37    Negatif Konstanta Real Ketepatan ganda (Pecahan), mempunyai batasan : 4.19D-307  sampai dengan   1.67D+308   Positif   -1.67D+308  sampai   dengan    -4.19D-307   Negatif Konstanta Karakter (String) yang ditulis dalam tanda Petik. Konstanta Logika (Nilai Logika) .TRUE. .FALSE.

Operator :
Aritmatika  :  **  Pangkat                             level 1
                            * Kali                                  level 2
                           / Bagi                                    level 2
                           + Penjumlahan                     level 3
                       - Pengurangan              level 3
             
Hubungan   :  
                          .LT.   Lebih Kecil dari
                          .LE.   Lebih kecil sama dengan dari
                          .EQ.   Sama dengan
                          .NE.   Tidak sama dengan
                          .GT.    Lebih besar dari
                          .GE.    Lebih besar sama dengan dari
Logika  :
            .NOT.    Tidak atau Bukan
                                    .AND.    Dan
                                    .OR.       Atau

Ungkapan   :
            Ungkapan Aritmatika dengan operasi didalam tanda kurung didahulukan, kemudian pangkat, kali, bagi, jumlah, kurang. Ungkapan Karakter tidak boleh menggunakan operator aritmatik, tapi dapat berbentuk konstanta karakter atau nama variabel. Ungkapan hubungan adalah membandingkan niali dari dua numeric atau karakter.

Nama : dapat berupa variabel, larik(array), fungsi, atau rutin.
Dengan ketentuan sebagai berikut :
  1. Maksimum panjangnya 1320 karakter tapi hanya 6 karakter pertama yang dibaca.
  2. Karakter pertama harus berupa huruf.
     3. Tidak boleh ada spasi atau blank.
  1. Tidak boleh mengandung karakter khusus.

Nama Variabel ada 5 tipe :
1.       Variabel Integer untuk menyimpan nilai numerik bulat. Bila tidak    didefinisikan, maka harus ditunjukkan oleh nama variable yang diawali dengan huruf I, J, K, L, M atau N besarnya memori  2 byte atau 4 byte default-nya 4 byte.
2.       Variabel Real ketepatan Tunggal menyimpan nilai pecahan 4 byte. Bila tidak didefinisikan maka harus diawali huruf I,J,K,L,M,N.
3.       Variabel real ketepatan Ganda menyimpan pecahan 8 byte. Harus diawali dengan huruf selain I,J,K,L,M,N.
4.       Variabel Karakter menyimpan variabel karakter 4 byte. Kalau tidak didefinisikan dapat menampung 4 karakter.  Diawali huruf apa saja boleh juga I,J,K,L,M,N.
5.       Variabel Logika menyimpan nilai logika .TRUE. .FALSE. Diawali dengan huruf apa saja boleh juga I, J, K, L, M, N.

Nama Larik ( Array ) :
Digunakan untuk menyimpan beberapa nilai dalam satu nama larik. Pada Fortran dapat berdimensi satu, dua, tiga sampai tujuh. Bila tidak didefinisikan maka harus diawali dengan huruf I, J, K, L, M, N.

Nama Fungsi :
Digunakan   untuk  mendapatkan suatu nilai dari fungsi tersebut.   Dengan  fungsi,  nilai  data dapat dikirimkan ke fungsi dan fungsi akan memberikan hasil yang diminta.  Dalam Fortran digolongkan  menjadi 3 macam,   yaitu :
1.       Fungsi Eksternal yang dibuat sendiri oleh pembuat program  dalam bentuk unit program yang terpisah tetapi masih dalam satu program.
2.       Fungsi Statement dedefinisikan tidak dalam bentuk unit program yang terpisah, tetapi dalam statement tunggal.
3.       Fungsi Hakiki atau Fungsi pustaka yang sudah disediakan  oleh fortran.

Verb  adalah  kata  kerja perintah yang terdapat dalam statement. Hampir semua statement Fortran mempunyai verb, kecuali assignment statement. Contoh WRITE, CALL

Unit Specifier dapat berupa :
1.       * atau 0 menunjukkan unit alat untuk Keyboard atau layar.
2.       Ungkapan Integer, yaitu nilai integer selain nilai 0 menunjukkan unit alat yang dipergunakan adalah file eksternal (printer atau file disk).  Statement OPEN menunjukkan nama dari filenya. Nama file sebagai berikut :
                - LPT1: atau PRN (printer yang pertama).
                - CON: menunjukkan alat Console.
                - LPT2: (Printer kedua).
                - COM: atau COM1: atau COM2 untuk Port Komunikasi.
                - Nama file di Disk.
                  contoh : OPEN(1,File='LPT1:')

Format Specifier :
             Digunakan untuk menunjukkan format yang akan dipergunakan oleh data input ataupun output.
Statement :
1.       Statement yang terolah (Executable Statement) yaitu : statement yang menyebabkan suatu operasi dilakukan. Contoh : ASSIGN, CALL, CONTINUE, DO, ELSE, ELSEIF, AND, ENDIF, GOTO, IF, PAUSE, RETURN, STOP, BACKSPACE, CLOSE, ENDFILE, OPEN, READ, REWIND dan WRITE.
2.       Statement tak terolah (Non-Executable Statement) yaitu : statement yang tidak melakukan operasi. Contoh : FORMAT, DATA, PARAMETER, COMMON, DIMENSION, QUIVALENCE, EXTERNAL, IMPLICIT, INTRINSIC, SAVE dan TYPE , PROGRAM, FUNCTION SUBROUTINE.

STATEMEN FORMAT
Bentuk umum:
                     <label statement> FORMAT <format-spec>
Kegunaan:
             Statement FORMAT digunakan untuk mengedit  data  pada  alat-alat I/O,yaitu mengatur letak, tipe dan panjang dari data yang akan dimasukkan lewat alat input atau yang akan ditampilkan ke alat output.

Penjelasan:
  • <label statement>        menunjukkan label dari statement FORMAT yang akan digunakan oleh statement READ atau statement WRITE.
  • <format-spec>             adalah format specification, merupakan bentuk yang menyediakan informasi terhadap letak, tipe dan  panjang  dari
data.  Format  specification ini harus ditulis dalam tanda kurung.  Isi dari  format specification ini yaitu edit descriptor.

Statement FORMAT bebas diletakkan dimana saja didalam program, tetapi yang baik adalah  bila ada  beberapa statement FORMAT,  dapat anda  kumpulkan  sementara menjadi satu dan diletakkan diujung bawah atau ujung atas program, sehingga mudah mencarinya.
Edit descriptor menunjukkan informasi mengenai letak tipe dan panjang dari masing-masing data  yang  akan dimasukkan lewat alat input atau yang akan  ditampilkan di alat output.

CARRIAGE CONTROL

Karakter pertama dari setiap data yang ditampilkan di layar maupun diprinter tidak turun ditampilkan atau dicetak. Bila karakter carriage control berupa karakter:
§  Blank atau spasi, mempunyai efek ganti baris baru,tetapi tidak memberikan spasi.
§  0, berarti memberi spasi satu baris dari baris sebelumnya.
§  1, berarti akan mencetak  di halaman  baru ( tidak berlaku di layar, hanya di printer).
§  +, berarti tidak ganti baris, tetapi  overprinting (menumpangi  penampilan  sebelumnya di baris yang sama).

    FORMAT SPECIFICATION BERULANG
      Selain repeatable edit descriptor dapat  diulang  dengan  sejumlah perulangan tertentu,  format specification  juga  dapat  di ulang,  dengan bentuk umum:
                     <r> <format specification>
   Penjelasan:
    <r> merupakan jumlah pengulangannya.
    Maksimum  jumlah  pengulangan  untuk  format  specification adalah 3
    Level.   
1.       Level pertama pada format specification adalah :
2('BASIC') Yang sama dengan: 'BASIC BASIC'
2.       Level kedua pada format specification adalah:
3.       2('COBOL',2('BASIC') Yang sama dengan:2('COBOL BASIC BASIC')
4.       atau 'COBOL BASIC BASIC COBOL BASIC BASIC'
5.       Level ketiga pada format specification adalah:
5(3X,'FORTRAN',2X,2('COBOL',2('BASIC')),/) Yang sama dengan :                          5(3X,'FORTRAN',2X,'COBOL BASIC BASIC COBOl BASIC    BASIC',/) atau : 5('FORTRAN COBOL BASIC BASIC COBOL BASIC
BASIC',/) Sehingga bila program ini dijalankan,akan didapat  hasil sbb:
                     FORTRAN COBOL BASIC BASIC COBOL BASIC BASIC
                     FORTRAN COBOL BASIC BASIC COBOL BASIC BASIC
                     FORTRAN COBOL BASIC BASIC COBOL BASIC BASIC
                     FORTRAN COBOL BASIC BASIC COBOL BASIC BASIC
                     FORTRAN COBOL BASIC BASIC COBOL BASIC BASIC
      
STATEMENT DATA DAN STATEMENT PARAMETER
Untuk memasukkan suatu data ke suatu variabel atau larik atau elemen dari suatu larik dapat dilakukan  dengan beberapa cara, yaitu:

1. Dengan statement pengerjaan
           Contoh A = 5.25
Maka variabel A akan berisi nilai 5.25.
           Contoh :
                A(1) = 7.15
                A(2) = 8.00
                A(3) = 5.55
Maka  larik  A  untuk elemen pertama berisi nilai 7.15, elemen kedua berisi nilai 8.00 dan elemen ketiga berisi nilai 5.55.

2. Dengan statement READ
Contoh:
             READ (*,10)
             10 FORMAT (F5.2)

3. Dengan statement DATA.
Bila data yang akan dimasukkan ke suatu  variabel  atau larik jumlahnya   cukup banyak dan sifatnya konstan, maka akan lebih baik bila digunakan statement DATA.

4. Dengan statement PARAMETER.
Banyak digunakan untuk  memasukkan  data  konstan  yang tidak begitu         banyak.

  STATEMENT DATA
 Bentuk umum:
        DATA<nlist>/<clist>/[[,]<nlist>/<clist>/]...
 Penjelasan:
§  Statement DATA merupakan  nonexecutable  statemen dan harus  diletakkan setelah statement spesifikasi bila statement spesifikasi digunakan.
§  <nlist>  merupakan  satu  atau  kumpulan dari nama variabel, larik atau elemen larik.
§  <clist> merupakan satu atau  kumpulan  dari  konstanta Jumlah konstanta untuk  masing-masing  <clist>  harus sama dengan  jumlah  dari nama variabel atau elemen larik untuk masing-masing <nlist>.

MEMASUKKAN DATA KE VARIABEL

                Data yang berbentuk konstanta yang akan dimasukkan ke suatu variabel  harus  mempunyai tipe yang  sama dengan variabelnya.   Konstanta  numerik  harus  dengan  variable numerik,konstanta karakter harus dengan variabel karakter, konstanta logika harus dengan variabel logika. Ada beberapa cara  untuk  memasukkan data  ke variabel dengan statement DATA, sebagai berikut ini.
  1. Satu nama variabel dihubungkan dengan satu konstanta
    2.   Kumpulan variabel dihubungkan dengan kumpulan konstanta
    3.   Sejumlah variabel dihubungkan  dengan  sebuah konstanta  dengan
            factor Pengulang.

MEMASUKKAN DATA KE LARIK

             Seperti  halnya  data yang dimasukkan ke variabel, nilai data konstanta harus mempunyai tipe yang sama dengan lariknya  dan  nama  larik  harus  sudah disebutkan dengan statement DIMENSION atau dengan statement type. Caranya:
1.         Satu elemen larik dihubungkan dengan satu konstanta
2.         Kumpulan  elemen  larik  dihubungkan  dengan   kumpulan konstanta
3.         Satu nama larik dihubungkan dengan kumpulan konstanta (DIMENSION, IMPLICIT DAN TYPE)

STATEMENT DIMENSION

Bentuk umum:

DIMENSION<array>)[,<array>(<dim>]...

Kegunaan:
Mendefinisikan  bahwa  suatu  nama  yang  dibentuk oleh pembuat program merupakan suatu larik  serta  sekaligus menentukan jumlah dari elemen-elemennya.
Penjelasan:
<array>  adalah nama dari suatu larik yang didefinisikan
<dim>    adalah deklarasi dimensi yang menunjukan jumlah elemen dari larik Suatu larik maksimum dapat berdimensi sampai 7 buah dimensi & ukuran  maksimum seluruh larik adalah 64 K atau 65536 byte. Kesalahan yang dideteksi oleh compiler menunjukan bahwa ukuran larik melebihi batas 64 kilo byte. Deklarasi dimensi dari suatu larik yang menunjukan jumlah  elemen  dari  larik juga merupakan batas atas dari suatu dimensi dengan batas bawahnya adalah nol.

Suatu deklarasi dimensi dapat berupa:
1. Suatu konstanta integer positif tidak bertanda. Bila deklarasi dimensi berupa nilai integer positif, maka larik yang bersangkutan mempunyai elemen dengan batas atas yang sudah pasti,  yang  ditunjukkan oleh deklarasi dimensi tersebut.
2. Suatu argument numerik integer. Bila suatu deklarasi dimensi berupa argument numeric integer,maka jumlah elemen dari larik tersebut tidak pasti,tergantung dari nilai argument numerik integer bersangkutan. Untuk kasus semacam ini, larik disebut dengan  istilah  larik  yang ukurannya dapat berubah (adjustable size array). Adjustable size array ini hanya dapat digunakan pada subroutine.
          
3. Suatu asterik (*)
Jika deklarasi dimensi adalah asterik (*),maka lariknya disebut dengan assumed-sizedarray  (larik dengan ukuran asumsi), yang berarti batas atas  dari elemen larik tidak ditentukan, tetapi diasumsikan. Assumed sized array juga digunakan di subroutine.

STATEMENT INPUT/OUTPUT

  1. READ
Dipergunakan untuk membaca data dari suatu media input.
BU:
      READ(I, L) var1, var2,…
Dengan:
      I  : Nomor alat input, yaitu nomor yang menyatakan suatu alat input, misal: keyboard, disk dll.
      L  : label FORMAT
Var1, var2  : Nama varabel yang datanay dibaca.
Contoh
      READ (*,11)A,B,I
11    FORMAT (2F10.2,I5)

Keterangan:
Harga-harga A, B , I dibaca memlalui alat input yang bertanda * (standar input) biasanya keyboard, dengan tata letaknya sesuai  FORMAT yang berlabel 11 yaitu:
A dengan FORMAT F10.2
B dengan FORNAT  F10.2
I dengan FORMAT I5

  1. WRITE
Dipergunakan untuk menuliskan isi suatu variabel pada suatu media output.
BU:
      WRITE(I,L) var1, var2 …
Dengan:
I : Nomor alat output, yaitu nomor yang menyatakan suatu alat output, misal monitor, printer,disk
      L : Label FORMAT
Var1, var2 : Nama variabel yang datany dituliskan.

Contoh:
      WRITE (*,10) A,B,C
10    FORMAT(3F20.8)

Keterangan:
      Harga-harga A,B,C dituliskan pada alat aoutput yang bertanda * ( standar output) biasnya monitor (console). Dengan tata letaknya sesuai FORMAT.

  1. FORMAT
Dipergunakan untuk menentukan tata letak suatu data masukan pada media input maupun data keluaran pada media output. Ada tiga jenis format untuk menyatakan data numeris yatiu: tipe I, tipe F dan tipe E.

  1. Format Tipe  I
Tipe I dipakai untuk membaca atau menuliskan data INTEGER.
BU :    nIw
Keterangan:
            n = Cacah format I
            w = Banyak kolom yang dipakai oleh data.
Contoh:
            READ(*,100) IDATA, IHASIL
100            FORMAT(I5,I5)
Atau
100            FORMAT(2I5)

  1. Format Tipe F
Tipe F dipakai untuk membaa atau menuliskan data-data REAL.
BU:     nFw.d
Keterangan:
            n = cacah format F
            w = banyak kolom yang dipakai oleh data
            d = cacah digit di belakang titik desimal.

Contoh:
            READ(*,100) X1, X2
100            FORMAT(F4.2,F4.2)
Atau
100            FORMAT(2F4.2)
  1. Format Tipe E
Tipe E dipakai untuk membaca atau menuliskan data-data REAL dengan cara EXPONENT.
BU:     nEw.d
Keterangan:
            n = cacah format E
            w = banyak kolom yang dipakai oleh data
            d = cacah digit di belakang titik desimal.
      Contoh:
            READ(*,100) X1, X2
100FORMAT(E4.2,E4.2)
Atau
100FORMAT(2E4.2)

  1. Format Tipe X
Tipe X ini bukan untuk membaca atau menulis, melainkan hanya untuk memberitahu banyak ruang kosong (spasi) antar data-data yang dibaca atau ditulis.
BU: nX                       dengan n: jumlah ruang kosong.
Contoh:
            READ(*,100) PDAT,NILAI
100            FORMAT(F5.1,3X,I5)

  1. Format Literal
Untuk menuliskan data literal langsung dari program ke media output.
BU: ‘ xxxxxxxxxx’
Contoh:
            WRITE(*,100)
FORMAT(‘BELAJAR BAHASA FORTRAN’)

STATEMEN CONTROL


1.      STATEMEN GO TO
Ada dua bentuk untuk statemen ini, yaitu:
-       GO TO statemen tanpa syarat dan
-       GO TO statemen dengan hitungan

  1. GO TO tanpa syarat
Berfungsi memerintahkan proses untuk meloncat langsung ke statemen dengan label yang ditunjuk.
Contoh:

100READ(*,10) A,B
C=A*B
-
GO TO 100
-
STOP
END
           
  1. GO TO dengan hitungan
Statemen ini memberi perintah agar program loncat ke statemen dengan label nk apabila harga var= k. Aturan-aturan untuk GO TO statemen dengan hitungan:
-       n1,n2,..,nm dapat tidak urut dan dapat sama.
-       Harga var harus lebih kecil atau sama dengan m dan var 0.
-       Harga var harus telah ditentukan sebelum program tiba pada statemen ini.
-       Steiap nomor statemen yang ada dalam program dapat dipergunakan dalam GO TO statemen dengan hitungan. Kecuali nomor statemen untuk FORMAT.

Contoh:
                  READ(*,10)N
GO TO (100,200,300)N
100X=P*A
200X=P*B
300            X=p*D
                  STOP
                  END

2.      STATEMEN IF
Statemen IF ada 2 jenis:
-       Statemen IF hitungan
-       Statemen IF nalar.

  1. Statemen IF hitungan adalah untuk mengecek isi suatu variabel atau hasil suatu pernyataan hitungan, yaitu apakah negatif, nol atau positif. Dan berdasarkan hasil cek yang diperoleh, program diperintahkan loncat ke nomor statemen: n1, atau n2 atau n3.

BU : IF (pr) n1,n2,n3
Dimana:
pr : Pernyataan hitungan atau suatu variabel, boleh REAL atau INTEGER;
n1,n2,n3 : Nomor-nomor statemen yang akan dituju untuk digarap instruksinya.

Penjelasan:
-       Kalau harga variabel, atau hasil pernyataan hitungan < 0 (negatif), program loncat ke n1. Hitungan = 0 (nol) program loncat ke n2 dan kalau hitungan > 0 (positif) program loncat ke n3.
-       N1,n2,n3 dapat dua buiah sama, tetapi tidak dapat semua sama.
-       Hirarki dan peraturan-peraturan lain berlaku juga pada ekspresi pr di dalam statemen IF.
Contoh:
                  READ(*,10) A,B,C
                  IF(B**2-4*C)100,200,300

100WRITE(*,110)
110FORMAT(‘AKAR IMAJINER’)
200            X=-B/(2.*A)
300            X1=(-B+SQRT(b**2-4*A*C))/(2.*A)
                  STOP
                  END
  1. Statemen IF Nalar untuk membandingkan dua (atau lebih) variabel secara nalar, kalau perbandingan nalar memberikan hasil “ya”, maka statemen I digarap, apabila tidak dipenuhi maka program terus menggarap statemen di bawahnya.

BU: IF (ekspresi nalar) statemen)

Operator nalar yang dipakai:
.EQ.                 sama dengan
.NE.                 tidak sama dengan
.LT.                 lebih kecil dari
.LE.                 lebih kecil atau sama dengan
.GT.                 lebih besar
.GE.                 lebih besar atau sama dengan
.OR.                atau
.AND.             dan
.NOT.              bukan

Contoh:

            IF(A .LE. 10.0 .AND. A .GT. 5.0) GO TO 150
            WRITE(*,100)
100            FORMAT(1X,’TIDAK LULUS’)
STOP
150            WRITE(*,200)
200            FORMAT(1X,’LULUS’)
STOP
END

3.      STATEMEN DO
Berfungsi untuk memerintahkan komputer agar menjalankan suatu deretan, berulang-ulang dengan cara tertentu.

BU : DO n var=m1,m2,m3

n    : Nomor statemen dari suatu statemen yang merupakan batas akhir dari deretan yang harus diproses berulang-ulang.
Var            :  Variabel integer/real yang harganya akan berubah-ubah dari suatu harga awal m1 ke harga akhir m2 dengan besar langkah m3.

Pada FORTRAN IV kalang DO tidak dapat diakhir dengan kontrol statemen, untuk mengatasi ini dapat dipakai statemen CONTINUE. Sednag pada FORTARN 77 dijinkan.

Contoh:
      DO 100 I =1,25
      X=I**3
      WRITE(*,10)X
100IF (X .GT. 1000.0) GO TO 200
200CONTINUE
STOP
END

SUBPROGRAM
Subprogram ada 2 macam:
-       subprogram FUNCTION
-       subprogram SUBROUTINE
1.      Subprogram FUNCTION
BU:           FUNCTION nf(arg1,arg2…argm)
Sifat-sifat FUNCTION :
-       bersifat otonom, sehingga nama-nama variabel di dalam subprogram boleh sama dengan nama-anam variabel di dalam program pemanggil dengan tidak terjadi kesalahan.
-       Dipanggil langsung dengan namanya.
-       Argumen-argumen hanya merupakan input, output keluar melalaui nama subprogram FUNCTION.
-       Boleh mempunyai lebih sari satu statemen RETURN, maupun juga statemen STOP.
-       Argumen dapat berupa konstanta maupun variabel, real atau integer.

Contoh:
            READ(*,10) A,B
            C= TAMBAH(A,B)
            WRITE(*,10)C
10                FORMAT(F8.2)
STOP
END
FUNCTION TAMBAH(X,Y)
TAMBAH=X+Y
RETURN
END

2.      Subprogram SUBROUTINE
BU: SUBROUTINE ns(arg1, arg2…argm)
Sifat-sifat SUBROUTINE:
Hampir sama dengan FUNCTION, hanya berbeda pada pemanggilannya yaitu dengan cara : CALL nama subroutine. Dan SUBROUTINE tidak dapat mengembalikan nilai sebagaimana dengan FUNCTION .

Contoh:
            READ(*,10) A,B
            TAMBAH(A,B)
STOP
END
SUBROUTINE TAMBAH(X,Y)
            Z= X+Y
            WRITE(*,100)Z
100       FORMAT(F8.2)
RETURN
END

Virtual Lab PTA 2008 – 2009
Matematika Lanjut 2

  1. Jelaskan Struktur Program Fortran dan Aturan penulisan dalam Fortran !
  2. Apa perbedaan Statement Stop dan End!
  3. Apa perbedaan Procedure dan Function!
  4. Buatlah program Fortran
    1. Program Menghitung Luas Trapesium
    2. Program Perkalian Matriks
  5. Apa hasil (output) dari program berikut ini!
A. PROGRAM 1, Bila banyaknya deret 5
                 INTEGER A,B,C
                 WRITE (*,'(24(/))')
                 WRITE (*,'(A,\)') 'Masukkan Banyak Deret = '
                 READ (*,'(I2)') N
                 A=N
                 B=1
                 DO 10 I=1,N
                 DO 20 J=1,A
                 WRITE (*,'(A,\)') ' '
 20            CONTINUE
                 WRITE (*,'(I1,\,A,I1)') A,' ',A
                 DO 30 J=1,B
                 WRITE (*,'(A,\)') ' '
  30           CONTINUE
                 WRITE (*,'(I1,\,A,I1)') A,' ',A
                 WRITE (*,*)
                 A=A-1
                 B=B+2
   10          CONTINUE
                 STOP
   END 

A.    Program 2 Bila banyaknya deret 5
   INTEGER A,B,C
    WRITE (*,'(24(/))')
    WRITE (*,'(A,\)')'Masukkan Banyaknya Deret = '
     READ (*,'(I2)') N
     A=N
     C=N-1
     B=1
     DO 10 I = 1,N
DO 20 J = 1,A
     WRITE (*,'(A,\)') ' ' 
20 CONTINUE
IF (A .EQ. N) THEN WRITE (*,'(I1)') A
     ELSE WRITE (*,'(I1,\)') A
     DO 30 K=1,B
     WRITE (*,'(A,\)') ' '
30 CONTINUE
     WRITE (*,'(I1)') A
     B=B+2
     ENDIF
     A=A-1
10  CONTINUE
     A=2
     B=B-4
     IF (N .NE. 1) THEN
         DO 40 I=1,C
         DO 50 J=1,A
         WRITE (*,'(A,\)') ' '
   50  CONTINUE
         IF (C .EQ. 1) THEN
            WRITE (*,'(I1)') A
          ELSE
            WRITE (*,'(I1,\)') A
          DO 60 K=1,B
             WRITE (*,'(A,\)') ' '
   60    CONTINUE
           WRITE (*,'(I1)') A
             ENDIF
           A=A+1
           B=B-2
           C=C-1
   40   CONTINUE
          ENDIF      
          STOP
          END   

B.     Program 3 Bila banyaknya deret 5
      INTEGER A,B,C
      WRITE (*,'(24(/))')
      WRITE (*,'(A,\)') 'Masukkan Jumlah Deret = '
      READ (*,'(I2)') N
      A=N
      DO 10 I=1,N
      B=I
      DO 20 J=1,A
        WRITE (*,'(I2,\,A)') B,' '
        B=B+2
   20  CONTINUE
         WRITE(*,*)
         A=A-1
  10 CONTINUE  
      STOP

      END Tujuan  :
            Setelah  membaca  bab  ini  diharapkan praktikan dapat menggunakan  Program Fortran dan mengerti bagaimana  cara  membuat program.

Perkembangan Fortran :
Fortran Singkatan Dari FORmula TRANslator, yang merupakan bahasa tingkat tinggi dan ber-orientasi pada rumus-rumus (formula) atau ke permasalahan teknik.
Referensi pertama mengenai Fortran baru dikeluarkan dalam bentuk laporan tahun 1954 oleh Programming Research Group, suatu divisi teknik terapan dari IBM baru  pada  tahun  1957  diterapkan
pada komputer IBM 704.

Struktur Program Fortran :
Dibagi menjadi 5 bagian kolom dan  tiap  baris  di  dalam program dapat berisi :
1. Metacommand
2. Komentar
3. Statement
4. Sambungan dari statement baris sebelumnya.

Aturan Penulisan Fortran :
  1. Kolom pertama merupakan Komentar atau metacommand (C, *, $).
2. Kolom 1 sampai 5 untuk penulisan label statement berupa angka.
3. Kolom 6 untuk indikasi sambungan dari baris sebelumnya.
4. Kolom 7 sampai 72 untuk penulisan Statement FORTRAN.
5. Kolom 73 sampai 80 tidak digunakan (Untuk Komentar bebas).
             
Elemen Program Fortran :
  1. Metacommand atau compiler directive sifatnya optional.
  2. Komentar berupa tulisan bebas.
     3. Statement merupakan inti yang berupa instruksi-instruksi.

Suatu statement dapat dibentuk dari elemen-elemen :
1. Konstanta                5. Verb
2. Operator                  6. Unit Specifier
3. Ungkapan                7. Format Specifier
4. Nama

Konstanta :
Numerik yang terdiri dari :
Konstanta Integer (Numerik Bilangan Bulat) 2 byte berkisar  antara -32767 sampai 32767 dan yang 4 byte  berkisar  antara  -2147483647 sampai 2147483647. Kontanta Real ketepatan tunggal (Pecahan), mempunyai batasan : 8.43E-37   sampai dengan   3.37E+38    Positif -3.37E+38   sampai dengan  -8.43E-37    Negatif Konstanta Real Ketepatan ganda (Pecahan), mempunyai batasan : 4.19D-307  sampai dengan   1.67D+308   Positif   -1.67D+308  sampai   dengan    -4.19D-307   Negatif Konstanta Karakter (String) yang ditulis dalam tanda Petik. Konstanta Logika (Nilai Logika) .TRUE. .FALSE.

Operator :
Aritmatika  :  **  Pangkat                             level 1
                            * Kali                                  level 2
                           / Bagi                                    level 2
                           + Penjumlahan                     level 3
                       - Pengurangan              level 3
             
Hubungan   :  
                          .LT.   Lebih Kecil dari
                          .LE.   Lebih kecil sama dengan dari
                          .EQ.   Sama dengan
                          .NE.   Tidak sama dengan
                          .GT.    Lebih besar dari
                          .GE.    Lebih besar sama dengan dari
Logika  :
            .NOT.    Tidak atau Bukan
                                    .AND.    Dan
                                    .OR.       Atau

Ungkapan   :
            Ungkapan Aritmatika dengan operasi didalam tanda kurung didahulukan, kemudian pangkat, kali, bagi, jumlah, kurang. Ungkapan Karakter tidak boleh menggunakan operator aritmatik, tapi dapat berbentuk konstanta karakter atau nama variabel. Ungkapan hubungan adalah membandingkan niali dari dua numeric atau karakter.

Nama : dapat berupa variabel, larik(array), fungsi, atau rutin.
Dengan ketentuan sebagai berikut :
  1. Maksimum panjangnya 1320 karakter tapi hanya 6 karakter pertama yang dibaca.
  2. Karakter pertama harus berupa huruf.
     3. Tidak boleh ada spasi atau blank.
  1. Tidak boleh mengandung karakter khusus.

Nama Variabel ada 5 tipe :
1.       Variabel Integer untuk menyimpan nilai numerik bulat. Bila tidak    didefinisikan, maka harus ditunjukkan oleh nama variable yang diawali dengan huruf I, J, K, L, M atau N besarnya memori  2 byte atau 4 byte default-nya 4 byte.
2.       Variabel Real ketepatan Tunggal menyimpan nilai pecahan 4 byte. Bila tidak didefinisikan maka harus diawali huruf I,J,K,L,M,N.
3.       Variabel real ketepatan Ganda menyimpan pecahan 8 byte. Harus diawali dengan huruf selain I,J,K,L,M,N.
4.       Variabel Karakter menyimpan variabel karakter 4 byte. Kalau tidak didefinisikan dapat menampung 4 karakter.  Diawali huruf apa saja boleh juga I,J,K,L,M,N.
5.       Variabel Logika menyimpan nilai logika .TRUE. .FALSE. Diawali dengan huruf apa saja boleh juga I, J, K, L, M, N.

Nama Larik ( Array ) :
Digunakan untuk menyimpan beberapa nilai dalam satu nama larik. Pada Fortran dapat berdimensi satu, dua, tiga sampai tujuh. Bila tidak didefinisikan maka harus diawali dengan huruf I, J, K, L, M, N.

Nama Fungsi :
Digunakan   untuk  mendapatkan suatu nilai dari fungsi tersebut.   Dengan  fungsi,  nilai  data dapat dikirimkan ke fungsi dan fungsi akan memberikan hasil yang diminta.  Dalam Fortran digolongkan  menjadi 3 macam,   yaitu :
1.       Fungsi Eksternal yang dibuat sendiri oleh pembuat program  dalam bentuk unit program yang terpisah tetapi masih dalam satu program.
2.       Fungsi Statement dedefinisikan tidak dalam bentuk unit program yang terpisah, tetapi dalam statement tunggal.
3.       Fungsi Hakiki atau Fungsi pustaka yang sudah disediakan  oleh fortran.

Verb  adalah  kata  kerja perintah yang terdapat dalam statement. Hampir semua statement Fortran mempunyai verb, kecuali assignment statement. Contoh WRITE, CALL

Unit Specifier dapat berupa :
1.       * atau 0 menunjukkan unit alat untuk Keyboard atau layar.
2.       Ungkapan Integer, yaitu nilai integer selain nilai 0 menunjukkan unit alat yang dipergunakan adalah file eksternal (printer atau file disk).  Statement OPEN menunjukkan nama dari filenya. Nama file sebagai berikut :
                - LPT1: atau PRN (printer yang pertama).
                - CON: menunjukkan alat Console.
                - LPT2: (Printer kedua).
                - COM: atau COM1: atau COM2 untuk Port Komunikasi.
                - Nama file di Disk.
                  contoh : OPEN(1,File='LPT1:')

Format Specifier :
             Digunakan untuk menunjukkan format yang akan dipergunakan oleh data input ataupun output.
Statement :
1.       Statement yang terolah (Executable Statement) yaitu : statement yang menyebabkan suatu operasi dilakukan. Contoh : ASSIGN, CALL, CONTINUE, DO, ELSE, ELSEIF, AND, ENDIF, GOTO, IF, PAUSE, RETURN, STOP, BACKSPACE, CLOSE, ENDFILE, OPEN, READ, REWIND dan WRITE.
2.       Statement tak terolah (Non-Executable Statement) yaitu : statement yang tidak melakukan operasi. Contoh : FORMAT, DATA, PARAMETER, COMMON, DIMENSION, QUIVALENCE, EXTERNAL, IMPLICIT, INTRINSIC, SAVE dan TYPE , PROGRAM, FUNCTION SUBROUTINE.

STATEMEN FORMAT
Bentuk umum:
                     <label statement> FORMAT <format-spec>
Kegunaan:
             Statement FORMAT digunakan untuk mengedit  data  pada  alat-alat I/O,yaitu mengatur letak, tipe dan panjang dari data yang akan dimasukkan lewat alat input atau yang akan ditampilkan ke alat output.

Penjelasan:
  • <label statement>        menunjukkan label dari statement FORMAT yang akan digunakan oleh statement READ atau statement WRITE.
  • <format-spec>             adalah format specification, merupakan bentuk yang menyediakan informasi terhadap letak, tipe dan  panjang  dari
data.  Format  specification ini harus ditulis dalam tanda kurung.  Isi dari  format specification ini yaitu edit descriptor.

Statement FORMAT bebas diletakkan dimana saja didalam program, tetapi yang baik adalah  bila ada  beberapa statement FORMAT,  dapat anda  kumpulkan  sementara menjadi satu dan diletakkan diujung bawah atau ujung atas program, sehingga mudah mencarinya.
Edit descriptor menunjukkan informasi mengenai letak tipe dan panjang dari masing-masing data  yang  akan dimasukkan lewat alat input atau yang akan  ditampilkan di alat output.

CARRIAGE CONTROL

Karakter pertama dari setiap data yang ditampilkan di layar maupun diprinter tidak turun ditampilkan atau dicetak. Bila karakter carriage control berupa karakter:
§  Blank atau spasi, mempunyai efek ganti baris baru,tetapi tidak memberikan spasi.
§  0, berarti memberi spasi satu baris dari baris sebelumnya.
§  1, berarti akan mencetak  di halaman  baru ( tidak berlaku di layar, hanya di printer).
§  +, berarti tidak ganti baris, tetapi  overprinting (menumpangi  penampilan  sebelumnya di baris yang sama).

    FORMAT SPECIFICATION BERULANG
      Selain repeatable edit descriptor dapat  diulang  dengan  sejumlah perulangan tertentu,  format specification  juga  dapat  di ulang,  dengan bentuk umum:
                     <r> <format specification>
   Penjelasan:
    <r> merupakan jumlah pengulangannya.
    Maksimum  jumlah  pengulangan  untuk  format  specification adalah 3
    Level.   
1.       Level pertama pada format specification adalah :
2('BASIC') Yang sama dengan: 'BASIC BASIC'
2.       Level kedua pada format specification adalah:
3.       2('COBOL',2('BASIC') Yang sama dengan:2('COBOL BASIC BASIC')
4.       atau 'COBOL BASIC BASIC COBOL BASIC BASIC'
5.       Level ketiga pada format specification adalah:
5(3X,'FORTRAN',2X,2('COBOL',2('BASIC')),/) Yang sama dengan :                          5(3X,'FORTRAN',2X,'COBOL BASIC BASIC COBOl BASIC    BASIC',/) atau : 5('FORTRAN COBOL BASIC BASIC COBOL BASIC
BASIC',/) Sehingga bila program ini dijalankan,akan didapat  hasil sbb:
                     FORTRAN COBOL BASIC BASIC COBOL BASIC BASIC
                     FORTRAN COBOL BASIC BASIC COBOL BASIC BASIC
                     FORTRAN COBOL BASIC BASIC COBOL BASIC BASIC
                     FORTRAN COBOL BASIC BASIC COBOL BASIC BASIC
                     FORTRAN COBOL BASIC BASIC COBOL BASIC BASIC
      
STATEMENT DATA DAN STATEMENT PARAMETER
Untuk memasukkan suatu data ke suatu variabel atau larik atau elemen dari suatu larik dapat dilakukan  dengan beberapa cara, yaitu:

1. Dengan statement pengerjaan
           Contoh A = 5.25
Maka variabel A akan berisi nilai 5.25.
           Contoh :
                A(1) = 7.15
                A(2) = 8.00
                A(3) = 5.55
Maka  larik  A  untuk elemen pertama berisi nilai 7.15, elemen kedua berisi nilai 8.00 dan elemen ketiga berisi nilai 5.55.

2. Dengan statement READ
Contoh:
             READ (*,10)
             10 FORMAT (F5.2)

3. Dengan statement DATA.
Bila data yang akan dimasukkan ke suatu  variabel  atau larik jumlahnya   cukup banyak dan sifatnya konstan, maka akan lebih baik bila digunakan statement DATA.

4. Dengan statement PARAMETER.
Banyak digunakan untuk  memasukkan  data  konstan  yang tidak begitu         banyak.

  STATEMENT DATA
 Bentuk umum:
        DATA<nlist>/<clist>/[[,]<nlist>/<clist>/]...
 Penjelasan:
§  Statement DATA merupakan  nonexecutable  statemen dan harus  diletakkan setelah statement spesifikasi bila statement spesifikasi digunakan.
§  <nlist>  merupakan  satu  atau  kumpulan dari nama variabel, larik atau elemen larik.
§  <clist> merupakan satu atau  kumpulan  dari  konstanta Jumlah konstanta untuk  masing-masing  <clist>  harus sama dengan  jumlah  dari nama variabel atau elemen larik untuk masing-masing <nlist>.

MEMASUKKAN DATA KE VARIABEL

                Data yang berbentuk konstanta yang akan dimasukkan ke suatu variabel  harus  mempunyai tipe yang  sama dengan variabelnya.   Konstanta  numerik  harus  dengan  variable numerik,konstanta karakter harus dengan variabel karakter, konstanta logika harus dengan variabel logika. Ada beberapa cara  untuk  memasukkan data  ke variabel dengan statement DATA, sebagai berikut ini.
  1. Satu nama variabel dihubungkan dengan satu konstanta
    2.   Kumpulan variabel dihubungkan dengan kumpulan konstanta
    3.   Sejumlah variabel dihubungkan  dengan  sebuah konstanta  dengan
            factor Pengulang.

MEMASUKKAN DATA KE LARIK

             Seperti  halnya  data yang dimasukkan ke variabel, nilai data konstanta harus mempunyai tipe yang sama dengan lariknya  dan  nama  larik  harus  sudah disebutkan dengan statement DIMENSION atau dengan statement type. Caranya:
1.         Satu elemen larik dihubungkan dengan satu konstanta
2.         Kumpulan  elemen  larik  dihubungkan  dengan   kumpulan konstanta
3.         Satu nama larik dihubungkan dengan kumpulan konstanta (DIMENSION, IMPLICIT DAN TYPE)

STATEMENT DIMENSION

Bentuk umum:

DIMENSION<array>)[,<array>(<dim>]...

Kegunaan:
Mendefinisikan  bahwa  suatu  nama  yang  dibentuk oleh pembuat program merupakan suatu larik  serta  sekaligus menentukan jumlah dari elemen-elemennya.
Penjelasan:
<array>  adalah nama dari suatu larik yang didefinisikan
<dim>    adalah deklarasi dimensi yang menunjukan jumlah elemen dari larik Suatu larik maksimum dapat berdimensi sampai 7 buah dimensi & ukuran  maksimum seluruh larik adalah 64 K atau 65536 byte. Kesalahan yang dideteksi oleh compiler menunjukan bahwa ukuran larik melebihi batas 64 kilo byte. Deklarasi dimensi dari suatu larik yang menunjukan jumlah  elemen  dari  larik juga merupakan batas atas dari suatu dimensi dengan batas bawahnya adalah nol.

Suatu deklarasi dimensi dapat berupa:
1. Suatu konstanta integer positif tidak bertanda. Bila deklarasi dimensi berupa nilai integer positif, maka larik yang bersangkutan mempunyai elemen dengan batas atas yang sudah pasti,  yang  ditunjukkan oleh deklarasi dimensi tersebut.
2. Suatu argument numerik integer. Bila suatu deklarasi dimensi berupa argument numeric integer,maka jumlah elemen dari larik tersebut tidak pasti,tergantung dari nilai argument numerik integer bersangkutan. Untuk kasus semacam ini, larik disebut dengan  istilah  larik  yang ukurannya dapat berubah (adjustable size array). Adjustable size array ini hanya dapat digunakan pada subroutine.
          
3. Suatu asterik (*)
Jika deklarasi dimensi adalah asterik (*),maka lariknya disebut dengan assumed-sizedarray  (larik dengan ukuran asumsi), yang berarti batas atas  dari elemen larik tidak ditentukan, tetapi diasumsikan. Assumed sized array juga digunakan di subroutine.

STATEMENT INPUT/OUTPUT

  1. READ
Dipergunakan untuk membaca data dari suatu media input.
BU:
      READ(I, L) var1, var2,…
Dengan:
      I  : Nomor alat input, yaitu nomor yang menyatakan suatu alat input, misal: keyboard, disk dll.
      L  : label FORMAT
Var1, var2  : Nama varabel yang datanay dibaca.
Contoh
      READ (*,11)A,B,I
11    FORMAT (2F10.2,I5)

Keterangan:
Harga-harga A, B , I dibaca memlalui alat input yang bertanda * (standar input) biasanya keyboard, dengan tata letaknya sesuai  FORMAT yang berlabel 11 yaitu:
A dengan FORMAT F10.2
B dengan FORNAT  F10.2
I dengan FORMAT I5

  1. WRITE
Dipergunakan untuk menuliskan isi suatu variabel pada suatu media output.
BU:
      WRITE(I,L) var1, var2 …
Dengan:
I : Nomor alat output, yaitu nomor yang menyatakan suatu alat output, misal monitor, printer,disk
      L : Label FORMAT
Var1, var2 : Nama variabel yang datany dituliskan.

Contoh:
      WRITE (*,10) A,B,C
10    FORMAT(3F20.8)

Keterangan:
      Harga-harga A,B,C dituliskan pada alat aoutput yang bertanda * ( standar output) biasnya monitor (console). Dengan tata letaknya sesuai FORMAT.

  1. FORMAT
Dipergunakan untuk menentukan tata letak suatu data masukan pada media input maupun data keluaran pada media output. Ada tiga jenis format untuk menyatakan data numeris yatiu: tipe I, tipe F dan tipe E.

  1. Format Tipe  I
Tipe I dipakai untuk membaca atau menuliskan data INTEGER.
BU :    nIw
Keterangan:
            n = Cacah format I
            w = Banyak kolom yang dipakai oleh data.
Contoh:
            READ(*,100) IDATA, IHASIL
100            FORMAT(I5,I5)
Atau
100            FORMAT(2I5)

  1. Format Tipe F
Tipe F dipakai untuk membaa atau menuliskan data-data REAL.
BU:     nFw.d
Keterangan:
            n = cacah format F
            w = banyak kolom yang dipakai oleh data
            d = cacah digit di belakang titik desimal.

Contoh:
            READ(*,100) X1, X2
100            FORMAT(F4.2,F4.2)
Atau
100            FORMAT(2F4.2)
  1. Format Tipe E
Tipe E dipakai untuk membaca atau menuliskan data-data REAL dengan cara EXPONENT.
BU:     nEw.d
Keterangan:
            n = cacah format E
            w = banyak kolom yang dipakai oleh data
            d = cacah digit di belakang titik desimal.
      Contoh:
            READ(*,100) X1, X2
100FORMAT(E4.2,E4.2)
Atau
100FORMAT(2E4.2)

  1. Format Tipe X
Tipe X ini bukan untuk membaca atau menulis, melainkan hanya untuk memberitahu banyak ruang kosong (spasi) antar data-data yang dibaca atau ditulis.
BU: nX                       dengan n: jumlah ruang kosong.
Contoh:
            READ(*,100) PDAT,NILAI
100            FORMAT(F5.1,3X,I5)

  1. Format Literal
Untuk menuliskan data literal langsung dari program ke media output.
BU: ‘ xxxxxxxxxx’
Contoh:
            WRITE(*,100)
FORMAT(‘BELAJAR BAHASA FORTRAN’)

STATEMEN CONTROL


1.      STATEMEN GO TO
Ada dua bentuk untuk statemen ini, yaitu:
-       GO TO statemen tanpa syarat dan
-       GO TO statemen dengan hitungan

  1. GO TO tanpa syarat
Berfungsi memerintahkan proses untuk meloncat langsung ke statemen dengan label yang ditunjuk.
Contoh:

100READ(*,10) A,B
C=A*B
-
GO TO 100
-
STOP
END
           
  1. GO TO dengan hitungan
Statemen ini memberi perintah agar program loncat ke statemen dengan label nk apabila harga var= k. Aturan-aturan untuk GO TO statemen dengan hitungan:
-       n1,n2,..,nm dapat tidak urut dan dapat sama.
-       Harga var harus lebih kecil atau sama dengan m dan var 0.
-       Harga var harus telah ditentukan sebelum program tiba pada statemen ini.
-       Steiap nomor statemen yang ada dalam program dapat dipergunakan dalam GO TO statemen dengan hitungan. Kecuali nomor statemen untuk FORMAT.

Contoh:
                  READ(*,10)N
GO TO (100,200,300)N
100X=P*A
200X=P*B
300            X=p*D
                  STOP
                  END

2.      STATEMEN IF
Statemen IF ada 2 jenis:
-       Statemen IF hitungan
-       Statemen IF nalar.

  1. Statemen IF hitungan adalah untuk mengecek isi suatu variabel atau hasil suatu pernyataan hitungan, yaitu apakah negatif, nol atau positif. Dan berdasarkan hasil cek yang diperoleh, program diperintahkan loncat ke nomor statemen: n1, atau n2 atau n3.

BU : IF (pr) n1,n2,n3
Dimana:
pr : Pernyataan hitungan atau suatu variabel, boleh REAL atau INTEGER;
n1,n2,n3 : Nomor-nomor statemen yang akan dituju untuk digarap instruksinya.

Penjelasan:
-       Kalau harga variabel, atau hasil pernyataan hitungan < 0 (negatif), program loncat ke n1. Hitungan = 0 (nol) program loncat ke n2 dan kalau hitungan > 0 (positif) program loncat ke n3.
-       N1,n2,n3 dapat dua buiah sama, tetapi tidak dapat semua sama.
-       Hirarki dan peraturan-peraturan lain berlaku juga pada ekspresi pr di dalam statemen IF.
Contoh:
                  READ(*,10) A,B,C
                  IF(B**2-4*C)100,200,300

100WRITE(*,110)
110FORMAT(‘AKAR IMAJINER’)
200            X=-B/(2.*A)
300            X1=(-B+SQRT(b**2-4*A*C))/(2.*A)
                  STOP
                  END
  1. Statemen IF Nalar untuk membandingkan dua (atau lebih) variabel secara nalar, kalau perbandingan nalar memberikan hasil “ya”, maka statemen I digarap, apabila tidak dipenuhi maka program terus menggarap statemen di bawahnya.

BU: IF (ekspresi nalar) statemen)

Operator nalar yang dipakai:
.EQ.                 sama dengan
.NE.                 tidak sama dengan
.LT.                 lebih kecil dari
.LE.                 lebih kecil atau sama dengan
.GT.                 lebih besar
.GE.                 lebih besar atau sama dengan
.OR.                atau
.AND.             dan
.NOT.              bukan

Contoh:

            IF(A .LE. 10.0 .AND. A .GT. 5.0) GO TO 150
            WRITE(*,100)
100            FORMAT(1X,’TIDAK LULUS’)
STOP
150            WRITE(*,200)
200            FORMAT(1X,’LULUS’)
STOP
END

3.      STATEMEN DO
Berfungsi untuk memerintahkan komputer agar menjalankan suatu deretan, berulang-ulang dengan cara tertentu.

BU : DO n var=m1,m2,m3

n    : Nomor statemen dari suatu statemen yang merupakan batas akhir dari deretan yang harus diproses berulang-ulang.
Var            :  Variabel integer/real yang harganya akan berubah-ubah dari suatu harga awal m1 ke harga akhir m2 dengan besar langkah m3.

Pada FORTRAN IV kalang DO tidak dapat diakhir dengan kontrol statemen, untuk mengatasi ini dapat dipakai statemen CONTINUE. Sednag pada FORTARN 77 dijinkan.

Contoh:
      DO 100 I =1,25
      X=I**3
      WRITE(*,10)X
100IF (X .GT. 1000.0) GO TO 200
200CONTINUE
STOP
END

SUBPROGRAM
Subprogram ada 2 macam:
-       subprogram FUNCTION
-       subprogram SUBROUTINE
1.      Subprogram FUNCTION
BU:           FUNCTION nf(arg1,arg2…argm)
Sifat-sifat FUNCTION :
-       bersifat otonom, sehingga nama-nama variabel di dalam subprogram boleh sama dengan nama-anam variabel di dalam program pemanggil dengan tidak terjadi kesalahan.
-       Dipanggil langsung dengan namanya.
-       Argumen-argumen hanya merupakan input, output keluar melalaui nama subprogram FUNCTION.
-       Boleh mempunyai lebih sari satu statemen RETURN, maupun juga statemen STOP.
-       Argumen dapat berupa konstanta maupun variabel, real atau integer.

Contoh:
            READ(*,10) A,B
            C= TAMBAH(A,B)
            WRITE(*,10)C
10                FORMAT(F8.2)
STOP
END
FUNCTION TAMBAH(X,Y)
TAMBAH=X+Y
RETURN
END

2.      Subprogram SUBROUTINE
BU: SUBROUTINE ns(arg1, arg2…argm)
Sifat-sifat SUBROUTINE:
Hampir sama dengan FUNCTION, hanya berbeda pada pemanggilannya yaitu dengan cara : CALL nama subroutine. Dan SUBROUTINE tidak dapat mengembalikan nilai sebagaimana dengan FUNCTION .

Contoh:
            READ(*,10) A,B
            TAMBAH(A,B)
STOP
END
SUBROUTINE TAMBAH(X,Y)
            Z= X+Y
            WRITE(*,100)Z
100       FORMAT(F8.2)
RETURN
END

Virtual Lab PTA 2008 – 2009
Matematika Lanjut 2

  1. Jelaskan Struktur Program Fortran dan Aturan penulisan dalam Fortran !
  2. Apa perbedaan Statement Stop dan End!
  3. Apa perbedaan Procedure dan Function!
  4. Buatlah program Fortran
    1. Program Menghitung Luas Trapesium
    2. Program Perkalian Matriks
  5. Apa hasil (output) dari program berikut ini!
A. PROGRAM 1, Bila banyaknya deret 5
                 INTEGER A,B,C
                 WRITE (*,'(24(/))')
                 WRITE (*,'(A,\)') 'Masukkan Banyak Deret = '
                 READ (*,'(I2)') N
                 A=N
                 B=1
                 DO 10 I=1,N
                 DO 20 J=1,A
                 WRITE (*,'(A,\)') ' '
 20            CONTINUE
                 WRITE (*,'(I1,\,A,I1)') A,' ',A
                 DO 30 J=1,B
                 WRITE (*,'(A,\)') ' '
  30           CONTINUE
                 WRITE (*,'(I1,\,A,I1)') A,' ',A
                 WRITE (*,*)
                 A=A-1
                 B=B+2
   10          CONTINUE
                 STOP
   END 

A.    Program 2 Bila banyaknya deret 5
   INTEGER A,B,C
    WRITE (*,'(24(/))')
    WRITE (*,'(A,\)')'Masukkan Banyaknya Deret = '
     READ (*,'(I2)') N
     A=N
     C=N-1
     B=1
     DO 10 I = 1,N
DO 20 J = 1,A
     WRITE (*,'(A,\)') ' ' 
20 CONTINUE
IF (A .EQ. N) THEN WRITE (*,'(I1)') A
     ELSE WRITE (*,'(I1,\)') A
     DO 30 K=1,B
     WRITE (*,'(A,\)') ' '
30 CONTINUE
     WRITE (*,'(I1)') A
     B=B+2
     ENDIF
     A=A-1
10  CONTINUE
     A=2
     B=B-4
     IF (N .NE. 1) THEN
         DO 40 I=1,C
         DO 50 J=1,A
         WRITE (*,'(A,\)') ' '
   50  CONTINUE
         IF (C .EQ. 1) THEN
            WRITE (*,'(I1)') A
          ELSE
            WRITE (*,'(I1,\)') A
          DO 60 K=1,B
             WRITE (*,'(A,\)') ' '
   60    CONTINUE
           WRITE (*,'(I1)') A
             ENDIF
           A=A+1
           B=B-2
           C=C-1
   40   CONTINUE
          ENDIF      
          STOP
          END   

B.     Program 3 Bila banyaknya deret 5
      INTEGER A,B,C
      WRITE (*,'(24(/))')
      WRITE (*,'(A,\)') 'Masukkan Jumlah Deret = '
      READ (*,'(I2)') N
      A=N
      DO 10 I=1,N
      B=I
      DO 20 J=1,A
        WRITE (*,'(I2,\,A)') B,' '
        B=B+2
   20  CONTINUE
         WRITE(*,*)
         A=A-1
  10 CONTINUE  
      STOP
      END Tujuan  :
            Setelah  membaca  bab  ini  diharapkan praktikan dapat menggunakan  Program Fortran dan mengerti bagaimana  cara  membuat program.

Perkembangan Fortran :
Fortran Singkatan Dari FORmula TRANslator, yang merupakan bahasa tingkat tinggi dan ber-orientasi pada rumus-rumus (formula) atau ke permasalahan teknik.
Referensi pertama mengenai Fortran baru dikeluarkan dalam bentuk laporan tahun 1954 oleh Programming Research Group, suatu divisi teknik terapan dari IBM baru  pada  tahun  1957  diterapkan
pada komputer IBM 704.

Struktur Program Fortran :
Dibagi menjadi 5 bagian kolom dan  tiap  baris  di  dalam program dapat berisi :
1. Metacommand
2. Komentar
3. Statement
4. Sambungan dari statement baris sebelumnya.

Aturan Penulisan Fortran :
  1. Kolom pertama merupakan Komentar atau metacommand (C, *, $).
2. Kolom 1 sampai 5 untuk penulisan label statement berupa angka.
3. Kolom 6 untuk indikasi sambungan dari baris sebelumnya.
4. Kolom 7 sampai 72 untuk penulisan Statement FORTRAN.
5. Kolom 73 sampai 80 tidak digunakan (Untuk Komentar bebas).
             
Elemen Program Fortran :
  1. Metacommand atau compiler directive sifatnya optional.
  2. Komentar berupa tulisan bebas.
     3. Statement merupakan inti yang berupa instruksi-instruksi.

Suatu statement dapat dibentuk dari elemen-elemen :
1. Konstanta                5. Verb
2. Operator                  6. Unit Specifier
3. Ungkapan                7. Format Specifier
4. Nama

Konstanta :
Numerik yang terdiri dari :
Konstanta Integer (Numerik Bilangan Bulat) 2 byte berkisar  antara -32767 sampai 32767 dan yang 4 byte  berkisar  antara  -2147483647 sampai 2147483647. Kontanta Real ketepatan tunggal (Pecahan), mempunyai batasan : 8.43E-37   sampai dengan   3.37E+38    Positif -3.37E+38   sampai dengan  -8.43E-37    Negatif Konstanta Real Ketepatan ganda (Pecahan), mempunyai batasan : 4.19D-307  sampai dengan   1.67D+308   Positif   -1.67D+308  sampai   dengan    -4.19D-307   Negatif Konstanta Karakter (String) yang ditulis dalam tanda Petik. Konstanta Logika (Nilai Logika) .TRUE. .FALSE.

Operator :
Aritmatika  :  **  Pangkat                             level 1
                            * Kali                                  level 2
                           / Bagi                                    level 2
                           + Penjumlahan                     level 3
                       - Pengurangan              level 3
             
Hubungan   :  
                          .LT.   Lebih Kecil dari
                          .LE.   Lebih kecil sama dengan dari
                          .EQ.   Sama dengan
                          .NE.   Tidak sama dengan
                          .GT.    Lebih besar dari
                          .GE.    Lebih besar sama dengan dari
Logika  :
            .NOT.    Tidak atau Bukan
                                    .AND.    Dan
                                    .OR.       Atau

Ungkapan   :
            Ungkapan Aritmatika dengan operasi didalam tanda kurung didahulukan, kemudian pangkat, kali, bagi, jumlah, kurang. Ungkapan Karakter tidak boleh menggunakan operator aritmatik, tapi dapat berbentuk konstanta karakter atau nama variabel. Ungkapan hubungan adalah membandingkan niali dari dua numeric atau karakter.

Nama : dapat berupa variabel, larik(array), fungsi, atau rutin.
Dengan ketentuan sebagai berikut :
  1. Maksimum panjangnya 1320 karakter tapi hanya 6 karakter pertama yang dibaca.
  2. Karakter pertama harus berupa huruf.
     3. Tidak boleh ada spasi atau blank.
  1. Tidak boleh mengandung karakter khusus.

Nama Variabel ada 5 tipe :
1.       Variabel Integer untuk menyimpan nilai numerik bulat. Bila tidak    didefinisikan, maka harus ditunjukkan oleh nama variable yang diawali dengan huruf I, J, K, L, M atau N besarnya memori  2 byte atau 4 byte default-nya 4 byte.
2.       Variabel Real ketepatan Tunggal menyimpan nilai pecahan 4 byte. Bila tidak didefinisikan maka harus diawali huruf I,J,K,L,M,N.
3.       Variabel real ketepatan Ganda menyimpan pecahan 8 byte. Harus diawali dengan huruf selain I,J,K,L,M,N.
4.       Variabel Karakter menyimpan variabel karakter 4 byte. Kalau tidak didefinisikan dapat menampung 4 karakter.  Diawali huruf apa saja boleh juga I,J,K,L,M,N.
5.       Variabel Logika menyimpan nilai logika .TRUE. .FALSE. Diawali dengan huruf apa saja boleh juga I, J, K, L, M, N.

Nama Larik ( Array ) :
Digunakan untuk menyimpan beberapa nilai dalam satu nama larik. Pada Fortran dapat berdimensi satu, dua, tiga sampai tujuh. Bila tidak didefinisikan maka harus diawali dengan huruf I, J, K, L, M, N.

Nama Fungsi :
Digunakan   untuk  mendapatkan suatu nilai dari fungsi tersebut.   Dengan  fungsi,  nilai  data dapat dikirimkan ke fungsi dan fungsi akan memberikan hasil yang diminta.  Dalam Fortran digolongkan  menjadi 3 macam,   yaitu :
1.       Fungsi Eksternal yang dibuat sendiri oleh pembuat program  dalam bentuk unit program yang terpisah tetapi masih dalam satu program.
2.       Fungsi Statement dedefinisikan tidak dalam bentuk unit program yang terpisah, tetapi dalam statement tunggal.
3.       Fungsi Hakiki atau Fungsi pustaka yang sudah disediakan  oleh fortran.

Verb  adalah  kata  kerja perintah yang terdapat dalam statement. Hampir semua statement Fortran mempunyai verb, kecuali assignment statement. Contoh WRITE, CALL

Unit Specifier dapat berupa :
1.       * atau 0 menunjukkan unit alat untuk Keyboard atau layar.
2.       Ungkapan Integer, yaitu nilai integer selain nilai 0 menunjukkan unit alat yang dipergunakan adalah file eksternal (printer atau file disk).  Statement OPEN menunjukkan nama dari filenya. Nama file sebagai berikut :
                - LPT1: atau PRN (printer yang pertama).
                - CON: menunjukkan alat Console.
                - LPT2: (Printer kedua).
                - COM: atau COM1: atau COM2 untuk Port Komunikasi.
                - Nama file di Disk.
                  contoh : OPEN(1,File='LPT1:')

Format Specifier :
             Digunakan untuk menunjukkan format yang akan dipergunakan oleh data input ataupun output.
Statement :
1.       Statement yang terolah (Executable Statement) yaitu : statement yang menyebabkan suatu operasi dilakukan. Contoh : ASSIGN, CALL, CONTINUE, DO, ELSE, ELSEIF, AND, ENDIF, GOTO, IF, PAUSE, RETURN, STOP, BACKSPACE, CLOSE, ENDFILE, OPEN, READ, REWIND dan WRITE.
2.       Statement tak terolah (Non-Executable Statement) yaitu : statement yang tidak melakukan operasi. Contoh : FORMAT, DATA, PARAMETER, COMMON, DIMENSION, QUIVALENCE, EXTERNAL, IMPLICIT, INTRINSIC, SAVE dan TYPE , PROGRAM, FUNCTION SUBROUTINE.

STATEMEN FORMAT
Bentuk umum:
                     <label statement> FORMAT <format-spec>
Kegunaan:
             Statement FORMAT digunakan untuk mengedit  data  pada  alat-alat I/O,yaitu mengatur letak, tipe dan panjang dari data yang akan dimasukkan lewat alat input atau yang akan ditampilkan ke alat output.

Penjelasan:
  • <label statement>        menunjukkan label dari statement FORMAT yang akan digunakan oleh statement READ atau statement WRITE.
  • <format-spec>             adalah format specification, merupakan bentuk yang menyediakan informasi terhadap letak, tipe dan  panjang  dari
data.  Format  specification ini harus ditulis dalam tanda kurung.  Isi dari  format specification ini yaitu edit descriptor.

Statement FORMAT bebas diletakkan dimana saja didalam program, tetapi yang baik adalah  bila ada  beberapa statement FORMAT,  dapat anda  kumpulkan  sementara menjadi satu dan diletakkan diujung bawah atau ujung atas program, sehingga mudah mencarinya.
Edit descriptor menunjukkan informasi mengenai letak tipe dan panjang dari masing-masing data  yang  akan dimasukkan lewat alat input atau yang akan  ditampilkan di alat output.

CARRIAGE CONTROL

Karakter pertama dari setiap data yang ditampilkan di layar maupun diprinter tidak turun ditampilkan atau dicetak. Bila karakter carriage control berupa karakter:
§  Blank atau spasi, mempunyai efek ganti baris baru,tetapi tidak memberikan spasi.
§  0, berarti memberi spasi satu baris dari baris sebelumnya.
§  1, berarti akan mencetak  di halaman  baru ( tidak berlaku di layar, hanya di printer).
§  +, berarti tidak ganti baris, tetapi  overprinting (menumpangi  penampilan  sebelumnya di baris yang sama).

    FORMAT SPECIFICATION BERULANG
      Selain repeatable edit descriptor dapat  diulang  dengan  sejumlah perulangan tertentu,  format specification  juga  dapat  di ulang,  dengan bentuk umum:
                     <r> <format specification>
   Penjelasan:
    <r> merupakan jumlah pengulangannya.
    Maksimum  jumlah  pengulangan  untuk  format  specification adalah 3
    Level.   
1.       Level pertama pada format specification adalah :
2('BASIC') Yang sama dengan: 'BASIC BASIC'
2.       Level kedua pada format specification adalah:
3.       2('COBOL',2('BASIC') Yang sama dengan:2('COBOL BASIC BASIC')
4.       atau 'COBOL BASIC BASIC COBOL BASIC BASIC'
5.       Level ketiga pada format specification adalah:
5(3X,'FORTRAN',2X,2('COBOL',2('BASIC')),/) Yang sama dengan :                          5(3X,'FORTRAN',2X,'COBOL BASIC BASIC COBOl BASIC    BASIC',/) atau : 5('FORTRAN COBOL BASIC BASIC COBOL BASIC
BASIC',/) Sehingga bila program ini dijalankan,akan didapat  hasil sbb:
                     FORTRAN COBOL BASIC BASIC COBOL BASIC BASIC
                     FORTRAN COBOL BASIC BASIC COBOL BASIC BASIC
                     FORTRAN COBOL BASIC BASIC COBOL BASIC BASIC
                     FORTRAN COBOL BASIC BASIC COBOL BASIC BASIC
                     FORTRAN COBOL BASIC BASIC COBOL BASIC BASIC
      
STATEMENT DATA DAN STATEMENT PARAMETER
Untuk memasukkan suatu data ke suatu variabel atau larik atau elemen dari suatu larik dapat dilakukan  dengan beberapa cara, yaitu:

1. Dengan statement pengerjaan
           Contoh A = 5.25
Maka variabel A akan berisi nilai 5.25.
           Contoh :
                A(1) = 7.15
                A(2) = 8.00
                A(3) = 5.55
Maka  larik  A  untuk elemen pertama berisi nilai 7.15, elemen kedua berisi nilai 8.00 dan elemen ketiga berisi nilai 5.55.

2. Dengan statement READ
Contoh:
             READ (*,10)
             10 FORMAT (F5.2)

3. Dengan statement DATA.
Bila data yang akan dimasukkan ke suatu  variabel  atau larik jumlahnya   cukup banyak dan sifatnya konstan, maka akan lebih baik bila digunakan statement DATA.

4. Dengan statement PARAMETER.
Banyak digunakan untuk  memasukkan  data  konstan  yang tidak begitu         banyak.

  STATEMENT DATA
 Bentuk umum:
        DATA<nlist>/<clist>/[[,]<nlist>/<clist>/]...
 Penjelasan:
§  Statement DATA merupakan  nonexecutable  statemen dan harus  diletakkan setelah statement spesifikasi bila statement spesifikasi digunakan.
§  <nlist>  merupakan  satu  atau  kumpulan dari nama variabel, larik atau elemen larik.
§  <clist> merupakan satu atau  kumpulan  dari  konstanta Jumlah konstanta untuk  masing-masing  <clist>  harus sama dengan  jumlah  dari nama variabel atau elemen larik untuk masing-masing <nlist>.

MEMASUKKAN DATA KE VARIABEL

                Data yang berbentuk konstanta yang akan dimasukkan ke suatu variabel  harus  mempunyai tipe yang  sama dengan variabelnya.   Konstanta  numerik  harus  dengan  variable numerik,konstanta karakter harus dengan variabel karakter, konstanta logika harus dengan variabel logika. Ada beberapa cara  untuk  memasukkan data  ke variabel dengan statement DATA, sebagai berikut ini.
  1. Satu nama variabel dihubungkan dengan satu konstanta
    2.   Kumpulan variabel dihubungkan dengan kumpulan konstanta
    3.   Sejumlah variabel dihubungkan  dengan  sebuah konstanta  dengan
            factor Pengulang.

MEMASUKKAN DATA KE LARIK

             Seperti  halnya  data yang dimasukkan ke variabel, nilai data konstanta harus mempunyai tipe yang sama dengan lariknya  dan  nama  larik  harus  sudah disebutkan dengan statement DIMENSION atau dengan statement type. Caranya:
1.         Satu elemen larik dihubungkan dengan satu konstanta
2.         Kumpulan  elemen  larik  dihubungkan  dengan   kumpulan konstanta
3.         Satu nama larik dihubungkan dengan kumpulan konstanta (DIMENSION, IMPLICIT DAN TYPE)

STATEMENT DIMENSION

Bentuk umum:

DIMENSION<array>)[,<array>(<dim>]...

Kegunaan:
Mendefinisikan  bahwa  suatu  nama  yang  dibentuk oleh pembuat program merupakan suatu larik  serta  sekaligus menentukan jumlah dari elemen-elemennya.
Penjelasan:
<array>  adalah nama dari suatu larik yang didefinisikan
<dim>    adalah deklarasi dimensi yang menunjukan jumlah elemen dari larik Suatu larik maksimum dapat berdimensi sampai 7 buah dimensi & ukuran  maksimum seluruh larik adalah 64 K atau 65536 byte. Kesalahan yang dideteksi oleh compiler menunjukan bahwa ukuran larik melebihi batas 64 kilo byte. Deklarasi dimensi dari suatu larik yang menunjukan jumlah  elemen  dari  larik juga merupakan batas atas dari suatu dimensi dengan batas bawahnya adalah nol.

Suatu deklarasi dimensi dapat berupa:
1. Suatu konstanta integer positif tidak bertanda. Bila deklarasi dimensi berupa nilai integer positif, maka larik yang bersangkutan mempunyai elemen dengan batas atas yang sudah pasti,  yang  ditunjukkan oleh deklarasi dimensi tersebut.
2. Suatu argument numerik integer. Bila suatu deklarasi dimensi berupa argument numeric integer,maka jumlah elemen dari larik tersebut tidak pasti,tergantung dari nilai argument numerik integer bersangkutan. Untuk kasus semacam ini, larik disebut dengan  istilah  larik  yang ukurannya dapat berubah (adjustable size array). Adjustable size array ini hanya dapat digunakan pada subroutine.
          
3. Suatu asterik (*)
Jika deklarasi dimensi adalah asterik (*),maka lariknya disebut dengan assumed-sizedarray  (larik dengan ukuran asumsi), yang berarti batas atas  dari elemen larik tidak ditentukan, tetapi diasumsikan. Assumed sized array juga digunakan di subroutine.

STATEMENT INPUT/OUTPUT

  1. READ
Dipergunakan untuk membaca data dari suatu media input.
BU:
      READ(I, L) var1, var2,…
Dengan:
      I  : Nomor alat input, yaitu nomor yang menyatakan suatu alat input, misal: keyboard, disk dll.
      L  : label FORMAT
Var1, var2  : Nama varabel yang datanay dibaca.
Contoh
      READ (*,11)A,B,I
11    FORMAT (2F10.2,I5)

Keterangan:
Harga-harga A, B , I dibaca memlalui alat input yang bertanda * (standar input) biasanya keyboard, dengan tata letaknya sesuai  FORMAT yang berlabel 11 yaitu:
A dengan FORMAT F10.2
B dengan FORNAT  F10.2
I dengan FORMAT I5

  1. WRITE
Dipergunakan untuk menuliskan isi suatu variabel pada suatu media output.
BU:
      WRITE(I,L) var1, var2 …
Dengan:
I : Nomor alat output, yaitu nomor yang menyatakan suatu alat output, misal monitor, printer,disk
      L : Label FORMAT
Var1, var2 : Nama variabel yang datany dituliskan.

Contoh:
      WRITE (*,10) A,B,C
10    FORMAT(3F20.8)

Keterangan:
      Harga-harga A,B,C dituliskan pada alat aoutput yang bertanda * ( standar output) biasnya monitor (console). Dengan tata letaknya sesuai FORMAT.

  1. FORMAT
Dipergunakan untuk menentukan tata letak suatu data masukan pada media input maupun data keluaran pada media output. Ada tiga jenis format untuk menyatakan data numeris yatiu: tipe I, tipe F dan tipe E.

  1. Format Tipe  I
Tipe I dipakai untuk membaca atau menuliskan data INTEGER.
BU :    nIw
Keterangan:
            n = Cacah format I
            w = Banyak kolom yang dipakai oleh data.
Contoh:
            READ(*,100) IDATA, IHASIL
100            FORMAT(I5,I5)
Atau
100            FORMAT(2I5)

  1. Format Tipe F
Tipe F dipakai untuk membaa atau menuliskan data-data REAL.
BU:     nFw.d
Keterangan:
            n = cacah format F
            w = banyak kolom yang dipakai oleh data
            d = cacah digit di belakang titik desimal.

Contoh:
            READ(*,100) X1, X2
100            FORMAT(F4.2,F4.2)
Atau
100            FORMAT(2F4.2)
  1. Format Tipe E
Tipe E dipakai untuk membaca atau menuliskan data-data REAL dengan cara EXPONENT.
BU:     nEw.d
Keterangan:
            n = cacah format E
            w = banyak kolom yang dipakai oleh data
            d = cacah digit di belakang titik desimal.
      Contoh:
            READ(*,100) X1, X2
100FORMAT(E4.2,E4.2)
Atau
100FORMAT(2E4.2)

  1. Format Tipe X
Tipe X ini bukan untuk membaca atau menulis, melainkan hanya untuk memberitahu banyak ruang kosong (spasi) antar data-data yang dibaca atau ditulis.
BU: nX                       dengan n: jumlah ruang kosong.
Contoh:
            READ(*,100) PDAT,NILAI
100            FORMAT(F5.1,3X,I5)

  1. Format Literal
Untuk menuliskan data literal langsung dari program ke media output.
BU: ‘ xxxxxxxxxx’
Contoh:
            WRITE(*,100)
FORMAT(‘BELAJAR BAHASA FORTRAN’)

STATEMEN CONTROL


1.      STATEMEN GO TO
Ada dua bentuk untuk statemen ini, yaitu:
-       GO TO statemen tanpa syarat dan
-       GO TO statemen dengan hitungan

  1. GO TO tanpa syarat
Berfungsi memerintahkan proses untuk meloncat langsung ke statemen dengan label yang ditunjuk.
Contoh:

100READ(*,10) A,B
C=A*B
-
GO TO 100
-
STOP
END
           
  1. GO TO dengan hitungan
Statemen ini memberi perintah agar program loncat ke statemen dengan label nk apabila harga var= k. Aturan-aturan untuk GO TO statemen dengan hitungan:
-       n1,n2,..,nm dapat tidak urut dan dapat sama.
-       Harga var harus lebih kecil atau sama dengan m dan var 0.
-       Harga var harus telah ditentukan sebelum program tiba pada statemen ini.
-       Steiap nomor statemen yang ada dalam program dapat dipergunakan dalam GO TO statemen dengan hitungan. Kecuali nomor statemen untuk FORMAT.

Contoh:
                  READ(*,10)N
GO TO (100,200,300)N
100X=P*A
200X=P*B
300            X=p*D
                  STOP
                  END

2.      STATEMEN IF
Statemen IF ada 2 jenis:
-       Statemen IF hitungan
-       Statemen IF nalar.

  1. Statemen IF hitungan adalah untuk mengecek isi suatu variabel atau hasil suatu pernyataan hitungan, yaitu apakah negatif, nol atau positif. Dan berdasarkan hasil cek yang diperoleh, program diperintahkan loncat ke nomor statemen: n1, atau n2 atau n3.

BU : IF (pr) n1,n2,n3
Dimana:
pr : Pernyataan hitungan atau suatu variabel, boleh REAL atau INTEGER;
n1,n2,n3 : Nomor-nomor statemen yang akan dituju untuk digarap instruksinya.

Penjelasan:
-       Kalau harga variabel, atau hasil pernyataan hitungan < 0 (negatif), program loncat ke n1. Hitungan = 0 (nol) program loncat ke n2 dan kalau hitungan > 0 (positif) program loncat ke n3.
-       N1,n2,n3 dapat dua buiah sama, tetapi tidak dapat semua sama.
-       Hirarki dan peraturan-peraturan lain berlaku juga pada ekspresi pr di dalam statemen IF.
Contoh:
                  READ(*,10) A,B,C
                  IF(B**2-4*C)100,200,300

100WRITE(*,110)
110FORMAT(‘AKAR IMAJINER’)
200            X=-B/(2.*A)
300            X1=(-B+SQRT(b**2-4*A*C))/(2.*A)
                  STOP
                  END
  1. Statemen IF Nalar untuk membandingkan dua (atau lebih) variabel secara nalar, kalau perbandingan nalar memberikan hasil “ya”, maka statemen I digarap, apabila tidak dipenuhi maka program terus menggarap statemen di bawahnya.

BU: IF (ekspresi nalar) statemen)

Operator nalar yang dipakai:
.EQ.                 sama dengan
.NE.                 tidak sama dengan
.LT.                 lebih kecil dari
.LE.                 lebih kecil atau sama dengan
.GT.                 lebih besar
.GE.                 lebih besar atau sama dengan
.OR.                atau
.AND.             dan
.NOT.              bukan

Contoh:

            IF(A .LE. 10.0 .AND. A .GT. 5.0) GO TO 150
            WRITE(*,100)
100            FORMAT(1X,’TIDAK LULUS’)
STOP
150            WRITE(*,200)
200            FORMAT(1X,’LULUS’)
STOP
END

3.      STATEMEN DO
Berfungsi untuk memerintahkan komputer agar menjalankan suatu deretan, berulang-ulang dengan cara tertentu.

BU : DO n var=m1,m2,m3

n    : Nomor statemen dari suatu statemen yang merupakan batas akhir dari deretan yang harus diproses berulang-ulang.
Var            :  Variabel integer/real yang harganya akan berubah-ubah dari suatu harga awal m1 ke harga akhir m2 dengan besar langkah m3.

Pada FORTRAN IV kalang DO tidak dapat diakhir dengan kontrol statemen, untuk mengatasi ini dapat dipakai statemen CONTINUE. Sednag pada FORTARN 77 dijinkan.

Contoh:
      DO 100 I =1,25
      X=I**3
      WRITE(*,10)X
100IF (X .GT. 1000.0) GO TO 200
200CONTINUE
STOP
END

SUBPROGRAM
Subprogram ada 2 macam:
-       subprogram FUNCTION
-       subprogram SUBROUTINE
1.      Subprogram FUNCTION
BU:           FUNCTION nf(arg1,arg2…argm)
Sifat-sifat FUNCTION :
-       bersifat otonom, sehingga nama-nama variabel di dalam subprogram boleh sama dengan nama-anam variabel di dalam program pemanggil dengan tidak terjadi kesalahan.
-       Dipanggil langsung dengan namanya.
-       Argumen-argumen hanya merupakan input, output keluar melalaui nama subprogram FUNCTION.
-       Boleh mempunyai lebih sari satu statemen RETURN, maupun juga statemen STOP.
-       Argumen dapat berupa konstanta maupun variabel, real atau integer.

Contoh:
            READ(*,10) A,B
            C= TAMBAH(A,B)
            WRITE(*,10)C
10                FORMAT(F8.2)
STOP
END
FUNCTION TAMBAH(X,Y)
TAMBAH=X+Y
RETURN
END

2.      Subprogram SUBROUTINE
BU: SUBROUTINE ns(arg1, arg2…argm)
Sifat-sifat SUBROUTINE:
Hampir sama dengan FUNCTION, hanya berbeda pada pemanggilannya yaitu dengan cara : CALL nama subroutine. Dan SUBROUTINE tidak dapat mengembalikan nilai sebagaimana dengan FUNCTION .

Contoh:
            READ(*,10) A,B
            TAMBAH(A,B)
STOP
END
SUBROUTINE TAMBAH(X,Y)
            Z= X+Y
            WRITE(*,100)Z
100       FORMAT(F8.2)
RETURN
END

Virtual Lab PTA 2008 – 2009
Matematika Lanjut 2

  1. Jelaskan Struktur Program Fortran dan Aturan penulisan dalam Fortran !
  2. Apa perbedaan Statement Stop dan End!
  3. Apa perbedaan Procedure dan Function!
  4. Buatlah program Fortran
    1. Program Menghitung Luas Trapesium
    2. Program Perkalian Matriks
  5. Apa hasil (output) dari program berikut ini!
A. PROGRAM 1, Bila banyaknya deret 5
                 INTEGER A,B,C
                 WRITE (*,'(24(/))')
                 WRITE (*,'(A,\)') 'Masukkan Banyak Deret = '
                 READ (*,'(I2)') N
                 A=N
                 B=1
                 DO 10 I=1,N
                 DO 20 J=1,A
                 WRITE (*,'(A,\)') ' '
 20            CONTINUE
                 WRITE (*,'(I1,\,A,I1)') A,' ',A
                 DO 30 J=1,B
                 WRITE (*,'(A,\)') ' '
  30           CONTINUE
                 WRITE (*,'(I1,\,A,I1)') A,' ',A
                 WRITE (*,*)
                 A=A-1
                 B=B+2
   10          CONTINUE
                 STOP
   END 

A.    Program 2 Bila banyaknya deret 5
   INTEGER A,B,C
    WRITE (*,'(24(/))')
    WRITE (*,'(A,\)')'Masukkan Banyaknya Deret = '
     READ (*,'(I2)') N
     A=N
     C=N-1
     B=1
     DO 10 I = 1,N
DO 20 J = 1,A
     WRITE (*,'(A,\)') ' ' 
20 CONTINUE
IF (A .EQ. N) THEN WRITE (*,'(I1)') A
     ELSE WRITE (*,'(I1,\)') A
     DO 30 K=1,B
     WRITE (*,'(A,\)') ' '
30 CONTINUE
     WRITE (*,'(I1)') A
     B=B+2
     ENDIF
     A=A-1
10  CONTINUE
     A=2
     B=B-4
     IF (N .NE. 1) THEN
         DO 40 I=1,C
         DO 50 J=1,A
         WRITE (*,'(A,\)') ' '
   50  CONTINUE
         IF (C .EQ. 1) THEN
            WRITE (*,'(I1)') A
          ELSE
            WRITE (*,'(I1,\)') A
          DO 60 K=1,B
             WRITE (*,'(A,\)') ' '
   60    CONTINUE
           WRITE (*,'(I1)') A
             ENDIF
           A=A+1
           B=B-2
           C=C-1
   40   CONTINUE
          ENDIF      
          STOP
          END   

B.     Program 3 Bila banyaknya deret 5
      INTEGER A,B,C
      WRITE (*,'(24(/))')
      WRITE (*,'(A,\)') 'Masukkan Jumlah Deret = '
      READ (*,'(I2)') N
      A=N
      DO 10 I=1,N
      B=I
      DO 20 J=1,A
        WRITE (*,'(I2,\,A)') B,' '
        B=B+2
   20  CONTINUE
         WRITE(*,*)
         A=A-1
  10 CONTINUE  
      STOP
      END  

1 comment: