Ringkasan Pemrograman Pascaldan Fortran
Ringkasan Pemrograman Pascaldan Fortran
4-7
utama yang diberikan untuk para mahasiswa peserta kuliah, adalah bahasabahasa pemrograman yang dapat digunakan untuk implemetasi pemrograman
pasaran, yang paling banyak adalah dalam dialek FORTRAN-77 dan FORTRAN-
bidang teknik. Bab 3 ini menyajikan secara ringkas dan sederhana, khususnya
untuk memberikan dasar dan pengertian ringkas tentang, bahasa-bahasa
memprograman tersebut kepada para pembaca sekalian.
3.1. Sekilas Tentang Bahasa FORTRAN dan PASCAL
Bahasa FORTRAN yang dipakai, pada dasarnya adalah yang mengikuti
standar FORTRAN 77. Namun demikian, para mahasiswa sangat diharapkan
untuk mau mempelajari dan atau memperdalam varian dialek lainnya, seperti
FORTRAN 90 dan FORTRAN 95. Seperti telah sedikit disinggung pada Bab 1,
bahasa
pemrogram
FORTRAN
(singkatan
dari
FORmula
TRANslation)
# 20
Gambar 3.1. Kompilator Compaq Visual Fortran yang sudah tidak diproduksi lagi.
# 21
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:
3.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 3.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 4-7. Dasar-Dasar Pemrograman dalam FORTRAN 77 dan Turbo PASCAL
# 22
# 23
Gambar 3.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 3.4. Fortran Punch Card dan contoh program dalam bahasa FORTRAN.
Perekaman berkas (file saving) harus dalam format text file (ASCII atau
ASCII unicode),
# 24
Ekstensi berkas hasil perekaman harus dalam bentuk .for atau .f,
Kuliah 4-7. Dasar-Dasar Pemrograman dalam FORTRAN 77 dan Turbo PASCAL
# 25
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,
STOP (optional)
END
dalam hal fleksibilitas penulisan program Turbo PASCAL yang lebih luwes dan
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
FUNCTION Fun001(, )
RETURN
END
Gambar 3.5. Blok struktur dan sintaks program dalam bahasa FORTRAN.
# 26
Bila pada suatu baris terdapat karakter { (tanda kurung kurawal terbuka
# 27
pada tanda tersebut dan diakhiri pada karakter } (tanda kurung kurawal
Suatu baris komentar dapat juga ditulis dengan cara lain, yaitu dalam
harus ditutup dengan tanda baca ; (titik koma), kecuali yang berada
tepat sebelum kata end; atau end..
khusus).
Type
Vektor = Array[1..10] of Real;
Var
B,V: Vektor;
I,J,K: Integer;
Sum: Real;
harus dinyatakan dalam format text file dan dalam ekstensi .pas.
Var , ;
Begin
77, maka penulisan program pada Turbo PASCAL secara ringkas dapat
End;
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.
Gambar 3.6. Blok struktur dan sintaks program dalam bahasa PASCAL.
# 28
# 29
bahasa PASCAL pun memiliki aturan-aturan umum dari sistematika atau struktur
penulisan serta beberapa kekhususan, di antaranya:
dsb) tidak dapat dipakai lagi untuk penamaan variabel (identifier) dalam
(boolean expression, disingkat sebagai be), penugasan iterasi (for, while, dan
program,
cukup kontras terlihat seperti disenaraikan dalam tabel 3.1. di bawah ini.
Pernyataan Operasi
Sintaks Penulisan
FORTRAN 77
Turbo PASCAL
.NOT.
not
**
t.a.
3.
4.
Jika dalam cara penulisan program FORTRAN 77 lebih banyak hal-hal atau
5.
t.a.
div
6.
t.a.
mod
cukup merepotkan dan rumit. Namun sebaliknya, jika contoh program yang
7.
.AND.
and
analogi seperti pada gambar 3.4 di atas dituliskan dalam Turbo PASCAL, maka
8.
Operator gerbang or
.OR.
or
9.
t.a.
xor
10.
t.a.
shl
11.
t.a.
shr
1.
value),
2.
Subprogram dalam PASCAL dapat bersifat recursif, yaitu subprogram yang dapat memanggil dirinya sendiri
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 3.7. Contoh program dalam Turbo PASCAL yang analogi dengan gambar 3.4.
# 30
12.
13.
14.
:=
15.
()
()
16.
()
[]
17.
.EQ.
18.
.NE.
19.
.GT.
>
20.
.LT.
<
# 31
Pernyataan Operasi
21.
Seperti telah ditunjukkan dalam tabel 3.1. di atas, tampak jelas beberapa
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
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
begin
I M P L I C I T E
n o n e
Perlu diingat dengan baik oleh pembaca sekalian, bahwa programer harus
for v := a downto b do
begin
end;
do while (be)
31.
end;
do var = first,last,-1
kedua-duanya.
repeat
until be;
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,
while (be) do
begin
end;
# 32
# 33
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);
# 34
# 35
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
Begin
End;
Begin
End;
Perhatikan juga dengan teliti dan seksama, cara-cara penulisan kedua jenis
Walaupun memiliki banyak kemiripan dalam fungsinya, baik dalam
(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
# 36
# 37
yang baik.
Beberapa contoh tentang pemasukan data melalui file diberikan di bawah
ini. Perhatikanlah hal-hal yang mungkin penting sebagai pembelajaran dalam
membuat program dalam bahasa FORTRAN ataupun Turbo PASCAL, terutama
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
D A R I
- - - > T A N P A
Pemrogram FORTRAN:
K E Y B O A R 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
A T R I B U T :
R E A D ( * , * ) N , X
C
- - - > D E N G A N
A T R I B U T :
W R I T E ( * , * ) J M L
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 ) :
O P E N ( 8 , F I L E = I N P . D A T )
I T E R :
R E A D ( 8 , * ) N , X
R E A D ( * , * ) N
W R I T E ( * , * ) X - A W A L :
C L O S E ( 8 )
R E A D ( * , * ) X
E N D
(* Tanpa atribut: : *)
Readln(N,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);
;
;
;
End.
# 38
# 39
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
Begin
Write(X,Y);
Writeln;
Writeln(Hasil: ,Xr);
;
;
End.
Penulisan keluaran dalam FORTRAN menggunakan pengenal baku WRITE
selalu diikuti dengan karakter ganti baris (carriage return atau new line atau
ENTER atau karakter ke 13 atau hex-0D dalam tabel ASCII). Sebaliknya, dalam
Turbo PASCAL, penulisan menggunakan Write adalah tanpa carriage return
Begin
;
Assign(OutFile,INP.DAT);
Rewrite(OutFile);
;
Write(OutFile, XR, YR);
{ atau Writeln(OutFile, Xr, Yr); }
;
Close(OutFile);
;
End.
# 40
# 41
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).
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
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
K O N D I S I O N A L
C O N T O H
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
Begin
;
Write(LST, XR, YR);
{ atau Writeln(LST, Xr, Yr); }
;
;
End.
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
# 42
# 43
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.
# 44
# 45
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;
* 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
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 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
# 46
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
# 47
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
P R O G R A M
W H I L E D O :
I T E R A S I
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
# 48
# 49
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
# 50
# 51