II. DASAR - DASAR ALGORITMA
    
PROSES, INSTRUKSI & AKSI
  Algoritma disusun oleh sedereten langkah instruksi yg logis. Tiap langkah instruksi mengerjakan suatu tindakan (aksi). Bila suatu aksi dilaksanakan, maka sejumlah operasi yg bersesuaian dengan aksi itu dikerjakan oleh pemroses. Efek dari pengerjaan suatu aksi dapat diamati dengan membandingkan keadaan pada saat aksi belum dimulai, t0, dan keadaan pada saat aksi selesai dikerjakan, t1, 
  to : Keadaan sebelum aksi dikerjakan.
        Aksi
  t1 : Keadaan setelah aksi dikerjakan.
   
  Tahap-tahap penyusunan algoritma dimulai dari langkah yg global lebih dahulu. Langkah global ini diperhalus sampai ke langkah yg lebih rinci. Pendekatan desain algoritma seperti ini dinamakan penghalusan langkah atau perancangan puncak-turun (top-down design).
   
  Contoh :
  Diberikan N  buah data bilangan bulat yg tersusun secara acak. Susunlah sebuah algoritma utk mengurutkan sekumpulan data tersebut sehingga tersusun terurut dari nilai yg kecil ke nilai yg besar. Misal N = 5 dengan data bilangan bulat yg belum terurut:
    1    
10
    2    
15
    3    
5
    4    
17
    5  
  2
  
Algoritma pengurutan yg cukup sederhana adalah dengan mencari elemen yg terkecil di dalam kumpulan mulai dari data ke-1 sampai data ke-N, lalu menempatkannya pada posisi data pertama (dengan cara mempertukarkannya dengan data pertama). Ulangi hal tersebut s/d data yg terakhir.
  Setiap pengulangan langkah disebut dengan pass atau lelaran (iteration)
   
  T0 : kumpulan data ke-1 sampai data ke-N belum terurut membesar
        Algoritma PENGURUTAN_DATA
  T1 : kumpulan data ke-1 sampai data ke-N sudah terurut membesar
   
  Perancangan algoritma dengan pendekatan Top-Down dari algoritma global terlebih dahulu.
     
  Algoritma PENGURUTAN_DATA
  Diberikan N buah data yang tersusun acak. Urutkan kumpulan data tersebut sedemikian sehingga
           Data ke-1 ≤ data ke-2 ≤ . . . ≤ data ke-N
  DESKRIPSI :
  Untuk pass k = 1, 2, ..., N-1, lakukan :
          1.      Cari data terkecil (min) mulai dari data ke-k sampai data ke-N;
    2.      Pertukarkan min dengan data ke-k
    
III. ATURAN PENULISAN TEKS ALGORITMA
  Teks Algoritma
  Teks Algoritma tersusun atas 3 bagian(blok) : bagian kepala(header), algoritma, bagian deklarasi, dan bagian deskripsi algoritma.
  Komentar adalah kalimat yg diapit oleh pasangan tanda kurung kurawal { dan }. Setiap bagian disertai komentar untuk memperjelas maksud teks yg dituliskan.
  
    Algoritma NAMA_ALGORITMA
    { Penjelasan tentang algoritma yg berisi uraian singkat mengenai apa yg dilakukan oleh algoritma }
   
  DEKLARASI
  { semua nama yg dipakai, meliputi nama tipe, nama tetapan, nama peubah, nama prosedur dan nama fungsi didefinisikan di sini }
   
  DESKRIPSI
     { semua langkah/aksi algoritma dituliskan di sini}
   
    1. Kepala Algoritma
  Kepala Algoritma adalah bagian yg terdiri atas nama algoritma dan penjelasan (spesifikasi) tentang algoritma tersebut.
  Penjelasan dibawah judul algoritma sering dinamakan juga spesifikasi algoritma .
  Algoritma LUAS_LINGKARAN
  { Menghitung luas lingkaran untuk jari-jari tertentu. Algoritma menerima masukan jari-jari lingkaran, menghitung luasnya, lalu mencerak luas lingkaran ke piranti keluaran }
    
  2. Deklarasi
  Deklarasi nama adalah bagian untuk mendefinisikan semua nama yg dipakai di dalam algoritma. Nama tersebut dapat berupa nama tetapan, nama peubah, nama tipe, nama prosedur dan nama fungsi.
   
  3. Deskripsi
  Bagian ini berisi uraian langkah-langkah penyelesaian masalah. Misalnya notasi write untuk mencetak data/informasi, notasi read untuk membaca data, dsb. Setiap langkah algoritma dibaca dari atas ke bawah. Urutan penulisan menentukan urutan pelaksanaan perintah.
   
  Contoh :
  DESKRIPSI :
  
            read (c,d)
              If  c < d
                 e←a+b
              else
                   e←a-b
              endif
              write (e)
   
  4. Translasi teks algoritma ke dalam teks program PASCAL
  Teks algoritma adalah hasil pemikiran konseptual. Supaya bisa dikerjakan oleh komputer, algoritma harus ditranslasi ke dalam notasi bahasa pemrograman.
  
  Contoh 4.1:
  ALGORITMA
  Algoritma MENGHITUNG_NILAI_RATA_RATA
  { menghitung nilai rata-rata sekumpulan bilangan bulat yg dibaca dari piranti masukan }
   
  DEKLARASI
       X : integer              { peubah data bilangan bulat }
       N : integer              { banyaknya data bilangan bulat, N > 0 }
       K : integer              { pencacah jumlah pengulangan }
       Jumlah : integer      { jumlah seluruh data bilangan bulat }
       rata : real                { rata-rata data bilangan bulat }
   
  DESKRIPSI :
       read (N)                  { baca banyaknya data }
       k←1
       jumlah←0
       while k ≤ N do
  read (x)
  jumlah←jumlah + x
  k←k+1               { cacah pengulangan selanjutnya }
        endwhile
        { k > N }
   
        rata←jumlah/N     { rata-rata data bilangan bulat }
            write (rata)
 
  
PASCAL
  Program MENGHITUNG_NILAI_RATA_RATA;
   { menghitung nilai rata-rata sekumpulan bilangan bulat yg dibaca dari piranti masukan }
   
   {* DEKLARASI *}
  var
       X : integer;                        { peubah data bilangan bulat }
       N : integer;                        { banyaknya data bilangan bulat, N > 0 }
       K : integer;                        { pencacah jumlah pengulangan }
       Jumlah : integer;    { jumlah seluruh data bilangan bulat }
       rata : real;               { rata-rata data bilangan bulat }
   
   {* DESKRIPSI *}
  begin
       write(‘Masukkan jumlah data : ‘ ); readln (N);                  { baca banyaknya data }
       k := 1;                                                                     { mulai dari data pertama }
       jumlah := 0;
       while k <= N do
  begin
     write (‘x = ? ‘); readln (x);
  jumlah:= jumlah + x;
  k := k+1;                      { cacah pengulangan selanjutnya }
        end; while
        { k > N }
   
        rata:=jumlah/N;     { rata-rata data bilangan bulat }
        writeln (‘Rata-rata seluruh data =  ‘, rata);
  end.
    
Tabel Translasi Notasi Algoritmik ke Notasi Bahasa PASCAL
            |      Kelompok      |          Algoritmik      |          Pascal      |          Ket      |    
       |      1. Tipe Dasar      |          boolean      |          Boolean      |              
  |    
       |      integer      |          Byte     Shortint     Word     Integer     Longint      |          1 byte     1 byte     2 byte     2 byte     4 byte      |    
       |      real      |          Real     double     extended      |              
  |    
       |      char      |          Char      |              
  |    
       |      string      |          String[n]      |              
  |    
       |      record      < style="">            field2 : type,        …        fieldN : type       >      |          Record         field1 : type;         field2 : type;        …        fieldN : type;       end;      |              
  |    
       |      2. Operator      |              
  |              
  |              
  |    
       |      a. aritmatik      |          +      |          +      |              
  |    
       |      -      |          -      |              
  |    
       |      *      |          *      |              
  |    
       |      /      |          /      |              
  |    
       |      div      |          div      |              
  |    
       |      mod      |          mod      |              
  |    
       |          
  |              
  |              
  |    
       |      b. perban-         dingan      |          <       |          <       |              
  |    
       |      ≤      |          <=      |              
  |    
       |      >       |          >       |              
  |    
       |      ≥      |          >=      |              
  |    
       |      =      |          =       |              
  |    
       |      ≠      |          < >      |              
  |    
       |      c. logika      |          not      |          not      |              
  |    
       |      and      |          and      |              
  |    
       |      Or      |          or      |              
  |    
       |      xor      |          xor      |              
  |    
       |      3. Komentar      |          { komentar }      |          {  komentar   }     {* komentar *}      |              
  |    
       |      4. Lain-lain      |          const      |          const      |              
  |    
       |      type      |          type      |              
  |    
       |      true      |          true      |              
  |    
       |      false      |          false      |              
  |    
   
     
 
  Tabel Translasi Notasi Algoritmik Pengisian Nilai, Pembacaan dan Penulisan 
  ke dalam Notasi Bahasa Pascal
   
       |     Kelompok     |        Algoritmik     |        Pascal     |        Ket     |   
     |     1. Assignment     |        ß     |        :=     |           
  |   
     |     2. Pembacaan     |        read     |        Read    Readln     |           
  |   
     |     3. Penulisan     |        write     |        Write    writeln     |           
  |   
 
   
    Contoh 4.2:
    Translasikan algoritma mencetak string ’Selamat Datang di Pascal’ ke dalam notasi bahasa Pascal.
  ALGORITMA
  Algoritma Cetak_Selamat1
  { Mencetak string ’Selamat Datang di Pascal’ ke piranti keluaran }
  DEKLARASI
           { tidak ada }
  DESKRIPSI
              Write (’Selamat Datang di Pascal’)
Next ..RUNTUNAN(SEQUENCE)