Your SlideShare is downloading. ×
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

90594480 bab-4-larik-array-fotran

599

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
599
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
17
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. STANDAR KOMPETENSI Setelah menyelesaikan mata kuliah Komputer mahasiswamampu mengembangkan paket program aplikasi mandiri untukmenyelesaikan masalah keteknikan khususnya Teknik Mesin dengan bahasa FORTRAN KOMPETENSI DASAR Mahasiswa dapat membuat program aplikasi untuk memanipulasi data dalam bentuk larik (array) dan dapat melakukan operasi aritmatika terhadapnya. INDIKATOR 1. Mahasiswa dapat menggunakan ungkapan spesifikasi (specification statement) DIMENSION, IMPLICIT, dan TYPE dalam mendefinisikan sebuah larik. 2. Mahasiswa mampu menggunakan ungkapan operasi aritmatika pada larik berdimensi satu dalam sebuah program aplikasi. 3. Mahasiswa dapat melakukan manipulasi aritmatika terhadap larik berdimensi banyak dalam sebuah program aplikasi. 4. Mahasiswa dapat memanipulasi tampilan program aplikasi larik yang berkaitan dengan tampilan 6 67
  • 2. Pemrograman Komputer Bahasa FORTRAN - 68 masukan dan keluaran sehingga program lebih interaktif. Variabel-variabel yang digunakan sedemikian jauh disebut variabel tanpa indeks atau variabel skalar. Tiap variabel skalar mewakili sebuah sel memori tempat disimpannya sebuah nilai tunggal, yaitu sebuah variabel X dapat dipandang sebagai sebuah kotak : X Sangat sering, seseorang ingin menggunakan satu nama untuk mengacu pada sebuah daftar nilai yang mempunyai ciri sama, misalnya nomor pengenal mahasiswa dalam kelas ilmu komputer, skor suatu nilai ujian dan sebagainya. Ini dilakukan dengan menggunakan larik atau variabel berindeks. Dalam matematika, orang menggunakan suatu lambang dengan tikalas berbeda untuk menunjukkan elemen-elemen suatu himpunan yang diketahui. Sebagai contoh s1,s2,…s25 boleh digunakan untuk menunjukkan skor suatu kelas dengan 25 mahasiswa. Menggunakan penulisan tikalas, dapat ditulis : 25 ∑s i =1 i = s1 + s 2 + ... + s 25 untuk jumlah skor, dan 25 (∑ si ) / 25 i =1 untuk rata-rata kelas. Dengan perkataan lain, penggunaan tikalas mutlak penting dalam pengembangan penulisan ringkas untuk memanipulasi aljabar dari bilangan-bilangan yang dicakup.4.1 STATEMEN DIMENSION, IMPLICIT DAN TYPE Sebelum suatu larik linier atau dimensi banyak digunakan dalam sebuah program, programmer harus melengkapi kompiler dengan informasi berikut : 1. Nama larik; 2. Jumlah indeks dalam larik (yakni apakah larik adalah dimensi satu, dimensi dua, dan seterusnya); 3. Jumlah alokasi memori yang harus disediakan, atau nilai maksimum tiap indeks. Hal di atas dilaksanakan dengan penggunaan pernyataan tipe DIMENSION (seperti halnya pernyataan TYPE, pernyataan DIMENSION adalah tak dapat dieksekusi dan harus ditempatkan sebelum suatu pernyataan yang dapat dieksekusi di dalam program). A. STATEMEN DIMENSION
  • 3. Pemrograman Komputer Bahasa FORTRAN - 69 Kegunaan statemen DIMENSION adalah untuk menyatakan bahwa suatu variabel merupakan variabel berindeks sekaligus menentukan jumlah dari elemen-elemennya. Bentuk umum statemen ini adalah sebagai berikut : DIMENSION<array>[,<array>(<dim>]… Dimana : <array> adalah nama dari suatu variabel berindeks yang didevinisikan <dim> adalah deklarasi dimensi yang menunjukkan jumlah dari elemen larik. Dalam mendeklarasaikan larik, hal-hal berikut patut diperhatikan : 1. Suatu array (larik) maksimum dapat berdimensi sampai 7 buah dimensi dan ukuran maksimum seluruh larik adalah 64 Kilo byte (Kb) atau 65536 byte. 2. Untuk WATFOR77 indeks maksimum adalah 6500 indeks untuk bilangan real. 3. Nilai indeks tidak boleh nol atau negatif 4. Nilai indeks tidak boleh lebih dari nilai indeks yang dinyatakan dalam statemen DIMENSION. Contoh 4.1 : DIMENSION AMOUNT (100) DIMENSION ID(50), TAX(150) DIMENSION AMOUNT(100,100) Pada contoh pertama di atas, statemen tersebut memerintahkan kompiler bahwa AMOUNT adalah nama suatu larik linier (berdimensi satu) dan memerintahkan kompiler untuk mengalokasikan 100 lokasi memori untuknya. Pada statemen ke dua, mendeklarasikan dua buah larik linier dengan 50 elemen untuk ID dan 150 elemen untuk TAX. Sedangkan statemen ke tiga mendefinikan larik berdimensi banyak yang bernama AMOUNT dengan elemen 100x100 (100 baris dan 100 kolom).B. STATEMEN IMPLICIT Statemen IMPLICIT digunakan untuk mendefinisikan tipe default dari nama yang dibuat oleh pembuat program. Bentuk umum statemen ini adalah sebagai berikut : IMPLICIT <type>(<a>[<a>]…)[,<type(<a>[,<a>],…)…] Dimana : <type> adalah salah satu dari tipe : INTEGER INTEGER*2 INTEGER*4
  • 4. Pemrograman Komputer Bahasa FORTRAN - 70 REAL REAL*4 REAL*8 DOUBLE PRECISION LOGICAL LOGICAL*2 LOGICAL*4 CHARACTER <a> adalah suatu huruf atau range dari huruf. Bila berbentuk range dari huruf, harus dari urutan kecil kebesar. Statemen IMPLICIT mendefinisikan tipe dari semua variabel ataularik yang huruf pertama dari namanya disebutkan sebagai <a>. Huruf yangsama tidak boleh didefinisikan ulang dengan statemen IMPLICIT. Variabelatau larik yang sudah didefinisikan dengan statemen IMPLICIT dapatdidefinisikan ulang dengan statemen TYPE.Contoh 4.2 C234567890 IMPLICIT INTEGER A ANGKA = 5 AKAR= 15 . . .Statemen diatas mendeklarasikan semua nama variabel dan larik yang diawalidengan huruf A dianggap sebagai tipe integer, sudah bukan real lagi.Contoh 4.3 a : marupakan variabel integer edit descriptor harus sesuai tipe data C234567890 NILAI = 57.35 BOBOT = 1.5 NILAIAKHIR= NILAI*BOBOT WRITE(*,200) NILAIAKHIR 200 FORMAT(1X,’NILAIAKHIR=’ ,F6.2) ENDBila program ini dijalankan, akan tampak sebagai berikut : Terjadi kesalahan pada format data Kode salah 1241 menunjukkan jenis kesalahan Isi dari register di CPU ? Error: Data format error in file USER
  • 5. Pemrograman Komputer Bahasa FORTRAN - 71 Error code 1241, status 000E PC = 4C74: 012C; ss = 51CF, FP = F52A, SP = F52C Kesalahan yang terjadi disebabkan karena variabel dengan huruf awal I,J,K,L,M,N, kalau tak didefinisikan lain (default), berisi data integer. Sehingga, variabel NILAI dan NILAIAKHIR dianggap sebagai data integer, tetapi pada program diatas berisi data real dan format outputnya digunakan F6.2 yaitu format untuk bilangan real. Untuk dapat menggunakan program tersebut tanpa menimbulkan adanya kesalahan, gunakan statemen IMPLICIT seperti dalam program berikut : mendefinisikan semua nama yang diawali C234567890 dengan huruf N adalah tipe real IMPLICIT REAL (N) NILAI = 57.35 BOBOT = 1.5 NILAIAKHIR= NILAI*BOBOT WRITE(*,200) NILAIAKHIR 200 FORMAT(1X,’NILAIAKHIR =’ ,F6.2) END Bila dijalankan akan didapat hasil : NILAIAKHIR = 86.02 Contoh 4.4 : nama diawali huruf A, B, C, D  INTEGER nama diawali N  karakter panjang 20 byte C234567890 nama diawali A,B,C,D,P,Q dan X  INTEGER IMPLICIT INTEGER (A-D) IMPLICIT CHARACTER*20 (N) IMPLICIT INTEGER(A-D, P-G,X) . . .C. STATEMEN TYPE Statemen type berfungsi untuk mendefinisikan tipe dari suatu nama yang dibentuk oleh pembuat program. Bentuk umum statemen ini adalah sebagai berikut : <type> <nama> [,<nama>] ... Dimana : <type> adalah salah satu dari tipe : INTEGER INTEGER*2
  • 6. Pemrograman Komputer Bahasa FORTRAN - 72 INTEGER*4 REAL REAL*4 REAL*8 DOUBLE PRECISION LOGICAL LOGICAL*2 LOGICAL*4 CHARACTER <nama> adalah nama dari variabel, nama larik, nama fungsi atau nama fungsi eksternal.Statemen type mempunyai atauran sebagai berikut :1. Suatu statemen type harus ditulis sebelum executable statement2. Nama yang ditunjukkan di statemen type tidak boleh didefinisikan lebih dari sekali.3. Suatu statemen type tidak boleh diberi statemen label .Contoh 4.5 : C234567890 REAL NILAI1, NILAI2, NILAI3, JUMLAH . . .Berarti, nama variabel NILAI1, NILAI2, NILAI3 dan JUMLAH adalahbertipe real.Contoh 4.6 : C234567890 CHARACTER NAMA*10, ALAMAT*20 REAL*8 NILAI1, NILAI2, NILAI3*4 . . .Berarti variabel NAMA adalah tipe karakter 10 byte, ALAMAT adalah tipekarakter 20 byte, NILAI1 dan NILAI2 adalah tipe real 8 byte dan NILAI3 tipereal 4 byte.Statemen type dapat digunakan untuk mendefinisikan ulang nama yang sudahdidefinisikan oleh statemen IMPLICIT :
  • 7. Pemrograman Komputer Bahasa FORTRAN - 73 Contoh 4.7 : C234567890 IMPLICIT INTEGER (A-D,X) REAL BOBOT . . . berarti nama variabel BOBOT termasuk dalam tipe integer, tetapi tipe real, sedang nama lain yang diawali huruf B tetap bertipe integer. Statemen TYPE juga dapat menggantikan statemen DIMENSION untuk mendefinisikan larik beserta jumlah elemennya. Contoh 4.8 : C234567890 DIMENSION A(5,5), NILAI(100) . . . dapat juga ditulis dengan arti yang sama sebagai berikut : REAL A(5,3) INTEGER NILAI(100) . . .4.2 LARIK BERDIMENSI SATU Larik linier atau dimensi-satu dengan N elemen adalah suatu daftar atau serangkai N sel memori, dimana tiap sel boleh menyimpan sebuah nilai. Sel-sel ini mempunyai nama sama dan berdampingan satu sama lin. Suatu sel khusus dalam larik dimensi-satu ini dikenali oleh sebuah bilangan bulat K, yaitu posisinya dalam larik (jadi 1≤ K ≤ N). Sebagai contoh, andaikan ID sebuah larik dimensi-satu dengan 50 elemen, maka ID dapat digambarkan sebagai serangkaian 50 kotak seperti pada gambar 4.1. Tiap sel dalam larik diacu oleh nama dan posisinya, disebut indeks. Secar menjenis, ID(1)menunjukkkan elemen pertama dari larik, ID(2) menunjukkan elemen ke dua, dan seterusnya. Lebih lanjut, jika K terdefinisi dan 1≤ K ≤ 50, maka ID(K) mengacu pada elemen ke-K dari larik.
  • 8. Pemrograman Komputer Bahasa FORTRAN - 74 Indeks ID 1 ID 2 ID 3 . . . ID 48 ID 49 ID 50 Gambar 4.1 Larik dimensi-satu Walaupun elemen sebuah larik ditentukan oleh nama larik diikuti olehtikalas yang sesuai (diapit dalam tanda kurung), tiap elemen larik dapat munculdalam ekpresi hitungan sama halnya seperti variabel skalar.Contoh 4.9 : X = AMOUNT(5) + Q PAY(K) = HOURS(K) * 40.0 TAX(6) = 25.75 Tetapi kita tidak dapat menggunakan nama larik itu sendiri (tanpamenyebutkan indeksnya) dalam pernyataan hitungan. Dalam contoh 4.10 berikutGRADE adalah sebuah larik dan SUM adalah variabel biasa, sehingga statemen-statemen berikut adalah salah, karena nama GRADE mengacu kepada seluruhelemen larik, sedangkan hitungan mencakup lokasi-lokasi memori sendiri-sendiri.Contoh 4.10 SUM = GRADE + SUM GRADE = SUM + 10.0 GRADE = GRADE + 20.0Kita juga dapat mengacu elemen-elemen larik dalam pernyataan masukan/keluaran seperti READ(*,10) X, TAX(3)
  • 9. Pemrograman Komputer Bahasa FORTRAN - 75 MULAIContoh 4.11 : DO 100 C MENENTUKAN RATA-RATA KELAS I =1, 25 C DAN JUMLAH MAHASISWA DIBAWAH C RATA-RATA KELAS BACA SCORE KE I C SCORE(I) C234567890 DIMENSION SCORE(25) CETAK C SCORE(I) C BACA SKOR C 10 DO 100 I = 1, 25 0 READ (*,10) SCORE(I) WRITE (*,10) SCORE(I) SUM  0 10 FORMAT (F10.1) 100 CONTINUE C DO 200 C MENGHITUNG JUMLAH DAN RATA-RATA I =1, 25 C SUM=0.0 SUM  SUM+SCORE(I) DO 200 I=1,25 SUM=SUM+SCORE(I) 200 CONTINUE 20 AVE=SUM/25.0 0 WRITE(*,20) AVE 20 FORMAT(1X,’RATA-RATA KELAS’ AVE  SUM/25 1,1X,F10.1) C C HITUNG BILANGAN DIBAWAH RATA-RATA CETAK AVE C K=0 K0 DO 300 I=1,25 IF(SCORE(I) .LT. AVE) K=K+1 DO 300 I =1, 25 300 CONTINUE WRITE(*,30) K 30 FORMAT(1X,’BANYAKNYA DIBAWAH 1RATA-RATA’,1X,I3) YA STOP SCORE( END I) TIDAK K  K+1 30 0 CETAK K SELESAI Gambar 4.2 Diagram Alir Contoh 4.11
  • 10. Pemrograman Komputer Bahasa FORTRAN - 764.3 LARIK BERDIMENSI BANYAK Dalam matematika, sebuah matriks didefinisikan sebagai rangkaian bilangan berbentuk siku empat, seperti berikut ini : Baris pertama a11 a12 a13 a14 Baris kedua a21 a22 a23 a24 Baris ketiga a31 a32 a33 a34 Kolom Kolom Kolom Kolom pertama kedua ketiga keempat adalah sebuah matriks 3 x 4, yakni sebuah matriks dengan tiga baris (barisan bilangan mendatar) dan empat kolom (barisan bilangan tegak). Tiap elemen dalam matriks dikenali dengan dua bilangan bulat, tikalas-tikalasnya. Tikalas pertama memberitahu posisi baris dan tikalas kedua memberitahu posisi kolomnya. Misalnya a21 muncul di baris kedua, kolom pertama, a32 muncul di baris ketiga kolom kedua, dan seterusnya. Di dalam FORTRAN, larik dimensi-dua mxn adalah daftar dari m▪n sel memori (elemen-elemen larik) di mana suatu elemen tertentu ditentukan oleh sepasang bilangan bulat K, L, di mana 1 ≤ K≤ m dan 1 ≤ L ≤ n. bilangan-bilangan bulat K, L disebut tikalas-tikalas dari elemen; tikalas pertama K disebut baris dan tikalas kedua L disebut kolom dari elemen larik. Elemen larik berdimesi-banyak dapat digambarkan seperti dalam gambar 4.3 berikut. A(1,1) A(1,2) A(1,3) A(1,4) Tikalas A (1,1) A(2,1) A(2,2) A(2,3) A(2,4) A (2,1) A (3,1) A(3,1) A(3,2) A(3,3) A(3,4) . . . . . . A (2,4) A (3,4) Gambar 4.3 Larik Dimensi-Dua (3x4) Secara serupa, suatu larik berdimensi-tiga m x r x s adalah sebuah daftar dari m ▪ r ▪ s sel memori (elemen larik) dimana suatu elemen tertentu ditentukan oleh tiga bilangan bulat J, K, L, dimana : 1 ≤ J≤ m , 1 ≤ K ≤ r, 1 ≤ L≤ s sebagai contoh, andaikan B adalah sebuah larik dimensi-tiga 2 x 4 x 3, maka B mempunyai 2 ▪ 4 ▪ 3 = 24 elemen, yang disajikan dalam gambar 4.4.
  • 11. Pemrograman Komputer Bahasa FORTRAN - 77 Halaman 3B(1,1,3)B(1,2,3)B(1,3,3)B(1,4,3)B(2,1,3)B( 2,2,3)B(2,3,3)B(2,4,3) Halaman 2B(1,1,2)B(1,2,2)B(1,3,2)B(1,4,2)B(2,1,2)B( 2,2,2)B(2,3,2)B(2,4,2)Halaman1B(1,1,1)B(1,2,1)B(1,3,1)B(1,4,1)B(2,1,1)B(2,2,1)B(2,3,1)B(2,4,1) Gambar 4.4 Larik Dimensi-Tiga (2 x 4 x 3) Contoh 4.12 : C PROGRAM MATRIK N X M C C234567890 REAL*4 A(20,20) C WRITE(*,’(1X,A,)’) ’JUMLAH BARIS ?’ READ(*,’(BN,I2)’)N WRITE(*,’(1X,A,)’) ’JUMLAH KOLOM ?’ READ(*,’(BN,I2)’)M C C MEMASUKKAN DATA MATRIK C WRITE(*,*) DO 101 I=1,N DO 100 J=1,M WRITE(*,’(1X,’’A(’’,I2,’’,’’,I2,’’)?’’,)’)I,J READ(*,’(F7.2)’) A(I,J) 100 CONTINUE 101 CONTINUE C C MENCETAK MATRIK C WRITE(*,*) WRITE(*,’(/,1X,A)’)’DATA MATRIK A : ’ DO 400 I=1,N 400 WRITE(*,’(1X,100(F9.2)’)(A(I,J),J=1,M) END
  • 12. Pemrograman Komputer Bahasa FORTRAN - 784.4 MASUKAN/KELUARAN LARIK Andaikan A dan B adalah larik linier masing-masing dengan empat dan tiga elemen. Seperti telah dinyatakan sebelumnya, elemen-elemen A dan B dapat muncul dalam pernyataan masukan/keluaran seperti variabel-variabel biasa. Hal ini dapat dilihat dalam contoh 4.13 berikut : Contoh 4.13 : READ(*,10) A(3), B(2), J, K memberitahu komputer untuk membaca nilai-nilai untuk A(3) dan A(2) sebagaimana halnya untuk J dan K. Khususnya, pemasukan keseluruhan larik A, B dengan mendaftarkan semua elemennya, sebagai contoh berikut : Contoh 4.14 : READ(*,20) A(1), A(2), A(3), A(4), B(1), B(2), B(3) Cara ini efektif untuk variabel larik dengan elemen sedikit tetapi tidak akan efisien digunakan jika terdapat ratusan elemen larik. A. Nama Larik dalam Statemen Masukan/Keluaran Cara membaca keseluruhan elemen sebuah larik dapat dilakukan dengan menggunakan nama larik tersebut dalam statemen masukan/keluaran. Sebagai contoh pernyataan read dalam contoh 4.14 dapat disederhanakan menjadi pernyataan dalam contoh 4.15 berikut : Contoh 4.15 : READ(*,20) A, B Tetapi, harus dengan jelas dimengerti aksi yang dihasilkan oleh pernyataan masukan/keluaran yang demikian : 1. keseluruhan larik akan disimpan atau dicetak; yakni, setiap lokasi memori yang dialokasikan oleh pernyataan DIMENSION akan diberi satu nilai. Dengan demikian, jika SCORE telah mendeklarasikan sebuah larik dengan DIMENSION SCORE(35)
  • 13. Pemrograman Komputer Bahasa FORTRAN - 79 Maka bentuk READ(5,30) SCORE 30 FORMAT(5F10.1) tidak boleh digunakan jika hanya ingin membaca nilai ke dalam SCORE2. Elemen-elemen larik akan diberi nilai atau dicetak sesuai dengan urutan penyimpanan dari larik (lihat gambar 4.1, 4.3, 4.4), yaitu, tikalas pertama berubah paling cepat, tikalas kedua berikutnya, dan seterusnya. Contoh 4.16 : Andaikan C, D, dan E adalah larik-larik yang dideklarasikan oleh DIMENSION C(3), D(2,3,2), E(3,2) Maka pasangan WRITE_FORMAT WRITE(*,30) C, D, E 30 FORMAT(6X,4F10.2) memerintahkan komputer untuk mencetak sejumlah 3 + 2▪3▪2 + 3▪2 = 21 nilai; 3 dari larik C, 12 dari D dan 6 dari E. Karena pernyataan FORMAT hanya mempunyai empat medan numerik, maka pada tiap baris akan dicetak empat bilangan, dan pernyataan FORMAT akan digunakan berulang-ulang sampai semua nilai tercetak. Jadi, keluaran akan seperti berikut ini : C(1) C(2) C(3) D(1,1,1) D(2,1,1) D(1,2,1) D(2,2,1) D(1,3,1) D(2,3,1) D(1,1,2) D(2,1,2) D(1,2,2) D(2,2,2) D(1,3,2) D(2,3,2) E(1,1) E(2,1) E(3,1) E(1,2) E(2,2) E(3,2) Jika digunakan 6 medan numerik seperti berikut : 30 FORMAT (6X,6F10.2)
  • 14. Pemrograman Komputer Bahasa FORTRAN - 80 maka keluaran akan berisi enam bilangan pada tiap barisnya, dengan urutan penampilan tidak berubah.B. Do Loop Terselubung Jika diinginkan untuk menyimpan atau mencetak sebagian dari suatu larik, atau andaikan tidak ingin menyimpan atau mencetak larik menurut urutan penyimpanan yang telah ditentukan, hal ini dapat dilakukan dengan menggunakan sebuah DO loop. Pada contoh berikut, dimisalkan variabel AMOUNT adalah sebuah larik linier dengan 100 elemen yang mungkin. Contoh 4.17a : (larik berimensi-satu) DO 100 I=11,N,1 READ(*,10) AMOUNT(I) 100 CONTINUE Contoh 4.17b : (larik berdimensi-dua) DO 101 I=1,N DO 100 J=1,M WRITE(*,’(1X,’’A(’’,I2,’’,’’,I2,’’)?’’,)’)I,J READ(*,’(F7.2)’) A(I,J) 100 CONTINUE 101 continue memberitahukan komputer untuk membaca nilai-nilai AMOUNT(11), AMOUNT(12), sampai AMOUNT(N), dimana N telah didefinisikan sebelumnya dan N<100. Cara tersebut diatas dapat juga dilakukan/ disederhanakan dengan pernyataan seperti contoh berikut : Contoh 4.18 : READ(*,10)(AMOUNT(I), I=11,N,1) Ekspresi (AMOUNT(I), I = 11, N, 1 disebut suatu DO loop terselubung karena, ekspresi tersebut mangakibatkan berlangsungnya suatu aksi loop di dalam pernyataan READ.
  • 15. Pemrograman Komputer Bahasa FORTRAN - 81 Contoh 4.19 : (matrik m x n) DO lopp terselubung WRITE(*,’(/,1X,A)’)’DATA MATRIK A : ’ DO 400 I=1,N 400 WRITE(*,’(1X,100(F9.2)’)(A(I,J),J=1,M)SOAL-SOAL YANG DIPECAHKAN 1. Andaikan N dan larik linier A dengan N elemen berada di memori. Tuliskan sebuah ruas program FORTRAN yang : a. Menghitung jumlah kuadrat-kuadrat : SUM = A12 + A2 + ... + An 2 2 b. Menghitung hasil kali PROD=(1-A1)(1-A2)…(1-AN) Jawab : a. Untuk kasus ini, pertama-tama tetapkan SUM0.0 sebelum melaksanakan penjumlahan, sehingga programnya menjadi : SUM=0.0 DO 100 K=1,N SUM=SUM+A(K)**2 100 CONTINUE b. Untuk kasus ini, petama-tama tetapkan PROD1.0 sebelum melaksanakan perkalian PROD=1.0 DO 100 K=1,N PROD=PROD*(1.0-A(K)) 100 CONTINUE 2. Tentukan keluaran dalam program berikut ini INTEGER A(10) DO 100 I=1,10,2 A(I)=2*1-3 A(I+1)=I**2-5 100 CONTINUE DO 200 I=2,10,3 A(I)=A(I+2)-A(I) 200 CONTINUE WRITE(*,10) A 10 FORMAT(1X,5I8) STOP END
  • 16. Pemrograman Komputer Bahasa FORTRAN - 82Jawab:Pernyataan pertama mendeklarasikan A berupa sebuah larik linier bertipe bulatdengan 10 elemen. DO loop pertama dieksekusi:(i) Pertama untuk I=1. ini menghasilkan A(1)= -1 dan A(2)= -4(ii) Kemudian untuk I=3. ini menghasilkan A(3)= 3 dan A(4)= 4(iii) Kemudian untuk I=5. ini menghasilkan A(5)= 7 dan A(6)= 20(iv) Kemudian untuk I=7. ini menghasilkan A(7)= 11dan A(8)= 44(v) Kemudian untuk I=9. ini menghasilkan A(9)= 15dan A(10)= 76DO loop kedua dieksekusi menghasilkan :(i) Pertama untuk I=2. ini mengubah nilai A(2) sebagai berikut A(2)A(4)-A(2) = 4-(-4) =8(ii) Kemudian untuk I=5 ini mengubah nilai A(5) sebagai berikut A(5)A(7)-A(5) =11-7=4(iii) Terakhir untuk I=8 ini mengubah nilai A(6) sebagai berikut A(6)A(10)-A(8) =76-44=32Pasangan WRITE-FORMAT mencetak nilai-nilai A dengan lima bilangan bulatpada satu baris dalam medan-medan dengan lebar 8. karenanya, keluaran akanmuncul sebagai berikut ; 11234567812345678123456781234567812345678 -1 8 3 4 4 20 11 32 15 763. Sebuah larik matrik NxN berada dimemori. Tulislah ruas program FORTRAN yang mencetak elemen-elemen A di atas diagonal, yaitu elemen-elemen A(I,J) untuk mana I<J Jawab : Kita ingin mencetak elemen-elemen : A12 A13 A14 … A1N A23 A24 … A2N ………………... AN-1,N Indeks pertama I menyatakan baris dari elemen, dan karenanya akan berubah dari 1 sampai N-1. Indeks kedua J menyatakan kolom, dan karenanya akan berubah dari I+1 sampai N. Kita tidak dapat menggunakan DO loop terselubung bersarang : WRITE (*,10) ((A(I,J),J=I+1,N), I=1,N-1) Karena I+1 dan N-1 tidak dapat berupa parameter. Tetapi, kita dapat menggunakan DO loop bersama-sama dengan DO loop terselubung : NN=N-1
  • 17. Pemrograman Komputer Bahasa FORTRAN - 83 DO 100 I=1,NN K=I+1 WRITE(*,10) (A(I,J), J=K,N) 10 FORMAT(1X,8(3X, F10.2)) 100 CONTINUESOAL-SOAL LATIHAN 1. Temukan kesalahan, jika ada dengan tiap pernyataan DIMENSION berikut: a. DIMENSION, J(8), INTEREST(5,10) b. DIMENSION A(4,0,3), B(6) C(9,4) c. DIMENSION A(M,N) XYZ(4,-8,7) 2. Temukan keluaran tiap ruas program berikut : 3. a. DIMENSION ID(5) b. INTEGER X(6) DO 100 K=1,5 DO 100 K=1,6,2 ID(K)=2*K X(K)=3*K 100 CONTINUE X(K+1)=K+2 ID(2)=ID(2)+ID(3) 100 CONTINUE ID(5)=ID(5)-ID(4) DO 200 J=1,6,3 WRITE(*,10) ID X(J)=X(J)+X(J+1) 10 FORMAT(1X,5I8) 200 CONTINUE IF(X(2) .LT. 7) X(2)=X(3) WRITE(*,20)X 20 FORMAT(1X,6I8) 4. Suatu kelas 35 mahasiswa mengikuti sebuah ujian yang skornya memiliki rentang dari 0 sampai 100. Tulislah sebuahprogram FORTRAN yang menemukan : (a) rata-rata skor; (b) jumlah mahasiswa yang gagal, yaitu nilainya dibawah 60; dan (c) jumlah mahasisea dengan nilai sempurna (100).PRAKTIKUM 1. Tulislah beberapa program FORTRAN berikut, jalankan, amati prosesnya dan simpan dengan nama berbeda. C23456789 C23456789 SUM=0.0 PROGRAM LAT4_1B PROGRAM LAT4_1A C PROGRAM RATA-RATA C PROGRAM RATA-RATA DIMENSION J(50) DO 100 I=1,25 J(1)=1 READ(*,10) A J(2)=1 10 FORMAT(F10.1) DO 100 I=3, 50 SUM=SUM+A J(I)=J(I-2)+J(I-1) 100 CONTINUE 100 CONTINUE AVE=SUM/25.0 WRITE(*,20) WRITE(*,20) AVE 20 FORMAT(‘1’, 15X,’BARISAN FIBONACCI’//) 20 FORMAT(1X,’RATA-RATA= ‘, 1X, F4.1 WRITE(*,30) J END 30 FORMAT(1X,5(3X,I6))
  • 18. Pemrograman Komputer Bahasa FORTRAN - 84 END C23456789 C23456789 SUM=0.0 PROGRAM LAT4_1D PROGRAM LAT4_1C C PROGRAM RATA-RATA 2 C Program menghitung standar deviasi DIMENSION SCORE(25) C C BACA SKOR DIMENSION X(1000) C WRITE (*,100) DO 100 I=1,25 READ(*,105) N READ(*,10) SCORE(I) TOTAL=0 WRITE(*,10) SCORE(I) DO 20 I=1, N 10 FORMAT(F10.1) WRITE(*,110) I 100 CONTINUE READ(*,115) X(I) C 20 TOTAL=TOTAL+X(I) C HITUNG JUMLAH DAN RATA-RATA RATA=TOTAL/N SUM=0.0 S1=0 DO 200 I=1,25 DO 30 I =1, N SUM=SUM+SCORE(I) 30 S1=S1+(X(I)-RATA)**2 200 CONTINUE SD=(S1/N)**0.5 AVE=SUM/25 WRITE(*,200) RATA WRITE(*,20) AVE WRITE(*,210) SD 20 FORMAT(1X,’RATA-RATA KELAS =’1X,F10.1 100 FORMAT(1X,’JUMLAH MAHASISWA?’,) C 105 FORMAT(BN,I4) C HITUNG BILANGAN DIBAWAH RATA-RATA 110 FORMAT(1X,’NILAI MAHASISWA KE’,I4,’’?’,) C 115 FORMAT(BN,f6.2) K=0 200 FORMAT(1X,’RATA-RATA NILAI :’, F6.2) DO 300 I=1,25 210 FORMAT(1X,’STANDAR DEVIASI :’, F6.2) IF(SCORE(I) .LT. AVE) K=K+1 END 300 CONTINUE WRITE(*,30) K 30 FORMAT(1X, ‘BANYAKNYA DI BAWAH - RATA-RATA = ‘, 1X, I3) STOP END C23456789 C23456789 PROGRAM LAT4_1E PROGRAM LAT4_1F DIMENSION N(25) DIMENSION N(25) READ(*,10) N C TETAPKAN TIAP N(K)=0 10 FORMAT(5I5) C DO 100 J=1,24 DO 100 K=1,24 JJ=J+1 NK= 0 DO 200 K=JJ,25 100 CONTINUE IF(N(J)+N(K).NE.75) GOTO 200 C WRITE(*,20) N(J), N(K) C BACA DAN HITUNG BILANGAN 20 FORMAT(1X,I5,3X,I5) DO 200 J=1,200 200 CONTINUE READ(*,10) K 100 CONTINUE 10 FORMAT(I5) END N(K) = N(K) + 1 200 CONTINUE C C CETAK DISTRIBUSI C DO 300 K=1,25 WRITE(*,20) N(J), N(K) 20 FORMAT(6X, 2(I4,5X) 300 CONTINUE END2. Buatlah sebuah program untuk menjumlahkan dua buah matrik NxM

×