Senin, 08 November 2010

Buatlah Susunan Algoritma dari soal dibawah ini:

  1. Tiga pasang suami istri akan menyeberang sungai dari desa A ke desa B. Terdapat sebuah perahu dengan batas muatan hanya 2 orang saja yang akan digunakan untuk menyeberang. Permasalahan pun terjadi ternyata para suami-suami memiliki sifat cemburu, sehingga tidak bisa meninggalkan istrinya dengan suami lain. Susunlah algoritma untuk menyeberangkan ketiga pasang suami istri dari desa A ke desa B tanpa ada satu orang pun suami yang cemburu..
  2. Algoritma untuk mengisi voucher telepon genggam (HP)
  3. Algoritma untuk membuat sebuah pakaian jadi (baju atau celana) dari bahan mentah (kain) yang disediakan.
Buatlah Algoritma kemudian terjemahkan ke dalam bahasa pemrograman pascal 

4. Menampilkan bilangan kelipatan tiga dari angka 1 s/d 20
5. Menampilkan bilangan ganjil dari angka 1 s/d 100
6. Menampilkan bilangan genap dari angka 1 s/d 50
7. Menampilkan bilangan prima dari angka 1 s/d 20
8. Menampilkan bilangan kelipatan 3 dan kelipatan 5 dari angka 1 s/d 30
9. Masukkan sebuah bilangan kemudian tentukan apakah bilangan yang diinput adalah
    bilangan ganjil atau bilangan genap. Gunakan metode pemilihan.
     Layout:
     Masukkan sebuah bilangan: 3 --> ENTER
     Bilangan yang anda input adalah bilangan ganjil
10. Masukkan bilangan 1, setelah itu bilangan 2, kemudian lakukan proses penjumlahan,
     perkalian, pengurangan, dan pembagian. Hasil dari keempat proses aritmatika tersebut
     ditampilkan.
      Layout:
      Bilangan 1:  6
      Bilangan 2:  3
      Hasil penjumlahan  = 9
      Hasil pengurangan = 3
      Hasil perkalian      = 18
      Hasil pembagial     = 2
11. Masukkan nilai jari-jari sebuah lingkaran. Kemudian program akan menampilkan
      hasil perhiutungan luas lingkaran.

       Layout:
       Jari-jari lingkaran: 7
       Luas lingkaran adalah: 154
 12. Buat algoritma dan program untuk menghitung luas yang diarsir pada gambar berikut.

13. Buat tampilan program di bawah ini dengan menggunakan metode perulangan:
       1 2 3 4                         2 2 2                           3 2 1
       1 2 3 4                         1 1 1                           3 2 1
       1 2 3 4                         0 0 0                           3 2 1        1 2 3 4


       1                                  4 3 2 1                        1
       1 2                               4 3 2                           3   5
       1 2 3                            4 3                              7   9   11
       1 2 3 4                         4                                 13 15 17 19

14.  Buat urutan angka dari terkecil sampai terbesar dari 5 (lima) nilai yang        diinput. Gunakan metode urutan, pemilihan dan pengulangan.
       Layout:
       Angka 1         : 8
       Angka 2         : 17
       Angka 3         : 5
       Angka 4         : 7
       Angka 5         : 18
       Hasil urutan sebagai berikut:
       5          7          8          17        18

15. Buat program sederhana menggunakan metode pemilihan untuk

      menampilkan keterangan umur di mana:
Umur         Keterangan           
0-5Balita
6-13Anak-anak
14-25Remaja
26-40Dewasa
> 41Orang Tua

      Dengan memasukkan nama, nim, program studi, dan tahun lahir, maka
      akan ditampilkan umur dan keterangan umur.
      Layoutnya:
      Nama              :Ma'ruf Zainuddin
      Nim                 : 21015135
      Program studi  : Sistem Informasi
      Tahun lahir       : 1991

      Umur                 : 19
      Keterangan        : Remaja

 


Jawab

    1. ket : s1 = Suami Pasangan Pertama
                s2 = Suami Pasangan Kedua
                s3 = Suami Pasangan Ketiga
                i1 = Istri Pasangan Pertama
                i2 = Istri Pasangan Kedua
                i3 = Istri Pasangan Ketiga
penyelasaian
        1.i1 dan i2 menyebrang ke Desa sebelah
        2.i1 kembali ke Desa A
        3.i1 dan i3 menyebrang Ke Desa B
        4.i3 kembali ke desa A
        5. s1 dan s2 menyebrang ke desa B
        6. s2 dan i2 Kembali ke Desa A
        7.s2 dan s3 menyebrang ke desa B
        8. i1 kembali ke Desa A
        9. i1 dan i2 menyebrang ke Desa B
        10. i2 Kembali Kedesa A
        11.i2 dan i3 menyebrang KeDesa B




2.  1. Menggosok Bagian Berhologram pada Voucher
     2. Ketik Kode yang Tertera sesuai perintah (Setiap Operator Berbeda)
     3. Kirim
     4. Cek Pulsa ( Setiap Operator Berbeda)

3.  1. Menyiapkan Bahan Berupa Kain,Gunting Jarum, Benang, Dan Alat Pengukur
     2. Menetukan Pola Yang akan dibuat
     3. Mengukur Kain Sesuai Ukuran
     4. Menggunting Kain Tersebut Sesuai Pola
     5. Menjahit Sesuai Model
     6. Merapikan Pakaian tersebut
4. Algoritma untuk menampilkan bilangan kelipatan 3 dari 1 s/d 20:
  1. menentukan nilai awal A:=3
  2. untuk i:=1 sampai 6 lakukan:
    • cetak A (nilai awal)
    • berikutnya cetak A:=A+3 lakukan sampai i ke 6, berhenti.
          Program Pascalnya
             program pascal:

uses crt;
var A, i: byte;

begin

    clrscr;     A:=3;     for i:=1 to 6 do     begin         write(A:4);         A:=A+3;     end;     readln;
end.

5. Algoritmanya untuk menampilkan bilangan ganjil dari 1 s/d 100:
  • untuk a:=1 sampai 100 lakukan:
    • jika a mod 2=1 maka
    • cetak a
    program pascal:
uses crt;
var a: byte;
begin
    for a:= 1 to 100 do
    begin
        if a mod 2= 1 then
        write(a:4);
    end;
    readln
end.
 6. Algoritma untuk menampilkan bilangan genap dari 1 s/d 50:
  • untuk a:=1 sampai 50 lakukan:
    • jika a mod 2= 0 maka
    • cetak a.
    program pascal:
uses crt;
var a: byte;
begin
    clrscr;
    for a:= 1 to 50 do
    begin
        if a mod 2= 0 then
        write(a:4);
    end;
    readln
end.
7. Algoritma untuk menampilkan bilangan prima dari 1 s/d 20:
  1. bilangan prima hanya akan habis bila dibagi 1 dan bilangan itu sendiri.
  2. sehingga pasti akan ada sisa hasil bagi (mod) jika dibagi bilangan lebih dari 1 (kecuali 2) sampai bilangan sebelum bilangan itu (x-1).
  3. mencetak 2 terlebih dahulu ke layar.
  4. mengeset status bilangan prima menjadi true.
  5. beri nilai  =1 (menandakan bilangan prima).
  6. melakukan pengecekan mulai dari 2 sampai x-1.
  7. jika x habis dibagi bilangan yang ada antara 2 sampai x-1, berarti x bukan bilangan prima. Variabel prima yang awalnya true berubah jadi false dan pengecekan tidak perlu dilanjutkan (break).
  8. jika dari bilangan antara 2 sampai x-1 tak satupun yang habis dibagi, maka variabel prima yang dideklarasikan sebagai true tidak berubah nilai (tetap true). Sehingga bilangan tersebut adalah bilangan prima dan akan ditampilkan ke layar.
  9. tambahkan nilai x dengan 1 dan ulangi dari langkah ke-5 sampai nilai x= 20.
     Program pascal:
uses crt;
var x, y: byte; prima: boolean;
begin
    clrscr;
    write('2':4);
    for x:= 1 to 20 do
    begin
        prima:=true;
        for y:=2 to x-1 do
        begin
            if x mod y =0 then
            begin
                prima:=false;
                break;
            end;
        end;
        if prima then write(x:4);
    end;
    readln;
end.
8. Algoritma untuk menampilkan bilangan kelipatan 3 dan kelipatan 5 secara
    bersamaan dari angka 1 s/d 30:

  • Untuk i:= 1 sampai 30 lakukan:
    • jika i mod 3= 0 atau i mod 5 =0
    • maka cetak i.
     Program pascal:
uses crt;
var i: byte;
begin
    for i:= 1 to 30 do
       if (i mod 3=0) or (i mod 5=0) 
        then write(i:4);
    readln
end.
9. Program pascal untuk menentukan bilangan bulat yang diinput adalah bilangan
    ganjil atau genap:

uses crt;
var lagi: char; x: longint; ket: string;
begin
   clrscr;
   lagi:='Y';
   while lagi='Y' do
   begin
   clrscr;
   write('Masukkan sebuah bilangan bulat: ');readln(x);
     if x mod 2= 0 then ket:='genap'
     else ket:='ganjil';
   writeln;
   writeln('Bilangan yang diinput adalah bilangan ',ket);
   write('Coba lagi (Y/N ): '); read(lagi);
   end; readln
end.
10. Program pascal untuk menghitung hasil proses aritmatika dari dua bilangan
      bulat yang diinput:

uses crt;
var  b1, b2: longint;
begin
    clrscr;
    write('Bilangan 1: '); read(b1);
    write('Bilangan 2: ');readln(b2);
    writeln(#10);
    writeln('Hasil penjumlahan= ', b1+b2);
    writeln('Hasil pengurangan= ', b1-b2);
    writeln('Hasil perkalian  = ', b1*b2);
    writeln('Hasil pembagian  = ', b1/b2 :0:0);
    readln;
end.
 11. Program pascal untuk menghitung luas lingkaran dengan menginput jari-jari
       lingkaran (r):

uses crt;
var L,r: real;
begin
    clrscr;
    write('Jari-jari lingkaran= '); readln(r);
    L:= pi * sqr(r);
    writeln('Luas lingkaran   = ', L:0:0);
    readln
end.
12. Algortma untuk menghitung luas daerah yang diarsir pada gambar:

  1. Menentukan nilai panjang sisi luar (pL): pL= 18, lebar sisi luar (lL): lL= 12, panjang sisi dalam (pT): pT= 10, dan lebar sisi dalam (lT): lT= 5.
  2. Menghitung luas total, LTotal= pL x lL
  3. Menghitung luas tengah, LTengah= pT x lT
  4. Didapat luas yang diarsir, LArsir= LTotal-LTengah
      Program pascal:
uses crt;
var pL, lL, pT, lT, L_total, L_tengah: integer;
begin
    clrscr;
    pL:=18;  lL:=12;  pT:=10;  lT:=5;
    L_total:= pL*lL;
    L_tengah:= pL*lL;
    writeln('Luas total     = ', L_total);
    writeln('Luas tengah    = ', L_tengah);
    writeln('Luas yg diarsir= ', L_total-L_tengah);
    readln;
end.
13.     1) uses crt;
var i, j: byte;
begin
    clrscr;
    for i:= 1 to 4 do
    begin
        for j:= 1 to 4 do
        write(j:4); writeln(#10);
    end;
    readln;
end.
         2) uses crt;
var A, i, j: byte;
begin
    clrscr;
    A:=2;
    for i:= 1 to 3 do
    begin
        for j:= 1 to 3 do
        write(A:4);
        A:=A-1; writeln(#10);
    end;
    readln
end.
        3) uses crt;
var i, j: byte;
begin
    clrscr;
    for i:= 1 to 3 do
    begin
        for j:= 3 downto 1 do
        write(j:4); writeln(#10);
    end;
    readln
end.
         4) uses crt;
var i, j: byte;
begin
    clrscr;
    for i:= 1 to 4 do
    begin
        for j:= 1 to i do
        write(j:4); writeln(#10);
    readln
end.
          5) uses crt;
var i, j: byte;
begin
    clrscr;
    for i:= 1 to 4 do
    begin
        for j:= 4 downto i do
        write(j:4);
        writeln(#10);
    end;
    readln
end.
       6) uses crt;
var A, i, j: byte;
begin
    A:=1;
    for i:= 1 to 4 do
    begin
        for j:=1 to i do
        begin
            write(A:4);
            A:=A+2;
        end;
        writeln(#10);
    end;
    readln
end.


14. uses crt;
var i, j: byte;
begin
    clrscr;
    for i:= 1 to 7 do
    begin
        for j:= 1 to 1 do
        write(j:4); writeln(#10);
    end;
    readln;
end.
15. Program pascal untuk mengisi biodata mahasiswa serta menampilkan umur
      dan keterangan umur secara otomatis:
uses crt;
var lahir, umur: integer;
    ket: string;
begin
    write('NIM          : ');readln;
    write('Nama         : ');readln;
    write('Program Studi: ');readln;
    write('Tahun Lahir  : ');readln(lahir);
    writeln(#10);
    umur:=2010-lahir;
      if umur<=5 then ket:='balita'
      else if umur<=13 then ket:='anak-anak'
      else if umur<=25 then ket:='remaja'
      else if umur<=40 then ket:='dewasa'
      else ket:='orang tua';
    writeln('Umur      : ', umur);
    writeln('Keterangan: ', ket);
    readln
end.

Rabu, 13 Oktober 2010

Macam-macam Algoritma Sorting


Algoritma Sorting

Sorting  adalah  proses  menyusun  elemen    elemen  dengan  tata  urut  tertentu  dan
proses tersebut  terimplementasi dalam  bermacam aplikasi. Kita ambil  contoh pada
aplikasi perbankan. Aplikasi tersebut mampu menampilkan daftar account yang aktif.
Hampir   seluruh   pengguna   pada   sistem   akan   memilih   tampilan   daftar   berurutan
secara ascending demi kenyamanan dalam penelusuran data.

Beberapa   macam   algoritma  sorting  telah   dibuat   karena  proses   tersebut   sangat
mendasar  dan  sering   digunakan.   Oleh   karena   itu,   pemahaman   atas  algoritma  
algoritma yang ada sangatlah berguna.
Setelah menyelesaikan pembahasan pada bagian ini, anda diharapkan mampu :
1. Memahami   dan   menjelaskan   algoritma   dari  insertion   sort,   selection   sort, merge sort
    dan quick sort.
2. Membuat implementasi pribadi menggunakan algoritma yang ada

Ø Insertion Sort

Salah satu  algoritma  sorting  yang paling  sederhana adalah  insertion  sort.  Ide   dari
algoritma ini  dapat  dianalogikan seperti  mengurutkan  kartu.  Penjelasan berikut  ini
menerangkan bagaimana algoritma  insertion sort  bekerja dalam  pengurutan  kartu.
Anggaplah  anda  ingin  mengurutkan  satu  set   kartu  dari  kartu  yang  bernilai  paling
kecil hingga yang paling besar. Seluruh kartu diletakkan pada meja, sebutlah meja
ini sebagai meja pertama, disusun dari kiri ke kanan dan atas ke bawah. Kemudian
kita mempunyai  meja  yang  lain,   meja kedua,  dimana  kartu  yang  diurutkan  akan
diletakkan.  Ambil  kartu  pertama yang terletak  pada pojok   kiri   atas meja  pertama
dan letakkan pada meja kedua. Ambil kartu  kedua dari  meja pertama, bandingkan
dengan kartu yang berada pada meja kedua, kemudian letakkan pada  urutan yang
sesuai setelah perbandingan. Proses tersebut akan berlangsung hingga seluruh kartu
pada meja pertama telah diletakkan berurutan pada meja kedua.

Algoritma insertion sort  pada dasarnya memilah data yang akan diurutkan  menjadi
dua bagian, yang belum diurutkan (meja pertama) dan yang sudah diurutkan (meja
kedua).   Elemen   pertama   diambil   dari   bagian   array   yang   belum   diurutkan   dan
kemudian   diletakkan   sesuai   posisinya   pada   bagian   lain   dari   array   yang   telah
diurutkan. Langkah ini  dilakukan secara berulang hingga tidak ada lagi elemen yang
tersisa pada bagian array yang belum diurutkan.

Ø Selection Sort

Jika anda diminta untuk membuat  algoritma sorting  tersendiri, anda mungkin  akan
menemukan sebuah algoritma yang mirip dengan selection sort. Layaknya insertion
sort, algoritma ini sangat rapat dan mudah untuk diimplementasikan.

Mari kita kembali menelusuri bagaimana algoritma ini berfungsi terhadap satu paket
kartu.   Asumsikan   bahwa   kartu   tersebut   akan   diurutkan   secara  ascending.   Pada
awalnya,  kartu tersebut   akan  disusun secara  linier  pada  sebuah meja  dari  kiri  ke
kanan,   dan   dari   atas   ke   bawah.   Pilih   nilai   kartu   yang   paling   rendah,   kemudian
tukarkan posisi  kartu ini dengan kartu yang terletak pada pojok kiri atas meja. Lalu
cari  kartu  dengan  nilai  paling  rendah  diantara  sisa kartu  yang  tersedia.  Tukarkan
kartu   yang  baru   saja  terpilih   dengan   kartu   pada  posisi   kedua.   Ulangi  langkah 
langkah   tersebut   hingga   posisi   kedua  sebelum   posisi   terakhir   dibandingkan   dan
dapat digeser dengan kartu yang bernilai lebih rendah.

Ide utama dari  algoritma  selection  sort  adalah memilih elemen dengan nilai paling
rendah dan  menukar elemen yang  terpilih  dengan elemen  ke-i.  Nilai dari  i  dimulai
dari 1 ke n, dimana n adalah jumlah total elemen dikurangi 1.

Ø Merge Sort

Sebelum   mendalami   algoritma  merge  sort,  mari  kita  mengetahui  garis  besar  dari
konsep divide and conquer karena merge sort mengadaptasi pola tersebut.

v  Pola Divide and Conquer

Beberapa   algoritma   mengimplementasikan   konsep   rekursi   untuk   menyelesaikan
permasalahan.   Permasalahan   utama   kemudian   dipecah   menjadi   sub-masalah,
kemudian  solusi   dari  sub-masalah  akan  membimbing  menuju solusi  permasalahan
utama.
Pada setiap tingkatan rekursi, pola tersebut terdiri atas 3 langkah.

1. Divide
Memilah masalah menjadi sub masalah
2. Conquer
Selesaikan  sub  masalah  tersebut  secara rekursif. Jika sub-masalah  tersebut
    cukup ringkas dan sederhana, pendekatan penyelesaian secara langsung akan lebih efektif
3. Kombinasi
Mengkombinasikan solusi  dari sub-masalah, yang akan membimbing menuju
    penyelesaian atas permasalahan utama

v Memahami Merge Sort

Seperti yang telah dijelaskan sebelumnya, Merge sort menggunakan pola divide  and
conquer.   Dengan   hal   ini   deskripsi   dari   algoritma   dirumuskan   dalam   3   langkah
berpola divide-and-conquer. Berikut menjelaskan langkah kerja dari Merge sort.
1. Divide
Memilah elemen – elemen dari rangkaian data menjadi dua bagian.
2. Conquer
Conquer   setiap   bagian   dengan   memanggil   prosedur  merge   sort  secara
    rekursif
3. Kombinasi
Mengkombinasikan  dua  bagian tersebut   secara  rekursif  untuk  mendapatkan
    rangkaian data berurutan.

Proses rekursi berhenti jika mencapai elemen dasar.  Hal ini terjadi bilamana bagian
yang  akan diurutkan menyisakan tepat  satu  elemen.  Sisa pengurutan  satu elemen
tersebut menandakan bahwa bagian tersebut telah terurut sesuai rangkaian.

Ø Quicksort

Quicksort ditemukan oleh C.A.R  Hoare.  Seperti pada merge sort, algoritma ini juga
berdasar  pada pola  divide-and-conquer.  Berbeda dengan  merge  sort,  algoritma ini
hanya mengikuti langkah – langkah sebagai berikut :
1. Divide
Memilah rangkaian data menjadi dua sub-rangkaian A[p…q-1] dan A[q+1…r]
    dimana setiap elemen A[p…q-1]  adalah kurang dari  atau sama dengan A[q]
    dan   setiap   elemen   pada   A[q+1…r]   adalah   lebih   besar  atau  sama   dengan
    elemen   pada   A[q].   A[q]   disebut   sebagai   elemen   pivot.   Perhitungan   pada
    elemen q merupakan salah satu bagian dari prosedur pemisahan.
2. Conquer
Mengurutkan elemen pada sub-rangkaian secara rekursif

Pada algoritma quicksort, langkah ”kombinasi” tidak  di lakukan karena telah terjadi
pengurutan elemen – elemen pada sub-array