Anda di halaman 1dari 14

MAKALAH KOMPUTASI NUMERIK TUGAS MODUL FORTRAN

Danar Aditya Siswosoebrotho 1206263401 Teknik Kimia

Kata Pengantar
Puji syukur kami panjatkan kepada Tuhan Yang Maha Esa atas berkat dan karuniaNya sehingga makalah komputasi numerik ini dapat terselesaikan pada waktunya . Makalah komputasi numeric ini dibuat sebagai salah satu tugas dari mata kuliah komputasi numeric yang merupakan tugas mandiri yang diberikan oleh dosen saya yaitu Pak Bismo. Makalah ini juga dibuat dengan harapan agar dapat mengetahui lebih dalam tentang fortran dan pengaplikasiannya. Penulis ingin mengucapkan rasa terima kasih kepada Bapak Bismo yang telah memberikan pengajaran dan bimbingannya sehingga penulisan makalah ini dapat berjalan dengan baik. Pada akhirnya penulis berharap bahwa pembaca dapat memberikan kritik dan sarannya atas makalah ini sehingga makalah ini dapat menjadi makalah yang lebih baik lagi.

Penulis

SOAL
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 a. Program Menghitung Luas Trapesium b. 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 B. 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 C. 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 JAWABAN 1. Struktur Program Fortran dan Aturan Penulisan dalam Fortran Struktur Program Fortran : Dibagi menjadi 5 bagian kolom dan tiap baris di dalam program dapat berisi : - Metacommand : Tidak harus ada dan hanya diperlukan bila ingin berkomunikasi dengan compiler - Komentar : Komentar bebas untuk keterangan program dan keterangan lainnya - Statement : Perintah-perintah program dalam bentuk syntax (atau tata bahasa dalam pemrograman) Element statement antara lain : konstanta, nama, operator, verb, ungkapan unit specifier, format specifier - 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)

2. Perbedaan Stop dengan End

1. Bentuk Umum STOP

STOP berfungsi menghentikan proses operasi pengerjaan program secara logika dan cirinya penulisannya bebas, yang merupakan indikator bahwa operasi program secara logika telah berakhir. Pada umumnya statement STOP selalu mengiringi statement END didalam penulisan bahasa pemrograman FORTRAN. 2.Bentuk Umum END

{statement} END Dapat berupa ENDCASE, ENDFOR, ENDIF, ENDWHILE [unit]a END digunakan untuk memberitahu komputer sebagai batas akhir dari statement program. Statement END harus diletakkan paling akhir di suatu program, tidak boleh diberi label statement dan harus berdiri sendiri tidak boleh digabung dengan statement lainnya 3. Perbedaan Procedure dan Function

a. Procedure (Prosedur)

Procedure adalah suatu bagian yang terpisah dari program dan dapat diaktifkan dimanapun didalam program. Procedure dibuat jika program akan dibagi menjadi beberapa blok modul. Procedure dibuat didalam program dengan cara mendeklarasikannya dibagian deklarasi procedure. Kata cadangan PROCEDURE digunakan sebagai judul dari bagian deklarasi procedure, diikuti oleh identifier yang merupakan nama procedurenya dan secara optional dapat diikuti lagi oleh kumpulan parameter yang diakhiri dengan titik koma. Bentuk Umum : Procedure ( statement 1) ( statement 2) ( statement 3) b. Function (Fungsi) Bersifat otonom, sehingga nama-nama variabel didalam subprogram boleh sama dengan nama-nama variabel didalam program pemanggil dengan tidak terjadi kesalahan, oleh karena memang pada prinsipnya terpisah. Boleh melakukan operasi READ atau WRITE, boleh memanggil subprogram yang lain. Dipanggil langsung dengan namanya. Argumen-argumen hanya merupakan input, output keluar melalui nama subprogram function. Sehingga akibatnya, input bisa banyak(sebab argumen-argumen bisa banyak), tetapi output selalu hanya satu yaitu melalui nama function. Boleh mempunyai lebih dari satu statement RETURN, maupun juga statement STOP. Hubungan antar argumen dalam program pemanggil dan program dipanggil adalah hubungan atas dasar posisi, bukan atas dasar nama variabel.

Argumen-argumen dapat berupa konstanta maupun variabel baik real ataupun integer. Memiliki bentuk umum : FUNCTION nf(arg1, arg2,argm) Keterangan :

nf : nama subprogram function, sekaligus sebagai nama variabel outputnya, apabila namanya real maka sifat functionya real, begitu pula jika integer Arg1,arg2,argm : argumen-argumen yang dikirim dari program pemanggil kesubprogram function. Argumen boleh berupa variabel ataupun konstanta, baik real maupun integer. 4. a. Program menghitung Luas Trapesium integer a,b,t

write(*,*)'Program ini berfungsi untuk mencari luas dari sebuah trapesium' write(*,*)'Masukkan nilai' write(*,'(A,$)')'a=' read(*,*)a write(*,'(A,$)')'b=' read(*,*)b write(*,'(A,$)')'t=' read(*,*)t

L= (a+b)*t/2 write(*,*)'Nilai a,b,t = ',L

STOP END

4.b. Program Menghitung Perkalian Matrix integer x(5,5),y(5,5),z(5,5),a,b,c,d,e,f,g,h,i,j 1 WRITE (*,(24(/))) write(*,(a))'Perkalian Matriks ordo 22 write(*,(a))' a=2 read(*,*) WRITE (*,(24(/))) write(*,(a))'Perkalian Matriks ordo 22 write(*,(a))' write(*,(a))'Menentukan nilai elemen matriks I write(*,(a))' DO 10 c=1,a DO 20 d=1,a write(*,(a,I1,a,I1,a,\))'nilai elemen [',c,'][',d,'] = read(*,(I2))x(c,d) 20 CONTINUE 10 CONTINUE WRITE (*,(24(/))) write(*,(a))'Perkalian Matriks ordo 22 write(*,(a))' write(*,(a))'Menentukan nilai elemen matriks II write(*,(a))' DO 30 g=1,a

DO 40 h=1,a write(*,(a,I1,a,I1,a,\))'nilai elemen [',g,'][',h,'] = read(*,(I2))y(g,h) 40 CONTINUE 30 CONTINUE WRITE (*,(24(/))) write(*,(a)) Perkalian Matriks ordo 22 write(*,(a)) write(*,(a)) Matriks I write(*,(a)) DO 50 c=1,a DO 60 d=1,a write(*,(I2,a,\))x(c,d), 60 CONTINUE write(*,*) 50 CONTINUE write(*,(a,/)) write(*,(a)) Matriks II write(*,(a)) - DO 70 g=1,a DO 80 h=1,a write(*,(I2,a,\))y(g,h), 80 CONTINUE write(*,*) 70 CONTINUE read(*,*) write(*,(a,/)) write(*,(a)) Hasil Perkaliannya write(*,(a)) DO 90 i=1,a DO 100 j=1,a

k=1 z(i,j)=(x(i,k)*y(k,j)) + (x(i,k+1)*y(k+1,j)) 100 CONTINUE 90 CONTINUE DO 110 i=1,a DO 120 j=1,a write(*,(I3,a,\))z(i,j), 120 CONTINUE write(*,*) 110 CONTINUE stop end 5. a. Masukkan Banyak Deret = 5 5555 4444 3333 2222 1111 Penyertaan Gambar :

5. b. Masukkan Banyaknya Deret = 5 5 44 33 22 11 22 33 44 5 Penyertaan gambar :

5. c. Masukkan Jumlah Deret = 5

1 2 3 4 5

3 4 5 6

5 6 7

7 8

Penyertaan Gambar :