SlideShare a Scribd company logo
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 yang lebih
 kompleks yang membutuhkan adanya pengambilan keputusan
          dalam mengatur aliran logika program.



                      INDIKATOR

1.                                  Mahasiswa       dapat
   menggunakan stetemen perulangan dalam mengatur aliran
   logika    pemrograman    dimana   dibutuhkan    adanya
   pengerjaan   sebuah   statemen   yang   berulang-ulang
   (looping and repetition)
2.                                  Mahasiswa       dapat
   menerapkan penyeleksian kondisi pada sebuah statemen
   yang memiliki beberapa opsi pengerjaan yang berbeda
   sesuai dengan kondisi yang dihasilkan.



                           42
Pemrograman Komputer Bahasa FORTRAN        - 43




3.1                              PERULANGAN

      Statemen kontrol atau statemen kendali termasuk executabel statement, yang
      mengendalikan urutan dari proses statemen-statemen di dalam blok program. Di
      dalam sebuah program, kadang kala, terdapat suatu eksekusi statemen yang sama
      yang dilakukan berulang-ulang. Dimana, pengulangan suatu proses adalah hal
      yang mendasar untuk penulisan progran komputer, dan akan sangat berguna untuk
      mempunyai sebuah komando mirip makro seperti DO … WHILE 1≤ I≤ N.

 3.1.1                                                         STATEMEN
         CONTINUE

         Pernyataan CONTINUE digunakan sebagai dummy statement (statemen
         boneka), yang digunakan untuk terminal statement pada statemen DO atau
         statemen GOTO

3.1.2                                                          STATEMEN END

         Fungsi dari statemen END pada program utama adalah untuk mengahiri proses
         dari program, sedangkan pada unit program mempunyai fungsi seperti
         RETURN. Statemen END harus terletak diakhir dari program dan tidak boleh
         digabung dengan statemen lain. Bentuk umum dari statemen ini adalah :
                          END

         Contoh 3.1 :

              C234567890             END selalu di akhir program
                    A= 20.0
                    WRITE(*,21) A
                 21 FORMAT(1X,’NILAI A = ’,F7.2)
                    END

3.1.3                                                          STATEMEN STOP

          Statemen ini berfungsi untuk menghentikan proses pengerjaan program.
          Statemen STOP tidak mesti ada didalam sebuah program. Penempatan
          statemen ini boleh dimana saja di dalam program. Bentuk umum statemen
          STOP adalah sebagai berikut :

                        STOP [<n>]

          Dimana :
Pemrograman Komputer Bahasa FORTRAN           - 44


             <n>        merupakan suatu konstanta angka yang panjangnya tidak
                        boleh lebih dari lima digit atau suatu string dan sifatnya
                        opsional.
     Contoh 3.1 :

             C234567890
                   A=10.0
                   B=60.0
                   WRITE(*,100) A
                   STOP ’PROSES DIHENTIKAN DENGAN STATEMEN STOP’
                   WRITE(*,200) B
               100 FORMAT(1X,’NILAI A =’,F5.1,/)
               200 FORMAT(1X,’NILAI B =’,F5.1)
                   END

             Bila program ini dijalankan, didapatkan hasil sebagai berikut :
                       NILAI A = 10.0

                       PROSES DIHENTIKAN DENGAN STATEMEN STOP




3.1.4                                                        STATEMEN
     PAUSE

     Tidak seperti statemen STOP yang menghentikan/keluar dari program,
     statemen PAUSE digunakan untuk menghentikan sementara proses eksekusi
     program. Pengaruh dari penghentian sementaran program dengan statemen
     PAUSE akan berakhir atau eksekusi program dilanjutkan apabila ditekan
     tombol <Enter>. Bentuk umum statemen PAUSE sebagai berikut :

                     PAUSE [<n>]
       Dimana :
          <n>       merupakan suatu konstanta angka yang panjangnya tidak boleh
                     lebih dari lima digit atau suatu string dan sifatnya opsional.

     Contoh 3.2 :

             C234567890
                   A=10.0
                   B=60.0
                   WRITE(*,100) A
                   PAUSE ’Tekan Tombol RETURN untuk melihat nilai B’
                   WRITE(*,200) B
               100 FORMAT(1X,’NILAI A =’,F5.1,/)
               200 FORMAT(1X,’NILAI B =’,F5.1)
                   END
Pemrograman Komputer Bahasa FORTRAN               - 45




               Bila program ini dijalankan, didapatkan hasil sebagai berikut :
                         NILAI A = 10.0

                         Tekan Tombol RETURN untuk melihat nilai B
                         Please press <return> to continue.

                         NILAI B = 60.0



3.1.5                                                          STATEMEN DO

        Pernyataan DO digunakan untuk mengulang suatu statemen atau proses
        sebanyak N kali. Bentuk umum dari statemen ini adalah sebagai berikut :

               DO <slabel>[,] <nama variabel> = <exp1>,<exp2>[,<exp3>]

              Dimana :
                    <slabel>         : adalah statemen label dari suatu executabel
                                        statement.
                     <nama variabel> : suatu variabel numerik integer
                     <exp1>          : nilai numerik bulat sebagai awal perulang-
                                        an (starting point)
                     <exp2>          : nilai numerik bulat akhir perulangan (end
                                        point)
                     <exp3>          : nilai numerik bulat sebagai peningkatan
                                        (interval) perulangan.
                                                   Statemen label
               Contoh 3.3 :                        Variabel numerik integer
                                                   Awal perulangan
                 C234567890                        Akhir perulangan
                       DO 5 I=1,5,1                Peningkatan (increment)
                     5 WRITE(*,21) I
                    21 FORMAT(1X,I2,’.’,1X,’KOMPUTER’)
                       END
                 Bila program ini dijalankan, didapatkan hasil sebagai berikut :

                    1.   KOMPUTER
                    2.   KOMPUTER
                    3.   KOMPUTER
                    4.   KOMPUTER
                    5.   KOMPUTER
Pemrograman Komputer Bahasa FORTRAN              - 46


  Tampak statemen WRITE akan diperoses sebanyak lima kali, yaitu
  hitungan I = 1 sampai I = 5 dengan interval 1.

Untuk pengulangan menurun gunakan nilai awal lebih besar dari nilai
akhir dengan interval bertanda minus (-) seperti tampak dalam contoh
3.4 berikut.

Contoh 3.4 :

  C234567890
        DO 5 I=8,1,-2
      5 WRITE(*,21) I
     21 FORMAT(1X,’NILAI I = ’,I2)
        END

  Bila program ini dijalankan, didapatkan hasil sebagai berikut :
          NILAI   I   =   8
          NILAI   I   =   6
          NILAI   I   =   4
          NILAI   I   =   2
          NILAI   I   =   1



Selain hal tersebut di atas, statemen DO juga bisa menggunakan blok
program DO-CONTINUE (badan DO-loop diindentasi lebih kedalam
untuk memudahkan pembacaan). Bentuk statemen ini sebagai berikut:


               DO n I = IN,IE,IC                Dimana :
                          .
                          .                     IN = nilai awal indeks
                          .
                                                IE = nilai uji/akhir indexs
                   BADAN DO LOOP
                          .                     IC = peningkatan/interval
                          .                     n = statemen label (nomor
                          .                          Pernyataan CONTINUE)
           n CONTINUE



Untuk jelasnya, stateman DO dapat digambarkan dalam bentuk
diagram alir seperti tampak dalam gambar 3.1.
Pemrograman Komputer Bahasa FORTRAN                 - 47




                         I  IN
                                                               DO n
                                                             I = IN,IE,
                                                                 IC
                        Badan DO
                                                         Badan DO

                        I  I + IC


                Ya
                          I≤                                     n
        belum selesai                        belum selesai
                          IE
                                  Tidak

                        SELESAI                               SELESAI

                         (a)                                   (b)

                        Gambar 3.1 Diagram Alir Statemen DO


Contoh 3.5 :
                                                                     MULAI
C PROGRAM MENGHITUNG NILAI MAHASISWA
C234567890                                                           DO
                                                                    200
       WRITE (*,5)
                                                                   I=1,10
    5 FORMAT(1X,’ID NO.’,4X,                                          0
      1’TEST1’, 4X,’TEST2’,4X,    Statemen                          BACA
                                  DO                              ID,S1,S2,S3
      2’TEST3’,3X,’AVERAGE’)
       DO 200 I=1,100                                         SUM S1+S2+S3
           READ(*,10)ID,S1,S2,S3
   10      FORMAT(5X,I5,3(4X,F6.2)
           SUM = S1 + S2 + S3                                  AVESUM/3.0
           AVE = SUM/3.0
           WRITE(*,20)ID,S1,S2,S3,AVE                              CETAK
    20     FORMAT(5X,I5,4(4X,F6.2))                            ID,S1,S2,S3,AV
   200 CONTINUE                                                E
        STOP          Statemen Blok                                  20
       END            CONTINUE DO LOOP                                0


                                                                 SELESAI

                                          Gambar 3.2 Diagram alir contoh 3.5,
                                                     menghitung rata-rata 3 (tiga)
                                                     nilai ujian mahasiswa
Pemrograman Komputer Bahasa FORTRAN         - 48




                                                                MULAI
Contoh 3.6
                                                                SUM 0
      C PROGRAM PENENTUAN RATA-RATA
      C                                                           DO
      C234567890                                                  200
            SUM=0.0                                              I=1,10
            DO 200 I=1,100                                         0
                                                                BACA A
                 READ(*,10)A
         10      FORMAT(F10.2)
                 SUM = SUM+A                                  SUM SUM + A
         200 CONTINUE
             AVE = SUM/100.0
                                                                  20
             WRITE(*,20)AVE                                        0
          20 FORMAT(1X,F10.2)
             STOP                                            AVESUM/100.0
             END
                                                                CETAK
                                                                 AVE


                                                                SELESAI

                                                 Gambar 3.2 Diagram alir contoh 3.6,
                                                            Menghitung rata-rata 100
                                                            bilangan
        3.1.6                                                  KELUAR         DARI
                 DO-LOOP

                Terdapat dua cara untuk keluar dari suatu DO-loop : (a) keluar secara
                normal, (b) keluar tak normal. Pembahasan hal tersebut akan dibahas
                lebih detail di bawah ini.
                A.                      Keluar Normal
                    Program akan keluar dari perulangan secara normal terjadi apabila
                    indeks I melebihi nilai uji IE (seperti ditunjukkan pada diagram
                    alir pada gambar 3.1 (a). Dalam kasus demikian, pengendalian
                    dialihkam ke pernyataan pertama setelah Do-loop. Semua contoh
                    di atas keluar secara normal.

                B.                     Keluar Tak Normal
                     Dimungkinkan beralih dari dalam ke luar suatu DO loop, misalnya
                     dengan sebuah penyeleksian kondisi IF di dalam DO loop,
                     walaupun nilai indeks yang sekarang tidak melebihi nilai uji IE.
                     Suatu sifat mendasar dari keluar tidak normal suatu DO loop
                     adalah bahwa pada saat keluar, nilai indeks I yang sekarang
Pemrograman Komputer Bahasa FORTRAN                      - 49


           dipertahankan, karenanya dapat digunakan dalam perhitungan
           lebih lanjut atau dalam operasi masukan/keluaran. Kerangka
           program berikut menggambarkan bilangan indeks K terdefinisi
           atau tidak.

                  DO 100 K = 1, 100, 2
                          ***
                          ***
                         IF( X .LT. Y) GO TO 200
                          ***
                          ***
                  100 CONTINUE
                      ***
                       ***        Nilai Indeks K tidak terdefinisi untuk pernyataan
                  ini
                      ***
                      STOP
                  200 * * *
                      ***          Nilai indeks K terdefinisi untuk pernyataan ini
                      ***
                      STOP



CONTOH 3.7 :                                                           MULAI

C234567890                                                            BACA K
      READ (*,8) K
    8 FORMAT(I10)
      KK = K/2                                                       KK  K/2
      DO 100 I = 2, KK
          IF (K .EQ.(K/I)*I) GO TO 50                                  DO
   100 CONTINUE                                                        100
        WRITE(*,10)K                                                   I=2,
                                                                       KK         Ya (keluar tak normal)
    10 FORMAT(10X,I5,1X,’ADALAH
      1PRIMA’)                                                       I membagi
        STOP                                                         K
                                                                           Tidak
    50 WRITE(*,20)K,I                                                                          K bukan
    20 FORMAT(10X,I5,1X,’BUKAN PRIMA’                                                            prima
                                                                         10
      1     10X,I5,1X,’ADALAH PEMBAGI’)                                   0                   I pembagi
        STOP
                                                                              Keluar normal
        END
                                                                        K prima


                                                                      SELESAI


                                                     Gambar 3.3 Diagram alir contoh 3.7,
                                                                Mencari bilangan prima
Pemrograman Komputer Bahasa FORTRAN          - 50




   3.1.7                                                  PENGALIHAN          DI
              DALAM DAN KE SUATU DO-LOOP
           Seseorang selalu dapat beralih dari suatu titik dalam suatu DO loop ke
           titik lainnya dalam DO loop yang sama, dan seseorang secara bebas
           dapat melompat ke luar dari DO loop sembarang. Tetapi tidak
           mungkin untuk melompat ke tengah-tengah DO loop. Yakni, satu-
           satunya cara untuk beralih ke pernyataan di dalam suatu DO loop
           hanyalah melalui pernyataan DO yang sama.
                    Adaikan kita ingin sebuah ruas program FORTRAN
           menggunakan DO loop yang menghitung jumlah 1+2+3+5+6+7+
           8+9+10 tanpa melalui bilangan 4, bandingkan dua program berikut :

           (A)         ISUM =0
                      DO 100 I=1,10
                         IF(I .EQ. 4) I = I + 1
                         ISUM = ISUM + I
                  100 CONTINUE

           (B)         ISUM = 0
                    50 DO 200 I=1,10
                         IF(I .EQ. 4) GO TO 50
                         ISUM = ISUM + I
                   200 CONTINUE

        Progran A tidak benar karena indeks I diubah di dalam DO loop. Yaitu,
jika pernyataan
                        IF(I .EQ. 4) I = I + 1
                        ISUM = ISUM + I

tidak berada dalam sebuah DO loop, maka 5 akan ditambahkan pada ISUM jika
I mula-mula berisi 4. Tetapi, karena disini beada di tengah-tengah DO loop,
pernyataan-pernyataan tersebut tidak diijinkan.
        Berlawanan dengan hal ini, program B memuat penggunaan DO loop
secara benar, tetapi logika program salah. Terdapat suatu ke luar tak normal
bilamana I bernilai 4, tetapi pengendalian dialihkan lagi ke pernyataan DO, dan
indeks dikembalikan ke nilai awal.Sehingga hasil exsekusi hanya akan
menjumlahkan 1+2+3 berulang-ulang. Hasilnya adalah :
                         1+2+3+1+2+3+…
Program B akan menghitung jumlah yang diminta apabila pernyataan
Pemrograman Komputer Bahasa FORTRAN            - 51


                         IF(I .EQ. 4) GO TO 50
diganti dengan :
                         IF(I .EQ. 4) GO TO 200
                                                            MULAI

Contoh 3.8 :                                               BACA LAR

    C PROGRAM PENENTUAN
                                                           DO 50
    C BILANGAN TERBESAR                                    I=1, 99
    C
    C234567890
                                                           BACA X
          REAL LAR
          READ (*,10) LAR
                                                                           Ya
        10 FORMAT(F10.2)
                                                           LAR ≥ X
           DO 50 I = 1, 99
                READ (*,10) X                                      Tidak
                IF(LAR.GE.X)GO TO 50                       LAR  X
                LAR = X
        50 CONTINUE
           WRITE(*,20)LAR                                      5
        20 FORMAT(1X,F10.2)                                    0
           STOP
           END                                            CETAK LAR


                                                           SELESAI


                                                 Gambar 3.4 Diagram alir contoh 3.8,
                                                         Menentukan Bilangan Terbesar

   3.1.8                                                 DO-LOOP
            BERSARANG (NASTED DO)

           Dimungkinkan mempunyai sebuah DO loop (lebih dalam) di dalam
           rentang DO loop lain (lebih luar). DO loop yang terbentuk disebut DO
           loop bersarang (nasted do). Aturan yang berlaku pada DO loop
           bersarang pada dasarnya sama dengan DO loop tunggal. Tetapi berikut
           adalah hal-hal yagn penting di dalam penggunaan DO loop bersarang:
           1. Karena indeks tidak dapat didefinisikan ulang didalam badan DO
               loop, indeks DO loop yang lebih dalam harus tidak sama dengan
               indeks DO loop sebelah luar.
           2. Do loop yang lebih dalam harus terletak di dalam DO loop yang
               lebih luar; yatiu tidak boleh jadi tumpang tindih. Gambar 3.5
               menggambarkan cara DO loop bersarang dibentuk.
           3. Banyaknya Do loop bersarang dibatasi oleh kompailer. Pengalihan
               pengendalian di dalam DO loop bersarang dapat memperdayakan,
               tetapi atauran-aturan tetap sama seperti DO loop tunggal.
Pemrograman Komputer Bahasa FORTRAN       - 52


 4. DO loop boleh memiliki pernyataan terakhir yang sama seperti
    ditunjukkan dalam gambar 3.6.




              DO 18____________            DO 18____________
              ***                          ***
              ***                          ***
              DO 20___________             ***
              ***                          DO 20___________
              ***                          ***
              DO 30___________             ***
              ***                          ***
              ***                      18 CONTINUE
          30 CONTINUE                     ***
             ***                          ***
             ***                          ***
          20 CONTINUE                  20 CONTINUE
             ***
             ***
          18 CONTINUE

               Dapat diterima                Tidak dapat diterima
            ( DO loop bersarang )          (DO loop tumpang tindih)
                     (a)                              (b)

            GAMBAR 3.5 Penggunaan DO loop bersarang


              DO 20___________                  DO 10___________
              ***                               ***
              ***                               ***
              DO 10___________                  DO 10___________
              ***                               ***
              ***                               ***
          10 CONTINUE                        10 CONTINUE
           20 CONTINUE

              DO 10___________
              ***
              ***
              DO 10___________
              ***
              ***
          10 PERNYATAAN TEREKSEKUSI


GAMBAR 3.5 Penggunaan DO loop bersarang dengan akhir yang sama
Pemrograman Komputer Bahasa FORTRAN      - 53




        Contoh 3.9 :

          C PROGRAM MENGHITUNG NILAI RATA-RATA
          C TIGA KALI UJIAN 25 MAHASISWA DENGAN
          C NASTED DO-LOOP
          C
          C234567890
                 WRITE(*,100)
             100 FORMAT(‘1’,4X,’ID’,9X,’AVERAGE’)
                 DO 80 K = 1,25
                      READ (*,90) ID
              90      FORMAT(I10)
                      SUM=0.0
                      DO 20 I=1,3
                            READ(*,10)SCORE
              10            FORMAT(F6.2)
                            SUM=SUM+SCORE
              20      CONTINUE
                      AVE=SUM/3.0
                      WRITE(*,30)ID, AVE
              30      FORMAT(1X,110,5X, F6.2)
              80 CONTINUE
                 END



3.2                      PENYELEKSIAN KONDISI

3.2.1                                                 STATEMEN        GO
         TO

         Statemen GO TO merupakan statemen loncatan, yaitu digunakan untuk
         meloncat ke suatu statemen lainnya yang tertentu. Ada dua bentuk
         statemen ini, yaitu :
             • Statemen GO TO tanpa syarat (unconditional GO TO)
             • Statemen GO TO pengerjaan (assigned GO TO)
             • Statemen GO TO bersyarat/terhitung (computed GO TO)

         A. STATEMEN GO TO TANPA SYARAT
Pemrograman Komputer Bahasa FORTRAN                      - 54


  Statemen ini memberiperintah agar program dilanjutkan langsung ke
  statemen nomor <slabel>. Bentuk umum :
         GO TO <slabel>
  Dimana :
         <slabel> = nomor statemen yang dapat dilaksanakan.
                       variabel <slabel> (integer) adalah salah satu
                       nomor statemen yangterdapat dalam program.
  Dengan statemen ini program dapat meloncati beberapa baris
  statemen di atas atau dibawahnya.
                                                        MULAI
  Contoh 3.10 :
C PROGRAM MENGHITUNG NILAI
                                                                BACA
C RATA-RATA UNTUK TIAP MAHASISWA                              ID,S1,S2,S3
C
C234567890
                                                                CETAK
                                                              ID,S1,S2,S3
   100 READ (*,90) ID,S1,S2,S3
    90 FORMAT(I5,F10.2,F10.2,F10.2)
       WRITE(*,90)ID,S1,S2,S3                             SUM  S1+S2+S3
       SUM = S1+S2+S3
       AVE = SUM/3.0                                          Ave SUM/3
       WRITE(*,30)AVE
    30 FORMAT(1X,’RATA-RATA =’,F6.2)
       GO TO 100                                              CETAK AVE
       END
                                                               SELESAI


                                         Gambar 3.6 Diagram alir contoh 3.10

  Contoh 3.11 :
 C234567890
      5 WRITE(*,’(1A,A)’)KOMPUTER’
        GO TO 5
        END

  Bila program ini dijalankan didapat hasil :
       KOMPUTER
       KOMPUTER
       KOMPUTER
       KOMPUTER           Tanda C ini menunjukkan ditekan tombol CTRL+C (Break)
       KOMPUTER           Karena program akan terus berjalan (loop tak terhingga)
       KOMPUTER
       KOMPUTER
       KOMPUTER
       KOMPUT^C

B. STATEMEN GO TO PENGERJAAN
Pemrograman Komputer Bahasa FORTRAN          - 55


  Statemen ini memberi perintah agar program meloncat ke statemen
  nomor <slabel> yang ditunjukkan oleh isi dari <name>. Bentuk
  umumnya :
        GO TO <name>[[,](<slabel>[,<slabel>]…)]
  Dimana :
        <name> adalah nama variabel integer yang diisi statemen label
                 dengan perintah ASSIGN
  Jadi salah satu nilai dari <slabel> harus sama dengan nilai dari
  <name>. Kalau nilai dari <name> tidak ada yang sama dari salah
  satu <slabel>, maka proses tidak akan melompat ke suatu statemen
  label apapun, tetapi akan dilanjutkanke statemen berikutnya.

  CONTOH 3.12 :
   C234567890
         ASSIGN 15 TO LONCAT
         GOTO LONCAT,(15)
         WRITE(*,’(1A,A)’)’TIDAK DITAMPILKAN’
      15 WRITE(*,’(1A,A)’)’DITAMPILKAN’
         WRITE(*,’(1A,A)’)’INI JUGA DITAMPILKAN’
         END

  Bila dijalankan akan didapatkan hasil :
                 DITAMPILKAN
                 INI JUGA DITAMPILKAN

  Nama variabel integer LONCAT berisi nilai statemen label 15 dan
  statemen
            GOTO LONCAT,(15)
  akan membawa proses meloncat ke statemen label 15, karena nilai
  variabel integer LONCAT sama dengan statemen label tersebut.


C. STATEMEN GOTO BERSYARAT

  Statemen ini digunakan untuk mengontrol loncatan dari nilai
  ungkapan integer <i>. Bentuk umum :
       GOTO (<slabel>[,<slabel>]…)[,]<i>

  Dimana :
  <slabel> adalah statemen label dari suatu executabel statemen yang
           berada pada unit program yang sama dengan statemen
           GOTO bersyarat tersebut.
  <i>      adalah ungkapan integer
Pemrograman Komputer Bahasa FORTRAN        - 56


Statemen GOTO bersyarat akan menuju ke <slabel> yang pertama
bila ungkapan <i> bernilai 1, akan menuju ke <slabel> kedua bila
<i> bernilai 2 dan seterusnya.




Contoh 3.13

 C234567890
        CHARACTER*1 BUNYI
        WRITE(*,’(1X,A)’)’    << PILIHAN >>’
        WRITE(*,*)
        WRITE(*,’(1X,A)’)’ 1. Menghitung isi silinder’
        WRITE(*,’(1X,A)’)’ 2. Menghitung luas segi tiga’
        WRITE(*,’(1X,A)’)’ 3. Menghitung isi kubus’
        WRITE(*.*)
        WRITE(*,’(1X,A)’)’ 4. SELESAI’
     15 WRITE(*,’(//,1X,A,)’)’PILIH NOMER (1-4)?’
        READ(*,’(BN,I1’) NOMER
 C                                         Computed GOTO
 C menuju ke label sesuai dengan nomor yang dipilih 1000
                                              - 1
                                              - 2  2000
        WRITE(*,*)                            - 3  3000
        GOTO(1000,2000,3000,4000) NOMER       - 4  4000
        BUNYI = 7
        WRITE(*,’(1X,A,A)’)’SALAH PILIH!!,Ulangi’, BUNYI
        GOTO 15
 C
 C MENGHITUNG ISI SILINDER
   1000 WRITE(*,’(1X,A,)’)’JARI-JARI LINGKARAN?’
        READ(*,’(BN,F7.2)’) R
        WRITE(*,’(1X,A,)’)’TINGGI SILINDER?’
        READ(*,’(BN,F7.2)’) T
        XISI = 3.1419 *R**2*T
        WRITE(*,’(/,1X,A,F7.2)’)’ISI SILINDER =’,XISI
        GOTO 4000
 C
 C MENGHITUNG LUAS SEGI TIGA
   2000 WRITE(*,’(1X,A,)’)’PANJANG SISI DASAR?’
        READ(*,’(BN,F7.2)’) S
        WRITE(*,’(1X,A,)’)’TINGGI SEGITIGA?’
        READ(*,’(BN,F7.2)’) T
        XLUAS = 0.5*S*T
        WRITE(*,’(/,1X,A,F7.2)’)’LUAS SEGITIGA =’,XLUAS
        GOTO 4000
 C
Pemrograman Komputer Bahasa FORTRAN           - 57


            C MENGHITUNG ISI KUBUS
              3000 WRITE(*,’(1X,A,)’)’PANJANG SISI KUBUS?’
                   READ(*,’(BN,F7.2)’) S
                   WRITE(*,’(1X,A,)’)’TINGGI SILINDER?’
                   READ(*,’(BN,F7.2)’) T
                   XISI = S*S*S
                   WRITE(*,’(/,1X,A,F7.2)’)’ISI KUBUS =’,XISI
                   GOTO 4000
            C
            C SELESAI
              4000 CONTINUE
                   END

                Bila dijalankan akan ditampilkan 4 buah pilihan dan anda
           dapat memilih salah satu dari pilihan tersebut :
                         <<    PILIHAN   >>

                    1. Menghitung isi silinder
                    2. Menghitung luas segi tiga
                    3. Menghitung isi kubus
                                                             Pilih proses yang and
                                                             pilih
                    4. SELESAI

                    PILIH NOMER (1-4)?2

           Jika misalnya dipilih 2, berarti akan menghitung luas segi tiga, maka
           akan ditanyakan :

                    PANJANG SISI DASAR?20.0
                    TINGGI SEGITIGA?15.0

                    LUAS SEGITIGA = 150.00



3.2.2                                                    STATEMEN IF

        Statemen atur kondisional dan iterasi (pengulangan) merupakan
        komponen bahasa FORTRAN yang dapat digunakan untuk membuat
        keputusan. Keputusan diambil setelah meninjau beberapa kondisi
        tertentu. Untuk keperluan ini dikenal adanya statemen IF.
        Ada 3 macam statemen IF yaitu :
                   - IF logika (logical IF)
                   - IF aritmatika (arithmetic IF)
                   - IF blok (Block IF)

        A. IF LOGIKA
Pemrograman Komputer Bahasa FORTRAN             - 58


        IF logika digunakan untuk menyeleksi suatu statemen logika atau
        statemen hubungan (relasi), jika kondisinya benar (TRUE) maka
        statemen yang mengikutinya akan diperoses. Sebaliknya, jika salah
        (FALSE) proses akan meloncat ke statemen berikutnya (ungkapan
        logika yang digunakan .LT.,.LE.,.EQ.,.NE.,.GT.,.GE.). Dua operator
        logika yang sangat berguna selain .NOT. adalah .OR. (logika atau )
        dan .AND. (logika dan).



        Bentuk umum :

             IF(<expresi>) <statemen>
        Dimana :
              <expresi> ungkapan logika atau ungkapan hubungan yang
                          akan diseleksi.
             <statemen> executable statement, kecuali statemen DO, blok
                          IF atau statemen IF logika lainnya.
        Berikut adalah contoh pendeklarasian IF logika yang benar :
             IF(X .GT. 3 .AND. Y .LE. 2) GOTO 3
             IF(A .LE. X .OR. Y .LE. 2) GOTO 5
             IF(.NOT. (X .LT. Y .OR. G .GT. GG)) GOTO 3

        Contoh 3.15                                               MULAI


C PROGRAM MENCARI TAHUN KABISAT                                  BACA
                                                                ITAHUN
C234567890
      WRITE(*,’(1X,A,)’)’TAHUN ?’                               HITUNG
      READ(*,’(BN,I4)’) ITAHUN                              XTAHUN = ITAHUN/4.0
      XTAHUN=ITAHUN/4.0                                      JTAHUN =ITAHUN/4
      JTAHUN=ITAHUN/4
      IF(XTAHUN .EQ. JTAHUN) GOTO 100
      WRITE(*,’(1X,A,I4,A)’)’TAHUN’,             Ya
                                                                 XTAHUN
      1ITAHUN,’BUKAN TAHUN KABISAT’                              =
      GOTO 200                                                   JTAHUN
                                                                      Tidak
  100 WRITE(*,’(1X,A,I4,A)’)’TAHUN’,
     1ITAHUN,’ADALAH TAHUN KABISAT’     TULIS :                   TULIS :
  200 CONTINUE                       TAHUN KABISAT             BUKAN TAHUN
      END                                                        KABISAT


                                                                CONTINUE

                                                                 SELESAI
Bila program tersebut dijalankan akan didapatkan
hasil :
                                                   Gambar 3.7 Diagram alir contoh 3.15,
TAHUN ? 1987                                            Menentukan Tahun Kabisat
Pemrograman Komputer Bahasa FORTRAN                 - 59


TAHUN 1987 ADALAH BUKAN TAHUN KABISAT



     B. IF ARITMATIKA

        Statemen IF aritmatika digunakan untuk menyeleksi kondisi suatu
        ungkapan aritmatika apabila bernilai positif, negatif atau nol.
        Gambar 3.8 menunjukkan diagram alir dari if aritmatika.
        Bentuk umu IF aritmatika adalah :
             IF (<expressi>) <slabel>,<slabel>, <slabel>
        dimana :
              <expressi> merupakan ekspresi aritmatika (disebelah kanan
                          tanda =) yang akan dievaluasi harganya.
             <slabel> merupakan nomor statemen yang dituju selanjutnya
                          bila <expressi> lebih kecil, sama dengan atau
                          lebih besar dari nol.

                        TRUE                       <0              >0
                E<             I    ATAU       I          E              K
           FALSE 0                                            =0
                        TRUE
                E=             J                          J
           FALSE 0

                 K

                          Gambar 3.8 Diagram alir IF Arithmatika

        Berikut adalah contoh pendeklarasian statemen IF aritmatika yang
        sahih :
        IF (A+B) 21, 23, 24              IF(Z-0.001)12, 12, 13
        IF(X) 3, 4, 5                    IF(K(I,J)-1)20, 40, 30
        IF(A*XZ**3-A*B) 2, 3, 4

                                                          MULAI

        Contoh 3.16 :
                                                          BACA ID
                                                        PAY  50000
 C PROGRAM PREMI
 C PREMI = 9.75 JIKA BELUM KAWIN       NEGATIF                               POSITIF
 C PREMI = 16,25 KAWIN TANPA ANAK                         TYPE-2
 C PREMI = 24.50 KAWIN PUNYA ANAK
 C234567890                                                        NOL
       REAL NET
       WRITE(*,50)’ID ?’       NET PAY-9.75            NET PAY-16.25          NET PAY-24.50
    50 READ(*,’(BN,I4)’)ID
       PAY = 50000.00                                      CETAK
                                                           ID, NET


                                                          SELESAI


                                            Gambar 3.9 Diagram alir contoh 3.16,
                                                 Menentukan Jumlah Premi
Pemrograman Komputer Bahasa FORTRAN    - 60


   IF(TYPE-2) 10,20,30
10 NET = PAY -9.75
   GOTO 75
20 NET = PAY – 16.25
   GOTO 75
30 NET = PAY – 24.50
75 WRITE(*,40)ID, NET
40 FORMAT(1X,I5,3X,F12.2)
   END




C. IF BLOK

   Statemen IF blok dapat terdiri dari statemen IF-THEN, ELSE,
   ELSEIF dan ENDIF.
   Bentuk umum :
          IF(<statemen>) THEN
          ELSE
          ELSEIF (<statemen>) THEN
          ENDIF
   Berikut contoh pendeklarasian IF-THEN, ELSE, ELSEIF dan
   ENDIF :

     A. IF (IREMAIN .EQ. 2) THEN
             <statemen>
        ENDIF
     B. IF(IREMAIN .EQ.2) THEN
           <statemen>
        ELSE
           <statemen>
        ENDIF
     C. IF(IREMAIN .EQ. 2) THEN
            <statemen>
            ELSEIF (IREMAIN .EQ.3) THEN
              <statemen>
            ELSE
               <statemen>
        ENDIF

  Contoh 3.17 :

   C234567890
         CHARACTE*20 NAMA(5), KET, GARIS*52
         REAL*4 NILAI(5)
         DATA NAMA /’ARIEF’,’BUDI’,’CANDRA’,’DEWI’,’EDI’/
Pemrograman Komputer Bahasa FORTRAN   - 61


          DATA NILAI/95.9,57.5,23.5,90.0,65.75/
   C CETAK JUDUL TABEL
          GARIS=’----------------------------------------‘
          WRITE(*,’(1X,A)’)’            DAFTAR NILAI UJIAN’
          WRITE(*,*)
          WRITE(*,’(1X,A)’) GARIS
          WRITE(*,’(1X,A)’)’ NAMA MAHASISWA NILAI KETERANGAN’
          WRITE(*,’(1X,A)’) GARIS
          DO 15 I=1,5
              IF(NILAI(I) .GT. 75.0) THEN
                  KET = ‘LULUS SANGAT BAIK’
                  ELSEIF(NILAI(I) .GT. 65.0) THEN
                     KET = ‘LULUS BAIK’
                  ELSEIF(NILAI(I) .GT. 55.0) THEN
                     KET = ‘LULUS CUKUP’
                  ELSE
                     KET =’TIDAK LULUS’
              ENDIF
      MULAI
      15 WRITE(*,40) NAMA(I), NILAI(I), KET
      40 FORMAT(1X,A20,2X,F6.2,2X,A20)
       BACA
          WRITE(*,’(1X,A)’) GARIS
    DATA NAMA,
          END
       NILAI

       CETAK
    JUDUL TABEL


     DO
     I=1,5


                     YA
     NILAI(I) >            KET =’LULUS SANGAT BAIK’
       75.0 ?

             TIDAK

     NILAI(I) >
                     YA
                               KET =’LULUS BAIK’
       65.0 ?

             TIDAK

     NILAI(I) >      YA
                              KET =’LULUS CUKUP’
       55.0 ?
             TIDAK
KET =’TIDAK LULUS’


       CETAK
    JUDUL TABEL



        1
        5

      SELESAI


         Gambar 3.10 Diagram alir contoh 3.17,
                 Menentukan kelulusan mahasiswa
Pemrograman Komputer Bahasa FORTRAN          - 62




SOAL-SOAL YANG DIPECAHKAN

3.1 Temukan nilai akhir K setelah tiap ruas program FORTRAN berikut dilaksanakan
      a.       K=2                                  b.      K=2
           10 DO 20 I=3,8,2                              10 DO 20 I=3,8,2
               IF (I .EQ.5) GOTO 20                         IF (I .EQ.5) GOTO 10
               K=K+1                                        K=K+1
           20 CONTINUE                                   20 CONTINUE
               K=2*K                                       K=2*K
Jawab :
    a. Pernyataan pertama memberi nilai 2 kepada K. Kemudian DO loop dieksekusi
         sebagai berikut :
            (i)       Pertama untuk I=3. karena I≠5, pernyataan K=K+1 dieksekusi,
                 yang menghasilkan :
                                K K+1 = 2+3=5
            (ii)      Kemudian untuk I=5. Karena I=5,pengendalian dialihkan ke
                 CONTINUE yang mendaur-ulang DO loop
            (iii)     Kemudian untuk I=7. Karena I≠5, pernyataan K=K+1 dieksekusi,
                 yang menghasilkan :
                                K K+1 = 5+7=12
                 Nilai I berikutnya melampaui nilai uji, sehingga pengendalian
                 dialihkan ke pernyataan yang menyusul DO loop, yang melipat duakan
                 nilai K. Karenanya nilai K terakhir adalah 24.
            (iv)

   b. Pernyataan pertama memberi nilai 2 kepada K. Kemudian DO loop dieksekusi
      sebagai berikut :
         (i)      Pertama untuk I=3. Karena I≠5 pernyataan K=K+1 dieksekusi,
              yang menghasilkan :
                           K K+1 = 2+3=5
         (ii)     Kemudian untuk I=5. Karena I=5, pengendalian dialihkan ke
              pernyataan DO
Pemrograman Komputer Bahasa FORTRAN         - 63


           Karena pengendalian dialihkan ke pernyataan DO, DO loop mulai dari
           awal lagi dan menetapkan I=3. Jadi, (i) dan (ii) diulang berkali-kali. Ini
           memberikan sebuah loop tak terhingga dan tidak terdapat nilai terakhir
           dari K.

3.2 Tuliskan pernyataan-pernyataan berikut dalam FORTRAN :
    a. Jika X>Y, berhenti
    b. Jika J≠K, lanjut ke pernyataan berpengenal 31
    c. Jika a2≤B+C, lanjutkan ke pernyataan berpengenal 41
    d. Jika A-B≥X3, berhenti

    Jawab :
      a. IF(X .GT. Y) stop                            c. IF(A**2 .LE. B+C) GOTO 41
      b. IF(J .NE. K) GOTO 31                         d. IF(A-B .GE. X**3) STOP

3.3 Andaikan X dan Y telah didefinisikan. Tuliskan sebuah pernyataan FORTRAN
    atau ruas FORTRAN yang (a) mengalihkan pengendalian ke pernyataan
    berpengenal 41 jika a2 ≤ Y, dan jika tidak demikian mengalohkan pengendalian
    ke pernyataan berpengenal 42; (b) menetapkan K=0 jika X+Y>100, dan jika
    tidak menetapkan K=1.
    Lakukan hal di atas dalam dua cara, sekali dengan sebuah pernyataan IF logika.

Jawab :
a . (i) perhatikan bahwa a2 ≤ Y, jika dan hanya jika a2 – Y negatif atau nol
                IF (X**2-Y) 41, 41, 42
    (ii)        IF (X**2 .LE. Y) GOTO 41
            42 ………………………
b. (i) Perhatikan bahwa X+Y>100 jika dan hanya jika X+Y-100 positif
                IF(X+Y-100.0)20, 20, 10
            10 K=0
                GOTO 30
            20 K=1
            30 ……………………….
     (ii)        IF (X+Y .LE. 100.0) GOTO 20
                 K=0
                 GOTO 30
             20 K=1
             30 ……………….


SOAL-SOAL LATIHAN

   1. Pada tiap pernyataan DO berikut, temukan kesalahan, jika ada :
Pemrograman Komputer Bahasa FORTRAN    - 64


     a. DO 700, LAMB=1,14,l              c. DO 900 K=I, J, K
     b. DO 800 J=7,M**2,2                d. DO 1000 LONG=K234 , K123, K345

  2. Temukan nilai K setelah tiap ruas FORTRAN berikut dieksekusi

     a.       K=3                            b.     K=3
              DO 100 J=3,7,3                        M=2
                K=K+J                               DO 300 J=3,7,M
          100 CONTINUE                                M=M+K
              K=3*K                             300 CONTINUE
                                                    K=3*K
     c.       K=3                            D.     K=3
              M=2                                   M=2
              DO 300 J=3,7,M                        DO 400 J=M,7,M
                K=K+J                                 K=J+K+M
          300 CONTINUE                                IF(K.GT.9) GOTO 10
              K=3*K                             400 CONTINUE
                                                 10 K=3*K

  3. Temukan kesalahan jika ada, pada tiap pernyataan FORTRAN berikut:
        a. IF(A=B) GOTO 50                      e. IF(X.LE.100) GOTO K
        b. IF(X GT Y) STOP                      f. IF(A-100)10,20,30
        c. IF(B**2-A*C) STOP                    g. IF(X.GE.Y) GOTO 55
        d. IF(X.LT.Y+Z) 10,15, 20               h. IF(INT.LT.AMOUNT STOP

  4. Jika J dan K masing-masing berisi 3 dan 5. temukan nilai akhir J setelah
     masing-masing ruas program dieksekusi :

     a.       IF(J.GE.K) J=J+2               b.      IF(J.LT.K-1) GOTO 10
               J=J+2                                 J=J+2
                                                  10 J=J+K
     c.       IF(5*J.EQ.3*K) J=J+2           D.      IF(J.GE.K+1) GOTO 10
              J=J+2                                  J=J+2
                                                  10 J=J+K
     d        IF(J-) 10,10,20                        IF(2*J-K)10,10,20
     .     10 J=K                                 10 J=K
           20 J=J+2                               20 J=J+2



PRAKTIKUM
Pemrograman Komputer Bahasa FORTRAN                        - 65


1. Tulislah bebrapa program FORTRAN berikut, jalankan, amati prosesnya dan
   simpan dengan nama berbeda.
C23456789                                       C23456789
      PROGRAM LAT3_1A                                  PROGRAM LAT3_1B
C     Program statemen STOP                     C      Program statemen PAUSE
      WRITE(*,4) A                                     A=10.0
    4 FORMAT (1X,’NILAI A = ‘,F4.1)                    B=12.0
      STOP                                             WRITE(*,4) A
      END                                              PAUSE ‘TEKAN <ENTER> UNTUK MELIHAT NILAI B’
                                                      WRITE(*,6) B
                                                    4 FORMAT(1X,’NILAI A = ‘, F4.1)
                                                    6 FORMAT(1X, ‘NILAI B = ‘,F4.1)
                                                      STOP
                                                      END



C23456789                                       C23456789
       PROGRAM LAT3_1C                                 PROGRAM LAT3_1D
C      Program statemen membuat fungsi          C     Program membuat fungsi
C      Y(X)= LOG10 (X)                          C     Y(X) = X!
       DO J=1,20,2                                     DOUBLEPRECISION Y
          X=FLOAT(J)                                  WRITE(*,*) ‘BERAPA FAKTORIAL? ‘
          Y=LOG10(X)                                  READ(*,*) IFAKT
          WRITE(*,50) X, Y                            Y=1.0
       ENDDO                                          DO N=1, IFAK
   50 FORMAT(1X,’NILAI A = ‘, F7.5),                      X=FLOAT(N)
     - 3X,’NILAI LOG10(X) = ‘,F9.5)                       Y=Y*X
      END                                                 WRITE(*,4) X,Y
                                                      ENDDO
                                                    4 FORMAT(1X,’HARGA ‘, I5,’!’,
                                                         ‘ADALAH’, E27.17)
                                                      STOP
                                                     END
C23456789                                       C23456789
       PROGRAM LAT3_1E                                 PROGRAM LAT3_1F
C     Program menghitung jumlah bilangan        C     Program menghitung nilai dari persamaan
C     dari 1 sampai N
                                                                         a  ( v − b)
       DOUBLEPRECISION Y                        C      T ( P, V ) =  P + 2 
      WRITE(*,*) ‘N = ?’
      READ(*,*) IAKHIR
                                                                        V  R
      Y=0.0                                     C
      DO 10 N=1, IAKHIR                                CHARACTER*17 IFX1
           X=FLOAT(N)                                  DOUBLEPRECISION P,V,T
           Y=Y+X                                C      PERSAMAAN GAS CO2
           WRITE(*,10) N,Y                             R=8.31*1.0E+3
      ENDDO                                            A=366.0
    4 FORMAT(1X,’JUMLAH BIL. DARI                      B=0.0429
     - 1-- ‘, I5, ‘ADALAH’, F9.1)                      DO M=1, 25
      STOP                                               P=10000.0*FLOAT(M)
     END                                                 DO N=1,M
                                                             V=FLOAT(N)
                                                             T=(P+A/V**2)*(V-B)/R
                                                             WRITE(*,10) P, V, T
                                                          ENDDO
                                                       ENDDO
                                                    10 FORMAT(1X, ‘P= ’,F9.1,,1X,’V= ’,F9.1,,1X,’T=’,F9.1)
                                                       STOP
                                                      END
C23456789
      PROGRAM LAT3_1F
C     Program mencari bilangan terbesar
C
      REAL LAR
Pemrograman Komputer Bahasa FORTRAN                - 66


      WRITE(*,*) ‘N = ?’
      READ(*,10) N
   10 FORMAT(I6)
      WRITE(*,*) ‘LAR = ?’
      READ(*,20) LAR
      I=1
  100 READ(*,20) X
   20 FORMAT(F12.2)
      IF (LAR .GE.X) GOTO 200
          LAR=X
  200 I=I+1
      IF (I .LE.N-1) GOTO 100
       WRITE(*,30) LAR
   30 FORMAT(1X,’BIL. TERBESAR ADALAH’,2X,F12.2)
     STOP
     END


2. Buatlah program untuk menghitung :
      a. 1/n!
      b. y(t)=10.0 sin(2Πft) exp(-0.9t)
            n
                 1
      c. ∑             dengan A = 10.0 dan B = 1
           1=1 A + iB



       d. y (t ) = t 2 + t +1.0
                                                   10
3. Buatlah program untuk menghitung                ∑n
                                                   n =1
                                                          2
                                                              + n + 1 menggunakan statemen

   GOTO dan IF (decision) THEN
4. Hitunglah y = x 4 − 0.5 x 2 + 7.0 x − 8.0 dengan batas -4<x<4 dengan step 0.1

More Related Content

What's hot

6. analisis semantik
6. analisis semantik6. analisis semantik
6. analisis semantik
yuster92
 
Dasar Dasar Algoritma
Dasar Dasar AlgoritmaDasar Dasar Algoritma
Dasar Dasar Algoritma
formatik
 
Materi dasar-pascal
Materi dasar-pascalMateri dasar-pascal
Materi dasar-pascal
Faisal Amir
 

What's hot (20)

Modul6
Modul6Modul6
Modul6
 
Algoritma 02
Algoritma 02Algoritma 02
Algoritma 02
 
Kompilasi13 ka p (1)
Kompilasi13 ka p (1)Kompilasi13 ka p (1)
Kompilasi13 ka p (1)
 
6. analisis semantik
6. analisis semantik6. analisis semantik
6. analisis semantik
 
Alur logika pemrograman
Alur logika pemrogramanAlur logika pemrograman
Alur logika pemrograman
 
Analisis Semantik - P 6 Teknik Kompilasi
Analisis Semantik - P 6 Teknik KompilasiAnalisis Semantik - P 6 Teknik Kompilasi
Analisis Semantik - P 6 Teknik Kompilasi
 
Intermediate code kode antara
Intermediate code   kode antaraIntermediate code   kode antara
Intermediate code kode antara
 
Laporan Praktikum Algoritma Pemrograman Modul II
Laporan Praktikum Algoritma Pemrograman Modul IILaporan Praktikum Algoritma Pemrograman Modul II
Laporan Praktikum Algoritma Pemrograman Modul II
 
Analisis Semantik - P6
Analisis Semantik - P6Analisis Semantik - P6
Analisis Semantik - P6
 
Materi dasar-pascal
Materi dasar-pascalMateri dasar-pascal
Materi dasar-pascal
 
Pengenalan konsep pemrograman c++
Pengenalan konsep pemrograman c++ Pengenalan konsep pemrograman c++
Pengenalan konsep pemrograman c++
 
Dasar Dasar Algoritma
Dasar Dasar AlgoritmaDasar Dasar Algoritma
Dasar Dasar Algoritma
 
Pengantar R
Pengantar RPengantar R
Pengantar R
 
ALGORITMA dan PEMROGRAMAN
ALGORITMA dan PEMROGRAMANALGORITMA dan PEMROGRAMAN
ALGORITMA dan PEMROGRAMAN
 
Algoritma dan Pemrograman
Algoritma dan PemrogramanAlgoritma dan Pemrograman
Algoritma dan Pemrograman
 
Materi dasar-pascal
Materi dasar-pascalMateri dasar-pascal
Materi dasar-pascal
 
Minggu V
Minggu VMinggu V
Minggu V
 
Algoritma Pemrograman - Pendahuluan
Algoritma Pemrograman - PendahuluanAlgoritma Pemrograman - Pendahuluan
Algoritma Pemrograman - Pendahuluan
 
Tugas sp algo
Tugas sp algoTugas sp algo
Tugas sp algo
 
Algoritma Pemrograman - Perintah Input/Output
Algoritma Pemrograman - Perintah Input/OutputAlgoritma Pemrograman - Perintah Input/Output
Algoritma Pemrograman - Perintah Input/Output
 

Similar to Bab 3

Pascal - Pendahuluan1.txt - Notepad.pdf
Pascal - Pendahuluan1.txt - Notepad.pdfPascal - Pendahuluan1.txt - Notepad.pdf
Pascal - Pendahuluan1.txt - Notepad.pdf
Jurnal IT
 
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunusTifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
Tifanie Indah
 
Resume praktikum
Resume praktikumResume praktikum
Resume praktikum
NuRul Emi
 
Modul pascal
Modul pascalModul pascal
Modul pascal
danver98
 
MAKALAH PERULANGAN BAHASA C ( Diki Candra ).docx
MAKALAH PERULANGAN BAHASA C ( Diki Candra ).docxMAKALAH PERULANGAN BAHASA C ( Diki Candra ).docx
MAKALAH PERULANGAN BAHASA C ( Diki Candra ).docx
Dikicandra6
 

Similar to Bab 3 (20)

Pascal - Pendahuluan1.txt - Notepad.pdf
Pascal - Pendahuluan1.txt - Notepad.pdfPascal - Pendahuluan1.txt - Notepad.pdf
Pascal - Pendahuluan1.txt - Notepad.pdf
 
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunusTifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
 
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunusTifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
 
Struktur Runtunan Algoritma
Struktur Runtunan AlgoritmaStruktur Runtunan Algoritma
Struktur Runtunan Algoritma
 
Struktur data chapter_01
Struktur data chapter_01Struktur data chapter_01
Struktur data chapter_01
 
Tugas alogaritma
Tugas alogaritmaTugas alogaritma
Tugas alogaritma
 
Resume praktikum
Resume praktikumResume praktikum
Resume praktikum
 
Modul pascal
Modul pascalModul pascal
Modul pascal
 
Modul pascal
Modul pascalModul pascal
Modul pascal
 
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
 
207 p04
207 p04207 p04
207 p04
 
Analisis semantik, kode antara dan pembangkitan kode (2).pptx
Analisis semantik, kode antara dan pembangkitan kode (2).pptxAnalisis semantik, kode antara dan pembangkitan kode (2).pptx
Analisis semantik, kode antara dan pembangkitan kode (2).pptx
 
Modul pascal
Modul pascalModul pascal
Modul pascal
 
MAKALAH PERULANGAN BAHASA C ( Diki Candra ).docx
MAKALAH PERULANGAN BAHASA C ( Diki Candra ).docxMAKALAH PERULANGAN BAHASA C ( Diki Candra ).docx
MAKALAH PERULANGAN BAHASA C ( Diki Candra ).docx
 
Praktikum fix 2
Praktikum fix 2Praktikum fix 2
Praktikum fix 2
 
207 p05
207 p05207 p05
207 p05
 
Laporan praktikum modul 5
Laporan praktikum modul 5Laporan praktikum modul 5
Laporan praktikum modul 5
 
Pengulangan Visual Basic
Pengulangan Visual BasicPengulangan Visual Basic
Pengulangan Visual Basic
 

Bab 3

  • 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 yang lebih kompleks yang membutuhkan adanya pengambilan keputusan dalam mengatur aliran logika program. INDIKATOR 1. Mahasiswa dapat menggunakan stetemen perulangan dalam mengatur aliran logika pemrograman dimana dibutuhkan adanya pengerjaan sebuah statemen yang berulang-ulang (looping and repetition) 2. Mahasiswa dapat menerapkan penyeleksian kondisi pada sebuah statemen yang memiliki beberapa opsi pengerjaan yang berbeda sesuai dengan kondisi yang dihasilkan. 42
  • 2. Pemrograman Komputer Bahasa FORTRAN - 43 3.1 PERULANGAN Statemen kontrol atau statemen kendali termasuk executabel statement, yang mengendalikan urutan dari proses statemen-statemen di dalam blok program. Di dalam sebuah program, kadang kala, terdapat suatu eksekusi statemen yang sama yang dilakukan berulang-ulang. Dimana, pengulangan suatu proses adalah hal yang mendasar untuk penulisan progran komputer, dan akan sangat berguna untuk mempunyai sebuah komando mirip makro seperti DO … WHILE 1≤ I≤ N. 3.1.1 STATEMEN CONTINUE Pernyataan CONTINUE digunakan sebagai dummy statement (statemen boneka), yang digunakan untuk terminal statement pada statemen DO atau statemen GOTO 3.1.2 STATEMEN END Fungsi dari statemen END pada program utama adalah untuk mengahiri proses dari program, sedangkan pada unit program mempunyai fungsi seperti RETURN. Statemen END harus terletak diakhir dari program dan tidak boleh digabung dengan statemen lain. Bentuk umum dari statemen ini adalah : END Contoh 3.1 : C234567890 END selalu di akhir program A= 20.0 WRITE(*,21) A 21 FORMAT(1X,’NILAI A = ’,F7.2) END 3.1.3 STATEMEN STOP Statemen ini berfungsi untuk menghentikan proses pengerjaan program. Statemen STOP tidak mesti ada didalam sebuah program. Penempatan statemen ini boleh dimana saja di dalam program. Bentuk umum statemen STOP adalah sebagai berikut : STOP [<n>] Dimana :
  • 3. Pemrograman Komputer Bahasa FORTRAN - 44 <n> merupakan suatu konstanta angka yang panjangnya tidak boleh lebih dari lima digit atau suatu string dan sifatnya opsional. Contoh 3.1 : C234567890 A=10.0 B=60.0 WRITE(*,100) A STOP ’PROSES DIHENTIKAN DENGAN STATEMEN STOP’ WRITE(*,200) B 100 FORMAT(1X,’NILAI A =’,F5.1,/) 200 FORMAT(1X,’NILAI B =’,F5.1) END Bila program ini dijalankan, didapatkan hasil sebagai berikut : NILAI A = 10.0 PROSES DIHENTIKAN DENGAN STATEMEN STOP 3.1.4 STATEMEN PAUSE Tidak seperti statemen STOP yang menghentikan/keluar dari program, statemen PAUSE digunakan untuk menghentikan sementara proses eksekusi program. Pengaruh dari penghentian sementaran program dengan statemen PAUSE akan berakhir atau eksekusi program dilanjutkan apabila ditekan tombol <Enter>. Bentuk umum statemen PAUSE sebagai berikut : PAUSE [<n>] Dimana : <n> merupakan suatu konstanta angka yang panjangnya tidak boleh lebih dari lima digit atau suatu string dan sifatnya opsional. Contoh 3.2 : C234567890 A=10.0 B=60.0 WRITE(*,100) A PAUSE ’Tekan Tombol RETURN untuk melihat nilai B’ WRITE(*,200) B 100 FORMAT(1X,’NILAI A =’,F5.1,/) 200 FORMAT(1X,’NILAI B =’,F5.1) END
  • 4. Pemrograman Komputer Bahasa FORTRAN - 45 Bila program ini dijalankan, didapatkan hasil sebagai berikut : NILAI A = 10.0 Tekan Tombol RETURN untuk melihat nilai B Please press <return> to continue. NILAI B = 60.0 3.1.5 STATEMEN DO Pernyataan DO digunakan untuk mengulang suatu statemen atau proses sebanyak N kali. Bentuk umum dari statemen ini adalah sebagai berikut : DO <slabel>[,] <nama variabel> = <exp1>,<exp2>[,<exp3>] Dimana : <slabel> : adalah statemen label dari suatu executabel statement. <nama variabel> : suatu variabel numerik integer <exp1> : nilai numerik bulat sebagai awal perulang- an (starting point) <exp2> : nilai numerik bulat akhir perulangan (end point) <exp3> : nilai numerik bulat sebagai peningkatan (interval) perulangan. Statemen label Contoh 3.3 : Variabel numerik integer Awal perulangan C234567890 Akhir perulangan DO 5 I=1,5,1 Peningkatan (increment) 5 WRITE(*,21) I 21 FORMAT(1X,I2,’.’,1X,’KOMPUTER’) END Bila program ini dijalankan, didapatkan hasil sebagai berikut : 1. KOMPUTER 2. KOMPUTER 3. KOMPUTER 4. KOMPUTER 5. KOMPUTER
  • 5. Pemrograman Komputer Bahasa FORTRAN - 46 Tampak statemen WRITE akan diperoses sebanyak lima kali, yaitu hitungan I = 1 sampai I = 5 dengan interval 1. Untuk pengulangan menurun gunakan nilai awal lebih besar dari nilai akhir dengan interval bertanda minus (-) seperti tampak dalam contoh 3.4 berikut. Contoh 3.4 : C234567890 DO 5 I=8,1,-2 5 WRITE(*,21) I 21 FORMAT(1X,’NILAI I = ’,I2) END Bila program ini dijalankan, didapatkan hasil sebagai berikut : NILAI I = 8 NILAI I = 6 NILAI I = 4 NILAI I = 2 NILAI I = 1 Selain hal tersebut di atas, statemen DO juga bisa menggunakan blok program DO-CONTINUE (badan DO-loop diindentasi lebih kedalam untuk memudahkan pembacaan). Bentuk statemen ini sebagai berikut: DO n I = IN,IE,IC Dimana : . . IN = nilai awal indeks . IE = nilai uji/akhir indexs BADAN DO LOOP . IC = peningkatan/interval . n = statemen label (nomor . Pernyataan CONTINUE) n CONTINUE Untuk jelasnya, stateman DO dapat digambarkan dalam bentuk diagram alir seperti tampak dalam gambar 3.1.
  • 6. Pemrograman Komputer Bahasa FORTRAN - 47 I  IN DO n I = IN,IE, IC Badan DO Badan DO I  I + IC Ya I≤ n belum selesai belum selesai IE Tidak SELESAI SELESAI (a) (b) Gambar 3.1 Diagram Alir Statemen DO Contoh 3.5 : MULAI C PROGRAM MENGHITUNG NILAI MAHASISWA C234567890 DO 200 WRITE (*,5) I=1,10 5 FORMAT(1X,’ID NO.’,4X, 0 1’TEST1’, 4X,’TEST2’,4X, Statemen BACA DO ID,S1,S2,S3 2’TEST3’,3X,’AVERAGE’) DO 200 I=1,100 SUM S1+S2+S3 READ(*,10)ID,S1,S2,S3 10 FORMAT(5X,I5,3(4X,F6.2) SUM = S1 + S2 + S3 AVESUM/3.0 AVE = SUM/3.0 WRITE(*,20)ID,S1,S2,S3,AVE CETAK 20 FORMAT(5X,I5,4(4X,F6.2)) ID,S1,S2,S3,AV 200 CONTINUE E STOP Statemen Blok 20 END CONTINUE DO LOOP 0 SELESAI Gambar 3.2 Diagram alir contoh 3.5, menghitung rata-rata 3 (tiga) nilai ujian mahasiswa
  • 7. Pemrograman Komputer Bahasa FORTRAN - 48 MULAI Contoh 3.6 SUM 0 C PROGRAM PENENTUAN RATA-RATA C DO C234567890 200 SUM=0.0 I=1,10 DO 200 I=1,100 0 BACA A READ(*,10)A 10 FORMAT(F10.2) SUM = SUM+A SUM SUM + A 200 CONTINUE AVE = SUM/100.0 20 WRITE(*,20)AVE 0 20 FORMAT(1X,F10.2) STOP AVESUM/100.0 END CETAK AVE SELESAI Gambar 3.2 Diagram alir contoh 3.6, Menghitung rata-rata 100 bilangan 3.1.6 KELUAR DARI DO-LOOP Terdapat dua cara untuk keluar dari suatu DO-loop : (a) keluar secara normal, (b) keluar tak normal. Pembahasan hal tersebut akan dibahas lebih detail di bawah ini. A. Keluar Normal Program akan keluar dari perulangan secara normal terjadi apabila indeks I melebihi nilai uji IE (seperti ditunjukkan pada diagram alir pada gambar 3.1 (a). Dalam kasus demikian, pengendalian dialihkam ke pernyataan pertama setelah Do-loop. Semua contoh di atas keluar secara normal. B. Keluar Tak Normal Dimungkinkan beralih dari dalam ke luar suatu DO loop, misalnya dengan sebuah penyeleksian kondisi IF di dalam DO loop, walaupun nilai indeks yang sekarang tidak melebihi nilai uji IE. Suatu sifat mendasar dari keluar tidak normal suatu DO loop adalah bahwa pada saat keluar, nilai indeks I yang sekarang
  • 8. Pemrograman Komputer Bahasa FORTRAN - 49 dipertahankan, karenanya dapat digunakan dalam perhitungan lebih lanjut atau dalam operasi masukan/keluaran. Kerangka program berikut menggambarkan bilangan indeks K terdefinisi atau tidak. DO 100 K = 1, 100, 2 *** *** IF( X .LT. Y) GO TO 200 *** *** 100 CONTINUE *** *** Nilai Indeks K tidak terdefinisi untuk pernyataan ini *** STOP 200 * * * *** Nilai indeks K terdefinisi untuk pernyataan ini *** STOP CONTOH 3.7 : MULAI C234567890 BACA K READ (*,8) K 8 FORMAT(I10) KK = K/2 KK  K/2 DO 100 I = 2, KK IF (K .EQ.(K/I)*I) GO TO 50 DO 100 CONTINUE 100 WRITE(*,10)K I=2, KK Ya (keluar tak normal) 10 FORMAT(10X,I5,1X,’ADALAH 1PRIMA’) I membagi STOP K Tidak 50 WRITE(*,20)K,I K bukan 20 FORMAT(10X,I5,1X,’BUKAN PRIMA’ prima 10 1 10X,I5,1X,’ADALAH PEMBAGI’) 0 I pembagi STOP Keluar normal END K prima SELESAI Gambar 3.3 Diagram alir contoh 3.7, Mencari bilangan prima
  • 9. Pemrograman Komputer Bahasa FORTRAN - 50 3.1.7 PENGALIHAN DI DALAM DAN KE SUATU DO-LOOP Seseorang selalu dapat beralih dari suatu titik dalam suatu DO loop ke titik lainnya dalam DO loop yang sama, dan seseorang secara bebas dapat melompat ke luar dari DO loop sembarang. Tetapi tidak mungkin untuk melompat ke tengah-tengah DO loop. Yakni, satu- satunya cara untuk beralih ke pernyataan di dalam suatu DO loop hanyalah melalui pernyataan DO yang sama. Adaikan kita ingin sebuah ruas program FORTRAN menggunakan DO loop yang menghitung jumlah 1+2+3+5+6+7+ 8+9+10 tanpa melalui bilangan 4, bandingkan dua program berikut : (A) ISUM =0 DO 100 I=1,10 IF(I .EQ. 4) I = I + 1 ISUM = ISUM + I 100 CONTINUE (B) ISUM = 0 50 DO 200 I=1,10 IF(I .EQ. 4) GO TO 50 ISUM = ISUM + I 200 CONTINUE Progran A tidak benar karena indeks I diubah di dalam DO loop. Yaitu, jika pernyataan IF(I .EQ. 4) I = I + 1 ISUM = ISUM + I tidak berada dalam sebuah DO loop, maka 5 akan ditambahkan pada ISUM jika I mula-mula berisi 4. Tetapi, karena disini beada di tengah-tengah DO loop, pernyataan-pernyataan tersebut tidak diijinkan. Berlawanan dengan hal ini, program B memuat penggunaan DO loop secara benar, tetapi logika program salah. Terdapat suatu ke luar tak normal bilamana I bernilai 4, tetapi pengendalian dialihkan lagi ke pernyataan DO, dan indeks dikembalikan ke nilai awal.Sehingga hasil exsekusi hanya akan menjumlahkan 1+2+3 berulang-ulang. Hasilnya adalah : 1+2+3+1+2+3+… Program B akan menghitung jumlah yang diminta apabila pernyataan
  • 10. Pemrograman Komputer Bahasa FORTRAN - 51 IF(I .EQ. 4) GO TO 50 diganti dengan : IF(I .EQ. 4) GO TO 200 MULAI Contoh 3.8 : BACA LAR C PROGRAM PENENTUAN DO 50 C BILANGAN TERBESAR I=1, 99 C C234567890 BACA X REAL LAR READ (*,10) LAR Ya 10 FORMAT(F10.2) LAR ≥ X DO 50 I = 1, 99 READ (*,10) X Tidak IF(LAR.GE.X)GO TO 50 LAR  X LAR = X 50 CONTINUE WRITE(*,20)LAR 5 20 FORMAT(1X,F10.2) 0 STOP END CETAK LAR SELESAI Gambar 3.4 Diagram alir contoh 3.8, Menentukan Bilangan Terbesar 3.1.8 DO-LOOP BERSARANG (NASTED DO) Dimungkinkan mempunyai sebuah DO loop (lebih dalam) di dalam rentang DO loop lain (lebih luar). DO loop yang terbentuk disebut DO loop bersarang (nasted do). Aturan yang berlaku pada DO loop bersarang pada dasarnya sama dengan DO loop tunggal. Tetapi berikut adalah hal-hal yagn penting di dalam penggunaan DO loop bersarang: 1. Karena indeks tidak dapat didefinisikan ulang didalam badan DO loop, indeks DO loop yang lebih dalam harus tidak sama dengan indeks DO loop sebelah luar. 2. Do loop yang lebih dalam harus terletak di dalam DO loop yang lebih luar; yatiu tidak boleh jadi tumpang tindih. Gambar 3.5 menggambarkan cara DO loop bersarang dibentuk. 3. Banyaknya Do loop bersarang dibatasi oleh kompailer. Pengalihan pengendalian di dalam DO loop bersarang dapat memperdayakan, tetapi atauran-aturan tetap sama seperti DO loop tunggal.
  • 11. Pemrograman Komputer Bahasa FORTRAN - 52 4. DO loop boleh memiliki pernyataan terakhir yang sama seperti ditunjukkan dalam gambar 3.6. DO 18____________ DO 18____________ *** *** *** *** DO 20___________ *** *** DO 20___________ *** *** DO 30___________ *** *** *** *** 18 CONTINUE 30 CONTINUE *** *** *** *** *** 20 CONTINUE 20 CONTINUE *** *** 18 CONTINUE Dapat diterima Tidak dapat diterima ( DO loop bersarang ) (DO loop tumpang tindih) (a) (b) GAMBAR 3.5 Penggunaan DO loop bersarang DO 20___________ DO 10___________ *** *** *** *** DO 10___________ DO 10___________ *** *** *** *** 10 CONTINUE 10 CONTINUE 20 CONTINUE DO 10___________ *** *** DO 10___________ *** *** 10 PERNYATAAN TEREKSEKUSI GAMBAR 3.5 Penggunaan DO loop bersarang dengan akhir yang sama
  • 12. Pemrograman Komputer Bahasa FORTRAN - 53 Contoh 3.9 : C PROGRAM MENGHITUNG NILAI RATA-RATA C TIGA KALI UJIAN 25 MAHASISWA DENGAN C NASTED DO-LOOP C C234567890 WRITE(*,100) 100 FORMAT(‘1’,4X,’ID’,9X,’AVERAGE’) DO 80 K = 1,25 READ (*,90) ID 90 FORMAT(I10) SUM=0.0 DO 20 I=1,3 READ(*,10)SCORE 10 FORMAT(F6.2) SUM=SUM+SCORE 20 CONTINUE AVE=SUM/3.0 WRITE(*,30)ID, AVE 30 FORMAT(1X,110,5X, F6.2) 80 CONTINUE END 3.2 PENYELEKSIAN KONDISI 3.2.1 STATEMEN GO TO Statemen GO TO merupakan statemen loncatan, yaitu digunakan untuk meloncat ke suatu statemen lainnya yang tertentu. Ada dua bentuk statemen ini, yaitu : • Statemen GO TO tanpa syarat (unconditional GO TO) • Statemen GO TO pengerjaan (assigned GO TO) • Statemen GO TO bersyarat/terhitung (computed GO TO) A. STATEMEN GO TO TANPA SYARAT
  • 13. Pemrograman Komputer Bahasa FORTRAN - 54 Statemen ini memberiperintah agar program dilanjutkan langsung ke statemen nomor <slabel>. Bentuk umum : GO TO <slabel> Dimana : <slabel> = nomor statemen yang dapat dilaksanakan. variabel <slabel> (integer) adalah salah satu nomor statemen yangterdapat dalam program. Dengan statemen ini program dapat meloncati beberapa baris statemen di atas atau dibawahnya. MULAI Contoh 3.10 : C PROGRAM MENGHITUNG NILAI BACA C RATA-RATA UNTUK TIAP MAHASISWA ID,S1,S2,S3 C C234567890 CETAK ID,S1,S2,S3 100 READ (*,90) ID,S1,S2,S3 90 FORMAT(I5,F10.2,F10.2,F10.2) WRITE(*,90)ID,S1,S2,S3 SUM  S1+S2+S3 SUM = S1+S2+S3 AVE = SUM/3.0 Ave SUM/3 WRITE(*,30)AVE 30 FORMAT(1X,’RATA-RATA =’,F6.2) GO TO 100 CETAK AVE END SELESAI Gambar 3.6 Diagram alir contoh 3.10 Contoh 3.11 : C234567890 5 WRITE(*,’(1A,A)’)KOMPUTER’ GO TO 5 END Bila program ini dijalankan didapat hasil : KOMPUTER KOMPUTER KOMPUTER KOMPUTER Tanda C ini menunjukkan ditekan tombol CTRL+C (Break) KOMPUTER Karena program akan terus berjalan (loop tak terhingga) KOMPUTER KOMPUTER KOMPUTER KOMPUT^C B. STATEMEN GO TO PENGERJAAN
  • 14. Pemrograman Komputer Bahasa FORTRAN - 55 Statemen ini memberi perintah agar program meloncat ke statemen nomor <slabel> yang ditunjukkan oleh isi dari <name>. Bentuk umumnya : GO TO <name>[[,](<slabel>[,<slabel>]…)] Dimana : <name> adalah nama variabel integer yang diisi statemen label dengan perintah ASSIGN Jadi salah satu nilai dari <slabel> harus sama dengan nilai dari <name>. Kalau nilai dari <name> tidak ada yang sama dari salah satu <slabel>, maka proses tidak akan melompat ke suatu statemen label apapun, tetapi akan dilanjutkanke statemen berikutnya. CONTOH 3.12 : C234567890 ASSIGN 15 TO LONCAT GOTO LONCAT,(15) WRITE(*,’(1A,A)’)’TIDAK DITAMPILKAN’ 15 WRITE(*,’(1A,A)’)’DITAMPILKAN’ WRITE(*,’(1A,A)’)’INI JUGA DITAMPILKAN’ END Bila dijalankan akan didapatkan hasil : DITAMPILKAN INI JUGA DITAMPILKAN Nama variabel integer LONCAT berisi nilai statemen label 15 dan statemen GOTO LONCAT,(15) akan membawa proses meloncat ke statemen label 15, karena nilai variabel integer LONCAT sama dengan statemen label tersebut. C. STATEMEN GOTO BERSYARAT Statemen ini digunakan untuk mengontrol loncatan dari nilai ungkapan integer <i>. Bentuk umum : GOTO (<slabel>[,<slabel>]…)[,]<i> Dimana : <slabel> adalah statemen label dari suatu executabel statemen yang berada pada unit program yang sama dengan statemen GOTO bersyarat tersebut. <i> adalah ungkapan integer
  • 15. Pemrograman Komputer Bahasa FORTRAN - 56 Statemen GOTO bersyarat akan menuju ke <slabel> yang pertama bila ungkapan <i> bernilai 1, akan menuju ke <slabel> kedua bila <i> bernilai 2 dan seterusnya. Contoh 3.13 C234567890 CHARACTER*1 BUNYI WRITE(*,’(1X,A)’)’ << PILIHAN >>’ WRITE(*,*) WRITE(*,’(1X,A)’)’ 1. Menghitung isi silinder’ WRITE(*,’(1X,A)’)’ 2. Menghitung luas segi tiga’ WRITE(*,’(1X,A)’)’ 3. Menghitung isi kubus’ WRITE(*.*) WRITE(*,’(1X,A)’)’ 4. SELESAI’ 15 WRITE(*,’(//,1X,A,)’)’PILIH NOMER (1-4)?’ READ(*,’(BN,I1’) NOMER C Computed GOTO C menuju ke label sesuai dengan nomor yang dipilih 1000 - 1 - 2  2000 WRITE(*,*) - 3  3000 GOTO(1000,2000,3000,4000) NOMER - 4  4000 BUNYI = 7 WRITE(*,’(1X,A,A)’)’SALAH PILIH!!,Ulangi’, BUNYI GOTO 15 C C MENGHITUNG ISI SILINDER 1000 WRITE(*,’(1X,A,)’)’JARI-JARI LINGKARAN?’ READ(*,’(BN,F7.2)’) R WRITE(*,’(1X,A,)’)’TINGGI SILINDER?’ READ(*,’(BN,F7.2)’) T XISI = 3.1419 *R**2*T WRITE(*,’(/,1X,A,F7.2)’)’ISI SILINDER =’,XISI GOTO 4000 C C MENGHITUNG LUAS SEGI TIGA 2000 WRITE(*,’(1X,A,)’)’PANJANG SISI DASAR?’ READ(*,’(BN,F7.2)’) S WRITE(*,’(1X,A,)’)’TINGGI SEGITIGA?’ READ(*,’(BN,F7.2)’) T XLUAS = 0.5*S*T WRITE(*,’(/,1X,A,F7.2)’)’LUAS SEGITIGA =’,XLUAS GOTO 4000 C
  • 16. Pemrograman Komputer Bahasa FORTRAN - 57 C MENGHITUNG ISI KUBUS 3000 WRITE(*,’(1X,A,)’)’PANJANG SISI KUBUS?’ READ(*,’(BN,F7.2)’) S WRITE(*,’(1X,A,)’)’TINGGI SILINDER?’ READ(*,’(BN,F7.2)’) T XISI = S*S*S WRITE(*,’(/,1X,A,F7.2)’)’ISI KUBUS =’,XISI GOTO 4000 C C SELESAI 4000 CONTINUE END Bila dijalankan akan ditampilkan 4 buah pilihan dan anda dapat memilih salah satu dari pilihan tersebut : << PILIHAN >> 1. Menghitung isi silinder 2. Menghitung luas segi tiga 3. Menghitung isi kubus Pilih proses yang and pilih 4. SELESAI PILIH NOMER (1-4)?2 Jika misalnya dipilih 2, berarti akan menghitung luas segi tiga, maka akan ditanyakan : PANJANG SISI DASAR?20.0 TINGGI SEGITIGA?15.0 LUAS SEGITIGA = 150.00 3.2.2 STATEMEN IF Statemen atur kondisional dan iterasi (pengulangan) merupakan komponen bahasa FORTRAN yang dapat digunakan untuk membuat keputusan. Keputusan diambil setelah meninjau beberapa kondisi tertentu. Untuk keperluan ini dikenal adanya statemen IF. Ada 3 macam statemen IF yaitu : - IF logika (logical IF) - IF aritmatika (arithmetic IF) - IF blok (Block IF) A. IF LOGIKA
  • 17. Pemrograman Komputer Bahasa FORTRAN - 58 IF logika digunakan untuk menyeleksi suatu statemen logika atau statemen hubungan (relasi), jika kondisinya benar (TRUE) maka statemen yang mengikutinya akan diperoses. Sebaliknya, jika salah (FALSE) proses akan meloncat ke statemen berikutnya (ungkapan logika yang digunakan .LT.,.LE.,.EQ.,.NE.,.GT.,.GE.). Dua operator logika yang sangat berguna selain .NOT. adalah .OR. (logika atau ) dan .AND. (logika dan). Bentuk umum : IF(<expresi>) <statemen> Dimana : <expresi> ungkapan logika atau ungkapan hubungan yang akan diseleksi. <statemen> executable statement, kecuali statemen DO, blok IF atau statemen IF logika lainnya. Berikut adalah contoh pendeklarasian IF logika yang benar : IF(X .GT. 3 .AND. Y .LE. 2) GOTO 3 IF(A .LE. X .OR. Y .LE. 2) GOTO 5 IF(.NOT. (X .LT. Y .OR. G .GT. GG)) GOTO 3 Contoh 3.15 MULAI C PROGRAM MENCARI TAHUN KABISAT BACA ITAHUN C234567890 WRITE(*,’(1X,A,)’)’TAHUN ?’ HITUNG READ(*,’(BN,I4)’) ITAHUN XTAHUN = ITAHUN/4.0 XTAHUN=ITAHUN/4.0 JTAHUN =ITAHUN/4 JTAHUN=ITAHUN/4 IF(XTAHUN .EQ. JTAHUN) GOTO 100 WRITE(*,’(1X,A,I4,A)’)’TAHUN’, Ya XTAHUN 1ITAHUN,’BUKAN TAHUN KABISAT’ = GOTO 200 JTAHUN Tidak 100 WRITE(*,’(1X,A,I4,A)’)’TAHUN’, 1ITAHUN,’ADALAH TAHUN KABISAT’ TULIS : TULIS : 200 CONTINUE TAHUN KABISAT BUKAN TAHUN END KABISAT CONTINUE SELESAI Bila program tersebut dijalankan akan didapatkan hasil : Gambar 3.7 Diagram alir contoh 3.15, TAHUN ? 1987 Menentukan Tahun Kabisat
  • 18. Pemrograman Komputer Bahasa FORTRAN - 59 TAHUN 1987 ADALAH BUKAN TAHUN KABISAT B. IF ARITMATIKA Statemen IF aritmatika digunakan untuk menyeleksi kondisi suatu ungkapan aritmatika apabila bernilai positif, negatif atau nol. Gambar 3.8 menunjukkan diagram alir dari if aritmatika. Bentuk umu IF aritmatika adalah : IF (<expressi>) <slabel>,<slabel>, <slabel> dimana : <expressi> merupakan ekspresi aritmatika (disebelah kanan tanda =) yang akan dievaluasi harganya. <slabel> merupakan nomor statemen yang dituju selanjutnya bila <expressi> lebih kecil, sama dengan atau lebih besar dari nol. TRUE <0 >0 E< I ATAU I E K FALSE 0 =0 TRUE E= J J FALSE 0 K Gambar 3.8 Diagram alir IF Arithmatika Berikut adalah contoh pendeklarasian statemen IF aritmatika yang sahih : IF (A+B) 21, 23, 24 IF(Z-0.001)12, 12, 13 IF(X) 3, 4, 5 IF(K(I,J)-1)20, 40, 30 IF(A*XZ**3-A*B) 2, 3, 4 MULAI Contoh 3.16 : BACA ID PAY  50000 C PROGRAM PREMI C PREMI = 9.75 JIKA BELUM KAWIN NEGATIF POSITIF C PREMI = 16,25 KAWIN TANPA ANAK TYPE-2 C PREMI = 24.50 KAWIN PUNYA ANAK C234567890 NOL REAL NET WRITE(*,50)’ID ?’ NET PAY-9.75 NET PAY-16.25 NET PAY-24.50 50 READ(*,’(BN,I4)’)ID PAY = 50000.00 CETAK ID, NET SELESAI Gambar 3.9 Diagram alir contoh 3.16, Menentukan Jumlah Premi
  • 19. Pemrograman Komputer Bahasa FORTRAN - 60 IF(TYPE-2) 10,20,30 10 NET = PAY -9.75 GOTO 75 20 NET = PAY – 16.25 GOTO 75 30 NET = PAY – 24.50 75 WRITE(*,40)ID, NET 40 FORMAT(1X,I5,3X,F12.2) END C. IF BLOK Statemen IF blok dapat terdiri dari statemen IF-THEN, ELSE, ELSEIF dan ENDIF. Bentuk umum : IF(<statemen>) THEN ELSE ELSEIF (<statemen>) THEN ENDIF Berikut contoh pendeklarasian IF-THEN, ELSE, ELSEIF dan ENDIF : A. IF (IREMAIN .EQ. 2) THEN <statemen> ENDIF B. IF(IREMAIN .EQ.2) THEN <statemen> ELSE <statemen> ENDIF C. IF(IREMAIN .EQ. 2) THEN <statemen> ELSEIF (IREMAIN .EQ.3) THEN <statemen> ELSE <statemen> ENDIF Contoh 3.17 : C234567890 CHARACTE*20 NAMA(5), KET, GARIS*52 REAL*4 NILAI(5) DATA NAMA /’ARIEF’,’BUDI’,’CANDRA’,’DEWI’,’EDI’/
  • 20. Pemrograman Komputer Bahasa FORTRAN - 61 DATA NILAI/95.9,57.5,23.5,90.0,65.75/ C CETAK JUDUL TABEL GARIS=’----------------------------------------‘ WRITE(*,’(1X,A)’)’ DAFTAR NILAI UJIAN’ WRITE(*,*) WRITE(*,’(1X,A)’) GARIS WRITE(*,’(1X,A)’)’ NAMA MAHASISWA NILAI KETERANGAN’ WRITE(*,’(1X,A)’) GARIS DO 15 I=1,5 IF(NILAI(I) .GT. 75.0) THEN KET = ‘LULUS SANGAT BAIK’ ELSEIF(NILAI(I) .GT. 65.0) THEN KET = ‘LULUS BAIK’ ELSEIF(NILAI(I) .GT. 55.0) THEN KET = ‘LULUS CUKUP’ ELSE KET =’TIDAK LULUS’ ENDIF MULAI 15 WRITE(*,40) NAMA(I), NILAI(I), KET 40 FORMAT(1X,A20,2X,F6.2,2X,A20) BACA WRITE(*,’(1X,A)’) GARIS DATA NAMA, END NILAI CETAK JUDUL TABEL DO I=1,5 YA NILAI(I) > KET =’LULUS SANGAT BAIK’ 75.0 ? TIDAK NILAI(I) > YA KET =’LULUS BAIK’ 65.0 ? TIDAK NILAI(I) > YA KET =’LULUS CUKUP’ 55.0 ? TIDAK KET =’TIDAK LULUS’ CETAK JUDUL TABEL 1 5 SELESAI Gambar 3.10 Diagram alir contoh 3.17, Menentukan kelulusan mahasiswa
  • 21. Pemrograman Komputer Bahasa FORTRAN - 62 SOAL-SOAL YANG DIPECAHKAN 3.1 Temukan nilai akhir K setelah tiap ruas program FORTRAN berikut dilaksanakan a. K=2 b. K=2 10 DO 20 I=3,8,2 10 DO 20 I=3,8,2 IF (I .EQ.5) GOTO 20 IF (I .EQ.5) GOTO 10 K=K+1 K=K+1 20 CONTINUE 20 CONTINUE K=2*K K=2*K Jawab : a. Pernyataan pertama memberi nilai 2 kepada K. Kemudian DO loop dieksekusi sebagai berikut : (i) Pertama untuk I=3. karena I≠5, pernyataan K=K+1 dieksekusi, yang menghasilkan : K K+1 = 2+3=5 (ii) Kemudian untuk I=5. Karena I=5,pengendalian dialihkan ke CONTINUE yang mendaur-ulang DO loop (iii) Kemudian untuk I=7. Karena I≠5, pernyataan K=K+1 dieksekusi, yang menghasilkan : K K+1 = 5+7=12 Nilai I berikutnya melampaui nilai uji, sehingga pengendalian dialihkan ke pernyataan yang menyusul DO loop, yang melipat duakan nilai K. Karenanya nilai K terakhir adalah 24. (iv) b. Pernyataan pertama memberi nilai 2 kepada K. Kemudian DO loop dieksekusi sebagai berikut : (i) Pertama untuk I=3. Karena I≠5 pernyataan K=K+1 dieksekusi, yang menghasilkan : K K+1 = 2+3=5 (ii) Kemudian untuk I=5. Karena I=5, pengendalian dialihkan ke pernyataan DO
  • 22. Pemrograman Komputer Bahasa FORTRAN - 63 Karena pengendalian dialihkan ke pernyataan DO, DO loop mulai dari awal lagi dan menetapkan I=3. Jadi, (i) dan (ii) diulang berkali-kali. Ini memberikan sebuah loop tak terhingga dan tidak terdapat nilai terakhir dari K. 3.2 Tuliskan pernyataan-pernyataan berikut dalam FORTRAN : a. Jika X>Y, berhenti b. Jika J≠K, lanjut ke pernyataan berpengenal 31 c. Jika a2≤B+C, lanjutkan ke pernyataan berpengenal 41 d. Jika A-B≥X3, berhenti Jawab : a. IF(X .GT. Y) stop c. IF(A**2 .LE. B+C) GOTO 41 b. IF(J .NE. K) GOTO 31 d. IF(A-B .GE. X**3) STOP 3.3 Andaikan X dan Y telah didefinisikan. Tuliskan sebuah pernyataan FORTRAN atau ruas FORTRAN yang (a) mengalihkan pengendalian ke pernyataan berpengenal 41 jika a2 ≤ Y, dan jika tidak demikian mengalohkan pengendalian ke pernyataan berpengenal 42; (b) menetapkan K=0 jika X+Y>100, dan jika tidak menetapkan K=1. Lakukan hal di atas dalam dua cara, sekali dengan sebuah pernyataan IF logika. Jawab : a . (i) perhatikan bahwa a2 ≤ Y, jika dan hanya jika a2 – Y negatif atau nol IF (X**2-Y) 41, 41, 42 (ii) IF (X**2 .LE. Y) GOTO 41 42 ……………………… b. (i) Perhatikan bahwa X+Y>100 jika dan hanya jika X+Y-100 positif IF(X+Y-100.0)20, 20, 10 10 K=0 GOTO 30 20 K=1 30 ………………………. (ii) IF (X+Y .LE. 100.0) GOTO 20 K=0 GOTO 30 20 K=1 30 ………………. SOAL-SOAL LATIHAN 1. Pada tiap pernyataan DO berikut, temukan kesalahan, jika ada :
  • 23. Pemrograman Komputer Bahasa FORTRAN - 64 a. DO 700, LAMB=1,14,l c. DO 900 K=I, J, K b. DO 800 J=7,M**2,2 d. DO 1000 LONG=K234 , K123, K345 2. Temukan nilai K setelah tiap ruas FORTRAN berikut dieksekusi a. K=3 b. K=3 DO 100 J=3,7,3 M=2 K=K+J DO 300 J=3,7,M 100 CONTINUE M=M+K K=3*K 300 CONTINUE K=3*K c. K=3 D. K=3 M=2 M=2 DO 300 J=3,7,M DO 400 J=M,7,M K=K+J K=J+K+M 300 CONTINUE IF(K.GT.9) GOTO 10 K=3*K 400 CONTINUE 10 K=3*K 3. Temukan kesalahan jika ada, pada tiap pernyataan FORTRAN berikut: a. IF(A=B) GOTO 50 e. IF(X.LE.100) GOTO K b. IF(X GT Y) STOP f. IF(A-100)10,20,30 c. IF(B**2-A*C) STOP g. IF(X.GE.Y) GOTO 55 d. IF(X.LT.Y+Z) 10,15, 20 h. IF(INT.LT.AMOUNT STOP 4. Jika J dan K masing-masing berisi 3 dan 5. temukan nilai akhir J setelah masing-masing ruas program dieksekusi : a. IF(J.GE.K) J=J+2 b. IF(J.LT.K-1) GOTO 10 J=J+2 J=J+2 10 J=J+K c. IF(5*J.EQ.3*K) J=J+2 D. IF(J.GE.K+1) GOTO 10 J=J+2 J=J+2 10 J=J+K d IF(J-) 10,10,20 IF(2*J-K)10,10,20 . 10 J=K 10 J=K 20 J=J+2 20 J=J+2 PRAKTIKUM
  • 24. Pemrograman Komputer Bahasa FORTRAN - 65 1. Tulislah bebrapa program FORTRAN berikut, jalankan, amati prosesnya dan simpan dengan nama berbeda. C23456789 C23456789 PROGRAM LAT3_1A PROGRAM LAT3_1B C Program statemen STOP C Program statemen PAUSE WRITE(*,4) A A=10.0 4 FORMAT (1X,’NILAI A = ‘,F4.1) B=12.0 STOP WRITE(*,4) A END PAUSE ‘TEKAN <ENTER> UNTUK MELIHAT NILAI B’ WRITE(*,6) B 4 FORMAT(1X,’NILAI A = ‘, F4.1) 6 FORMAT(1X, ‘NILAI B = ‘,F4.1) STOP END C23456789 C23456789 PROGRAM LAT3_1C PROGRAM LAT3_1D C Program statemen membuat fungsi C Program membuat fungsi C Y(X)= LOG10 (X) C Y(X) = X! DO J=1,20,2 DOUBLEPRECISION Y X=FLOAT(J) WRITE(*,*) ‘BERAPA FAKTORIAL? ‘ Y=LOG10(X) READ(*,*) IFAKT WRITE(*,50) X, Y Y=1.0 ENDDO DO N=1, IFAK 50 FORMAT(1X,’NILAI A = ‘, F7.5), X=FLOAT(N) - 3X,’NILAI LOG10(X) = ‘,F9.5) Y=Y*X END WRITE(*,4) X,Y ENDDO 4 FORMAT(1X,’HARGA ‘, I5,’!’, ‘ADALAH’, E27.17) STOP END C23456789 C23456789 PROGRAM LAT3_1E PROGRAM LAT3_1F C Program menghitung jumlah bilangan C Program menghitung nilai dari persamaan C dari 1 sampai N  a  ( v − b) DOUBLEPRECISION Y C T ( P, V ) =  P + 2  WRITE(*,*) ‘N = ?’ READ(*,*) IAKHIR  V  R Y=0.0 C DO 10 N=1, IAKHIR CHARACTER*17 IFX1 X=FLOAT(N) DOUBLEPRECISION P,V,T Y=Y+X C PERSAMAAN GAS CO2 WRITE(*,10) N,Y R=8.31*1.0E+3 ENDDO A=366.0 4 FORMAT(1X,’JUMLAH BIL. DARI B=0.0429 - 1-- ‘, I5, ‘ADALAH’, F9.1) DO M=1, 25 STOP P=10000.0*FLOAT(M) END DO N=1,M V=FLOAT(N) T=(P+A/V**2)*(V-B)/R WRITE(*,10) P, V, T ENDDO ENDDO 10 FORMAT(1X, ‘P= ’,F9.1,,1X,’V= ’,F9.1,,1X,’T=’,F9.1) STOP END C23456789 PROGRAM LAT3_1F C Program mencari bilangan terbesar C REAL LAR
  • 25. Pemrograman Komputer Bahasa FORTRAN - 66 WRITE(*,*) ‘N = ?’ READ(*,10) N 10 FORMAT(I6) WRITE(*,*) ‘LAR = ?’ READ(*,20) LAR I=1 100 READ(*,20) X 20 FORMAT(F12.2) IF (LAR .GE.X) GOTO 200 LAR=X 200 I=I+1 IF (I .LE.N-1) GOTO 100 WRITE(*,30) LAR 30 FORMAT(1X,’BIL. TERBESAR ADALAH’,2X,F12.2) STOP END 2. Buatlah program untuk menghitung : a. 1/n! b. y(t)=10.0 sin(2Πft) exp(-0.9t) n 1 c. ∑ dengan A = 10.0 dan B = 1 1=1 A + iB d. y (t ) = t 2 + t +1.0 10 3. Buatlah program untuk menghitung ∑n n =1 2 + n + 1 menggunakan statemen GOTO dan IF (decision) THEN 4. Hitunglah y = x 4 − 0.5 x 2 + 7.0 x − 8.0 dengan batas -4<x<4 dengan step 0.1