SlideShare a Scribd company logo
1 of 18
STANDAR KOMPETENSI
  Setelah menyelesaikan mata kuliah Komputer mahasiswa
mampu mengembangkan paket program aplikasi mandiri untuk
menyelesaikan 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
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
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
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 atau
larik yang huruf pertama dari namanya disebutkan sebagai <a>. Huruf yang
sama tidak boleh didefinisikan ulang dengan statemen IMPLICIT. Variabel
atau larik yang sudah didefinisikan dengan statemen IMPLICIT dapat
didefinisikan ulang dengan statemen TYPE.

Contoh 4.2
        C234567890
              IMPLICIT INTEGER A
              ANGKA = 5
              AKAR= 15
                 .
                 .
                 .

Statemen diatas mendeklarasikan semua nama variabel dan larik yang diawali
dengan 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)
              END



Bila 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
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
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 statement
2. 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 adalah
bertipe 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 tipe
karakter 20 byte, NILAI1 dan NILAI2 adalah tipe real 8 byte dan NILAI3 tipe
real 4 byte.

Statemen type dapat digunakan untuk mendefinisikan ulang nama yang sudah
didefinisikan oleh statemen IMPLICIT :
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.
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 oleh
tikalas yang sesuai (diapit dalam tanda kurung), tiap elemen larik dapat muncul
dalam 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 (tanpa
menyebutkan indeksnya) dalam pernyataan hitungan. Dalam contoh 4.10 berikut
GRADE adalah sebuah larik dan SUM adalah variabel biasa, sehingga statemen-
statemen berikut adalah salah, karena nama GRADE mengacu kepada seluruh
elemen larik, sedangkan hitungan mencakup lokasi-lokasi memori sendiri-sendiri.

Contoh 4.10

           SUM = GRADE + SUM
           GRADE = SUM + 10.0
           GRADE = GRADE + 20.0

Kita juga dapat mengacu elemen-elemen larik dalam pernyataan masukan/
keluaran seperti READ(*,10) X, TAX(3)
Pemrograman Komputer Bahasa FORTRAN          - 75




                                                          MULAI
Contoh 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
Pemrograman Komputer Bahasa FORTRAN          - 76




4.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.
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)


Halaman
1B(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
Pemrograman Komputer Bahasa FORTRAN       - 78




4.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)
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 SCORE

2. 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)
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.
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
Pemrograman Komputer Bahasa FORTRAN         - 82




Jawab:
Pernyataan pertama mendeklarasikan A berupa sebuah larik linier bertipe bulat
dengan 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)= 76

DO 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=32
Pasangan WRITE-FORMAT mencetak nilai-nilai A dengan lima bilangan bulat
pada satu baris dalam medan-medan dengan lebar 8. karenanya, keluaran akan
muncul sebagai berikut ;
      11234567812345678123456781234567812345678
              -1         8       3         4        4
             20         11      32        15       76


3. 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
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 CONTINUE


SOAL-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))
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
                                                                  END


2. Buatlah sebuah program untuk menjumlahkan dua buah matrik NxM

More Related Content

What's hot

Persamaandifferensial
PersamaandifferensialPersamaandifferensial
PersamaandifferensialMeiky Ayah
 
2 b 59_utut muhammad_laporan_rrc
2 b 59_utut muhammad_laporan_rrc2 b 59_utut muhammad_laporan_rrc
2 b 59_utut muhammad_laporan_rrcumammuhammad27
 
Transformasi Laplace (bag.1)
Transformasi Laplace (bag.1)Transformasi Laplace (bag.1)
Transformasi Laplace (bag.1)Heni Widayani
 
Pelajari Konsep Dasar Integral dalam Penyelesaian Masalah
Pelajari Konsep Dasar Integral dalam Penyelesaian MasalahPelajari Konsep Dasar Integral dalam Penyelesaian Masalah
Pelajari Konsep Dasar Integral dalam Penyelesaian MasalahnadyaGB21
 
2 b 59_utut muhammad_laporan_medan magnet dan induksi magnet
2 b 59_utut muhammad_laporan_medan magnet dan induksi magnet2 b 59_utut muhammad_laporan_medan magnet dan induksi magnet
2 b 59_utut muhammad_laporan_medan magnet dan induksi magnetumammuhammad27
 
Perbedaan sistem linear dan non linear
Perbedaan sistem linear dan non linearPerbedaan sistem linear dan non linear
Perbedaan sistem linear dan non linearElGazzaYantPratama
 
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan AlgoritmaAlgoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan AlgoritmaAri Septiawan
 
Bab 9. Teknik Pengintegralan ( Kalkulus 1 )
Bab 9. Teknik Pengintegralan ( Kalkulus 1 )Bab 9. Teknik Pengintegralan ( Kalkulus 1 )
Bab 9. Teknik Pengintegralan ( Kalkulus 1 )Kelinci Coklat
 
1 b 11170163000059_laporan_kalorimeter
1 b 11170163000059_laporan_kalorimeter1 b 11170163000059_laporan_kalorimeter
1 b 11170163000059_laporan_kalorimeterumammuhammad27
 
Uji kompetensi dan pembahasan matematika semester 2 kelas XI
Uji kompetensi dan pembahasan matematika semester 2 kelas XIUji kompetensi dan pembahasan matematika semester 2 kelas XI
Uji kompetensi dan pembahasan matematika semester 2 kelas XIIsnaeni Nur Chasanah
 
3 termodinamika gas ideal dan gas nyata - copy
3 termodinamika  gas ideal  dan gas nyata - copy3 termodinamika  gas ideal  dan gas nyata - copy
3 termodinamika gas ideal dan gas nyata - copyMahammad Khadafi
 
2 b 59_utut muhammad_laporan_hukum kirchoff
2 b 59_utut muhammad_laporan_hukum kirchoff2 b 59_utut muhammad_laporan_hukum kirchoff
2 b 59_utut muhammad_laporan_hukum kirchoffumammuhammad27
 
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010eddie Ismantoe
 
Laporan praktikum gerak bandul sederhana
Laporan praktikum gerak bandul sederhanaLaporan praktikum gerak bandul sederhana
Laporan praktikum gerak bandul sederhanaDian Agatha
 
Kelompok 3 integrasi numerik fix
Kelompok 3 integrasi numerik fixKelompok 3 integrasi numerik fix
Kelompok 3 integrasi numerik fixliabika
 

What's hot (20)

6 Divergensi dan CURL
6 Divergensi dan CURL6 Divergensi dan CURL
6 Divergensi dan CURL
 
Persamaandifferensial
PersamaandifferensialPersamaandifferensial
Persamaandifferensial
 
2 b 59_utut muhammad_laporan_rrc
2 b 59_utut muhammad_laporan_rrc2 b 59_utut muhammad_laporan_rrc
2 b 59_utut muhammad_laporan_rrc
 
Transformasi Laplace (bag.1)
Transformasi Laplace (bag.1)Transformasi Laplace (bag.1)
Transformasi Laplace (bag.1)
 
Pelajari Konsep Dasar Integral dalam Penyelesaian Masalah
Pelajari Konsep Dasar Integral dalam Penyelesaian MasalahPelajari Konsep Dasar Integral dalam Penyelesaian Masalah
Pelajari Konsep Dasar Integral dalam Penyelesaian Masalah
 
2 b 59_utut muhammad_laporan_medan magnet dan induksi magnet
2 b 59_utut muhammad_laporan_medan magnet dan induksi magnet2 b 59_utut muhammad_laporan_medan magnet dan induksi magnet
2 b 59_utut muhammad_laporan_medan magnet dan induksi magnet
 
Perbedaan sistem linear dan non linear
Perbedaan sistem linear dan non linearPerbedaan sistem linear dan non linear
Perbedaan sistem linear dan non linear
 
Partikel Elementer
Partikel ElementerPartikel Elementer
Partikel Elementer
 
04 turunan
04 turunan04 turunan
04 turunan
 
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan AlgoritmaAlgoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
 
Bab 9. Teknik Pengintegralan ( Kalkulus 1 )
Bab 9. Teknik Pengintegralan ( Kalkulus 1 )Bab 9. Teknik Pengintegralan ( Kalkulus 1 )
Bab 9. Teknik Pengintegralan ( Kalkulus 1 )
 
1 b 11170163000059_laporan_kalorimeter
1 b 11170163000059_laporan_kalorimeter1 b 11170163000059_laporan_kalorimeter
1 b 11170163000059_laporan_kalorimeter
 
Pusat massa dan momentum
Pusat massa dan momentum Pusat massa dan momentum
Pusat massa dan momentum
 
Uji kompetensi dan pembahasan matematika semester 2 kelas XI
Uji kompetensi dan pembahasan matematika semester 2 kelas XIUji kompetensi dan pembahasan matematika semester 2 kelas XI
Uji kompetensi dan pembahasan matematika semester 2 kelas XI
 
3 termodinamika gas ideal dan gas nyata - copy
3 termodinamika  gas ideal  dan gas nyata - copy3 termodinamika  gas ideal  dan gas nyata - copy
3 termodinamika gas ideal dan gas nyata - copy
 
2 b 59_utut muhammad_laporan_hukum kirchoff
2 b 59_utut muhammad_laporan_hukum kirchoff2 b 59_utut muhammad_laporan_hukum kirchoff
2 b 59_utut muhammad_laporan_hukum kirchoff
 
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
 
Laporan praktikum gerak bandul sederhana
Laporan praktikum gerak bandul sederhanaLaporan praktikum gerak bandul sederhana
Laporan praktikum gerak bandul sederhana
 
kemonotonan dan kecekungan
kemonotonan dan kecekungankemonotonan dan kecekungan
kemonotonan dan kecekungan
 
Kelompok 3 integrasi numerik fix
Kelompok 3 integrasi numerik fixKelompok 3 integrasi numerik fix
Kelompok 3 integrasi numerik fix
 

Viewers also liked

Teori orbital molekul copyddd (2)
Teori orbital molekul   copyddd (2)Teori orbital molekul   copyddd (2)
Teori orbital molekul copyddd (2)syaipul_bahri
 
Struktur Molekul
Struktur MolekulStruktur Molekul
Struktur Molekulmocoz
 
Teori orbital molekul kompleks
Teori orbital molekul kompleksTeori orbital molekul kompleks
Teori orbital molekul kompleksElis Primalis
 
TOM (Teori Orbital Molekul)
TOM (Teori Orbital Molekul)TOM (Teori Orbital Molekul)
TOM (Teori Orbital Molekul)Farikha Uly
 
Teori orbital molekul
Teori orbital molekulTeori orbital molekul
Teori orbital molekulHarewood Jr.
 
Ikatan pi dan ikatan sigma
Ikatan pi dan ikatan sigmaIkatan pi dan ikatan sigma
Ikatan pi dan ikatan sigmalinda listia
 
Perkembangan teori atom, konfigurasi elektron dan mekanika
Perkembangan teori atom, konfigurasi elektron dan mekanikaPerkembangan teori atom, konfigurasi elektron dan mekanika
Perkembangan teori atom, konfigurasi elektron dan mekanikaAyu Aliyatun
 

Viewers also liked (9)

Teori orbital molekul copyddd (2)
Teori orbital molekul   copyddd (2)Teori orbital molekul   copyddd (2)
Teori orbital molekul copyddd (2)
 
Teori orbital molekul
Teori orbital molekulTeori orbital molekul
Teori orbital molekul
 
Teori orbital molekul
Teori orbital molekulTeori orbital molekul
Teori orbital molekul
 
Struktur Molekul
Struktur MolekulStruktur Molekul
Struktur Molekul
 
Teori orbital molekul kompleks
Teori orbital molekul kompleksTeori orbital molekul kompleks
Teori orbital molekul kompleks
 
TOM (Teori Orbital Molekul)
TOM (Teori Orbital Molekul)TOM (Teori Orbital Molekul)
TOM (Teori Orbital Molekul)
 
Teori orbital molekul
Teori orbital molekulTeori orbital molekul
Teori orbital molekul
 
Ikatan pi dan ikatan sigma
Ikatan pi dan ikatan sigmaIkatan pi dan ikatan sigma
Ikatan pi dan ikatan sigma
 
Perkembangan teori atom, konfigurasi elektron dan mekanika
Perkembangan teori atom, konfigurasi elektron dan mekanikaPerkembangan teori atom, konfigurasi elektron dan mekanika
Perkembangan teori atom, konfigurasi elektron dan mekanika
 

Similar to 90594480 bab-4-larik-array-fotran

Modul Pascal.pdf
Modul Pascal.pdfModul Pascal.pdf
Modul Pascal.pdfsylaaulia
 
Modul Pascal Mengenal Flowchart
Modul Pascal Mengenal FlowchartModul Pascal Mengenal Flowchart
Modul Pascal Mengenal FlowchartIrwien Andriyanto
 
Modul pascal
Modul pascalModul pascal
Modul pascaldanver98
 
Modul pascal
Modul pascalModul pascal
Modul pascalshediazz
 
Dasar pemrograman basic
Dasar pemrograman basicDasar pemrograman basic
Dasar pemrograman basicYang Terluka
 
1. variable identifier dan_tipe_data
1. variable identifier dan_tipe_data1. variable identifier dan_tipe_data
1. variable identifier dan_tipe_dataRoziq Bahtiar
 
Laporan Praktikum Algoritma
Laporan Praktikum AlgoritmaLaporan Praktikum Algoritma
Laporan Praktikum AlgoritmaEnvaPya
 
Pertemuan 2 Variabel, Konstanta, Tipe Data, Manipulator dan Format Masukan
Pertemuan 2 Variabel, Konstanta, Tipe Data, Manipulator dan Format MasukanPertemuan 2 Variabel, Konstanta, Tipe Data, Manipulator dan Format Masukan
Pertemuan 2 Variabel, Konstanta, Tipe Data, Manipulator dan Format MasukanEndang Retnoningsih
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahBraga Rezpect
 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemogramanPANJI_ADITYAN
 
DK-A-207038026-Nur Amalia Nasution.pptx
DK-A-207038026-Nur Amalia Nasution.pptxDK-A-207038026-Nur Amalia Nasution.pptx
DK-A-207038026-Nur Amalia Nasution.pptxNurAmalia839668
 

Similar to 90594480 bab-4-larik-array-fotran (20)

Modul Pascal.pdf
Modul Pascal.pdfModul Pascal.pdf
Modul Pascal.pdf
 
Modul Pascal Mengenal Flowchart
Modul Pascal Mengenal FlowchartModul Pascal Mengenal Flowchart
Modul Pascal Mengenal Flowchart
 
Algoritma flowchart
Algoritma flowchartAlgoritma flowchart
Algoritma flowchart
 
Modul pascal
Modul pascalModul pascal
Modul pascal
 
Modul pascal
Modul pascalModul pascal
Modul pascal
 
Modul pascal
Modul pascalModul pascal
Modul pascal
 
Dasar pemrograman basic
Dasar pemrograman basicDasar pemrograman basic
Dasar pemrograman basic
 
1. variable identifier dan_tipe_data
1. variable identifier dan_tipe_data1. variable identifier dan_tipe_data
1. variable identifier dan_tipe_data
 
Alpro tutor
Alpro tutorAlpro tutor
Alpro tutor
 
Laporan Praktikum Algoritma
Laporan Praktikum AlgoritmaLaporan Praktikum Algoritma
Laporan Praktikum Algoritma
 
Pengenalan bahasa c++
Pengenalan bahasa c++Pengenalan bahasa c++
Pengenalan bahasa c++
 
Tipe data
Tipe dataTipe data
Tipe data
 
Pemrograman Komputer - 3
Pemrograman Komputer - 3Pemrograman Komputer - 3
Pemrograman Komputer - 3
 
Pertemuan 2 Variabel, Konstanta, Tipe Data, Manipulator dan Format Masukan
Pertemuan 2 Variabel, Konstanta, Tipe Data, Manipulator dan Format MasukanPertemuan 2 Variabel, Konstanta, Tipe Data, Manipulator dan Format Masukan
Pertemuan 2 Variabel, Konstanta, Tipe Data, Manipulator dan Format Masukan
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
 
Algoritma 02
Algoritma 02Algoritma 02
Algoritma 02
 
C++ lengkap
C++ lengkap C++ lengkap
C++ lengkap
 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemograman
 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemograman
 
DK-A-207038026-Nur Amalia Nasution.pptx
DK-A-207038026-Nur Amalia Nasution.pptxDK-A-207038026-Nur Amalia Nasution.pptx
DK-A-207038026-Nur Amalia Nasution.pptx
 

More from mocoz

Pertemuan 7
Pertemuan 7Pertemuan 7
Pertemuan 7mocoz
 
Pertemuan 6
Pertemuan 6Pertemuan 6
Pertemuan 6mocoz
 
Pertemuan 8
Pertemuan 8Pertemuan 8
Pertemuan 8mocoz
 
D059235657
D059235657D059235657
D059235657mocoz
 
D059283626
D059283626D059283626
D059283626mocoz
 
90594622 bab-6-pemograman-aplikasi-teknik-mesin-fotran
90594622 bab-6-pemograman-aplikasi-teknik-mesin-fotran90594622 bab-6-pemograman-aplikasi-teknik-mesin-fotran
90594622 bab-6-pemograman-aplikasi-teknik-mesin-fotranmocoz
 
90594412 bab-3-pengaturan-aliran-pemograman-fotran
90594412 bab-3-pengaturan-aliran-pemograman-fotran90594412 bab-3-pengaturan-aliran-pemograman-fotran
90594412 bab-3-pengaturan-aliran-pemograman-fotranmocoz
 
90593353 bab-1-dasar-dasar-pemograman-komputer-fotran
90593353 bab-1-dasar-dasar-pemograman-komputer-fotran90593353 bab-1-dasar-dasar-pemograman-komputer-fotran
90593353 bab-1-dasar-dasar-pemograman-komputer-fotranmocoz
 
Asis sugianto.blogspot.com-cara meninstal android
Asis sugianto.blogspot.com-cara meninstal androidAsis sugianto.blogspot.com-cara meninstal android
Asis sugianto.blogspot.com-cara meninstal androidmocoz
 
Chapter electric motors (bahasa indonesia)
Chapter   electric motors (bahasa indonesia)Chapter   electric motors (bahasa indonesia)
Chapter electric motors (bahasa indonesia)mocoz
 
Mesin arus bolak_balik_(bahan_kuliah)
Mesin arus bolak_balik_(bahan_kuliah)Mesin arus bolak_balik_(bahan_kuliah)
Mesin arus bolak_balik_(bahan_kuliah)mocoz
 
04 01-alat-ukur
04 01-alat-ukur04 01-alat-ukur
04 01-alat-ukurmocoz
 

More from mocoz (12)

Pertemuan 7
Pertemuan 7Pertemuan 7
Pertemuan 7
 
Pertemuan 6
Pertemuan 6Pertemuan 6
Pertemuan 6
 
Pertemuan 8
Pertemuan 8Pertemuan 8
Pertemuan 8
 
D059235657
D059235657D059235657
D059235657
 
D059283626
D059283626D059283626
D059283626
 
90594622 bab-6-pemograman-aplikasi-teknik-mesin-fotran
90594622 bab-6-pemograman-aplikasi-teknik-mesin-fotran90594622 bab-6-pemograman-aplikasi-teknik-mesin-fotran
90594622 bab-6-pemograman-aplikasi-teknik-mesin-fotran
 
90594412 bab-3-pengaturan-aliran-pemograman-fotran
90594412 bab-3-pengaturan-aliran-pemograman-fotran90594412 bab-3-pengaturan-aliran-pemograman-fotran
90594412 bab-3-pengaturan-aliran-pemograman-fotran
 
90593353 bab-1-dasar-dasar-pemograman-komputer-fotran
90593353 bab-1-dasar-dasar-pemograman-komputer-fotran90593353 bab-1-dasar-dasar-pemograman-komputer-fotran
90593353 bab-1-dasar-dasar-pemograman-komputer-fotran
 
Asis sugianto.blogspot.com-cara meninstal android
Asis sugianto.blogspot.com-cara meninstal androidAsis sugianto.blogspot.com-cara meninstal android
Asis sugianto.blogspot.com-cara meninstal android
 
Chapter electric motors (bahasa indonesia)
Chapter   electric motors (bahasa indonesia)Chapter   electric motors (bahasa indonesia)
Chapter electric motors (bahasa indonesia)
 
Mesin arus bolak_balik_(bahan_kuliah)
Mesin arus bolak_balik_(bahan_kuliah)Mesin arus bolak_balik_(bahan_kuliah)
Mesin arus bolak_balik_(bahan_kuliah)
 
04 01-alat-ukur
04 01-alat-ukur04 01-alat-ukur
04 01-alat-ukur
 

90594480 bab-4-larik-array-fotran

  • 1. STANDAR KOMPETENSI Setelah menyelesaikan mata kuliah Komputer mahasiswa mampu mengembangkan paket program aplikasi mandiri untuk menyelesaikan 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 atau larik yang huruf pertama dari namanya disebutkan sebagai <a>. Huruf yang sama tidak boleh didefinisikan ulang dengan statemen IMPLICIT. Variabel atau larik yang sudah didefinisikan dengan statemen IMPLICIT dapat didefinisikan ulang dengan statemen TYPE. Contoh 4.2 C234567890 IMPLICIT INTEGER A ANGKA = 5 AKAR= 15 . . . Statemen diatas mendeklarasikan semua nama variabel dan larik yang diawali dengan 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) END Bila 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 statement 2. 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 adalah bertipe 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 tipe karakter 20 byte, NILAI1 dan NILAI2 adalah tipe real 8 byte dan NILAI3 tipe real 4 byte. Statemen type dapat digunakan untuk mendefinisikan ulang nama yang sudah didefinisikan 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 oleh tikalas yang sesuai (diapit dalam tanda kurung), tiap elemen larik dapat muncul dalam 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 (tanpa menyebutkan indeksnya) dalam pernyataan hitungan. Dalam contoh 4.10 berikut GRADE adalah sebuah larik dan SUM adalah variabel biasa, sehingga statemen- statemen berikut adalah salah, karena nama GRADE mengacu kepada seluruh elemen larik, sedangkan hitungan mencakup lokasi-lokasi memori sendiri-sendiri. Contoh 4.10 SUM = GRADE + SUM GRADE = SUM + 10.0 GRADE = GRADE + 20.0 Kita juga dapat mengacu elemen-elemen larik dalam pernyataan masukan/ keluaran seperti READ(*,10) X, TAX(3)
  • 9. Pemrograman Komputer Bahasa FORTRAN - 75 MULAI Contoh 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 - 76 4.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) Halaman 1B(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 - 78 4.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 SCORE 2. 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 - 82 Jawab: Pernyataan pertama mendeklarasikan A berupa sebuah larik linier bertipe bulat dengan 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)= 76 DO 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=32 Pasangan WRITE-FORMAT mencetak nilai-nilai A dengan lima bilangan bulat pada satu baris dalam medan-medan dengan lebar 8. karenanya, keluaran akan muncul sebagai berikut ; 11234567812345678123456781234567812345678 -1 8 3 4 4 20 11 32 15 76 3. 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 CONTINUE SOAL-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 END 2. Buatlah sebuah program untuk menjumlahkan dua buah matrik NxM