3, 4, & 5
Dalam mata kuliah Dasar Komputer yang diberikan untuk para mahasiswa-
diperkenalkan.
FORTRAN 90 ISO/IEC 1539:1991 mengalami berbagai revisi untuk
menjadikan bahasa FORTRAN sebagai bahasa pemrograman komputer
yang modern.
FORTRAN 95 ISO/IEC 1539-1: 1997 merupakan perbaikan minor dari
versi FORTRAN 90.
FORTRAN 2003 ISO/IEC 1539-1:2004(E) mengalami beberapa
penambahan object-oriented support dan interoperabilitas dengan
bahasa C (sebagai natifnya).
pasaran, yang paling banyak adalah dalam dialek FORTRAN-77 dan FORTRAN-
digunakan
dalam
pemrograman-pemrograman
numerik
saintifik
(ilmiah),
khususnya untuk komputasi dalam bidang ilmu teknik. Bahan kuliah ini
dimaksudkan untuk menyajikan secara ringkas dan sederhana, khususnya untuk
memberikan
dasar
dan
pengertian
ringkas
tentang,
bahasa-bahasa
pemrogram
FORTRAN
(singkatan
dari
FORmula
3.
4.
5.
6.
TRANslation)
Gambar 1. Kompilator Compaq Visual Fortran yang sudah tidak diproduksi lagi.
Kuliah DASKOM. Dasar-Dasar Pemrograman dalam FORTRAN 77 dan Turbo PASCAL
kompilasi program dalam buku ini, piranti lunak Compaq Visual Fortran (CVF)
sebagai FPK PASCAL atau FPC) adalah piranti lunak keluarga piranti lunak
versi 6.5 masih tetap digunakan karena alasan-alasan kemudahan dan juga
kepraktisannya. Selain CVF tersebut, kompailer lain yang digunakan adalah versi
GNU Project (piranti lunak bebas alias open source, dapat juga dilihat situsnya:
2. Ciri-ciri Kompilator FORTRAN 77 dan Turbo PASCAL
pentingnya dalam penyajian mata kuliah Metode Numerik, yaitu bahasa PASCAL
yang digunakan dalam mata kuliah ini adalah berdasarkan varian atau dialek
yang dikembangkan oleh Philippe Kahn dari Borland Corporation pada tahun
(PC, personal computer), karena ukuran kompilatornya yang relatif sangat besar
1982, yaitu Turbo PASCAL atau kadang dikenal juga sebagai Borland PASCAL.
Ada beberapa versi Turbo PASCAL yang dapat berjalan dalam platform MS-DOS
(MicroSoft Disk Operating Sistem), yaitu versi-versi 1.0, 3.0, 4.0, 5.0, 5.5, 6.0
Secara umum pula, karena ukuran kompilatornya yang sangat besar (untuk
dan 7.0. Sedangkan versi yang dapat berjalan dalam platform MS-Windows ada
2, yaitu versi 1.0 dan 1.5. Semua versi dari Turbo pascal tersebut sudah lama tida
secara terpisah dengan editor teks, yaitu editor teks vi yang umum dipakai
diproduksi lagi. Konon kabarnya, sebagai kelanjutan dari Turbo Pascal tersebut,
pada sistem operasi UNIX (dan, sekarang telah dikembangkan pula untuk sistem
operasi LINUX). Penggunaan secara terpisah antara kompilator dan editor teks
Gambar 2. Kompilator Turbo Pascal yang juga sudah tak diproduksi lagi.
Setelah versi Turbo pascal tidak beredar lagi di pasaran, maka dewasa ini
telah dikembangkan suatu dialek bahasa PASCAL yang juga hampir identik
dengan Turbo PASCAL, namun dengan arsitektur 32/64-bit yang lebih maju, yaitu
Kuliah DASKOM. Dasar-Dasar Pemrograman dalam FORTRAN 77 dan Turbo PASCAL
Gambar 3. Fortran Coding Form (dari IBM) untuk penulisan program FORTRAN.
Mengacu pada Fortran Coding Form atau pun Fortran Punch Card seperti di
atas, maka cara penulisan program dalam bahasa FORTRAN 77 yang sederhana
dan ringkas dapat disebutkan beberapa di antaranya sebagai berikut:
1. Isi program ditulis secara baris-per-baris, dengan jumlah kolom setiap
Gambar 4. Fortran Punch Card dan contoh program dalam bahasa FORTRAN.
Subprogram
SUBROUTINE
digunakan
atau
dipanggil
berdasarkan
Sub-Program FUNCTION.
PARAMETER (PM = )
INTEGER
REAL
Program Utama
PASCAL juga memiliki struktur dan aturan yang baku, bahkan dapat dikatakan,
bahwa struktur bahasa PASCAL lebih tersusun secara sistematis dibandingkan
STOP (optional)
END
dalam hal fleksibilitas penulisan program Turbo PASCAL yang lebih luwes dan
sederhana bagi sebagian besar user.
SUBROUTINE Sub001(, )
RETURN
END
Jumlah kolom maksimum dari setiap baris program adalah 128 kolom
(bergantung pada editor teks yang dipergunakan), dan bila hal ini tidak
mencukupi maka dapat diteruskan ke baris di bawahnya tanpa
FUNCTION Fun001(, )
RETURN
END
Bila pada suatu baris terdapat karakter { (tanda kurung kurawal terbuka
ke kanan), hal ini berarti bahwa baris komentar (comment) dimulai
pada tanda tersebut dan diakhiri pada karakter } (tanda kurung kurawal
Suatu baris komentar dapat juga ditulis dengan cara lain, yaitu dalam
bentuk: (* ---- komentar --- *).
Type
Vektor = Array[1..10] of Real;
Var
B,V: Vektor;
I,J,K: Integer;
Sum: Real;
Procedure Proc01(, );
harus dinyatakan dalam format text file dan dalam ekstensi .pas.
Var , ;
Begin
End;
77, maka penulisan program pada Turbo PASCAL secara ringkas dapat
Function Func01(, );
Var , ;
Begin
End;
Program Utama;
Begin
dapat
juga
diisi
dengan
definisi
dan
atau
deklarasi
KONSTANTA dan atau VARIABEL yang baru, namun dalam hal ini
hanya berlaku lokal di dalam sub-program PROCEDURE tersebut,
End.
bahasa PASCAL pun memiliki aturan-aturan umum dari sistematika atau struktur
value),
Subprogram dalam PASCAL dapat bersifat recursif, yaitu subprogram yang dapat memanggil dirinya sendiri
Pernyataan Operasi
Sintaks Penulisan
FORTRAN 77
Turbo PASCAL
1.
.NOT.
not
2.
**
t.a.
Jika dalam cara penulisan program FORTRAN 77 lebih banyak hal-hal atau
3.
4.
cukup merepotkan dan rumit. Namun sebaliknya, jika contoh program yang
5.
t.a.
div
analogi seperti pada gambar 3.4 di atas dituliskan dalam Turbo PASCAL, maka
6.
t.a.
mod
7.
.AND.
and
8.
Operator gerbang or
.OR.
or
9.
t.a.
xor
10.
t.a.
shl
11.
t.a.
shr
Var
Val,X : Real; {atau dapat pula digunakan Extended}
Begin
Val := 10.0;
X := 0.0;
For I := 1 to 10 do
Begin
X := X*Sqr(I) + Val;
Val := Val I;
End;
Writeln(Val = ,Val:10:3);
End.
Gambar 7. Contoh program dalam Turbo PASCAL yang analogi dengan gambar 3.4.
12.
13.
14.
:=
15.
()
()
16.
()
[]
17.
.EQ.
18.
.NE.
19.
.GT.
>
20.
.LT.
<
Pernyataan Operasi
21.
Sintaks Penulisan
FORTRAN 77
Turbo PASCAL
PASCAL. Mungkin saja, bagi para programer pemula dalam mata kuliah Metode
.GE.
22.
.LE.
23.
t.a.
in []
baik dalam bahasa pemrograman FORTRAN 77 atau Turbo PASCAL atau pun
24.
if (be)
if (be) then ;
if (be) then
endif
if (be) then
begin
end;
if (be) then
else
endif
if (be) then
begin
end else
begin
end;
25.
26.
27.
28.
29.
30.
t.a.
do var = first,last
enddo
enddo
t.a.
enddo;
untuk
keduanya
sekaligus
juga
menyajikan
perbedaan-
case (be) of
aa: ;
bb: ;
: ;
end;
for v := a to b do
begin
for v := a downto b do
begin
end;
do while (be)
31.
dapat dilakukan oleh seorang programer. Salah satu deklarasi predifinisi yang
sering dipakai dalam FORTRAN adalah:
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
I M P L I C I T E
n o n e
end;
do var = first,last,-1
kedua-duanya.
repeat
until be;
while (be) do
begin
end;
Perlu diingat dengan baik oleh pembaca sekalian, bahwa programer harus
mengikuti tata-penulisan yang sudah terdefinisi dengan baik (bahkan cenderung
kaku !) dalam penulisan program FORTRAN (khususnya FORTRAN 66 dan 77).
Sebagai contoh, penulisan kata IMPLICITE harus berada dalam kolom-kolom
antara posisi ke-7 sampai ke-72, dan kemudian diikuti dengan penulisan kata
none yang dipisahkan dengan (minimal satu) spasi dengan kata sebelumnya.
Penulisan predefinisi dalam kata-kata IMPLICITE none seperti di atas,
berarti bahwa si pemrogram memerintahkan kepada compiler (yang bertugas
menyusun dan menterjemahkan sintaks bahasa FORTRAN ke dalam bahasa
mesin) untuk secara bebas menggunakan awalan dan abjad apapun dalam
penulisan program FORTRAN.
PARCAL sudah lebih jelas dan terukur, meskipun keduanya memiliki beberapa
perbedaan dalam pendefinisian struktur dan atau aturan yang baku.
Sebagai contoh, berikut ini diberikan cara penulisan definisi variabel-variabel
yang akan dipakai dalam badan program, baik yang berjenis REAL, INTEGER,
BOOLEAN (LOGICAL dalam FORTRAN), dan CHAR (CHARACTER dalam
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
COMPLEX.
Pemrogram FORTRAN:
R E A L
I N T E G E R
I , I T E R , J , K , N
L O G I C A L
F L A G , O K
C H A R A C T E R
X N E W , X O L D , Y 1 , Y 2 , Z
K E Y , P R E S S
Var
Xnew,Xold,Y1,Y2,Z : Real;
I,ITER,J,K,N : Integer;
Flag,OK = Boolean;
Key,Press = Char;
pemrograman Turbo PASCAL masih sangat banyak yang dapat (dan harus)
didefinisikan untuk penggunaan suatu pengenal (idendifier), baik jenisnya (type)
maupun variabelnya (var). Dalam hal ini, pemrograman menggunakan Turbo
PASCAL dipandang lebih luwes (flexible) dibandingkan dengan FORTRAN.
Catatan:
Perhatikan baik-baik penulisan kedua pemrograman di atas, khususnya untuk 3 hal: (a).
awalan kata Var, (b). posisi pengenal jenis variabel (REAL, INTEGER, dsb.), dan (c).
tanda baca ; (titik-koma).
Type
RVektor = Array[1..10] of Real;
Imatriks = Array[1..5,1..5] of Integer;
Warna = (Hijau,Kuning,Merah);
Pemrogram FORTRAN:
Pemrogram FORTRAN:
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
F U N C T I O N
I N T E G E R
R E A L
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
F A C T O R I A L ( N )
S U B R O U T I N E
F A C T O R I A L , N
R E A L
F A C T
X R , Y R
I N T E G E R
I , J
P R O C E E D
I N T E G E R
L O G I C A L
L O G I C A L
F L A G , O K
C H A R A C T E R
C H A R A C T E R
K E Y P R E S S E D
K E Y , P R E S S
P L O T ( X , Y )
R E T U R N
R E T U R N
E N D
E N D
(di awal) program. Yang dimaksud dengan pemasukan data adalah memberikan
atau mengumpankan satu atau beberapa nilai variabel ataupun konstanta yang
digunakan suatu program sedemikian rupa sehingga program tersebut dapat
dieksekusi atau berjalan sesuai dengan yang diinginkan.
diberikan di bawah ini. Pemasukan data melalui papan ketik merupakan hal yang
pertanyaan atau sesuatu yang bersifat INPUT, yang terbaca di layar monitor,
Pemrogram FORTRAN:
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
C
C
M A S U K A N
D A R I
- - - > T A N P A
K E Y B O A R D :
A T R I B U T :
Pemrogram FORTRAN:
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
M A S U K A N
B E R U P A
D A R I
F I L E
F I L E
A S C I I
D A T A ,
( T E X T ) :
R E A D ( * , * ) N , X
O P E N ( 8 , F I L E = I N P . D A T )
C
- - - > D E N G A N
A T R I B U T :
W R I T E ( * , * ) J M L
R E A D ( 8 , * ) N , X
I T E R :
R E A D ( * , * ) N
W R I T E ( * , * ) X - A W A L :
C L O S E ( 8 )
E N D
R E A D ( * , * ) X
Begin
Assign(FileData,INP.DAT);
Reset(FileData);
;
Read(FileData, N, X);
{ atau Readln(FileData, N, X); }
;
Close(FileData);
(* Dengan atribut: : *)
Write(Jml Iter : );
Readln(N);
Write(X-awal = );
Readln(X);
;
;
4.6. Pemasukan Data melalui File (Input Data File)
;
End.
Pemasukan data melalui file (umumnya sebagai file ASCII yang sering
disebut sebagai file TEXT) dilakukan sebagai alternatif dari pemasukan melalui
papan ketik, terutama untuk proses-proses data entry (input data) yang berulang
dan dalam jumlah yang besar sehingga memerlukan ketelitian dan kecermatan
yang baik.
Kuliah DASKOM. Dasar-Dasar Pemrograman dalam FORTRAN 77 dan Turbo PASCAL
Beberapa contoh tentang keluaran data melalui file diberikan di bawah ini.
Seperti juga telah dijelaskan pada paragraf 3.4.6. tentang pemasukan data dar
otamatis (by default) pada layar monitor. Kecuali jika programer menghendaki alat
file, maka pernyataan untuk keluarannya adalah hampir sama, hanya kecuali
Pemrogram FORTRAN:
Pemrogram FORTRAN:
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
C O N T O H
K E L U A R A N
K E
A T A U
K E L U A R A N
L A Y A R
O T O M A T I S
M O N I T O R
( S C R E E N ) :
W R I T E ( * , * ) X , Y
W R I T E ( 5 , * ) H A S I L :
P A D A
F I L E
F I L E
T E X T
A S C I I :
O P E N ( 9 , F I L E = O U T . D A T )
, Z R
W R I T E ( 9 , * ) X R ,Y R
E N D
C L O S E ( 9 )
E N D
5. Pernyataan Kondisional IF
Pernyataan kondisional IF merupakan piranti program yang digunakan untuk
menyatakan keadaan bersyarat, baik yang berbentuk tunggal maupun jamak.
ini hanya akan dibahas yang berhubungan dengan pencetakan ke printer secara
umum, terutama yang mengikuti format ASCII (terutama printer-printer dotmatrix, seperti: EPSON, SEIKO, HP, dan XEROX).
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
if ( x 0 ) then STOP
C O N T O H
P E N C E T A K A N
K E L U A R A N
P A D A
D A N
P R I N T E R :
O P E N ( 2 , F I L E = L P R : )
W R I T E ( 2 , * ) X R ,Y R
C L O S E ( 2 )
Pemrogram FORTRAN:
E N D
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
B E N T U K
( 2
C O N T O H
K O N D I S I O N A L
R E A L
D A L A M
T U N G G A L
F O R T R A N ) :
H , P , X
I N T E G E R
I T E R
I F
( X . L E . 0 . 0 )
I F
( I T E R . G T . 1 0 0 ) . A N D .
( P . G E . 0 )
S T 0 P
P = P + H * S Q R T
( P )
E N D
Pemrogram FORTRAN:
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
R E A L
H , P , X
I N T E G E R
I T E R
Var
H, p, x : Real;
Iter : Integer;
I F
( X . L E . 0 . 0 )
T H E N
S T 0 P
;
If (x <= 0.0) then halt;
{penggunaan HALT untuk pengganti STOP}
If (Iter > 100) and (p >= 0) then p := p +
h*sqrt(p);
;
E L S E
Z = Z + 0 . 0 1
E N D I F
I F
( P . G E . 0 )
End.
( I T E R . G T . 1 0 0 ) . A N D .
T H E N
P = P + H
* S Q R T ( P )
*
E L S E
P = P + H * S Q R T (P * * 3 )
E N D I F
if () and ( p 0 ) then p = p + h
p akan
dieksekusi jika kedua persyaratan ( iter > 100 ) dan ( p 0 ) dipenuhi, jika tidak
dapat dipenuhi (yaitu jika iter 100 atau p < 0 ) maka yang akan dipenuhi
adalah pernyataan p = p + h
E N D
p else p = p + h p 3
p3 .
;
Var
H, p, x : Real;
Iter : Integer;
;
If (x <= 0.0) then halt
else z := z + 0.01;
If (Iter > 100) and (p >= 0) then p := p +
h*sqrt(p)
else
P := p + h*sqrt(p*p*p);
;
End.
I N T E G E R
B E R A T , H A R G A , H A R G
A _ P E R _ K G
C H A R A C T E R
K L T A S
W R I T E ( * , * ) M A S U K K A N
Uses
CRT; {untuk MS-Windows, gunakan WinCRT)
Var
Berat, Harga, Harga_per_kg: Integer;
Kualitas : Char;
Begin
ClrScr;
Write(Masukkan Kualitas Barang (A/B/C/D): );
Readln(Kualitas);
Write(Berat barang yang dibeli: );
Readln(Berat);
Case Kualitas of
A,a: Harga_per_kg := 1000;
B,b: Harga_per_kg := 750;
C,c: Harga_per_kg := 500;
D,d: Harga_per_kg := 250
Else
Begin
Harga_per_kg := 0;
Writeln(Salah memasukkan kategori..!)
End
End;
Harga := Harga_per_kg*Berat;
Writeln(Harga per kg: Rp. , Harga_per_kg);
Writeln(Harga Total: Rp. , Harga);
End.
* I T A S
B A R A N G
K U A L
( A / B / C / D ) :
R E A D ( * , * ) K L T A S
W R I T E ( * , * ) B E R A T
*
Y A N G
D I B E L I :
B A R A N G
R E A D ( * , * ) B E R A T
I F ( K L T A S . E Q . A ) . O R . ( K U A
* L I T A S . E Q . a )
T H E N
H A R G A _ P E R _ K G = 1 0 0 0
E L S E
I F ( K L T A S . E Q . B ) . O R
* . ( K U A L I T A S . E Q . b ) T H E N
H A R G A _ P E R _ K G = 7 5 0
E L S E
*
I F ( K L T A S . E Q . C ) . O R
. ( K U A L I T A S . E Q . c ) T H E N
H A R G A _ P E R _ K G = 5 0 0
E L S E
I F ( K L T A S . E Q . D ) .
* O R . ( K U A L I T A S . E Q . d ) T H E N
H A R G A _ P E R _ K G = 2 5 0
E L S E
H A R G A _ P E R _ K G = 0
W R I T E ( * , * ) S A L A H
E N D I F
H A R G A = H A R G A _ P E R _ K G * B E R A T
W R I T E ( * , * ) H a r g a
*
R p .
W R I T E ( * , * ) H a r g a
R p .
p e r
k g :
, H A R G A _ P E R _ K G
T o t a l
, H A R G A
E N D
aritmatika.
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
Pemrogram FORTRAN:
C
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
C O N T O H
P R O G R A M
D O
I T E R A S I
P R O G R A M
W H I L E D O :
I = 0
D O
C O N T O H
D O
W H I L E ( I . L T . 1 0 0 )
I = 1 , N E Q
I = I + 1
D O
J = 1 , N E Q
R E A D ( * , * ) B ( I )
A ( I , J ) = 0 . 0
Q ( I ) = I * I - S Q R T ( I )
E N D
D O
E N D
B ( I ) = 0 . 0
E N D
D O
D O
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
C O N T O H
R E P E A T U N T I L
C A T A T A N :
J A N G A N
D E K L A R A S I
D I G U N A K A N !
E K I V A L E N
I = 1 0 0
D O
P R O G R A M
D A L A M
L U P A
F O R T R A N
U N T U K
V A R I A B E L
M E N Y A N G
W H I L E ( I . G E . 1 )
B ( I ) = I * I - 5 . 0
W R I T E ( * , * ) B ( , I ,
) = , B ( I )
Z ( I ) = I * I - B ( I ) * I / 2 . 0
B ( I ) = B ( I ) + B ( I ) * Z ( I )
- I * I / 3 . 0
W R I T E ( * , * ) B ( , I ,
) = , B ( I )
W R I T E ( * , * ) Z ( , I ,
) = , Z ( I )
*
I = I - 1
E N D
D O
dijumpai dalam bahasa pemrogram FORTRAN secara umum, maka kita perlu
atas adalah salah satunya. Namun, dalam hal ini pembaca perlu juga memikirkan