Anda di halaman 1dari 97

Hand Out Pemrograman Komputer

BAB 1 PENDAHULUAN
1.1 Tujuan Pemrograman Komputer: 1. Melakukan perhitungan-perhitungan dalam jumlah yang banyak dan sistem yang kompleks. 2. Mempermudah seseorang untuk mengekspresikan ide-ide (tulisan, gambar dll) ataupun hasil perhitungan (grafik, kontour dll).

1.2 Sejarah Komputer 1. Komputer generasi pertama menggunakan tabung vakum dan relay. Pada komputer-komputer generasi ini perhitungan-perhitungan dilakukan dengan rewiring. ENIAC (Electronic Numerical Integrator and Computer) yang dikembangkan oleh Atanosoff dan Berry pada tahun 1946.

ENIAC

UNIVAC I

UNIVAC (Universal Automatic Computer) yang dikembangkan oleh Eckert dan Mauchly pada tahun 1951. Komputer ini mempunyai 18000 tabung vakum dan 1500 relays dengan ukuran 2040 feet2. 2. Komputer generasi kedua menggunakan transistor sebagai pengganti tabung vakum sehingga mempunyai keunggulan ukuran lebih kecil, lebih murah, daya rendah, panas rendah dan tentu saja lebih andal. IBM 7090 (19591965) merupakan komputer
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

generasi ini.

IBM 7090

IBM 360

3. Komputer generasi ketiga (mis. IBM 360 pada tahun 1964) mulai menggunakan IC (integrated circuit) dan mampu melakukan multiprogramming. 4. Komputer generasi keempat pada tahun 80'an menggunakan VLSI (very large-scale integrated-circuit) yang terbuat dari silikon dan peralatan mikroelektronik sehingga didapatkan komputer dengan ukuran kecil.

1.3 Bahasa Komputer 1. Bahasa mesin (machine language) merupakan satu-satunya bahasa yang dapat dipahami oleh komputer secara langsung. Bahasa ini berbasis biner (berbasis dua) yaitu 1 (ada tegangan listrik) dan 0 (tidak ada tegangan). 2. Bahasa tingkat tinggi (high-level language) merupakan bahasa yang menjadi

jembatan antara bahasa yang dipahami user (manusia) dan komputer. Bahasa ini akan menterjemahkan komando-komando dalam bahas manusia menjadi bahasa mesin. Misal FORTRAN (FORmula TRANslation), BASIC, Pascal, COBOL, C dan lain-lain.

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

Sistem Computing 1. CPU (central processing unit) merupakan "otak"nya komputer dan mempunyai bagian-bagian ALU (arithmetic-logic unit) yang melakukan perhitungan aritmetik dan kontrol logic high-speed memory atau cache memory yang berfungsi untuk menyimpan data dan instruksi sementara control unit yang mengontrol keseluruhan sistem 2. Input devices yang dipakai untuk menerima atau memasukkan data. Dapat berupa keyboard, mouse, atau interface. 3. Output devices yang dipakai untuk mengeluarkan hasil proses. Printer, plotter, dan interface merupakan contoh-contohnya. 4. External memory yang dipakai untuk menyimpan data-data, program dan lain-lain. Dapat berupa SDRAM, DDRAM, RDRAM untuk penyimpanan berupa hard disk, floppy disk, CD-ROM untuk penyimpanan tetap. sementara, dan

1.4 Internal Representation Seperti tersebut di atas, komputer hanya mengerti bahasa berbasis biner. Satu buah data (berupa 1 atau O) disebut bit dan kumpulan bit (biasanya 8 bit) disebut sebagai byte. Memori sebesar 512K berarti mampu menyimpan data sebanyak 219 byte=524.288 byte=222 bit. Pengelompokan yang lebih besar disebut word dimana kemampuan komputer bervariasi 8, 16, 32, atau 64 bits. Ini artinya untuk komputer dengan kemampuan word sebesar 16 bits maka bilangan asli terbesar yang dapat dicapai adalah 215-1=32,767. Sedangkan untuk 32 bits adalah 231-1=2,147,483,647.
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

Bilangan yang dikenal dalam kehidupan sehari-hari-hari adalah bilangan desimal (berbasis sepuluh). Oleh komputer bilangan ini akan diterjemahkan menjadi bilangan biner. Misalnya 510=1012. Sebaliknya 1110102 berarti (125)+ (124)+ (123)+ (022)+ (121)+ (020)=58 Bilangan nyata biner 110.101 bila dinyatakan dalam bilangan nyata desimal akan menjadi (122)+ (121)+ (020)+ (12-1)+ (02-2)+ (12-3) = 6.625 Di dalam memori komputer bilangan ini akan disimpan dalam bentuk, 0.1101012 23 dimana suku pertama (0.110101) disebut mantissa dan suku kedua (23) disebut exponent. Dalam sebuah komputer 16 bits maka apabila 11 bits pertama dipakai untuk mantissa dan sisanya untuk exponent maka 0.1101012 23 dituliskan sebagai,
0110101000 0 00011 14 4 244 3 1 2 3
mantissa exponent

Sebagai konsekuensi dari hal ini maka misalnya bilangan 0.710 dalam bilangan biner dinyatakan, 0.101100110011001102 dengan pengulangan blok 0110 tanpa batas. Sehingga apabila mantissa dinyatakan dalam 11 bits maka representasi dari 0.7 adalah 0.10110011002 yang mempunyai nilai desimal 0.69921875 yang tidak sama persis dengan 0.7. Perbedaan ini disebut round-off error (error pembulatan).

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

BAB 2 PEMBUATAN PROGRAM


Dalam pembuatan program untuk penyelesaian suatu masalah langkah-langkah yang perlu dilakukan adalah: 1. 2. 3. 4. 5. Analisa problem dan spesifikasi Pengembangan algoritma Penulisan program Eksekusi program dan pengetesan Pemeliharaan program

PROBLEM: Bagaimana mengetahui jumlah tersisa dari suatu zat radioaktif selang waktu tertentu. 2.1. Analisa Problem dan Spesifikasi Diketahui bahwa suatu zat radioaktif mempunyai waktu paruh yaitu waktu yang dibutuhkan untuk massanya menjadi separuh. POLONIUM: 100 mg 50 mg 25 mg 12.5 mg

Di mana 100 mg adalah massa awal dan 140 hari adalah waktu paruh untuk unsur Polonium yang kedua-duanya menentukan massa akhir pada selang waktu tertentu. Dari sini untuk mendapatkan massa akhir (OUTPUT) diperlukan INPUT yang berupa massa awal, waktu paruh, dan selang waktu. Untuk dapat menghitungnya diperlukan suatu persamaan umum dan di sini persamaan dapat ditunjukkan oleh

massa sisa = massa awal 0.5(waktu paruh/selang waktu)


2.2. Pengembangan Algoritma Algoritma di sini berarti urut-urutan yang harus dilakukan oleh komputer dari penulisan program algoritma sangat menentukan benar tidaknya hasil perhitungan. Dalam kasus

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

di atas algoritma bisa dituliskan sebagai berikut, 1. Masukkan (inputkan) massa awal, waktu paruh, dan selang waktu 2. Hitung massa sisa dengan persamaaan di atas 3. Tunjukkan massa lewat monitor atau di-save dalam disket/harddisk Dalam pembuatan program, seorang programmer lebih suka menerjemahkan algoritma dalam sebuah flowchart yang merupakan bagan alir dari algoritma dengan menggunakan tanda-tanda sebagai berikut:

Untuk menunjukkan permulaan atau akhir program

Untuk menunjukkan proses input atau output

Untuk memberikan nilai pada suatu variabel (melakukan perhitungan

Untuk menunjukkan cabang pada kondisi tertentu

Untuk menunjukkan komentar/informasi

Untuk menunjukkan adanya pengulangan operasi

Untuk menunjukkan adanya sub-program

Dengan memberi nama variabel seperti di bawah:

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

7 INIT HFLIFE TIME RESID


Calculate RESID Enter INIT, HFLIFE, TIME BEGIN

massa awal waktu paruh selang waktu massa sisa

4. Maka didapatkan flowchart seperti di samping.

Display RESID

END

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

2.3. Pembuatan Program Di sini penulisan program harus mengikuti kaidah-kaidah dalam bahasa yang akan digunakan (dalam hal ini FORTRAN). nama variabel (mis. INIT, RESID) dimulai dengan suatu huruf dan dapat diikuti oleh huruf atau angka. Total digit yang diperbolehkan adalah 6. Di sini yang perlu diperhatikan bahwa nama variabel sebaiknya mencerminkan sifat variabel. R12345, RESIDU, R1T2D3 R-1234, 1ABCDE, T123456 dibolehkan tidak dibolehkan

FORTRAN membedakan dua jenis data numerik yaitu tipe integer (tanpa pecahan) dan tipe real (bilangan nyata). Di mana tipe suatu variabel harus dideklarasikan secara eksplisit atau implisit. Secara eksplisit dapat dinyatakan dalam bentuk umum: INTEGER list1 REAL list2

Lambang-lambang operasi aritmetik dinyatakan: Penambahan Pengurangan Perkalian Pembagian Pangkat Contoh: RESID = INIT (.5) (TIME / HFLIFE) Persamaan ini memberikan harga INIT 0,5 TIME / HFLIFE pada variabel RESID. + /

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

Untuk meng-inputkan data digunakan komando READ, untuk meng-outputkan data digunakan komando PRINT atau WRITE. Secara umum dapat dituliskan: READ , list PRINT , list WRITE , list

Untuk memberikan informasi pada program maka dapat dituliskan informasi dengan menuliskan huruf c atau karakter (asterik).

Dengan kaidah-kaidah di atas maka program penghitungan massa sisa dapat dituliskan sebagai berikut: This program calculates the amount of a radioactive substance that remains after a specified time INIT : initial amount of substance .............................. REAL INIT, HFLIFE, TIME, RESID PRINT , ' Enter the initial amount, half-life, and time' READ , INIT, HFLIFE, TIME RESID = INIT (.5) (TIME / HFLIFE) PRINT , 'Amount remaining =', RESID END Program di atas kalau dijalankan atau dirun maka didapatkan: Enter the initial amount, half-life, and time 10, 140, 700 Amount remaining = 0.312500

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

10

2.4. Eksekusi Program dan Pengetesan Langkah keempat penggunaan komputer dalam menyelesaikan problem adalah dengan mengeksekusi dan mencobanya. Di sini yang perlu diperhatikan adalah pelaksanaannya berbeda antara satu software dengan software yang lainnya. Posisi pada suatu baris disebut kolom (column) dan diberi nomor 1, 2, 3, , 80. Semua pernyataan dalam FORTRAN harus ditempatkan pada kolom 7 sampai 72. Apabila sebuah pernyataan membutuhkan label (semacam nomor baris) maka harus diposisikan pada kolom 1 sampai 5. Label harus dalam bentuk integer dan dalam rentang 1 sampai 99999. Untuk penulisan pernyataan yang sangat panjang sehingga tidak cukup dituliskan pada kolom 772, maka dapat dituliskan di kolom berikutnya (maksimal 19 kolom) dengan cara menuliskan tanda penerusan yang dapat berupa huruf atau angka, selain 0 (nol) atau kolom kosong, pada kolom ke 6. Dengan kata lain 0 (nol) atau kolom kosong pada baris ke 6 menunjukkan bahwa baris tersebut merupakan terusan dari kolom sebelumnya. Suatu baris yang kosong atau baris yang dimulai dengan huruf C atau asterik (*) pada kolom pertama menunjukkan sebagai baris komentar. Baris komentar tidak dieksekusi, biasanya dituliskan sebagai keterangan tentang program itu sendiri. Umumnya programmer pemula akan membuat berbagai error (kesalahan) dalam pembuatan algoritma program, pengetikan program dan pengesekusian program. Error dapat dideteksi pada berbagai tingkat dari program sehingga mengakibatkan compiling (kompilasi) eksekusi program terhenti. Syntax error atau compiled error yaitu kesalahan dalam penulisan tata bahasa. Sebagai contoh apabila pernyataan output dalam contoh di atas tertulis PRINT *, 'AMOUNT REMAINING =, RESID
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

11

yaitu tidak adanya tanda petik penutup maka kompilasi program akan terhenti. Untuk kesalahan yang tidak terlalu fatal maka kompilasi tidak terhenti tetapi akan keluar peringatan. Error lain, seperti pembagian dengan nol, tidak akan terdeteksi sampai programnya dieksekusi. Error ini disebut run-time error. Yang paling perlu diperhatikan adalah apa yang disebut sebagai logical error. Error ini timbul akibat akibat kesalahan algoritma atau dalam pembuatan program. Sebagai contoh, RESID = INIT (.5) (TIME / HFLIFE) dituliskan salah sebagai berikut, RESID = INIT (.5) (TIME / HFLIFE) maka pernyataan terakhir akan menghasilkan nilai RESID yang sama sekali berbeda dengan yang diinginkan. Error jenis ini sangat perlu diwaspadai karena tidak akan menghentikan kompilasi atau eksekusi program.

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

12

BAB 3 TIPE-TIPE DATA


3.1 Tipe-tipe Data Dalam FORTRAN dikenal tipe-tipe data: 1. Integer 2. Riil 3. Double precision 4. Complex 5. Character 6. Logical Konstanta Konstanta adalah besaran yang harganya tidak berubah selama eksekusi yang bisa berupa tipe angka, karakter, atau logic. Konstanta Integer Deretan angka yang mengandung tidak titik desimal dan tidak boleh menggunakan koma; kontanta integer yang negatif dituliskan dengan menambahkan tanda minus di depan konstanta, sedangkan yang positif boleh dituliskan tanda positif di depan. Contoh: 0 137 -2516 +171745

Contoh konstanta integer yang tidak valid: 5,280 16.0 -- 5 7(ada komanya) (mengandung titik desimal) (tanda minusnya dobel) (tanda harus didepan)

Konstanta Riil/Single Precision


Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

13

Deretan angka yang mengandung titik desimal; dapat dituliskan seperti bilangan desimal biasa atau secara pangkat. Tidak diperbolehkan menggunakan tanda koma sebagai pengganti titik. Contoh: 1.234 Contoh kontanta riil yang tidak valid: 12,345 63 (koma tidak diijinkan) (konstanta harus mengandung titik desimal) -.01536 +564.73

Penulisan dengan cara pangkat dilakukan dengan menulis bagian mantisa dan diikuti oleh huruf E dan konstanta integer. Sebagai contoh konstanta riil 337.456 dapat dituliskan: 3.37456E2 yang artinya 3.37456 x 102, atau dapat dituliskan juga sebagai: .337456E3 Konstanta Karakter Deretan simbol yang diambil dari kumpulan karakter yang ditetapkan dalam FORTRAN. Variabel Dalam matematika simbol sering dipakai untuk menunjukkan sebuah jumlah. A=lw Persamaan ini digunakan untuk menghitung luas (A) sebuah persegi panjang dengan panjang (l) dan lebar (w) tertentu. Simbol-simbol inilah yang disebut variabel. Dalam sebuah komputer harga suatu variabel akan ditempatkan dalam suatu alamat memori. Nama variabel dalam FORTRAN terdiri huruf dan atau angka yang panjangnya maksimal 6 digit dimana huruf pertama harus huruf. Contoh: 337.456E0 33745.6E-2 317156E-3

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

14 VELOC AB1

MASS

RATE

Contoh nama variabel yang tidak valid: TOOLONG R2-D2 6FEET (lebih dari 6 digit) (mengandung selain angka dan huruf) (dimulai dengan angka)

Untuk menentukan variabel bertipe apa digunakan, REAL list INTEGER list dimana list adalah deretan nama variabel yang dipisahkan dengan koma. REAL mendefinisikan variabel bertipe riil, INTEGER mendefinisikan variabel bertipe integer. Contoh REAL MASS, VELOC INTEGER COUNT, FACTOR, SUM mendefinisikan MASS dan VELOC sebagai tipe riil, sedangkan COUNT, FACTOR, dan SUM sebagai tipe integer. Apabila tidak didefinisikan secara eksplisit, FORTRAN akan mendefiniskan secara implisit secara konvensi, yaitu variabel yang dimulai dengan I, J, K, L, M, atau N adalah variabel integer, sedangkan yang dimulai dengan huruf lain adalah variabel riil. Di sini yang sangat penting diperhatikan bahwa definisi tipe variabel sangat penting. Hal ini dapat dilihat dari contoh-contoh di belakang.

3.2 Operasi Aritmetik dan Fungsi Suatu persamaan yang mengandung operasi arimetik (+, -, *, /, **) akan dieksekusi sesuai
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

15

dengan aturan prioritas. 1. Semua pangkat dieksekusi terlebih dahulu; dimana yang sebelah kanan lebih dahulu. 2. Semua perkalian atau pembagian dieksekusi berikutnya dengan urutan dari yang lebih kiri 3. Penambahan dan pengurangan dieksekusi paling akhir dengan urutan dari yang lebih kiri. Contoh: 2 3 2 = 2 9 = 512 10 8 2 = 2 2 = 0 2 + 4 2 / 2 = 2 + 16 / 2 = 2 + 8 = 10 Untuk menghindari kesalahan penulisan maka dapat digunakan tanda kurung dimana yang ada dalam kurung dieksekusi terlebih dahulu. (5 (11 5) 2) 4 + 9 = (5 6 2) 4 + 9 = 180 4 + 9 = 720 + 9 = 729 Dalam FORTRAN tidak diijinkan menggunakan tanda operasi aritmetik berurutan. Misal N 2 tidak diijinkan, tetapi harus ditulis N (-2). Apabila dua konstanta atau variabel yang tipenya sama dikombinasikan untuk melakukan operasi aritmetik maka tipe hasilnya mengikuti tipe awalnya. Misal penjumlahan 3 integer and 4 integer menghasilkan 7 integer, sedangkan penjumlahan 3.0 riil and 4.0 riil adalah 7 riil. Hal ini kelihatannya tidak begitu penting, tetapi sangat perlu diperhatikan pada operasi pembagian. Misal, 9.0 / 4.0 = 2.25 dimana
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

16

9/4=2 Dengan cara yang sama, apabila N mempunyai harga 2 dan X adalah 2.0 maka 1.0 / X = 0.5 1/N=0 Apabila dalam operasi aritmetik apabila terdapat konstanta atau variabel yang berlainan tipenya maka yang bertipe integer mengikuti yang bertipe riil. 1. / 4 1. / 4. = .25 3. + 3 8 / 5 3. + 1 3. + 1. 4. + 8. / 5. 3 + 1.6 3. + 1.6 = 4.6

+ 8. / 5 3

Perbedaan ini juga mempengaruhi pemangkatan. Apabila pangkat dalam angka integer maka pemangkatan dilakukan dengan perkalian berulang. Misal, 2 3 222=8

(-4.0) 2 (-4.0) (-4.0) = 16.0 1.5 2 1.5 1.5 = 2.25 Tetapi apabila pangkatnya adala angka riil maka pemangkatan dilakukan dengan menggunakan algoritma. Misal 2.0 3.0 akan dieksekusi sebagai e2.0 ln(3.0) yang hasilnya tidak tepat sama dengan 8.0 karena terjadinya roundoff errors (error pembulatan) yang timbul akibat fungsi pangkat dan algoritma dinyatakan dalam sebuah deret. Konsekuesi lain yang timbul adalah tidak terdefinisikannya (-4.0) 2.0 karena tidak adanya fungsi logaritma untuk angka negatif (walaupun (-4.0) (-4.0) = 16.0). Dari contoh ini pangkat riil tidak boleh digunakan sebagai pengganti pangkat integer.
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

17

Tetapi tentu saja pada perhitungan-perhitungan tertentu dibutuhkan pangkat dengan angka riil. Misal untuk menghitung akar 7 dapat dituliskan 7 .5, 7 (1. / 2.) atau 7 (1. /

2) (perhatikan 7 (1 / 2) menghasilkan 7 0 = 1). Secara umum akar pangkat N dari suatu angka positif X dapat dituliskan: X (1.0 / N) Selain dengan cara di atas, dalam FORTRAN tentu saja tersedia fungsi untuk menghitung akar yang dilambangkan dengan SQRT dan dituliskan dengan SQRT(arguments) dimana where arguments adalah konstanta, variabel, atau sebuah persamaan aritmetik. Misal, SQRT (7. 0) tetapi bukan SQRT(7).

Fungsi-fungsi dalam FORTRAN Fungsi ABS(x) COS(x) EXP(x) INT(x) LOG(x) MAX(x1, xn) MIN(x1, xn) MOD(x,y) Penjelasan Absolute value of x Cosine of x radians Exponential function ex Integer part of x Natural logarithm of x Maximum of x1, xn Maximum of x1, xn x INT(x/y) y Tipe Argument(s)* Integer/real Real Real Real Real Integer/real Integer/real Integer/real Tipe Hasil Tidak berubah Real Real Integer Real Tidak berubah Tidak berubah Tidak berubah

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

18 Real Integer Real Real Integer Real Real Real

NINT(x) REAL(x) SIN(x) SQRT(x)

x rounded to nearest in Conv. of x to real type Sine of x radians Square root of x

3.3. Pemberian Nilai Pada Sebuah Variabel Secara umum dapat dinyatakan, variabel = expression dimana expression adalah konstanta atau variabel yang sebelumnya sudah didefinisikan sebelumnya atau diformulasikan. Misal, XCOORD = 5.23 YCOORD = SQRT(25.0) NUMBER = 17 TERM = NUMBER / 3 + 2 XCOORD = 2.0 XCOORD Di sini yang perlu diperhatikan bahwa apabila sebuah variabel integer diberi nilai dengan angka riil maka pecahannya dipotong tinggal bagian integernya. Misal variabel riil X berharga 5.75, sedangkan I, KAPPA, dan MU adalah variabel integer maka, I = 3. 14159 KAPPA = X / 2.0 MU = 1. / X akan memberikan harga kontanta masing-masing 3, 2, dan 0 kepada variabel I, KAPPA, dan MU. Pada kasus dimana pemberian nilai integer pada variabel riil, maka nilainya diubah
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

19

menjadi riil dan diberikan pada variabel. Misal variabel integer N berharga 9, sedangkan variabel ALPHA dan BETA adalah variabel riil maka ALPHA = 3 BETA = (N + 3) / 5 memberikan nilai 3.0 pada ALPHA dan nilai 2.0 to BETA.

3.4 Latihan Soal 1. Hitunglah rata-rata tinggi badan dari mahasiswa Kelas Pemrograman Komputer yang masuk pada hari ini dimana jumlah mahasiswa tidak diketahui dengan pasti. 2. Perusahaan air menetapkan harga langganan air per bulan sebagai berikut: Air terpakai 70 meter kubik pertama 100 meter kubik berikut 230 meter kubik berikut Di atas 400 meter kubik Tarif Rp. 50.000 Rp. 500 per meter kubik Rp. 250 per meter kubik Rp. 150 per meter kubik

Tulislah program untuk menghitung berapa tarif yang harus dibayarkan. Sebagai input ditetapkan pembacaan meteran pada bulan sebelumnya, dan pembacaan meteran pada saat akhir bulan ini dengan empat digit. Perhatikan bahwa pembacaan pada bulan ini dapat lebih kecil dibandingkan dengan bulan sebelumnya (karena meterannya terbatas digitnya). 3. Tulislah program yang membaca sejumlah data, menghitung jumlah data, dan menghitung berapa rata-rata, varian, dan standar deviasi dari data-data yang didapatkan.

1 n Rata-rata = x i n i =1
Dr. Tri Agung Rohmat

n 1 n 2 1 x x Varian = i i 2 n i =1 n i =1

Hand Out Pemrograman Komputer

20

Standar deviasi = Varian1/2 4. Deret tak terhingga:

1 k = 0 k!
akan konvergen ke bilangan natural e untuk bilangan positif integer k. Jumlah sampai suku ke-4 dapat dinyatakan:

1 1 1 1 + + + 0! 1 ! 2! 3!
Tulis program yang menghitung dan mendisplaikan deret sampai suku ke-n. 5. Kecepatan turun parasut dapat didekati dengan persamaan:

V (t ) =

gm (1 e( c / m )t ) c

dimana g adalah percepatan gravitasi (9.8m2/s), c adalah koefisien drag (12.4 kg/sec), m adalah massa orang (81.5kg). Tuliskan program untuk menghitung jarak yang ditempuh dari t=A ke t=B. Ingat jarak adalah integral dari kecepatan. 6. Tuliskan sebuah program untuk membaca data dari 2 sisi tegak lurus dari sebuah segitiga siku-siku, dan menghitung dan men-display-kan luasan segitiga dan panjang sisi miringnya. 7. Sebuah segitiga siku-siku dapat mempunyai kombinasi panjang sisi-sisinya (3, 4,, dan 5 atau 5, 12, dan 13 dll). Secara umum panjang sisi-sisi dapat dinyatakan: sisi tegak lurus 1 = m2 - n2 sisi tegak lurus 2 = 2mn sisi miring = m2 + n2 dimana m dan n adalah integer positif dan m > n. Buat program untuk membaca m dan
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

21

n dan kemudian menghitung panjang sisi-sisi segitiga ini. 8. Buatlah program untuk mengkonversi hasil pengukuran panjang dalam feet ke (a) yard, (b) inch, (c) centimeter, (d) meter. (1 foot =12 inches, 1 yard = 3 feet, 1 inch = 2.54cm, 1 meter = 100 centimeters)

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

22

BAB 4 STRUKTUR KONTROL


4.1 Aliran logika Aliran logika dalam FORTRAN dapat disusun secara: 1. Sequential (berurutan) 2. Selection (seleksi) 3. Repetition (pengulangan) Struktur berurutan Pada struktur ini, seperti ditujukkan gambar di bawah, program dieksekusi secara berurutan.

pernyataan-1

pernyataan-2

pernyataan-n

Struktur seleksi Struktur seleksi memungkinkan seleksi dan eksekusi dari blok alternatif dari suatu pernyataan (rumus). Hal ini membuat programmer dapat menentukan titik penentuan untuk melakukan suatu perhitungan selama program berlangsung. Struktur pengulangan Struktur ini memungkinkan pembuatan sebuah loop yaitu blok pernyataan (rumus) yang dieksekusi berulang-ulang. Loop ini dapat diulang-ulang sesuai dengan yang diinginkan.
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

23

Pernyataan Logika Suatu pernyataan tidak harus berupa numerik yang menggunakan tanda aritmetik ( +, , , / , ) atau fungsi (SQRT, SIN, dsb) tapi juga dapat berupa logika. Pernyataan logika dapat dituliskan secara sederhana atau gabungan. Bentuk umumnya adalah: expression-1 relational operator expression-2 dimana expression-1 dan expression-2 adalah pernyataan numerik, dan relational-operator adalah salah satu dari yang berikut, Symbol .LT. .GT. .EQ. .LE. .GE. .NE. Meaning lebih kecil dari lebih besar dari sama dengan lebih kecil sama dengan lebih besar sama dengan tidak sama dengan

Titik harus dituliskan di depan dan di belakang simbol-simbol di atas sebagai bagian dari simbol. Contoh, X.LT. 5.2 B 2.GE. 4 A C NUMBER.EQ. 500 Apabila X berharga 4.5 maka pernyataan logika X. LT. 5.2 adalah true (benar). Apabila NUMBER berharga 400, maka pernyataan logika NUMBER . EQ . 500 is false (salah). Ketika menggunakan operator hubungan .EQ. dan .NE., perlu diperhatikan bahwa hampir semua bilangan riil tidak disimpan secara eksak. Sebagai konsekuensinya penggunaan .EQ.
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

24

sebagai operator hubungan selalu menghasilkan pernyataan false. Pernyataan logika dapat digabung dengan pernyatan logika lain dengan menggunakan operator logika, .NOT. .AND. .OR. .EQV. .NEQV.

Operator-operator ini didefinisikan seperti berikut,


Logical Operator Logical Expression Definition

.NOT. P adalah true jika P adalah false .AND. P. AND. Q P. AND. Q adalah true jika P dan Q kedua-duanya adalah true; selain itu false .OR. P. OR. Q P. OR. Q adalah true jika P atau Q atau kedua-duanya adalah true; selain itu false .EQV. P. EQV. Q P. EQV. Q adalah true jika P dan Q keduanya adalah true atau false semuanya; selain itu false .NEQV. P. NEQV. Q P. NEQV. Q adalah kebalikan dari P. EQV. Q

Definisi-definisi di atas di tabelkan seperti di bawah. P T F . NOT. P F T

P T T F F
Dr. Tri Agung Rohmat

Q T F T F

P. AND. Q T F F F

P. OR. Q T T T F

P. EQV. Q T F F T

P. NEQV. Q F T T F

Hand Out Pemrograman Komputer

25

Pernyataan logika boleh mengandung lebih dari satu operator hubungan atau logika. Misal, apabila X berharga 1.5 maka pernyataan logika X + 1.1. GT. 1.0. AND. . NOT. X. LT. 0.5 atau dengan tambahan kurung untuk memudahkan pembacaan, (X + 1.1. GT. 1.0). AND. . NOT. (X. LT. 0.5) adalah true. Perhatikan bahwa operator logika .NOT., .AND., .OR., .EQV. and .NEQV. beroperasi hanya pada pernyataan logika. Sehingga apabila NUMBER adalah bilangan integer NUMBER.EQ. 1. OR. NUMBER. EQ. 2 adalah valid, tetapi NUMBER. EQ. 1.OR. 2 adalah tidak valid karena 2 bukan suatu pernyataan logika.

Urutan-urutan eksekusi operator 1. Operator hubungan (.GT., .GE., .EQ., .NE., .LT., .LE.) 2. .NOT. 3. .AND. 4. .OR. 5. .EQV. and .NEQV. Tanda kurung dapat dipakai untuk memudahkan pembacaan. Misal, (A. AND. B). OR. C

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

26

maka yang ada dalam kurung dieksekusi terlebih dahulu. Sehingga pernyataan ini adalah true apabila C adalah true, dan A dan B kedua-duanya adalah true. Pernyataan ini ekuivalen dengan A. AND. B. OR. C sesuai dengan aturan urutan seperti di atas. Dalam pernyataan A. AND. (B.OR. C) maka yang ada dalam kurung dievaluasi terlebih dahulu.

4.2 Struktur Seleksi: Statement Logika IF Struktur seleksi memungkinkan seleksi dari beberapa aksi alternatif tergantung kepada nilai dari suatu pernyataan logika. Struktur seleksi yang paling sederhana ditunjukkan dengan gambar di bawah. Dalam struktur ini statement tunggal dieksekusi atau dilewati tergantung pada pernyataan logika true atau false.

true

logical expression

false
statement

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

27

Struktur seleksi ini dalam FORTRAN diimplementasikan dengan statement logika IF dalam bentuk IF (logical-expression) statement Apabila ungkapan logika adalah true maka statement di belakangnya akan dieksekusi, kalau flase maka akan dilewati. Statement di belakangnya harus statement yang bisa dieksekusi, tidak boleh statement logika IF yang lain, statement DO atau pernyataan lain yang merupakan bagian struktur blok IF. Yang perlu diperhatikan bahwa pernyataan logika dalam pernyataan logika IF harus masuk dalam kurung.

Sebagai contoh, perhatikan contoh berikut di mana N adalah variabel integer, DISC dan X adalah variabel riil. IF (DISC. GE. 0) DISC = SQRT(DISC) IF (1.5. LE. X. AND. X. LT. 2.5) PRINT *, X

Dalama contoh pertama, nilai DISC dibandingkan dengan 0 untuk menentukan kebenaran dan kesalahan dari pernyataan logika DISC. GE. 0. Apabila pernyataan logikanya benar, pernyataan DISC = SQRT(DISC) dieksekusi; kalau tidak diabaikan (di-bypass). Dalam contoh kedua, apabila 1.5 X < 2.5, nilai dari X ditampilkan; kalau tidak pernyataan

PRINT diabaikan. Untuk setiap pernyataan logika IF, eksekusi berlanjut dengan pernyataan berikutnya tanpa tergantung apakah pernyataan logikanya benar atau salah.

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

28

4.3 Struktur Seleksi: Pernyataan Blok IF

true Pernyataan Blok IF lebih fleksibel karena dapat mengeksekusi beberapa pernyataan
statement

logical expression

false

untuk suatu pernyataan logika yang benar. Secara umum dapat dinyatakan sebagai berikut, IF (pernyataan logika) THEN pernyataan -1 pernyataan -2
statement

block

statement

pernyataan -n END IF Apabila pernyataan logika benar, maka seluruh pernyataan antara THEN dan END IF akan dieksekusi. Kalau tidak maka diabaikan.

Pernyataan tipe ini juga dapat untuk mengesekusi beberapa pernyataan lain apabila pernyataan logikanya salah. Bentuk umumnya adalah, IF (pernyataan logika) THEN pernyataan -1 pernyataan -2 blok-1

pernyataan -n ELSE pernyataan -a pernyataan -b


Dr. Tri Agung Rohmat

blok-2

Hand Out Pemrograman Komputer

29

pernyataan -m END IF

true

logical expression

false

statement

statement

block-1

statement

statement

block-2

statement

statement

Pada gambar di atas, apabila pernyataan logika benar maka pernyataan-pernyataan pada blok-1 dieksekusi dan kalau tidak maka blok-1 diabaikan dan pernyataan di blok-2 dieksekusi. Contoh, IF ((0. LE. X). AND. (X. LE. 10.0)) THEN Y = SQRT(X) PRINT *, X, Y END IF Dan IF ((0.LE. X). AND. (X. LE. 10.0)) THEN
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

30

Y = SQRT(X) PRINT , X, Y ELSE PRINT , 'VALUE', X, ' IS OUT OF RANGE' END IF Contoh ilustrasi lain pernyataan blok IF adalah pada persoalan mencari akar-akar persamaan kuadrat,
Ax 2 + Bx + C = 0

dimana akar-akar dapat dicari dari persamaan

B B 2 4 AC 2A
Akar-akar persamaan riil bisa dicari apabila nilai dalam tanda akar adalah tidak negatif. Algoritma yang harus dibuat adalah, 1. Masukkan A, B, and C. 2. Hitung DISC = B2 4AC 3. Apabila DISC < 0 lakukan yang berikut a. Tampilkan DISC b. Tampilkan pesan apabila tidak ada akar riil. Kalau tidak lakukan yang berikut a. Hitung DISC = SQRT(DISC) b. Hitung ROOT1 = (-B + DISC)/(2 A) c. Hitung ROOT2 = (-B - DISC)/(2A) d. Tampilkan ROOT 1 dan ROOT2 Blok-blok di dalam pernyataan blok IF dapat berisi blok IF yang lain. Pada kasus ini satu
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

31

buah blok IF harus sempurna dalam sebuah blok IF yang lain. Sebagai contoh program di atas dapat dikembangkan untuk menunjukkan akar riilnya tunggal atau dua. 1. Masukkan A, B, and C. 2. Hitung DISC = B2 - 4AC 3. Apabila DISC < 0 lakukan berikut: (a) (b) Tampilkan DISC Tampilkan pesan bahwa tidak ada akar-akar riil.

Kalau tidak lakukan beirikut: Apabila DISC = 0 lakukan beirikut: a. Hitung ROOT = -B / (2A) b. Tampilkan ROOT Kalau tidak lakukan berikut a b c d Hitung DISC = SQRT(DISC) Hitung ROOT1 = (-B + DISC)/(2A) Hitung ROOT2 = (-B - DISC)/(2A) Tampilkan ROOT 1 and ROOT2

4.4 Struktur Seleksi Alternatif Banyak: Konstruksi IF-ELSE-IF Pada sub bab sebelumnya hanya dibahas struktur yang memilih satu dari dua alternatif. Untuk menyediakan lebih dari 2 alternatif digunakan konstruksi IF-ELSE IF. Sebagai contoh bayangkan fungsi berikut,

x if x 0 f ( x ) = x 2 if 0 < x < 1 1 if x 1
Bentuk umum dari IF-ELSE-IF adalah sebagai berikut, IF (logical-expression-1) THEN
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

32

block-1 ELSE IF (logical-expression-2) THEN block-2 ELSE IF (logical-expression-3) THEN block-3

ELSE block-n END IF Apabila pernyataan logika benar maka blok yang bersangkutan (dibatasi oleh ELSE IF) akan dijalankan. Kalau salah maka pernyataan logika berikutnya akan dinilai salah atau benar. Hal ini terus dilakukan sampai pada komando END IF. Apabila tidak ada satupun pernyataan logika yang benar maka blok yang dijalankan adalah yang setelah komando ELSE. Sehingga untuk menyatakan fungsi seperti di atas maka dibuat program sebagai berikut, IF (X.LE. 0) THEN FVAL = -X ELSE IF (X.LT. 1.0) THEN FVAL = X 2 ELSE FVAL = 1.0 END IF

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

33

4.5 Struktur Pengulangan: Pernyataan DO dan CONTINUE Struktur pengulangan atau biasa disebut loop memungkinkan pernyataan diulang beberapa kali. Jumlah pengulangan harus dibatasi dalam jumlah tertentu. Bentuk dasar dari struktur pengulangan ada dua, 1. Loop yang dikontrol dengan jumlah tertentu menggunakan pernyataan DO dan CONTINUE. 2. Loop yang dikontrol dengan pernyataan logika menggunakan pernyataan WHILE. Pernyataan DO dan CONTINUE mempunyai bentuk umum sebagai berikut, DO n, variabel kontrol = nilai awal, batas (,selang) statements-1 body statements-k n CONTINUE

Di sini n adalah nomor/alamat baris pernyataan yang membatasi apa yang akan diulang. Nomor ini ditulis pada kolom 25. Nilai awal, batas dan selang adalah bilangan integer atau riil. Yang ada dalam kurung adalah sebuah opsi saja.

Contoh sebuah DO loop dengan selang positif ditunjukkan flow chart di bawah. Di sini variabel kontrol dimulai dengan harga sama dan dilakukan eksekusi terhadap pernyataan-pernyataan yang diapit oleh komando DO dan CONTINUE (loop). Kemudian, variabel kontrol bertambah sebesar selang dan loop dieksekusi lagi. Hal ini dilakukan berulang-ulang sampai variabel kontrol mencapai harga batas. Perhatikan apabila nilai awal lebih besar dari batas maka loop tidak akan dieksekusi. Sebagai contoh,
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

34

DO 10 NUMBER = 1, 8 PRINT , NUMBER, NUMBER 2 10 CONTINUE

Hasil yang keluar dari DO loop ini adalah: 1 2 3 4 5 6 7 8 1 4 9 16 25 36 49 64

Apabila selang adalah negatif maka variabel kontrolnya berkurang sampai batas. Contoh, DO 10 NUMBER = 8, 1, -1 PRINT , NUMBER, NUMBER 2 10 CONTINUE

Sebuah DO loop dapat mengandung beberapa DO loop lain. Contoh, DO 20 M = 1, LASTM DO 10 N = 1, LASTN PROD = M N PRINT , M, N, PROD 10 20 CONTINUE CONTINUE

Perhatikan pada contoh di atas bahwa DO loop yang satu dengan yang lain harus
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

35

mempunyai variabel kontrol yang berlainan.

Komando CONTINUE dapat digunakan untuk menutup beberapa DO loop dalam waktu bersamaan. DO 10 M = 1, LASTM DO 10 N = 1, LASTN PROD = M N PRINT , M, N, PROD 10 CONTINUE

Atau, pernyataan terakhir dalam DO loop dapat dipakai untuk menutup DO loop. DO 10 NUMBER = 1, 10 10 PRINT , NUMBER, NUMBER 2

4.6 Struktur Pengulangan WHILE Pada kasus di mana jumlah pengulangan tidak diketahui maka digunakan komando WHILE struktur pengulangannya disebut WHILE loop. Secara umumnya dinyatakan sebagai berikut, WHILE (logical-expression) DO statement-1 statement-2 END WHILE Contohnya, WHILE (SUM . LE . LIMIT) DO NUMBER = NUMBER + 1
Dr. Tri Agung Rohmat

DO WHILE (logical-expression) statement-1 statement-2 END DO

Hand Out Pemrograman Komputer

36

SUM = SUM + NUMBER END WHILE Di sini yang perlu diperhatikan bahwa pernyaaan WHILE tidak disediakan oleh compiler FORTRAN standar. Untuk itu digunakan pernyataan GO TO GO TO adalah pernyataan bercabang dengan bentuk umum, GO TO nomor-pernyataan dimana nomor-pernyataan adalah nomor/alamat dari suatu pernyataan. Contoh, n IF (pernyataan-logika) THEN pernyataan-1 pernyataan-2 pernyataan-n GO TO n END IF dalam blok IF. Pernyataan

4.7 Latihan Soal 1. Buatlah program untuk menghitung

e x + e x cosh( x) = 2
dengan syarat sebagai berikut, (a) bilangan natural e dihitung dalam sebuah subprogram di mana
x 2 x3 xn e 1+ x + + +L = 2! 3! n =0 n! x

(b) bandingkan nilainya dengan fungsi cosh(x) yang terdapat dalam Fortran!

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

37

BAB 5 INPUT/OUTPUT
Perintah input atau output mempunyai dua bentuk yaitu bentuk: 1. List seperti pada bab-bab sebelumnya format penulisan ditentukan oleh compiler, dengan konsekuensi user bisa menentukan format. 2. Format tertentu format penulisan bisa lebih fleksibel, pada penggunaan data dengan jumlah besar dapat membaca dari sebuah file. 5.1. Output Dengan Format Tertentu Perintah output dalam FORTRAN dapat dinyatakan dengan menggunakan PRINT atau WRITE. Perintah PRINT adalah lebih simpel dan mempunyai bentuk umum: PRINT format-identifier, output-list Output-list berisi urutan data atau pernyataan yang dipisahkan dengan koma. Format identifier menentukan format penulisan dari output list. Format identifier dapat berupa: 1. Asterik () 2. Nomor label dari suatu baris yang berisi format penulisan Tipe format identifier yang kedua harus dilengkapi dengan perintah FORMAT yang diletakkan pada baris dengan label yang disebutkan pada format identifier. Bentuk umumnya adalah: FORMAT (list of format descriptors) Sebagai contoh untuk mendisplaikan NUMBER yang mempunyai harga 17, dan TEMP yang mempunyai harga 10.25 dengan perintah-perintah: PRINT , NUMBER, TEMP PRINT 20, NUMBER, TEMP
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

38

dimana angka 20 menunjuk label, misalnya sebagai berikut: 20 FORMAT (1X, I5, F8.2)

Pada perintah yang pertama menghasilkan:

17

10 . 2 5 0 0

Perintah yang kedua menghasilkan:

17

10 . 2 5

Tabel berikut memberikan beberapa pilihan dalam penentuan format. Yang paling sering digunakan adalah I, F, E, character strings, T, X, and slash (/). Format Descriptor Iw Fw.d Ew.d Dw.d A 'x' Lw nX / Aw nHxx Ew.dEe Iw.m Data integer Data riil untuk notasi desimal Data riil untuk notasi perpangkatan Data presisi dobel Data karakter Strings karakter Data logic Spasi horisontal Spasi vertikal Use

w: konstanta integer positif untuk menentukan jumlah digit yang akan digunakan m: konstanta integer non-negatif untuk menentukan jumlah digit yang akan ditampilkan d: konstanta integer non-negatif untuk menentukan jumlah digit di sebelah kanan tanda desimal e: konstanta integer non-negatif untuk menentukan jumlah digit dalam pangkat x: karakter
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

39

Output Integer Notasi I rIw or rIw.m dimana r adalah konstanta untuk pengulangan. Sebagai contoh 3I3 adalah sama dengan I3, I3, I3 Harga integer akan diletakkan dengan digit terakhir pada ujung paling kanan. Sebagai contoh variabel NUM, L, dan KAPPA mempunyai harga-harga: NUM = 3 L = 5378 KAPPA = -12345 maka pernyataan PRINT 30, NUM, NUM-3, L, KAPPA 30 FORMAT (1X, 2I5, I7, I10)

menghasilkan output sebagai berikut:

5378

-1 2 3 4 5

dan penyataan: PRINT 31, NUM, NUM-3, L, KAPPA PRINT 32, NUM, NUM-3, L, KAPPA 31 32 FORMAT (1X, 2I5.2, I7, I10.7) FORMAT (1X, 2I5.0, I7, I10)

menghasilkan

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

40

03 3

00

5378 5378

- 0 01 2 3 4 5 -1 2 3 4 5

Apabila harga integer membutuhkan tempat yang lebih banyak dari yang ditentukan dalam FORMAT maka akan keluar sebagai asterik.
PRINT 40, NUM, NUM-3, L, KAPPA 40 FORMAT(lX, 4I3)

menghasilkan

0 ******

Output Riil Notasi F. rFw.d

Harga riil dituliskan dengan dipojokkan ke kanan. Dengan penunjukkan Fw.d, apabila harga riil mempunyai digit desimal lebih besar dari d maka desimalnya dibulatkan ke digit
d. Kalau lebih kecil dibanding d digit maka posisi sisanya diisi dengan nol. Secara umum,

angka kurang dari 1 maka akan ditampilkan dengan nol (misalnya 0.123 dari pada .123). Sebagai contoh, untuk menampilkan. Sebagai contoh untuk menampilkan variabel-variabel dengan nilai seperti di bawah,
IN = 625 OUT = -19 A = 7.5 B = .182 C = 625.327

digunakan format sebagai berikut

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

41

PRINT 50, IN, OUT, A, B, C 50 FORMAT (1X, 2I4, 2F6.3, F8.3)

Hasil output akan menjadi

6 2 5 - 1 9 7 . 5 0 0 0 .1 8 2 6 2 5 . 3 2 7
Untuk menyediakan spasi lebih di antara angka-angka dan untuk membulatkan ke nilai sebenarnya digunakan,
50 FORMAT(1X, 2I10, 3F10.2)

Hal ini akan menampilkan tiap angka ditempatkan pada pojok kanan tempat yang telah disediakan,

625

-19

7.5 0

0 .1 8

6 2 5.33

Sebagaimana pada notasi I, maka apabila angka yang akan ditampilkan membutuhkan tempat yang lebih banyak dari yang disediakan maka akan ditampilkan dengan asteriks. Sebagai pedoman untuk notasi Fw.d, harus dipenuhi syarat
w d +3

Output Riil Notasi E.

Data riil dapat ditampilkan dengan notasi pangkat dengan bentuk umum:
rEw.d

atau

rEw.dEe

Di sini nilai real biasanya ditampilkan dengan urutan tanda negatif (kosong kalau positif), angka nol, titik, angka desimal sebanyak d digit, huruf E untuk tanda pangkat, tanda positif/negatif, dan pangkat. Sebagai contoh apabila variabel-variabel mempunyai nilai seperti di bawah,

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

42

REAL A, B, C, D A = .12345E8 B = .0237 C = 4.6E-12 D = -76.1684E12

pernyataan
PRINT 60, A, B, C, D 60 FORMAT (1X, 2E15.5, 2E15.4)

menghasilkan output seperti berikut,

0 .1 2 3 4 5 E + 0 8

0 . 2 3 7 0 0 E - 01

0 . 4 6 0 0 E - 11

- 0 . 7 617 E + 1 4

Sebagai pedoman untuk notasi Ew.d, harus dipenuhi syarat


w d +7

sedang untuk Ew.dEe


w d +e+5

Output Karakter Konstanta karakter dapat didisplaikan dalam format identifier. Misalnya

apabila X dan Y masing-masing mempunyai nilai .3 and 7.9 maka


PRINT 70, X, Y 70 FORMAT (1X, 'X =', F6.2, 'Y =', F6.2)

menghasilkan output

X =

0.30 Y =

7.9 0

Data karakter dapat ditampilkan dengan menggunakan notasi A dengan bentuk umum
rA

atau

rAw

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

43

Untuk bentuk pertama, jumlah digit yang akan dipakai ditentukan oleh jumlah karakter yang akan ditampilkan. Untuk bentuk kedua, apabila jumlah digit yang akan dipakai melebihi jumlah karakter yang akan ditampilkan maka data karakter akan ditampilkan mulai pojok kanan. Tetapi apabila lebih sedikit maka akan ditampilkan mulai pojok kiri. Sebagai contoh, output seprti diatas juga dapat dihasilkan dari,
PRINT 71, 'X =', X, 'Y =', Y 71 FORMAT (1X, A, F6.2, A, F6.2)

Penentu Posisi - X X berfungsi untuk menyediakan spasi pada sebuah baris dan mempunyai bentuk umum, nX

Sebagai ilustrasi, anggap NUMBER adalah variabel integer dan pikirkan pernyataan di bawah,
PRINT 75, 'JOHN Q.DOE', 'CPSC', NUMBER

bersama-sama dengan pernyataan FORMAT berikut,


75 FORMAT (1X, A11, 3X, A4, 2X, I3)

atau
75 FORMAT (1X, A11, T16, A4, 2X, I3)

Apabila NUMBER mempunyai nilai 141, maka output yang dihasilkan adalah

J O H N Q.D O E
Notasi Slash (/).

CPSC

1 41

Output dapat dinyatakan dalam beberapa baris dengan menggunakan tanda slash (/). Tanda / membuat pergantian baris dan dapat diulang beberapa kali. Tidak diperlukan koma
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

44

untuk memisahkan antara satu / dan / yang lain.


PRINT , 'VALUES' PRINT PRINT PRINT 85, N, A, M, B PRINT 86, C, D 85 86 FORMAT (1X, 2(I10, F10.2)) FORMAT (1X, 2E15.7)

Pernyataan-pernyataan di atas dapat digabungkan menjadi,


PRINT 87, 'VALUES', N, A, M, B, C, D 86 FORMAT (1X, A /// 1X, 2(I10, F10.2) / 1X, 2E15.7)

(Perhatikan tanda 1X yang mengikuti / mengindikasikan karakter pengontrol untuk tiap baris baru.). Apabila nilai dari N, A, M. B, C, dan D adalah
N = 5173 A = 617.2 M = 7623 B = 29.25 C = 37.555 D = 5.2813

maka output yang dihasilkan adalah


VALUES

51 7 3

617 . 2 0

7623

29.25

0.37 555 0 0 E + 0 2
Dr. Tri Agung Rohmat

0 . 5 2 813 0 0 E + 01

Hand Out Pemrograman Komputer

45

5.2. Input Dengan Format Tertentu

Pada bagian sebelumnya bahwa input dapat dihasilkan dengan menggunakan pernyataan
READ. Pernyataan READ mempunyai dua bentuk dimana bentuk paling sederhana adalah READ format-identifier, input-list Input-list adalah variabel tunggal atau deretan variabel yang dipisahkan dengan koma. Format-identifier menentukan format nilai untuk setiap input. Seperti halnya pada kasus

untuk output maka format identifier dapat berupa: 1. Asterik () 2. Nomor label dari suatu baris yang berisi format penulisan. 3. Notasi END = Di sini format identifier yang paling sering digunakan untuk input adalah asterik () karena merupakan memberikan keleluasaan untuk memberikan format pada yang akan diinputkan. Penggunaan format identifier yang kedua sama persis dengan yang digunakan pada output yaitu kemudian menambahkan pernyataan FORMAT dengan label sesuai format
identifier. 5.3 Pernyataan WRITE dan Pernyataan READ Umum

Perintah output (PRINT) dan perintah (READ) yang digunakan di atas adalah dalam bentuk paling sederhana yang hanya dapat digunakan menampilkan data di monitor atau membaca data dari keyboard. Untuk menyimpan data digunakan pernyataan WRITE dan untuk membaca data dari disket atau hard disk digunakan READ juga tetapi dengan bentuk yang lebih kompleks.
Pernyataan WRITE

Bentuk umum dari pernyataan WRITE


Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

46

WRITE (control-list) output-list

di mana output-list mempunyai bentuk yang sama dengan yang digunakan pada PRINT, sedangkan control-list bisa mengandung hal-hal berikut, 1. 2. 3.
Unit-specifier (nomor unit) yang menunjukkan nomor peralatan output. Format specifier seperti pada bagian sebelumnya.

Hal-hal lain yang erat kaitannya dengan file processing.

Nomor unit adalah angka integer atau asterik yang mempunyai bentuk umum,
UNIT = unit-specifier.

atau secara sederhana


unit-specifier Format specifier mempunyai bentuk umum, FMT = format-identifier

atau singkatnya
format-identifier

dimana format-identifier adalah sama bentuknya dengan yang dipakai pada pernyataan
PRINT.

Sebagai contoh, nilai dari variabel GRAV dan WEIGHT akan ditampilkan pada peralatan output yang bernomor 6. Pernyataan,
WRITE (6, ) GRAV, WEIGHT

pernyataan yang sepadan seperti,


WRITE (6, FMT = ) GRAV, WEIGHT WRITE (UNIT = 6, FMT = ) GRAV, WEIGHT
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

47

WRITE (NOUT, ) GRAV, WEIGHT WRITE (UNIT = NOUT, FMT = ) GRAV, WEIGHT

dimana NOUT adalah variabel integer yang sebelumnya telah didefiniskan sebagai 6. Apabila nomor 6 adalah peralatan standar dari sistem FORTRAN (biasanya adalah monitor) maka angka 6 dapat digantikan dengan asterik.
WRITE (, ) GRAV, WEIGHT

dan hal ini sama dengan pernyataan


PRINT , GRAV, WEIGHT

Output berformat dari nilai-nilai ini dapat dihasilkan sari pernyataan sebagai berikut,
WRITE (6, 30) GRAV, WEIGHT 30 FORMAT (1X, 2F10.2) WRITE (UNIT = 6, FMT = 30) GRAV, WEIGHT 30 FORMAT (1X, 2F10.2)

Pernyataan READ Umum.

Bentuk umumnya adalah,


READ (control-list) input-list

dimana control-list sama dengan yang dipakai pada pernyataan WRITE.

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

48

5.4 Pemrosesan File

Informasi disimpan dalam disket/hardisk dalam bentuk file. Data pada setiap baris dalam sebuah file yang akan dipanggil (diinputkan) harus mempunyai format yang sama dengan apa yang dikehendaki dalam pernyataan READ. Sebagai contoh, apabila nilai dalam file akan dipanggil dengan format:
10 FORMAT (I3, F5.1, F5.2)

maka data yang tertulis dalam file harus berbentuk, 37 22 1 78 77.5 85.3 100.0 99.5 30.39 30.72 29.95 29.01

sedangkan pernyataan format berikut,


10 FORMAT (I2, F5.0,F4.0)

cocok untuk data yang tertulis sebagai berikut, 37 22 1 78 7753039 8533072 10002995 9952901

Pembukaan File.

Sebelum pembacaan data atau penulisan data dilakukan maka file yang berisi data harus dibuka terlebih dahulu dengan menggunakan pernyataan OPEN dengan bentuk umum,
OPEN (open-list)

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

49

dimana open-list mengandung, 1. Notasi UNIT= yang diikuti nomor unit peralatan input/output yang akan dibuka yang nilainya sama dengan apa yang ada pada pernyataan READ atau WRITE. Notasi UNIT= dapat dihilangkan dengan hanya menuliskan nomor unit. 2. Notasi FILE = yang diikuti oleh nama file mana yang akan dibuka. 3. Notasi STATUS baru atau lama.
OLD berarti file yang akan dibuka sudah ada. NEW berarti file yang akan dibuka belum

yang diikuti oleh OLD atau NEW yang menentukan filenya

ada dan akan dibuat dengan eksekusi pernyataan OPEN. Setelah penulisan data atau pembacaan data selesai maka file perlu ditutup dengan menggunakan pernyataan CLOSE. Bentuk umumnya adalah,
CLOSE (close-list)

dimana close-list adalah nomor unit peralatan input/output. Secara umum penutupan file ini diperlukan apabila file yang bersangkutan akan dibuka lagi dengan menggunakan nomor unit peralatan yang sama. Kalau tidak maka file akan ditutup dengan sendirinya oleh pernyataan STOP atau END. Apabila file tidak ditutup di tengah-tengah program maka pernyataan READ atau WRITE yang menggunakan file yang sama tidak perlu menggunakan pernyataan OPEN lagi dan penulisan/pemanggilan data akan diteruskan pada baris setelah baris terakhir yang ditulisi/dibaca oleh pernyataan READ atau WRITE yang sebelumnya. Sebagai contoh untuk memberikan nilai pada variabel CODE, TEMP, dan PRESS dengan membaca data pada file yang bernama INFO, pernyataan

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

50

OPEN (UNIT = 12, FILE = 'INFO', STATUS = 'OLD')

akan membuka file dan pernyataan,


READ (12, ) CODE, TEMP, PRESS

akan membaca data CODE, TEMP, dan PRESS pada file INFO. Dengan cara yang mirip maka nilai dari variabel CODE, TEMP, dan PRESS dapat dituliskan pada file bernama REPORT dengan cara,
OPEN (UNIT = 13, FILE = 'REPORT', STATUS = 'NEW') WRITE (13, 30), CODE, TEMP, PRESS 30 FORMAT(1X, I3, F7.0, F10.2) Notasi END =

Notasi ini digunakan pada pernyataan READ untuk mengontrol apabila data yang akan dibaca sudah habis. Bentuk umumnya adalah,
END = statement-number

dimana statement-number adalah label/nomor alamat baris yang akan dieksekusi berikutnya apabila datanya telah habis terbaca. Sebagai contoh,
READ (12, , END = 50) CODE, TEMP, PRESS

dapat dipakai untuk membaca data CODE, TEMP, and PRESS dari sebuah file. Apabila datanya sudah habis terbaca maka kemudian lompat ke baris yang mempunyai label 50 yang mungkin untuk menghitung temperatur rata-rata:
50 TMEAN = TSUM / COUNT

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

51

BAB 6 ARRAY SATU DIMENSI


Sampai di sini variable yang kita kenal adalah simbol yang menunjukkan posisi tunggal dalam memori yang berisi hanya satu nilai pada suatu waktu. Tetapi sering kita dituntut untuk memproses sekumpulan data yang saling berhubungan, misalnya hasil nilai ujian, data eksperimen, dan sebagainya. Pada kasus seperti ini pemrosesan data sebagai variabel biasa sangat menjenuhkan (program menjadi lebih panjang). Oleh karena itu dalam FORTRAN dikenal jenis variabel yang disebut array.
6.1 Pengenalan Array dan Variabel Berindeks

Variabel array adalah sekumpulan data bertipe sama dengan jumlah tertentu yang disusun secara berurutan sehingga dapat diakses secara langsung pada suatu operasi dengan menunjuk posisi urutannya. Posisi urutan ini selanjutnya disebut sebagai subscript atau indeks. Sehingga apabila X adalah variabel array, variabel berindeks X(3) menunjuk kepada elemen ketiga dari array X. Sebagai contoh, apabila akan diproses 12 nilai polutan, kita dapat menggunakan array untuk menyimpan data ini. Komputer harus diinstruksikan untuk memesan lokasi untuk 12 nilai tersebut dengan menggunakan komando DIMENSION. Contoh,
DIMENSION POLLUT(12) INTEGER POLLUT

komando-komando di atas mendefinisikan array dengan nama POLLUT yang mempunyai 12 tempat di memori dan berjenis integer. Array ini bersesuaian dengan variabel berindeks sebagai berikut
POLLUT(1) POLLUT(2)

M
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

52

POLLUT(12)

Atau dapat juga dituliskan sebagai berikut,


INTEGER POLLUT(12)

Setiap variabel berindeks POLLUT(1), POLLUT(2), , POLLUT(12) mempunyai lokasi memori sendiri-sendiri sehingga dapat diakses sebagaimana variabel sederhana. Misalnya penunjukkan
POLLUT(4) = 57

akan menimpan nilai 57 pada lokasi keempat dari array POLLUT. Komando output
PRINT , POLLUT(10)

akan menampilkan nilai yang disimpan pada lokasi kesepuluh dari array POLLUT. Untuk menunjukkan lokasi memori keberapa dari suatu array dapat digunakan konstanta, variabel, pernyataan (rumus) yang berjenis integer. Contoh,
IF (POLLUT(N).GT. 90) PRINT , POLLUT(N), 'HAZARDOUS'

akan mengambil nilai ke N dari array POLLUT, dibandingkan dengan 90, dan kemudian ditampilkan pesan HAZARDOUS apabila nilainya lebih besar dari 90. Blok IF
IF (POLLUT(I).GT. POLLUT(I + 1)) THEN TEMP = POLLUT(I) POLLUT(I) = POLLUT(I + 1) POLLUT(I + 1) = TEMP END IF

menukar nilai POLLUT(I) dengan POLLUT(I+1) dan sebaliknya apabila yang pertama lebih besar dari yang kedua.

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

53

Menggunakan array yang indeksnya adalah variabel dalam sebuah DO-loop dan indeks tersebut berubah sesuai dengan jalannya DO-loop sangat praktis mengolah setiap komponen array. Contoh,
DO 10 I = 1, 12 IF (POLLUT(I).GE. 90) PRINT , POLLUT(I), 'HAZARDOUS' 10 CONTINUE

memanggil setiap komponen array POLLUT secara berurutan, dimulai dari POLLUT(1) yang dibandingkan dengan 90 dan menampilkan HAZARDOUS apabila sama atau lebih besar. Hasilnya adalah sama dengan menulis 12 pernyataan yang membandingkan setiap komponen array POLLUT dengan 90:
IF (POLLUT(1). GE. 90) PRINT , POLLUT(1), 'HAZARDOUS' IF (POLLUT(2). GE. 90) PRINT , POLLUT(2), 'HAZARDOUS' IF (POLLUT(3). GE. 90) PRINT , POLLUT(3), 'HAZARDOUS'

M
IF (POLLUT(12). GE. 90) PRINT , POLLUT(12), ' HAZARDOUS' Array POLLUT seperti di atas disebut sebagai array satu dimensi. Di bab berikutnya

dibahas array dengan multi dimensi. Nama dan panjang dari suatu dimensi (dalam hal ini dimensi satu) dapat dideklarasikan dalam pernyataan DIMENSION
DIMENSION list

di mana list adalah daftar array yang mempunyai bentuk umum:


array-name (u)

di mana u adalah panjang dari dimensi dengan indeks paling kecil adalah satu.
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

54

DIMENSION POLLUT(12) INTEGER POLLUT

Pernyataan DIMENSION dapay digunakan untuk mendeklarasikan array lebih dari satu.
DIMENSION POLLUT(12), POINT(20) INTEGER POLLUT REAL POINT

Deklarasi array langsung dapat dilakukan dengan menggunakan komando INTEGER atau
REAL INTEGER GAMMA(3), DELTA(5) REAL KAPPA(10)

6.2. Input/Output Array

Ada tiga cara untuk membaca atau menampilkan array: 1. Menggunakan DO-loop yang mengandung pernyataan input/output. 2. Menggunakan nama array dalam pernyataan input/output. 3. Menggunakan implied DO-loop dalam pernyataan input/output.

Menggunakan DO-loop Input/Output.

Seperti pada sub bab sebelumnya, untuk memproses setiap komponen dari sebuah array dapat menggunakan DO-loop di mana indeks array berubah sesuai dengan jalannya
DO-loop. Untuk membaca atau menampilkan komponen array seseorang dapat dengan

sederhana menempatkan pernyataan input/output yang berisi array berindeks di dalam


DO-loop. Sebagai contoh, apabila VELOC adalah array satu dimensi dan kita ingin

membaca 10 nilai untuk komponen-komponen array VELOC, maka pernyataan berikut


Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

55

dapat digunakan.
REAL VELOC(10) INTEGER I DO 10 I = 1,10 READ , VELOC(I) 10 CONTINUE

Ingat komando READ di sini membutuhkan pembacaan data perbaris. Panjang dimensi dari suatu array dapat lebih panjang dari yang digunakan. Contoh
REAL VELOC(50) INTEGER NUMVEL, I PRINT , 'ENTER NUMBER OF VELOCITIES' READ , NUMVEL

Untuk output.
DO 10 I = 1, NUMVEL READ , VELOC(I) 10 CONTINUE

Input/Output Menggunakan Nama Array. Di sini digunakan pernyataan input/output

yang mengandung nama array tanpa indeks. Hasilnya sama dengan kalau mencantumkan semua komponen array dalam pernyataan input/ouput. Contoh,
REAL VELOC(10) READ , VELOC

adalah sama dengan pernyataan


READ , VELOC(1), VELOC(2), VELOC(3), VELOC(4), VELOC(5),
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

56

VELOC(6), VELOC(7), VELOC(8), VELOC(9), VELOC(10)

Di sini pembacaan data tidak harus dilakukan perbaris, yaitu dapat dilakukan secara bebas asal jumlahnya mencukupi sesuai dengan panjang dimensi array. Perkecualian apabila pembacaan data dilakukan dengan menggunakan suatu format tertentu misal FORMAT
(5F6.1). Menggunakan Implied DO-loop. Metode ini merupakan metode yang paling fleksibel

untuk membaca atau menampilkan komponen array.


Implied DO-loop mempunyai bentuk umum

(i/o-list, control-variable = initial value, limit) or (i/o-list, control-variable = initial value, limit, step-size) Hasil dari sebuah implied DO-loop adalah sama persis dengan DO-loop biasa apabila kurung sebelah kiri diganti dengan dengan DO dan control-variable seperti tertulis setelah daftar input/output. Implied DO-loop dapat digunakan bersama-sama dengan pernyataan
READ, PRINT, or WRITE. Contoh, apabila array VELOC dideklarasikan dengan REAL VELOC(50)

dan 10 komponen pertama akan dibaca, maka kita menggunakan pernyataan


READ , (VELOC(I), I = 1, 10)

yang sepadan dengan


READ *, VELOC(1), VELOC(2), VELOC(3), VELOC(4), VELOC(5) + VELOC(6) VELOC(7) VELOC(8), VELOC(9), VELOC(10)

atau apabila kita ingin membaca data sebanyak NUMVEL komponen maka digunakan

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

57

READ , NUMVEL, (VELOC(I), I = 1, NUMVEL)

6.3 Pernyataan PARAMETER dan DATA

Sebelum membahas pernyataan PARAMETER dan DATA, perlu ditekankan bahwa di dalam pembuatan program sangat dianjurkan untuk menghindari magic number seperti pada pernyataan berikut,
CHANGE = (.1758 - .1257) POPUL

Pernyataan di atas mengandung konstanta yang tidak ada penjelasannya sehingga sulit untuk dimengerti dan terbatas penggunaannya. Lebih baik menggunakan pernyataan sebagai berikut,
CHANGE = (BIRTH - DEATH) POPUL

yang jauh lebih fleksibel dalam pembacaan parameter. Pernyataan PARAMETER digunakan untuk mendefinisikan parameter, yaitu konstanta yang mempunyai nama yang berfungsi sama seperti konstanta biasa. Pernyataan
PARAMETER merupakakan pernyataan yang tidak dieksekusi, tetapi hanya bersifat

mendeklarasikan sehingga harus dituliskan di bagian awal program. Pernyataan


PARAMETER mempunyai bentuk umum, PARAMETER (p1 = c1,, pn = cn,)

di mana p1, , pn adalah nama parameter dan c1, , cn adalah konstanta atau pernyataan yang hanya berisi konstanta atau parameter yang telah didefinisikan sebelumnya. Contoh,
REAL PI PARAMETER (PI = 3.1416)

atau untuk mendefinisikan parameter LIMIT dengan nilai 25,


Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

58

INTEGER LIMIT REAL PI PARAMETER (LIMIT = 25, PI = 3.1416)

Penggunaan PARAMETER yang paling sering adalah pada pendefinisian dimensi suatu
array. Contoh, PARAMETER (NI = 100) REAL TEMP(NI)

Pernyataan DATA digunakan untuk menghubungkan sebuah nama dengan sebuah nilai. Tetapi berbeda dengan PARAMETER, maka pernyataan DATA merepresentasikan sebuah variabel daripada konstanta bernama. DATA mempunyai bentuk umum,
DATA list1/data1/, list1/data1/, , listk/datak/

di mana setiap listi adalah daftar nama variabel yang dibatasi dengan koma, dan setiap
datai adalah daftar konstanta yang dihubungkan dengan daftar nama variabel listi. Sebagai

contoh untuk menetapkan variabel W, X, Y, dan Z masing-masing sebagai 1,0, 2.5, 7.73, dan -2.956, maka digunakan pernyataan berikut,
REAL W, X, Y, Z DATA W, X, Y, Z / 1.0, 2.5, 7.73, -2.956/

Pernyataan DATA dapat juga ditulis


DATA W /1.0/, X, Y /2.5,7.73/, Z /-2.956/

Variabel sebanyak n buah dapat diberi nilai dengan nilai yang sama dengan menuliskan n* di depan nilai yang akan diberikan. Di sini n adalah konstanta integer atau parameter. Sebagai contoh, untuk memberikan nilai 1,2 pada ZETA, 3 pada M dan N, 3,14 pada A, B, C, dan D maka digunakan pernyataan berikut,
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

59

REAL ZETA, A, B, C, D INTEGER M, N DATA ZETA, M, N, A, B, C, D /1.2, 23, 43.14/

Sebagaimana halnya PARAMETER, DIMENSION, dan sebagainya, maka pernyataan


DATA juga pernyataan yang tidak dieksekusi sehingga harus ditulis di bagian deklarasi

program.
Implied DO-loop dapat digunakan dalam pernyataan DATA. Sebagai contoh untuk

memberikan nilai 10 kepada N, dan 0.0 pada lima komponen pertama dari array ALPHA, maka dapat digunakan,
INTEGER N, I REAL ALPHA(10) DATA N, (ALPHA(I), I = 1, 5) /10, 50.0/

6.4 Latihan Soal

2. File dengan nama nilai.txt berisi 1.34 3.37 5.61 7.86 8.98 167.56 110.25 63.04 25.92 1.15

dimana kolom pertama menunjukkan harga x dan kolom kedua menunjukkan harga f(x). Buatlah program untuk menginterpolasi secara linear nilai f(x) pada suatu x sesuai dengan data di atas dengan syarat-syarat sebagai berikut, (a) harga xi dan f(xi) dalam nilai.txt di atas dibaca dengan perintah READ (b) harga x dimana harga f(x) akan dicari di-inputkan (c) diketahui interpolasi linear:
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

60

f ( x ) = f ( xi ) +

f ( xi +1 ) f ( xi ) ( x xi ) xi +1 xi

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

61

BAB 7 ARRAY MULTI DIMENSI


Seperti telah dijelaskan pada bab sebelumnya, penggunaan array sangat menguntungkan untuk memroses data yang mempunyai sifat yang berhubungan. Apabila data yang akan diproses dapat disusun sebagai baris dan kolom maka perlu dibuat array dua dimensi. Dan apabila dapat disusun sebagai baris, kolom, dan rank maka perlu dibuat array tiga dimensi. Tentu saja sesuai dengan sifat datanya maka juga dapat dibuat array multi dimensi.
7.1 Pengenalan Array Multi Dimensi

Banyak kasus di mana data dapat disusun sebagai table. Sebagai contoh, temperature air yang diukur 4 kali sehari masing-masing pada 3 lokasi keluaran system pendingin pada suatu reactor nuklir. Data seperti ini kalau disusun dengan waktu sebagai baris, dan lokasi sebagai kolom, maka didapatkan tabulasi seperti berikut.
Time Location 1 2 3

1 2 3 4

65.5 68.8 70.4 68.5

68.7 68.9 69.4 69.1

62.0 64.5 66.3 65.8

Di tabel ini data 68.7 adalah data yang tercatat pada waktu 1 di lokasi 2. Ke 12 data ini dapat dimasukkan ke array dua dimensi dengan mendeklarasikan sebagai berikut,
DIMENSION TEMTAB(4,3) REAL TEMTAB

Pernyataan di atas memesan 12 (hasil dari 4 kali 3) tempat di memori yang akan dipakai oleh array TEMTAB. Cara lain adalah seperti berikut,
REAL TEMTAB(4,3)

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

62

Variabel dengan dobel indeks,


TEMTAB(2,3)

akan menyatakan data pada baris kedua kolom ketiga, yaitu 64.5 yang merupakan temperatur pada waktu 2 dan lokasi 3. Perhatikan secara konvensi, angka yang di depan menunjukkan baris dan yang di belakang menunjukkan kolom, atau secara umum dapat dinyatakan,
TEMTAB(I,J)

di mana I adalah baris, dan J adalah kolom. Apabila data temperatur yang diambil selama seminggu maka di sini timbul dimensi minggu. Oleh karena itu array perlu dibuat menjadi tiga dimensi dengan mendeklarasikan seperti berikut,
DIMENSION TEMP(4,3,7) REAL TEMP

atau
REAL TEMP(4,3,7)

Pada kasus ini maka array TEMP membutuhkan memori sebanyak 84 (4x3x7). Variabel dengan 3 indeks,
TEMP(1,3,2)

adalah data temperatur pada waktu 1, lokasi 3, dan hari 2. Secara umum,
TEMP(I,J,K)

adalah temperatur dengan baris ke I, kolom ke J, dan rank ke K. Sebagaimana halnya deklarasi variabel biasa maka deklarasi beberapa array dapat

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

63

digabung pada pernyataan DIMENSION atau tipe array seperti berikut.


DIMENSION GAMMA(2, 3), KAPPA(7), BETA(2, 3, 2) REAL GAMMA, BETA INTEGER KAPPA

atau
REAL GAMMA(2, 3), BETA(2, 3, 2) INTEGER KAPPA(7) 7.2 Pemrosesan Array Multi Dimensi

Seperti telah dijelaskan pada isub bab berikutnya, dengan menunjuk komponen array (dengan menentukan indeks dari masing-masing dimensi) maka dimungkinkan akses langsung. Pemrosesan array multi dimensi pada dasarnya adalah sama dengan array satu dimensi yaitu dari komponen paling awal sampai komponen paling akhir (atau sebaliknya). Perbedaannya adalah pada array multi dimensi harus ditentukan pada dimensi mana akan dimulai pemrosesan. Pemrosesan array multi dimensi dapat dilakukan secara rowwise atau columnwise. Proses secara rowwise adalah proses baris per baris, sedang proses secara columnwise adalah proses kolom per kolom. Dalam FORTRAN, apabila tidak didefinisikan maka akan
dilakukan proses secara columnwise. Secara prakteknya, pemilihan proses dilakukan

dengan mengontrol indeks array. Sebagai ilustrasi, kita ambil contoh data temperatur seperti tersebut di atas.

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

64

Time

Location 1 2 3

1 2 3 4

65.5 68.8 70.4 68.5

68.7 68.9 69.4 69.1

62.0 64.5 66.3 65.8

Andaikan kedua belas data di atas akan dibaca dan disimpan sebagai array dua dimensi dengan panjang 4x3 yang dideklarasikan sebagai,
REAL TEMTAB(4,3)

maka TEMTAB mempunyai nilai sebagai berikut,


65.5 68.8 70.4 68.5

68.7 68.9 69.4 69.1

62.0 64.5 66.3 65.8

Apabila ke dua belas data akan dimasukkan dengan urutan 65.5, 68.7, 62.0, 68.8, 68.9, 64.5, 70.4, 69.4, 66.3, 68.5, 69.1, 65.8, maka dibutuhkan proses rowwise. Pertama-tama kita harus membaca 3 data pada waktu 1, atau dengan kata lain membaca data pada baris pertama dan disimpan pada baris pertama TEMTAB. Baris 1 TEMTAB: 65.5 68.7 62. 0

Setelah ketiga data ini dibaca, maka harus dimasukkan 3 data berikutnya pada waktu 2 dan disimpan pada baris kedua TEMTAB. Baris 2 TEMTAB: 68.8 68.9 64.5

Selanjutnya kita memasukkan 3 data berikutnya pada waktu 3 dan disimpan pada baris ketiga TEMTAB. Baris 3 TEMTAB: 70.4 69.4 66.3

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

65

Dan akhirnya kita memasukkan 3 data berikutnya pada waktu 4 dan disimpan pada baris keempat TEMTAB. Baris 3 TEMTAB: 68.5
65.5 68.8 70.4 68.5

69.1 68.7 68.9 69.4 69.1

65.8 62.0 64.5 66.3 65.8

Di lain pihak, apabila data temperatur ingin dimasukkan dengan urutan 65.5, 68.8 70.4, 68.5, 68.7, 68.9, 69.4, 69.1, 62.0, 64.5, 66.3, 65.8, maka dibutuhkan proses columnwise. Pertama-tama kita harus membaca 4 data pada lokasi 1, atau dengan kata lain membaca data pada kolom pertama dan disimpan pada kolom pertama TEMTAB. Kolom 1 TEMTAB: 65.5 68.8 70.4 68.5 Setelah keempat data ini dibaca, maka harus dimasukkan 4 data berikutnya pada lokasi 2 dan disimpan pada kolom kedua TEMTAB. Kolom 2 TEMTAB: 68.7 68.9 69.4 69.1 Dan akhirnya kita memasukkan 4 data berikutnya pada lokasi 3 dan disimpan pada kolom ketiga TEMTAB.
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

66

Kolom 3 TEMTAB: 62.0 64.5 66.3 65.8 Dari hal-hal di atas kita ketahui, (a) dalam proses rowwise, indeks pertama berubah terlebih dahulu dan diikuti indeks kedua, atau dengan kata lain indeks kedua bervariasi pada suatu indeks pertama tertentu. (b) dalam proses columnwise, indeks kedua berubah terlebih dahulu dan diikuti indeks pertama, atau dengan kata lain indeks pertama bervariasi pada suatu indeks kedua tertentu. Untuk array tiga dimensi maka pada prinsipnya adalah sama, yaitu suatu indeks bervariasi pada kondisi indeks-indeks yang lain tetap. Proses input atau output data array multi dimensi dilakukan sama persis seperti satu dimensi menggunakan, 1. Menggunakan DO-loop yang mengandung pernyataan input/output. 2. Menggunakan nama array dalam pernyataan input/output. 3. Menggunakan implied DO-loop dalam pernyataan input/output. Yang perlu diperhatikan adalah menentukan urutan perubahan indeks yang kita inginkan.
Input/Output Menggunakan DO-loop.

Dengan metode ini pernyataan input/output diletakkan dalam suatu satuan DO-loop, di mana masing-masing DO-loop mengontrol perubahan suatu indeks. Sebagai contoh, array TEMTAB(4,3) mempunyai nilai,
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

67 65.5 68.8 70.4 68.5

68.7 68.9 69.4 69.1

62.0 64.5 66.3 65.8

Andaikan kita menggunakan pernyataan berikut,


DO 20 TIME = 1, 4 DO 10 LOC = 1, 3 READ , TEMTAB(TIME,LOC) 10 20 CONTINUE CONTINUE

Di sini, pada waktu DO-loop luar menset TIME sama dengan 1, maka DO-loop dalam akan memvariasikan LOC dari 1 sampai 3. Hasilnya akan sama dengan

pernyataan-pernyataan berikut,
DO 10 LOC = 1, 3 READ , TEMTAB(1,LOC) 10 CONTINUE

atau juga sama dengan pernyataan berikut,


READ , TEMTAB(1,1) READ , TEMTAB(1,2) READ , TEMTAB(1,3)

sehingga 3 nilai pada kolom pertama harus dimasukkan dan dilakukan baris per baris (nilai
nilai nilai ).

65.5 68.7 62.0


Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

68

Setelah selesai membaca ketiga data di atas, maka DO-loop luar menset TIME sama dengan 2, yang diikuti DO-loop dalam akan memvariasikan LOC dari 1 sampai 3. Hasilnya akan sama dengan pernyataan-pernyataan berikut,
DO 10 LOC = 1, 3 READ , TEMTAB(2,LOC) 11 CONTINUE

yang sama dengan pernyataan berikut,


READ , TEMTAB(2,1) READ , TEMTAB(2,2) READ , TEMTAB(2,3)

Hal ini akan berlangsung sampai indeks dari DO-loop luar selesai berputar. Input secara columnwise dapat dilakukan dengan menukar urutan DO-loopnya.
DO 20 LOC = 1, 3 DO 10 TIME = 1, 4 READ , TEMTAB(TIME,LOC) 10 CONTINUE

20 CONTINUE

Pernyataan-pernyataan ini sama dengan pernyataan berikut,


READ , TEMTAB(1,1) READ , TEMTAB(2,1) READ , TEMTAB(3,1) READ , TEMTAB(4,1) READ , TEMTAB(1,2)

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

69

READ , TEMTAB(2,2) READ , TEMTAB(3,2) READ , TEMTAB(4,2) READ , TEMTAB(1,3) READ , TEMTAB(2,3) READ , TEMTAB(3,3) READ , TEMTAB(4,3)

Karena READ dieksekusi sebanyak 12 kali maka data harus dimasukkan sebanyak 12 kali pula atau baris per baris (segera setelah menuliskan nilai kemudian langsung . 65.5 68.8 70.4 68.5 68.7 68.9 69.4 69.1 62.0 64.5 66.3 65.8 Hal-hal di atas juga akan timbul untuk suatu proses output. Di sini yang perlu diperhatikan kalau panjang dari dimensi suatu array cukup panjang maka akan mempersulit input/output sehingga dapat menimbulkan kesalahan terutama dalam pemasukan data.

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

70

Input/Output Menggunakan Nama Array

Seperti telah dibahas pada sub bab sebelumnya, metode ini tidak dapat melakukan input atau output dari sebagian komponen suatu array. Kelemahan lain dari metode ini adalah kita tidak dapat menentukan urutan pemasukan/penampilan data karena secara otomatis akan diproses secara columnwise. Sebagai contoh,
INTEGER MAT(3,4) READ , MAT

apabil dimasukkan data sebagai berikut 77, 56, 32, 25, 99, 10 100, 46, 48, 89, 77, 33 maka nilai dari MAT adalah
77 25 100 99 56 99 46 77 32 10 48 33 Kalau ingin membuat matriks seperti di atas maka TIDAK BOLEH memasukkan data seperti berikut, 77, 25, 100, 99, 56, 99 46, 77, 32, 10, 48, 33
Input/Output Menggunakan Implied DO-loop

Seperti pada sub bab berikutnya, implied DO-loop mempunyai bentuk umum (i/o-list, control-variable = initial-value, limit) atau (i/o-list, control-variable = initial-value, limit, step-size) Metode ini merupakan metode yang paling praktis dalam input atau output array multi
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

71

dimensi. Sebagai contoh,


READ , ((MAT(ROW,COL), COL = 1, 4), ROW = 1, 3)

adalah sama dengan pernyataan,


READ , (MAT(ROW,1), MAT(ROW,2), MAT(ROW,3), MAT(ROW,4)), + ROW = 1, 3)

yang akan berakibat sama dengan


READ , MAT(1,1), MAT(1,2), MAT(1,3), MAT(1,4), + + MAT(2,1), MAT(2,2), MAT(2,3), MAT(2,4), MAT(3,1), MAT(3,2), MAT(3,3), MAT(3,4)

sehingga akan membaca input secara rowwise. Perhatikan karena pernyataan READ hanya timbul satu kali maka data yang akan dibaca bisa dimasukkan semuanya pada satu baris, atau 4 data perbaris sebanyak 3 baris, dan lainnya asal jumlahnya tidak kurang. Dengan menukar informasi counter DO-loop maka memasukkan data secara columnwise juga memungkinkan. Sehingga
READ , ((MAT(ROW,COL), ROW = 1, 3), COL = 1, 4)

akan sama dengan


READ , (MAT(1,COL), MAT(2,COL), MAT(3,COL), COL = 1,4)

or
READ , MAT(1,1), MAT(2,1), MAT(3,1), + + + MAT(1,2), MAT(2,2), MAT(3,2), MAT(1,3), MAT(2,3), MAT(3,3), MAT(1,4), MAT(2,4), MAT(3,4)

Dengan cara yang sama kita juga melakukan input atau output untuk array tiga dimensi.
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

72

Seperti
READ , (((B(I,J,K), I = 1, 2), J = 1, 4), K = 1, 3)

Perhatikan penggunaan dari tanda kurung dan koma. Mereka harus digunakan persis seperti yang ditunjukkan. Setiap implied DO-loop harus dalam tanda kurung, dan koma memisahkan informasi counter dari masing-masing DO-loop. Keuntungan dari metode implied DO-loop adalah kita dapat memasukkan data atau menampilkan hasil sesuai dengan baris dan kolomnya sehingga menghindarkan dari kesalahan urutan pemasukan data atau interpretasi data.

7.3 Latihan Soal

1. Buatlah program untuk menginput 2 buah matriks dan melakukan perkalian antara keduanya dengan syarat sebagai berikut, (a) dilakukan pengecekan apakah kedua matriks dapat dilakukan perkalian (b) tampilkan kedua matriks asalnya dan matriks hasil perkalian. 2. Pada sebuah pabrik elektronik, pembuatan barang-barang membutuhkan komponen-komponen sebagai berikut: Jenis A B C D Jumlah Komponen 1 10 7 4 3 2 4 0 9 2 3 5 12 5 1 4 6 1 0 5 5 7 3 8 6

Harga Komponen 1 =Rp. 100.000, Komponen 2 =Rp. 75.000, Komponen 3 =Rp. 150.000, Komponen 4 =Rp. 120.000, Komponen 5 =Rp. 50.000.

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

73

3. Sebuah perusahaan otomotif memproduksi model kendaraan sebanyak 6. Masing-masing model mempunyai karakteristik kebisingan yang berbeda-beda tergantung kepada kecepatan seperti berikut:

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

74

Model A B C D E F

Kecepatan (mph) 20 88 75 80 68 77 81 30 90 77 83 71 84 85 40 94 80 85 76 91 90 50 102 86 94 85 98 96 60 111 94 100 96 105 102 70 122 103 111 110 112 109 80 134 113 121 125 119 120

Tulislah program yang menampilkan tabel di atas dengan format yang bagus, hitung dan tampilkan (a) level kebisingan rata-rata untuk setiap model kendaraan, (b) level kebisingan rata-rata untuk setiap kecepatan, (c) level kebisingan rata-rata untuk semua kondisi.

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

75

BAB 8 FUNGSI DAN SUBROUTINE


Sampai di sini problem yang kita hadapi merupakan problem yang sederhana sehingga algoritma penyelesaiannya tidak berbelit-belit. Untuk suatu problem yang kompleks maka sangat menguntungkan kalau problemnya dibagi menjadi beberapa problem yang lebih kecil. Problem-problem yang lebih kecil ini kemudian dipikirkan perproblem dalam suatu
subprogram sehingga mudah untuk mendesain algoritmanya. Subprogram yang ada

kemudian digabung menjadi satu sehingga menghasilkan penyelesaian yang komprehensif. Dalam FORTRAN subprogram ini berbentuk sebuah fungsi atau sbuah subrouotine. Keuntungan lain dari penggunaan sebuah subprogram adalah ketidakterikatannya dengan
subprogram yang lain sehingga dapat dites secara sendiri-sendiri tanpa khawatir

mempengaruhi atau dipengaruhi oleh subprogram yang lain. Hal lain adalah dapat dengan mudah menentukan logical-error yang terjadi. Sebuah program besar yang dibagi menjadi beberapa subprogram akan menjadi lebih mudah untuk dipahami karena setiap
subprogram berdiri sendiri.

8.1. Fungsi Standar

Dalam FORTRAN ada fungsi-fungsi standar yang tersedia dalam librarynya. Tabel berikut menunjukkan fungsi-fungsi standar tersebut.
Fungsi
ABS(x) ACOS(x) AINT(x) ANINT(x) ASIN(x) Harga absolut x Arccosine x (dalam radians) Hasil dari pemotongan fraksi desimal dr x x dibulatkan ke integer terdekat Arcsine (dalam radian) dari x

Arti

Jenis Argumen
I, R, DP, (C) R, DP R, DP R. DP R. DP

Hasil Fungsi
Sama dg argumen (R) Sama dg argumen Sama dg argumen Sama dg argumen Sama dg argumen

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

76
R, DP R, DP R, DP, C R, DP I, R, DP, C I, R, DP R, DP, C I, R, DP, C R, DP, C R, DP I, R, DP I, R, DP I, R, DP R, DP I, R, DP, C R, DP, C R, DP R, DP, C R, DP R, DP Sama dg argumen Sama dg argumen Sama dg argumen Sama dg argumen DP Sama dg argumen Sama dg argumen I Sama dg argumen Sama dg argumen Sama dg argumen Sama dg argumen Sama dg argumen I R Sama dg argumen Sama dg argumen Sama dg argumen Sama dg argumen Sama dg argumen

ATAN(x) ATAN2(x,y) COS(x) COSH(x) DBLE(x) DIM(x,y) EXP(x) INT(x) LOG(x) LOG10(x)

Arctangent (dalam radian) dari x Arctangent (dalam radian) dari x/y Cosinus x (dalam radian) Hyperbolic cosine x (dlm radian) Konversi x ke dobel presisi x y if x y, 0 if x< y Fungsi eksponensial ex Konversi x ke integer Logaritma natural x Logaritma basis 10 x

MAX(x1xn) Nilai maksimum dari x1xn MIN(x1xn) MOD(x,y) NINT(x) REAL(x) SIN(x) SINH(x) SQRT(X) TAN(x) TANH(x) Nilai minimum dari x1xn x INT(x/y)y x dibulatkan ke integer terdekat Konversi x ke riil Sine dari x (dalam radian) Hyperbolic sine dari x (dalam radian) Akar kuadrat x Tangent x (dalam radian) Hyperbolic tangent x (dlm radian)

I: integer; R: real; DP: dobel presisi; C: kompleks;

Seperti pernah kita lihat, untuk menggunakan fungsi-fungsi ini dituliskan nama fungsi yang diikuti oleh argument yang ditulis dalam tanda kurung. Sebagai contoh, apabila ALPHA, NUM1, NUM2, SMALL, BETA, dan X dideklarasikan oleh
INTEGER ALPHA, NUM1, NUM2, SMALL
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

77

REAL BETA, X

maka pernyataan
PRINT , ABS(X) ALPHA = NINT(BETA) SMALL = MIN(0, NUM1, NUM2)

akan menampilkan harga absolut X, membuat harga ALPHA sama dengan BETA dibulatkan ke integer terdekat, dan membuat harga SMALL sama dengan nilai minimum dari integer 0, NUM1, and NUM2.
8.2 User-defined Function

Fungsi standar yang ada dalam FORTRAN cukup banyak dan lengkap. Tetapi pada beberapa program sangat menguntungkan kalau kita bisa mendefinisikan fungsi sendiri. Fungsi ini disebut user-defined function. Fungsi ini sekali didefinisikan dapat digunakan sama persis dengan fungsi standar. User-defined functions ada dua jenis yaitu yang berbentuk sederhana dan berbentuk subprogram. Fungsi sederhana dapat didefinisikan dengan pernyataan sederhana
name(argument-list) = expression

di mana argument-list adalah daftar (dapat juga kosong) variabel yang dipisahkan dengan koma. Expression dapat berisi konstanta, variabel, persamaan, atau pernyataan fungsi standar dan user-defined function. Pernyataan-pernyataan ini harus muncul dalam unit program yang sama dengan fungsi sederhana ini dipanggil.

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

78

Dalam pendefinisian sebuah fungsi, nama fungsi harus berbeda dari nama variabel dan fungsi yang telah ada. Tipe dari nilai fungsi ditentukan dari tipe namanya. Variabel-variabel dalam argumen menunjukkan jumlah, urutan, dan tipe argumen. Sebagai contoh,
REAL A, B, HYPO HYPO(A, B) = SQRT(A 2 + B 2)

mendefiniskan fungsi riil dari dua argumen riil. Ketika sebuah fungsi dipanggil, maka argumen yang ada dalam fungsi ini mengikuti yang telah didefinisikan sebelumnya. Sebagai contoh, apabila X, Y, dan Z dedeklarasikan sebagai variabel riil dan nilai X dan Y masing-masing adalah 3.0 dan 4.0, maka dalam pernyataan
Z = HYPO(X, Y)

nilai X dan Y masing-masing menyesuaikan dengan nilai A dan B. Sehingga nilai dari fungsi

3.0 2 + 4.0 2 = 5.0


kemudian dihitung dan dimasukkan ke Z. Dari hal-hal di atas, maka jumlah dan tipe argumen dari fungsi yang dipanggil harus sama dengan jumlah dan argumen dari fungsi yang dideklarasikan. Sebagi ilustrasi
INTEGER M, N, NUMBER, K, L, J1, J2 REAL X, BETA NUMBER(M, N, X) = M INT(X) + N

mendefinisikan fungsi ineteger dengan tiga variabel, yang dua pertama bertipe integer dan yang ketiga bertipe riil. Sehingga,
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

79

PRINT , NUMBER(K, 2, BETA)

adalah diperbolehkan, tetapi


J1 = NUMBER(L, 2) J2 = NUMBER(L, 2.5, BETA)

tidak diperbolehkan. Hal ini karena yang pertama mempunyai jumlah argumen yang salah, dan kedua argumen 2.5 bertipe salah. Nama-nama variabel yang dipakai sebagai argumen dalam pendefinisian fungsi dapat dipakai dimanapun oleh pernyataan yang lain. Sebagai contoh, apabila fungsi POLY didefinisikan oelh pernyataan,
REAL X, Y, POLY, A, B INTEGER K, M POLY(X, Y, K) = X K + 3.5 Y K

maka pernyataan
X = POLY(A, B, 3) - A 4 Y = .5 * POLY(1.0, X + 4, M - 3)

adalah benar. Pernyataan yang dipakai untuk mendefiniskan sebuah fungsi dapat mengandung variabel yang tidak keluar dalam daftar argumen. Sebagai contoh apabila fungsi F didefinisikan oleh
REAL X, A, F, BETA F(X) = X 2 + A

maka pernyataan berikut memberikan nilai 19.5 pada BETA

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

80

A = 3.5 BETA = F(4.0)

Juga dimungkinkan untuk mendefinisikan fungsi yang mempunyai argumen dan/atau nilai logika atau bertipe karakter. Sebagai contoh,
CHARACTER10 STRA, STRB, JOIN21 LOGICAL XOR, P, Q JOIN(STRA, STRB) = STRA // ' ' // STRB XOR(P, Q) = (P.OR.Q).AND. NOT. (P. AND. Q)

mendefinisikan fungsi JOIN sebagai tipe karakter yang mempunyai string dengan panjang 21 dan argumen bertipe karakter dengan panjang 10, dan juga mendefinisikan fungsi logika XOR yang mempunyai argumen bertipe logika.
8.3 Subprogram Fungsi

Fungsi sederhana seperti di atas berisi hanya sebuah pernyataan, atau dengan kata lain fungsi sederhana hanya dapat dipakai untuk mendefinisikan satu persamaan/rumus saja. Juga fungsi sederhana hanya dapat dipanggil pada satu unit program yang sama di mana fungsi sederhana itu didefinisikan. Di lain pihak, subprogram fungsi merupakan sebuah
user-defined function yang dapat berisi beberapa pernyataan sehingga dapat dipakai untuk

mendefinisikan fungsi yang membutuhkan beberapa pernyataan. Juga sebuah subprogram merupakan unit program tersendiri sehingga dapat dipanggil dari unit program yang lain atau di-link dengan program lain. Aturan penulisannya sama dengan penulisan main
program. FUNCTION statement Declaration part Subprogram statement
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

81

END

Pernyataan pertama harus berupa fungsi sederhana dengan bentuk


FUNCTION name(argument-list)

Di sini name adalah nama fungsi dan tipe nama fungsi menentukan tipe nilai fungsi; sedangkan argument-list adalah daftar (bisa kosong) variabel yang dibatasi dengan koma. Variabel-variabel ini menunjukkan jumlah, urutan, dan tipe argumen fungsi. Seperti pada sebuah program utama, sebuah subprogram perlu berisi bagian deklarasi yang dituliskan sebelum pernyataan-pernyataan yang dieksekusi. Pernyataan terakhir dari sebuah subprogram adalah
END

Setelah pernyataan END, nilai dari fungsi akan dikembalikan unit progra yang memanggilnya. END dapat diganti RETURN (untuk beberapa versi FORTRAN perlu dituliskan RETURN yang diikuti dengan END. Sebagai contoh, akan didefinisikan fungsi sebagai berikut, x + 1 if x < y f ( x, y ) = n n x + y if x maka dibuat subprogram sebagai berikut.
FUNCTION F(X, Y) REAL F, X, Y INTEGER N IF (X. LT. Y) THEN F=X+1 ELSE

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

82

PRINT , Masukkan n READ , N F = X N + Y N END IF END

Fungsi F ini dapat dipanggil dengan pernyataan-pernyataan sebagai berikut,


W = F(A, B + 3.0) Z = F(TOP(I), SIN(A)) IF (F(1.1, BETA). LT. EPS) DONE = TRUE

di mana pernyataan-pernyataan ini berisi argumen yang jumlah dan tipenya sama dengan yang ada pada subprogram. Contoh fungsi yang tidak dapat didefinisikan menggunakan fungsi sederhana adalah fungsi faktorial. Faktorial dari bilangan integer non-negatif didefinisikan sebagai berikut, 1 if n = 0 n!= 1 2 3 ...n if n > 0 Fungsi ini dapat didefinisikan dengan menggunakan subprogram fungsi:
FUNCTION FACTOR (N) INTEGER FACTOR, N, I FACTOR = 1 IF (N.GT. 0) THEN DO 10 1 = 2, N FACTOR = FACTOR I 10 END IF CONTINUE

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

83

END

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

84

8.4 Subroutine Subprogram Subroutine subprogram, seperti halnya subprogram, adalah unit program yang digunakan

untuk melakukan suatu tugas tertentu. Perbedaan dengan subprogram fungsi adalah sebagai berikut, 1. Subprogram fungsi digunakan untuk mengembalikan suatu nilai tunggal ke unit program yang memanggilnya, sedangkan subroutine subprogram mengembalikan beberapa nilai atau hanya sekedar melakukan suatu tugas seperti menampilkan hasil perhitungan. 2. Fungsi mengembalikan nilai melalui nama fungsi; sedangkan
subroutine

mengembalikan nilai melalui argumen. 3. Fungsi dipanggil dengan menggunakan namanya, sedangkan subroutine dipanggil dengan perintah CALL. Penulisan subroutine subprogram mirip dengan subprogram fungsi sehingga sama dengan program utama.
SUBROUTINE statement Declaration part Subprogram statements END Subroutine subprograms harus dimulai dengan pernyataan SUBROUTINE dengan bentuk: SUBROUTINE name(argument-list)

di sini name merepresentasikan nama subroutine; argument-list adalah daftar (atau kosong) variabel yang dipisahkan dengan koma. Sebuah subroutine dipanggil dangan pernyataan CALL dengan bentuk
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

85

CALL name(argument-list)

Di sini name merepresentasikan nama subroutine; argument-list adalah daftar (atau kosong) variabel yang dipisahkan dengan koma. Sebagai ilustrasi sederhana, akan dikembangkan subroutine yang menerima dari program utama angka bulan, angka tanggal, dan angka tahun, dan menampilkan ini semua dalam bentuk
mm/dd/yy

Sebagai contoh, angka 8, 14, 1941 akan ditampilkan sebagai 08/14/41


Subroutine ini harus mempunyai argumen 3 buah, berjenis integer yang masing-masing

merepresentasikan angka bulan, tanggal, dan tahun. Subroutine yang pas adalah
SUBROUTINE DATE(MONTH, DAY, YEAR)

di mana MONTH, DAY, dan YEAR harus dideklarasikan sebagai integer pada bagian deklarasi subroutine. Hanya dua digit terakhir dari angka tahun yang akan ditampilkan. Hal ini dapat dilakukan dengan menggunakan fungsi MOD.
YEAR = MOD(YEAR, 100)

Sebagai contoh apabila nilai yang diserahkan adalah 1941 maka pernyataan ini akan menyimpan 41 pada YEAR. Apabila nilai yang diserahkan adalah 1905 maka pernyataan ini akan menyimpan 5 pada YEAR dan akan ditampilkan sebagai 05. Oleh karena itu perlu ditampilkan dengan pernyataan sebagai berikut,
PRINT 10, MONTH, DAY, YEAR

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

86

10

FORMAT (1X, 2(I2.2, '/'), I2.2)

Sehingga subroutine subprogram yang diperlukan adalah sebagai berikut,


SUBROUTINE DATE(MONTH, DAY, YEAR) INTEGER MONTH, DAY, YEAR YEAR = MOD(YEAR, 100) PRINT 10, MONTH, DAY, YEAR 10 FORMAT (1X, 2(I2.2, '/'), I2.2) END Subroutine ini akan dipanggil dengan pernyataan CALL sebagai berikut, CALL DATE(BMONTH, BDAY, BYEAR)

Pernyataan

ini

menyebabkan

nilai

argumen

BMONTH,

BDAY,

dan

BYEAR

masing-masing diserahkan ke MONTH, DAY, dan YEAR. Ketika bagian akhir subroutine dicapai maka pernyataan setelah pernyataan CALL akan dieksekusi. Pada contoh di atas subroutine DATE tidak mengembalikan informasi ke program utama, tetapi hanya menampilkan informasi yang diterimanya. Sebagai ilustrasi sebuah subroutine yang mengembalikan informasi ke program utamanya, akan dibahas problem yang mengkonversikan koordinat polar (r,) dari suatu titik P ke koordinat kartesian, di mana koordinat polar yang kedua adalah sudut dari sumbu x positif. Rumus yang menghubungkan koordinat polar dan koordinat kartesian adalah,
x = r cos y = r sin

Karena subprogram yang melakukan tugas konversi harus mengembalikan dua nilai, maka perlu digunakan subroutine subprogram seperti di bawah,
SUBROUTINE CONVER(R, THETA, X, Y)
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

87

REAL R, THETA, X, Y X = R COS(THETA) Y = R SIN(THETA) END Subroutine ini dapa dipanggil dengan pernyataan CALL CALL CONVER(RCOORD, TCOORD, XCOORD, YCOORD)

di mana RCOORD, TCOORD, XCOORD, dan YCOORD adalah variabel riil. Ketika pernyataan CALL ini dieksekusi, argumen RCOORD, TCOORD, XCOORD, dan YCOORD masing-masing dipasangkan dengan argumen R, THETA, X, dan Y, sehingga masing-masing argumen yang berpasangan mempunyai nilai yang sama.
Pernyataan COMMON

Program yang besar biasanya terdiri dari beberapa unit program, di mana setiap unit program didesain untuk melakukan suatu tugas khusus yang merupakan bagian dari keseluruhan tugas. Umumnya setiap unit program mengakses data umum yang dipakai bersama. Pemakaian bersama dapat dilakukan dengan menggunakan daftar argumen, atau dapat juga dengan menentukan suatu daerah memori yang dipakai bersama. Hal dilakukan dengan menggunakan pernyataan COMMON.
Blank Common. Bentuk pernyataan COMMON yang paling sederhana disebut blank atau unnamed COMMON. Pernyataan ini membuat suatu daerah memori dengan tanpa

diberikan nama. Cara penulisan adalah sebagai berikut,


COMMON list

di mana list adalah daftar variabel atau array yang dibatasi dengan koma. Dengan pernyataan ini maka variabel dan array yang dituliskan di belakang COMMON akan
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

88

disimpan dalam satu paket memori dengan urutan sesuai penulisannya. Pernyataan
COMMON dituliskan pada bagian deklarasi.

Apabila pernyataan blank COMMON ditulis pada beberapa unit program maka hal ini menunjukkan variabel atau array yang dituliskan di belakang pernyataan COMMON pada satu unit saling dipasangkan dengan yang ada di unit yang lain. Hal-hal yang harus terpenuhi adalah: 1. Item yang dipasangkan harus bertipe sama. 2. Apabila bertipe karakter harus mempunyai panjang yang sama. 3. Tidak boleh diberi nilai dengan pernyataan DATA, tetapi dapat digunakan BLOCK
DATA.

4. Tidak boleh digunakan sebagai argumen dari sebuah subprogram. Sebagai contoh, ada sebuah unit program yang mengandung pernyataan,
REAL A, B INTEGER M, N COMMON A, B, M, N

maka empat variabel A, B, M, dan N disimpan di memori dengan urutan:


Variabel Lokasi Blank Common

A B M N

#1 #2 #3 #4

Apabila unit program yang lain mengandung pernyataan,


REAL W, X INTEGER I, J COMMON W, X, I, J
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

89

maka W, X, I, dan J juga ditempatkan pada empat tempat pertama pada daerah common.
Variabel Lokasi Blank Common

W X I J

#1 #2 #3 #4

Sehingga delapan variabel ini dipasangkan dengan cara sebagai berikut,


Variabel Lokasi Blank Common Variabel

A B M N

#1 #2 #3 #4

W X I J

Sebagai ilustrasi penggunaan array pada pernyataan COMMON, bayangkan pernyataan berikut pada suatu unit program
REAL A(3,3) COMMON A

dan pernyataan berikut pada unit program yang lain


REAL ALPHA(3,3) COMMON ALPHA

Maka pernyataan COMMON ini akan menempatkan 9 tempat pertama di memori untuk
array A dan ALPHA dengan urutan columnwise. Array Lokasi Blank Common Array

A(1,1) A(2,1) A(3,1) A(1,2)

#1 #2 #3 #4

ALPHA(1,1) ALPHA(2,1) ALPHA(3,1) ALPHA(1,2)

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

90 #5 #6 #7 #8 #9 ALPHA(2,2) ALPHA(2,2) ALPHA(1,3) ALPHA(2,3) ALPHA(3,3)

A(2,2) A(2,2) A(1,3) A(2,3) A(3,3)

Pada contoh di atas jelas bahwa memungkinkan penggunaan nama variabel atau array yang berbeda pada unit program lain yang berbeda. Akan tetapi lebih menguntungkan kalau menggunakan nama yang sama, terutama pada suatu program dengan ukuran besar.
Named Common. Pada kondisi tertentu, muncul kebutuhan untuk sharing beberapa paket

variabel atau array. Hal ini dimungkinkan dengan menggunakan pernyataan COMMON yang diberi nama atau disebut sebagai named common. Bentuk umumnya adalah,
COMMON /name1/list1/name2/list2

di mana setiap name1, name2, masing-masing adalah nama dari daftar variabel dan
array dari list1, list2, Yang harus diperhatikan adalah hubungan antar item dari suatu

daerah COMMON harus hubungan satu-satu. Sebagai contoh, variabel A, B, L, dan M akan di-sharing antara program utama dan
subroutine GAMMA, dan variabel A, B, N1, N2, N3 di-sharing antara program utama dan subroutine BETA, maka dapat dibuat sebagai berikut, REAL A, B INTEGER L, M, N1, N2, N3 COMMON /FIRST/ A, B /SECOND/ L, M /THIRD/ N1, N2, N3 END

SUBROUTINE GAMMA
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

91

REAL A, B INTEGER L, M COMMON /FIRST/ A, B /SECOND/ L, M END

SUBROUTINE BETA REAL A, B INTEGER N1, N2, N3 COMMON /FIRST/ A, B, /THIRD/ N1, N2, N3 END

Hal yang memungkinkan penggunaan satu pernyataan COMMON untuk menyatakan


blank dan named common. Pada kasus ini daerah blank diberi nama dengan space kosong

di antara slash (/).


REAL A, B INTEGER L, M. N1, N2, N3 COMMON // A,B /SECOND/ L,M /THIRD/ N1, N2, N3 END

SUBROUTINE GAMMA REAL A, B INTEGER L, M COMMON // A,B /SECOND/ L,M END

SUBROUTINE BETA
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

92

REAL A, B INTEGER N1, N2, N3 COMMON // A,B /THIRD/ N1, N2, N3 END Contoh penggunaan function REAL F,A,B,X,DELX,SUM INTEGER N,I C F(X)=X**2 + 1 C PRINT *,'MASUKKAN BATAS BAWAH, ATAS, & JUMLAH SEGMEN' READ *, A,B,N DELX = (B-A)/N C SUM = 0 X = A + DELX/2 C DO 10 I=1,N SUM = SUM + F(X) X = X + DELX 10 CONTINUE SUM = SUM * DELX PRINT 20,'NILAI PENDEKATAN DG',N,' SEGMEN ADALAH',SUM 20 FORMAT(1X,A,I3,A,F10.5) END Contoh penggunaan function subprogram (1) REAL ITEM(50), MEAN INTEGER NUM,I C PRINT *,'MASUKKAN JUMLAH ITEM DAN ITEMNYA' READ *,NUM,(ITEM(I),I=1,NUM)
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

93

PRINT 10,NUM, MEAN(ITEM,NUM) 10 FORMAT(1X,'MEAN OF THE',I3,'NUMBER IS',F6.2) END C FUNCTION MEAN(X,N) C INTEGER N,I REAL MEAN, X(N), SUM C SUM = 0 DO 10 I=1,N SUM = SUM + X(I) 10 CONTINUE MEAN = SUM/N END Contoh penggunaan function subprogram (2) C C C C C REAL F,A,B,X,DELX,SUM INTEGER N,I C PRINT *,'MASUKKAN BATAS BAWAH, ATAS, & JUMLAH SEGMEN' READ *, A,B,N DELX = (B-A)/N C SUM = 0 X = A + DELX/2 C DO 10 I=1,N SUM = SUM + F(X)
Dr. Tri Agung Rohmat

PROGRAM INI DIPAKAI UNTUK MENGHITUNG NILAI PENDEKATAN INTEGRAL DARI FUNGSI F(X)= 1 IF X < 0 = 1-X^2 IF 0<=X<=1 = LN X IF X > 1

Hand Out Pemrograman Komputer

94

X = X + DELX 10 CONTINUE SUM = SUM * DELX PRINT *,'NILAI PENDEKATAN DG',N,'SEGMEN ADALAH',SUM END C FUNCTION F(X) REAL X,F C IF(X.LT.0) THEN F = 1 ELSE IF (X.LE.1.0) THEN F = 1 - X**2 ELSE F = LOG(X) END IF RETURN END Contoh penggunaan subroutine subprogram INTEGER LIMIT,ROWS1,COLS1,ROWS2,COLS2,I,J,K PARAMETER (LIMIT=10) REAL MAT1(LIMIT,LIMIT),MAT2(LIMIT,LIMIT),PROD(LIMIT,LIMIT), + SUM

CHARACTER*15 FORM DATA FORM /'(1X, ##F8.2)'/ C 10 PRINT *,'MASUKKAN DIMENSI MAT1' READ *, ROWS1, COLS1 PRINT * PRINT *,'MASUKKAN DIMENSI MAT2' READ *, ROWS2, COLS2 IF(COLS1.NE.ROWS2) THEN PRINT *,'KOLOM MAT1 HARUS SAMA DG BARIS MAT2'
Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

95

GOTO 10 END IF C PRINT * PRINT *,'MASUKKAN KOMPONEN MAT1 (PERBARIS)' DO 20 I=1,ROWS1 READ *, (MAT1(I,J),J=1,COLS1) 20 C PRINT * PRINT *,'MASUKKAN KOMPONEN MAT2 (PERBARIS)' DO 30 I=1,ROWS2 READ *, (MAT2(I,J),J=1,COLS2) 30 C CALL MATMUL(MAT1,MAT2,PROD,LIMIT,ROWS1,COLS1,ROWS2,COLS2) PRINT * PRINT *, 'PRODUCT MATRIKS ADALAH' DO 70 I=1,ROWS1 PRINT FORM, (PROD(I,J),J=1,COLS2) 70 CONTINUE END C SUBROUTINE MATMUL(MAT1,MAT2,PROD,LIMIT,M,N,P,Q) INTEGER M,N,P,Q,LIMIT,I,J,K REAL MAT1(LIMIT,LIMIT),MAT2(LIMIT,LIMIT),PROD(LIMIT,LIMIT), + C DO 10 I =1,M DO 20 J=1,Q SUM = 0 DO 30 K=1,N SUM = SUM + MAT1(I,K)*MAT2(K,J) SUM CONTINUE CONTINUE

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

96

30

CONTINUE PROD(I,J)=SUM

20 10 C

CONTINUE CONTINUE

RETURN END

Dr. Tri Agung Rohmat

Hand Out Pemrograman Komputer

97

Daftar Pustaka

Chapra, S.T. and Canale, R.P., Numerical Methods for Engineers With Personal Computer Applications (Intl Student Ed.), 1985, McGraw-Hill, Singapore Mayo, W.E., Schaum's Outline of Programming With Fortran 77, 1995, Schaum, New York McCormick, J.M. and Salvadori, M.G., Numerical Methods in FORTRAN, 1987, Prentice Hall of India Private Ltd., New Delhi Nyhoff, N. and Leestma, S., FORTRAN 77 for Engineers and Scientists, 2nd Ed., 1988, Macmillan Pub. Co., New York

Dr. Tri Agung Rohmat

Anda mungkin juga menyukai