Headlines News :
Home » » Algoritma dan Logika

Algoritma dan Logika

Written By Mangku on Sabtu, 22 Oktober 2011 | 16.37

Modul

ALGORITMA DAN LOGIKA


Oleh : I Wayan Diana
Jurusan : Teknik Informatika D3 New Media 2011


Sejarah Algoritma
Asal  kata  Algoritma  berasal  dari  nama  Abu  Ja’far  Mohammed  Ibn  Musa  al-Khowarizmi, ilmuan  Persia  yang  menulis  kitab  al  jabr  w’al-muqabala  (rules  of  restoration  and  reduction) sekitar tahun 825 M
A.    Algoritma
è Urutan langkah-langkah untuk memecahkan masalah
è Urutan logis pengambilan putusan untuk  memcahkan masalah
urutan langkah logis, berarti algoritma harus mengikuti suatu  urutan  tertentu,  tidak  boleh  melompat-lompat.
è Alur pemikiran dalam menyelesaikan suatu pekerjaan yang dituangkan secara tertulis. 
Alur  pikiran yang artinya algoritma  seseorang  dapat berbeda dari algoritma orang lain. 
tertulis, yang  artinya  dapat  berupa  kalimat,  gambar,  atau  tabel  tertentu.

Dalam   bidang   komputer,   algoritma   sangat   diperlukan   dalam   menyelesaikan   berbagai
masalah pemrograman, terutama dalam komputasi numeris. Tanpa algoritma yang dirancang
baik maka proses pemrograman akan menjadi salah, rusak, atau lambat dan tidak efisien.

Note:
Algoritma Di butuhkan untuk  memerintah computer  mengambil langkah-langkah  tertentu untuk menyelesaikan masalah
Algoritma  à Pemrograman à Program
Agar algoritma dapat memerintah (diproses) komputer, maka dirubah menjadi bentuk program (melalui proses pemrograman).



Penulisan Algoritma :
1.      Menggunakan bahasa natural  (Bahasa manusia: Indonesia, Inggris)
Kelemahannya  masih sering membingungkan (ambigu) / sulit dipahami.
2.      Menggunakan Flowchart
Baik karena alur algoritma dapat dilihat secara visual, tetapi  repot pembuatannya jika algoritma panjang 
3.      Menggunakan Pseudocode
Sudah dekat dengan bahasa pemrograman, tetapi sulit dimengerti oleh orang yang belum tahu pemrograman
B.     Tahap Analisa Algoritma
1.      Bagaimana merencanakan algoritma
Dengan Mendefinisikan masalah.
Contoh : Permasalahan menghitung luas lingkaran,
 dengan data yang diketahui adalah diameter lingkaran.
 Rumus :  ∏ . r2 dengan  Phi =  3.14 atau 22/7.
2.      Bagaimana menyatakan suatu algoritma (menulis algoritma)
*      Dengan psudocode
suatu cara  penulisan algoritma agar ide dan logika dari algoritma dapat disampaikan/diekspresikan menggunakan gaya bahasa pemrograman pemrograman tertentu.
*      Dengan flowchart / diagram alir
Program Flowchart
Yaitu bagan yang menggambarkan urutan logika dari suatu prosedur pemecahan masalah.

Simbol yang digunakan :
: menunjukkan awal dan akhir dari program
: memberikan niai awal pada suatu variabel atau counter
: menunjukkan pengolahan aritmatika dan pemindahan data
: menunjukkan proses input atau output
: untuk mewakili operasi perbandingan logika
: proses yang ditulis sebagai sub program, yaitu prosedur/ fungsi
: penghubung pada halaman yang sama
: penghubung pada halaman yang berbeda        






Contoh :
*      Dengan statement program /penggalan program

3.      Bagaimana validitas suatu algoritma
4.      Bagaimana menganalisa suatu algoritma
5.      Bagaimana menguji program dari suatu algoritma

Studi Kasus :
Buatlah Algoritma untuk memilih bilangan terbesar dari 3 buah bilangan ?

§  Dengan Bahasa Natural
1.      Ambil bilangan pertama dan set maks sama dengan bilangan pertama
2.      Ambil bilangan kedua dan bandingkan dengan maks
3.      Apa bila bilangan kedua lebih besar dari maks, set maks sama dengan bilangan kedua
4.      Ambil blangan ketiga dan bandingan dengan maks
5.      Apabila bilangan ketiga lebih besar dari maks, set maks sama dengan bilangan ketiga
6.      Variabel maks berisi bilangan terbesar. Tampilkan hasilnya














§  Dengan Flowchart

§  Dengan Pseudo-code

Maks ←bilangan pertama
if (maks < bilangan kedua)
maks←bilangan kedua
if (maks < bilangan ketiga)
maks ← bilangan ketiga
C.     Tahap Proses Uji Algoritma
1.      Pengujian Tahap Debuging
Untuk mengecek kesalahan program, Baik sintaksis maupun logika.
2.      Pengujian tahap profiling.
Untuk menentukan waktu tempuh dan banyak nya memori program yang digunakan.
D.    Analisis Algoritma
Untuk melihat effisiensi dan  efektifitas dari suatu algoritma, dapat dilihat dari:
1.      Waktu Tempuh dari Suatu Algoritma
2.      Jumlah memori yang digunakan

E.     Sifat-sifat Algoritma
Aspek Penting Algoritma :
1.      Finite    à algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas
2.      Definite à setiap langkah didefinisikan secara  tepat, tidak boleh membingungkan (ambigu)
3.      Input   à sebuah algoritma memiliki nol/lebh input sebelum dijalankan
4.      Output              à algoritma memiliki satu/lebih output, yanng biasanya bergantung kepada input
5.      Effectiveà setiap algoritma diharapkan memiliki sifat efektif. (setiap langkah harus sederhana
      dan sehingga dapat dikerjakan dalam waktu yang masuk akal)

*      Langkah-langkah yang membentuk suatu algoritma dapat dibagi menjadi 3 kelompok proses:
1.      Sequence Process à instruksi dikerjakan secara berurutan satu persatu dimulai dari langkah pertama sampai terakhir.
2.      Selection Process à instruksi pemilihan proses (percabangan),  sehingga apabila memenuhi persyaratan tertentu maka instruksi akan dikerjakan.
Contoh : jika pembayaran tunai diberi diskon 10%
             Jika dilakukan secara redit maka diskon 0 %.
            (dalam pernyataan diatas, hanya boleh melakukan 1 instruksi dari 2 alternatif instruksi.
3.      Iteration Process à suatu instruksi yang dikerjakan berulang-ulang selama beberapa kali selama masih memenuhi suatu kondisi.

KONSEP ALGORITMA


KONSEP ALGORITMA

Contoh Soal :
3.      Diketahui 3 variabel peubah P,Q dan R.  Agar isi Q ditaruh di P, isi R ditaruh di Q dan isi P ditaruh di R, maka Algoritma yang dapat ditulis adalah : ……….

Buatlah Algortimanya?
Setelah selesai cek lah algoritma nya, misalkan dengan P=10, Q=20, R=30.
Sehingga hasil akhir menjadi : P=20, Q=30 dan R=10.

4.      Diketahui 2 peubah K = 10 dan L = 20.  Buat Algoritma untuk mempertukarkan isi K dan L. :




Studi Kasus:
Algoritma TUKAR ISI BEJANA







 






         A                                    B
Diberikan dua buah bejana A dan B,
bejana A berisi larutan berwarna merah,
bejana B berisi larutan berwarna biru.
Pertukarkan isi kedua bejana itu sedemikian sehingga bejana A berisi larutan
berwarna biru dan bejana B berisi larutan berwarna merah.

algoritma :
*      Tuangkan larutan dari bejana A ke dalam bejana B
*      Tuangkan larutan dari bejana B ke dalam bejana A.

Apakah cara di atas BENAR ?
Apakah hasil yang didapat sesuai dengan penyelesaian masalah?
Apa hasil yang didapat ?


Algoritma TUKAR ISI BEJANA di atas tidak menghasilkan pertukaran yang benar.
Langkah di atas tidak logis, hasil pertukaran yang terjadi adalah percampuran kedua larutan tersebut.



Penyelesaian :
Untuk mempertukarkan isi duah bejana, diperlukan sebuah bejana tambahan sebagai tempat penampungan sementara, misalnya bejana C.









 



           


          A                                   B                           C
Algoritma yang menghasikan pertukaran yang benar sebagai berikut:
1.      Tuangkan larutan dari bejana A ke dalam bejana C.
2.      Tuangkan larutan dari bejana B ke dalam bejana A.
3.      Tuangkan larutan dari bejana C ke dalam bejana B.

SOAL MEMBUAT ALGORITMA


1.      Seorang Petani akan berpergian ke kota dengan  membawa seekor kambing, Anjing dan Rumput Yang ketiganya memliki berat yang tidak jauh berbeda, ditengah jalan petani harus menyebrangi sungai dengan menggunakan perahu dan untuk melaluinya petani tersebut tidak diperbolehkan membawa sekaligus bawaannya mengingat kapasitas kekuatan perahu tersebut, dan untuk melaluinya petani harus membawa satu persatu bawaannya . Ditanya: berapa kali petani tersebut harus melalui jembatan dengan memperhatikan bahwa kambing makan rumput, anjing makan kambing ?
2.      Bagaimana caranya untuk menyebrangkan tiga orang rahib yang sedang dikejar oleh Tiga orang kanibal ke sisi pulau yang ada diseberangnya
Dengan catatan :
Bila misionarisnya Lebih sedikit dari dari kanibal, maka misionaris tersebut akan dimakannya.


Jawaban:
1.      Algoritmanya
a.       petani ke pulau B, membawa kambing
b.      petani ke pulau A,
c.       petani  kepulau B, membawa rumput
d.      petani kepulau A, membawa kambing
e.       petani  kepulau B, membawa anjing dan meninggalkan kambing
f.       petani kepulau A
g.      petani kepulau B, membawa kambing

2.      Algoritmanya adalah :
1.      Dari Pulau A, 2 orang kanibal naik perahu dan sebrangkan
2.      Dipulau B, 1 orang kanibal ditempatkan di pulau B
3.      1 kanibal balik menuju pulau A dan turunkan
4.      Dari Pulau A, 2 orang kanibal naik perahu dan sebrangkan
5.      Dipulau B, 1 orang kanibal ditempatkan di pulau B
6.      1 kanibal balik menuju pulau A dan turunkan
7.      Dari pulau A, 2 orang rahib naik perahu dan sebrangkan
8.      Dipulau B, 1 orang rahib ditempatkan di pulau B
9.      1 orang rahib dan 1 orang kanibal balik menuju pulau A  dan turunkan kanibal dari perahu
10.  Dipulau A, 2 orang rahib naik perahu dan sebrangkan.
11.  Dipulau B turunkan 2 orang rahib.
12.  Selesai.

No
Pulau B
Perahu
Pulau A
Arah Perahu
0.
Kosong
Kosong
3 kanibal
3 Rahib

1

2 kanibal
1 kanibal
3 rahib
ß
2
1 kanibal
1 kanibal
1 kanibal
3 rahib
à
3
1 kanibal
2 kanibal
3 rahib
ß
4
2 kanibal
1 kanibal
3 rahib
à
5
2 kanibal
2 rahib
1 rahib
1 kanibal
ß
6
1 kanibal
1 rahib
1 kanibal
1 rahib
1 rahib
1 kanibal
à
7
1 kanibal
1 rahib
2 rahib
2 kanibal
ß
8
3 rahib
1 kanibal
2 kanibal
à
9
3 rahib

3 kanibal



KONSEP TIPE DATA

Bahasa Pemrograman PASCAL

Pascal ,  merupakan bahasa pemrograman tingkat tinggi.
Pascal dirancang oleh Prof. Niklaus Writh (Technical University di Zurich, Switzerland) pada tahun 1971
Nama Pascal diambil sebagai penghargaan kepada Blaise Pascal (ahli matematika dan philosopi dari Peancis).

TIPE DATA

1.      Tipe data Sederhana
  1. Tipe Ordinal  (berurutan)
    Yang termasuk tipe data ordinal :
a.       Integer  à tipe data untuk bilangan bulat (short int,word, byte dll).
b.      Boolean à tipe data yang memiliki nilai TRUE dan FALSE
c.       Char à tipe data yang berisi 1 buah karakter.
d.      Terbilang
e.       Sub Jangkauan
  1. Real à tipe data untuk menampung bilangan pecahan.
2.      Tipe data String
tipe data yang terdiri dari sekumpulan karakter.
3.      Tipe data Terstruktur
Array, Record, Set, File, objek


1.      Tipe data Sederhana

*      TIPE ORDINAL

tipe data yang merupakan subset dari tipe data sederhana, tipe sederhana adalah semua tipe data sederhana kecuali tipe data numerik real.
Macam tipe data ordinal :
a.       Integer  à  tipe data yang digunakan untuk menyimpan bilangan bulat.
Tipe
Jangkauan
Ukuran
Shortint
128…127
Signed 8 bit
Integer
-32768…32767
Signed 16 bit
Longint
-2147483648…2147483647
Signed 32 bit
Byte
0…255
UnSigned 8 bit
Word
0…65535
UnSigned 16 bit

b.      Boolean à yang hanya dapat bernilai benar atau salah (TRUE or FALSE).
c.       Char à tipe  data yang digunakan untuk menyimpan data alfanumeris, seperti ‘A’,’Z’,’@’,’$’,’1’,’9’ dsb.
d.      Terbilang à digunakan untuk  memberi nama pada beberapa nilai tertentu.(tipe data yang didefinisikan sendiri oleh pembuatnya à dikenal juga tipe data enumerated)
contoh :
Type
   
Hari = (Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu ) ;
e.       Sub Jangkauan à digunakan untuk mendeklarasikan tipe yang berada pada jangkauan tertentu. Pada dasarnya tipe subjangkuan hampir sama dengan tipe bilangan bulat, bedanya kita bebas menentukan jangkauan dari tipe ini, misalnya dari 1 sampai 100.
Contoh :
Type
   Nilai = 0..100;




Karakteristik tipe Ordinal adalah
         Merupakan Himpunan Berurutan (ordered set). à nilai dari tipe data ordinal memiliki nilai yang berurutan
         Memiliki Fungsi standard ORD/Ordinalitas   (digunakan untuk menghasilkan nilai urutannya.)
         Memiliki Fungsi standard PRED/Predecessor  (digunakan untuk menghasilkan nilai urutan sebelumnya.).
         Memiliki Fungsi standard SUCC/Successor(digunakan untuk menghasilkan nilai urutan sesudahnya)

Contoh Program :
uses crt;
type
  Colors = (MERAH,BIRU,HIJAU);

begin
  clrscr;
  Writeln('BIRU mempunyai nilai ordinal ',Ord(BIRU));
  Writeln('kode ASCII dari "c" adalah ', Ord('c'), ' desimal');
  writeln;

  Writeln('predecessor dari 5 adalah ',Pred(5));
  Writeln('successor dari 10 adalah ',Succ(10));

  if Succ(MERAH) = BIRU then
    Writeln('DALAM TIPE Colors ,MERAH merupakan ',
            'predecessor dari BIRU.');
 readln;
end.
HASIL :
BIRU mempunyai nilai ordinal 1
kode ASCII dari "c" adalah 99 desimal

predecessor dari 5 adalah 4
successor dari 10 adalah 11
DALAM TIPE Colors ,MERAH merupakan predecessor dari BIRU.


Note !
Fungsi  (seperti: ord,pred,succ,chr,length,concat dsb )adalah sebuah perintah / instruksi program yang digunakan untuk keperluan pemrograman yang disediakan oleh bahasa pemrograman PASCAL




*      TIPE REAL

Tipe data yang digunakan untuk menyimpan bilangan real/pecahan.
Tipe data
Jangkauan
Digit penting
Ukuran
Real
2.9 * 10-39 … 1.7 * 1038
11-12
6 byte
Single
1.5 * 10-45 … 3.4 * 1038
7-8
4 byte
Double
5.0 * 10-324 … 1.7 * 10308
15-16
8 byte
Extented
3.4 * 10-39 … 1.1 * 104932
19-20
10 byte
Comp
-263+1 … 1063-1
19-20
8byte

2.      TIPE STRING

Tipe string digunakan untuk menyimpan data yang berupa untaian karakter, seperti ‘ Pascal ’ , ’Algoritma ‘
Var
Kalimat : string;
# ConCat[fungsi].
    Untuk menggabungkan 2 atau beberapa variabel string.
    Sintaks:  ConCat (s1 [,s2,...,sn]: String) : String;
    contoh:   ConCat ('ABC','DEF')          { ABCDEF }
# Copy [fungsi].
              Mengambil satu atau beberapa karakter dari sebuah string.
              Sintaks:  Copy (S,Index,Count) : String;
              Keterangan :
                     S         = sebuah string (string).
                     Index  = posisi  awal kita  akan  mengambil  beberapa
                                    karakter (integer)
                     Count  = banyaknya karakter yang akan diambil (integer).

# Delete [prosedur].
              Menghapus sebagian karakter dari sebuah string.
              Sintaks:  Delete (S,Index,Count);
              Keterangan : sama dengan statemen Copy.
# Insert [prosedur].
              Menyisipkan satu atau beberapa karakter ke dalam sebuah string.
              Sintaks:  Insert (Source,var S,Index);
              Keterangan : Source = sumber string untuk disisipi (string)
                                    var  S = string tujuan yang akan disisipi  oleh  string Source (string)
                                    Index  = posisi mulai (integer).

   # Length [fungsi].
              Memberikan  nilai panjang dari suatu string (jumlah  karakter
              dalam string).
              Sintaks:  Length (S);
              Keterangan : S = string
                                       Length(S) menghasilkan nilai integer.

# Pos [fungsi].
              Mencari posisi sebuah bagian string (substring) didalam
              sebuah string.
              Sintaks:  Pos (Substr,S); {menghasilkan nilai Byte}
              Keterangan :   Substr    =   substring yang akan dicari  posisinya  di   dalam sebuah string S.
              Bila bernilai 0 berarti nilai string yang dicari tidak ada.

# Str [prosedur].
              Merubah nilai numerik ke dalam nilai string.
              Sintaks:  Str (N,S);
              Keterangan :
                          N = data tipe integer,
                          S = data tipe string.

 # Val [prosedur].
              Merubah nilai string ke dalam nilai numerik.
              Sintaks:  Val (S,N,P);
              Keterangan :
                              S = nilai string,
                              N = nilai real,
                              P  = posisi salah.
              Nilai string harus berisi angka, plus atau  minus, bila tidak
              berarti kesalahan dan letak kesalahannya ditunjukkan oleh va-
              riabel posisi salah. Jika benar, maka nilai variabel tsb = 0
              (nol).

 # UpCase [fungsi].
              Memberikan huruf kapital dari argumen.
              Sintaks:  UpCase (S);
              Keterangan :
                        S = variabel bertipe karakter.



3.      TIPE TERSTRUKTUR

a.       ARRAY  / larik
yaitu   tipe   data   berindeks   yang   terdiri   dari   satu   atau   lebih elemen/komponen yang memiliki tipe data yang sama. (mendeklarasikan kumpulan variabel yang bertipe sama)
penulisan :
Var
Nama_larik : array [batas_bawah..batas_atas] of tipe larik;
Var
a: array[1..8] of longint;
Sama artinya dengan :
a1, a2, a3, a4, a5, a6, a7, a8 : longint;
b.      RECORD / Rekaman
Tipe  data  ini  digunakan  untuk  merepresentasikan  kumpulan  elemen/komponen  yang  memiliki satu jenis atau lebih tipe data. Tiap element disebut juga field atau property atau attribute.
Type
TKaryawan = record;
Nama : string;
Alamat : string;
Gaji : longint;
End;
c.       SET / Himpunan
digunakan untuk menyimpan kumpulan nilai ( disebut juga anggota himpunan) yang bertipe sama.
Type
HimpunanKarakter =  set of char;
d.      FILE
tipe data untuk mengakses file.
Type
 Nomorfile = file of integer;





SUPLEMEN
MENGENAL PEMROGRAMAN PASCAL
Secara ringkas, struktur bahasa PASCAL dapat terdiri dari:
  1. Judul Program
  2. Blok Program
-          deklarasi label
-          definisi konstanta
-          definisi tipe
-          deklarasi variabel
-          deklarasi prosedur
-          deklarasi fungsi
  1. Bagian Pernyataan (statetement program/baris perintah)

PROGRAM nama_program;  {judul Program}
USES  nama_unit;  {deklarasi unit yang dipakai}
VAR   { Deklarasi Variabel }
BEGIN      
                          Blok Program Utama
END.
a.       Deklarasi variabel
Untuk membuat variabel/pengenal/indentifier pada pascal yaitu dengan menuliskan nama variabel dan tipe datanya pada bagian deklarasi variabel
Format penulisan:  [ nama_identifier : tipe_data; ]
contoh :  
Var
  I : integer;
  nama : string;
  Jenis_kelamin : boolean;
  Luas,Panjang,Lebar : integer;





b.      Operator Aritmatika
Operator
Operasi
Tipe Operand
Tipe Hasil
*
Perkalian
real, real
integer, integer
real, integer
real
integer
real
DIV
Pembagian bulat
integer, integer
Integer
/
Pembagian real
real, real
integer, integer
real, integer
real
real
real
MOD
Sisa pembagian
integer, integer
integer
+
Penambahan
real, real
integer, integer
real, integer
real
integer
real
-
Pengurangan
real, real
integer, integer
real, integer
real
integer
real

Contoh :
operasi perkalian antara variabel  PANJANG dan LEBAR di masukan kedalam variabel LUAS
LUAS := PANJANG * LEBAR;

c.       Operator pemberi nilai (assignment operator)
Menggunakan sintax : “ := “ (titik dua sama dengan)
contoh:
LUAS := PANJANG * LEBAR
(hasil perkalian PANJANG * LEBAR dimasukan kedalam  variabel LUAS)

d.      Pernyataan masukan dan keluaran
READ dan READLN
Digunakan untuk meminta masukan dari papan ketik untuk diolah computer.
READ (nama);     
à       memasukan nilai ke variabel
WRITE dan WRITELN
Digunakan untuk menampilkan data kelayar.
WRITE (‘Halo ’);  menampilkan string halo
WRITE (nama);                menampilkan isi variable nama.
            Perbedaan WRITE dengan WRITELN  yaitu ketika perintah write ini dikerjakan  kursor tidak akan ganti baris (tetap diposisi semula) sedangkan ketika perintah writeln ini dikerjakan kursor  akan pindah baris.
Share this article :

0 komentar:

Speak up your mind

Tell us what you're thinking... !

Sponsor

Dragon Nest BarongNET

Followers

Kotak Pesan

Klik Sponsor Donk!!

 
Support : Creating Website | Johny Template | Mas Template
Proudly powered by Blogger
Copyright © 2011. Sekala Niskala™ - All Rights Reserved