Anda di halaman 1dari 14

BASKOM-8 (YAKNI IDRIS) 1

Subprogram
Program FORTRAN diorganisasikan secara
unit-unit program. Suatu program unit dapat
berupa suatu program utama, program bagian
yang berupa rutin bagian (subroutine) atau
suatu fungsi (function).
BASKOM-8 (YAKNI IDRIS) 2
Pernyataan FUNGSI

Bentuk umum:

namafungsi(arg1,arg2,arg3)=ekspresi

Kegunaan: untuk mendefinisikan suatu fungsi
dalam bentuk sebuah pernyataan tunggal.
namafungsi adalah nama fungsi yang didefinisikan
.
arg1,arg2,arg3 adalah data yang diberikan kepada
fungsi tersebut.
ekspresi adalah ungkapan fungsi yang
didefinisikan
Pernyataan fungsi harus diletakkan di awal
program sebelum suatu executable statement.
BASKOM-8 (YAKNI IDRIS) 3
Buatlah program untuk mengkonversi derajat dari
celcius ke fahreinheit dengan rumus:

fahrenheit = 1.8*celcius + 32
fahr(celc)=1.8*celc + 32.0
namafungsi(arg1,arg2,arg3)=ekspresi
Cara menulis fungsi:
BASKOM-8 (YAKNI IDRIS) 4
program fungsi1
fahr(celc)=1.8*celc + 32.0
write(*,*) '========================='
write(*,*) ' CELCIUS FAHREINHEIT '
write(*,*) '========================='
do celc=0,100,10
write(*,5) celc, fahr(celc)
end do
write(*,*) '========================='
5 format(1x,f7.2,5x,f7.2)
end
BASKOM-8 (YAKNI IDRIS) 5
FUNGSI EKSTERNAL

Bentuk umum:

jenis FUNCTION namafungsi(arg1,arg2,arg3)

Kegunaan: untuk mendefinisikan suatu unit
program sebagai suatu fungsi eksternal
jenis adalah tipe fungsi apakah integer, real atau
logiacal
namafungsi adalah nama fungsi yang didefinisikan .
arg1,arg2,arg3 adalah nama dari argumen dari fungsi
eksternal
BASKOM-8 (YAKNI IDRIS) 6
Buatlah program untuk mengkonversi derajat dari
celcius ke fahreinheit dengan rumus:

fahrenheit = 1.8*celcius + 32
FUNCTION fahr(c)
jenis FUNCTION namafungsi(arg1,arg2,arg3)
Cara menulis fungsi eksternal:
BASKOM-8 (YAKNI IDRIS) 7
Tulislah program yang digunakan untuk
konversi derajat dari celcius ke fahreinheit
dengan menggunakan fungsi eksternal.
program fungsi2
write(*,*) '========================='
write(*,*) ' CELCIUS FAHREINHEIT '
write(*,*) '========================='
do celc=0,100,10
write(*,5) celc, fahr(celc)
end do
write(*,*) '========================='
5 format(1x,f7.2,5x,f7.2)
end
c menulis fungsi eksternal
FUNCTION fahr(c)
fahr = 1.8*c+32.
end
BASKOM-8 (YAKNI IDRIS) 8
Fungsi bawaan (intrinsic function)

Fungsi bawaan adalah fungsi yang sudah
tersedia di dalam program FORTRAN, dan
tidak perlu didefinisikan lagi oleh pemrogram.
Tabel 7 mencantumkan fungsi intrinsik dari
FORTRAN standar 90.
BASKOM-8 (YAKNI IDRIS) 9
Fungsi Tipe argumen Arti fungsi
ABS(X) Semua jenis INTEGER, REAL dan COMPLEX Harga mutlak dari argumen
INT(X) Semua jenis INTEGER, REAL dan COMPLEX Bagian integer dari argumen
REAL(X) Semua jenis INTEGER, REAL dan COMPLEX Bagian real dari argumen
EXP(X) Semua jenis REAL dan COMPLEX e** dari argumen
LOG(X) Semua jenis REAL dan COMPLEX ln dari argumen
LOG10(X) Semua jenis REAL log dari argumen
MAX(X1,X2,) Semua jenis INTEGER dan REAL Harga terbesar dari daftar argumen
MIN(X1,X2,) Semua jenis INTEGER dan REAL Harga terkecil dari daftar argumen
MOD(X1,X2) Semua jenis INTEGER dan REAL Sisa dari pembagian (X1/X2)
SQRT(X) Semua jenis REAL dan COMPLEX Akar dari X
SIN(X) Semua jenis REAL dan COMPLEX Sinus dari argumennya
COS(X) Semua jenis REAL dan COMPLEX Cosinus dari argumennya
TAN(X) Semua jenis REAL dan COMPLEX tangen dari argumennya
ASIN(X) Semua jenis REAL Arc sinus dari argumennya
ACOS(X) Semua jenis REAL Arc cosinus dari argumennya
ATAN(X) Semua jenis REAL Arc tangen dari argumennya
AINT(X) Semua jenis REAL Pemotongan argumennya
BASKOM-8 (YAKNI IDRIS) 10
Pernyataan SUBROUTINE

Bentuk umum:

SUBROUTINE nama-subroutine(arg1,arg2,arg3)

Kegunaan: untuk mendefinisikan bahwa suatu unit
program adalah suatu rutin bagian.
nama-subroutine adalah nama dari rutin bagian .
arg1,arg2,arg3 adalah nama dari argumen.

Pernyataan SUBROUTINE harus diakhiri dengan
RETURN atau END, dan dipergunakan oleh unit program
lain dengan pernyataan CALL
BASKOM-8 (YAKNI IDRIS) 11
PROGRAM ELIMINASI
C Program ini menyelesaikan pers. aljabar linier simultan dengan
C cara eliminasi Gauss sederhana. "Numerical Mathematics", oleh
C Ward Cheney & David Kincaid hal.208
c
DIMENSION A(10,10),B(10),X(10)
CHARACTER*72 FIN,FOUT,BARIS(10),TITEL
WRITE(*,90) 'NAMA FILE MASUKAN = '
READ(*,'(A)') FIN
WRITE(*,90) 'NAMA FILE KELUARAN = '
READ(*,'(A)') FOUT
OPEN(1,FILE=FIN,STATUS='UNKNOWN')
OPEN(2,FILE=FOUT,STATUS='UNKNOWN')
90 FORMAT(1X,A,\)
READ(1,'(A)') TITEL
WRITE(*,*) TITEL
READ(1,*) N
WRITE(*,*) ' N =',N
DO I=1,N
READ(1,'(A)') BARIS(I)
READ(1,*) (A(I,J),J=1,N)
READ(1,*) B(I)
END DO
100 FORMAT(1X,A,I2,A,I2,A,\)
105 FORMAT(1X,A,I2,A,\)

BASKOM-8 (YAKNI IDRIS) 12
WRITE(*,*)'MATRIK A(N,N) = '
DO I=1,N
WRITE(*,'(1X,A)') BARIS(I)
WRITE(*,110) (A(I,J),J=1,N)
END DO
110 FORMAT(10(1X,E11.4))
WRITE(*,*) 'MATRIK B(N) ='
DO I=1,N
WRITE(*,115) B(I)
END DO
115 FORMAT(1X,E11.4)
READ(*,*)
C memanggil subroutine untuk eliminasi
CALL NGAUSS(A,B,X,N)
C selesai menghitung
c mencetak hasil
WRITE(*,*) 'HASIL'
WRITE(2,*) 'HASIL :'
DO 7 I=1,N
WRITE(*,120) 'X',I,'= ',X(I)
WRITE(2,120) 'X',I,'= ',X(I)
7 CONTINUE
120 FORMAT(1X,A,I2,A,E11.4)
END
BASKOM-8 (YAKNI IDRIS) 13
c menulis subroutine untuk eliminasi
SUBROUTINE NGAUSS(A,B,X,N)
DIMENSION A(10,10),B(10),X(10)
DO K=1,N-1
DO I=K+1,N
XMULT=A(I,K)/A(K,K)
DO J=K+1,N
A(I,J)=A(I,J)-XMULT*A(K,J)
END DO
A(I,K)=XMULT
B(I)=B(I)-XMULT*B(K)
END DO
END DO
X(N)=B(N)/A(N,N)
DO I=N-1,1,-1
SUM=B(I)
DO J=I+1,N
SUM=SUM-A(I,J)*X(J)
END DO
X(I)=SUM/A(I,I)
END DO
END
BASKOM-8 (YAKNI IDRIS) 14
jumlah
persamaan (N)
3
pers. 1
0.3 0.52 1
-0.01
pers. 2
0.5 1 1.9
0.67
pers. 3
0.1 0.3 0.5
-0.44
Contoh isi dari file masukan untuk program eliminasi

Anda mungkin juga menyukai