Tampilkan postingan dengan label Logika dan Algoritma. Tampilkan semua postingan
Tampilkan postingan dengan label Logika dan Algoritma. Tampilkan semua postingan
Senin, 05 Maret 2012 - 1 komentar

Perulangan (Looping)

Perulangan dalam algoritma didefinisikan sebagai bentuk algoritma yang berfungsi untuk mengulang perintah-perintah baris program dengan aturan tertentu.

Struktur Perulangan (Looping)
Struktur perulangan secara umum terdiri dari atas dua bagian :
1. Kondisi perulangan, yaitu berupa ekspresi Boolean yang harus dipenuhi untuk melaksanakan kondisi perulangan. Kondisi ini mengakibatkan suatu kondisi perulangan akan berhenti pada saat kondisi Boolean tersebut terpenuhi.
2. Badan (body) perulangan, yaitu suatu aksi (bagian algoritma) yang harus diulang selama kondisi yang ditentukan untuk perulangan tersebut masih dipenuhi.

Jenis Perulangan Dalam Algoritma
Di dalam algoritma kita mengenal adanya bentuk- bentuk perulangan seperti :
1. Traversal
2. Repeat n Times
3. While Do
4. Repeat Until
5. Iterate Stop
Berikut ini kita akan membahas bentuk - bentuk tersebut satu persatu.
1. Traversal
Bentuk perulangan Traversal digunakan untuk perulangan yang mempunyai jumlah perulangan yang telah dipastikan sebelumnya. Bentuk umum dari perulangan Traversal adalah sebagai berikut :
Photobucket
Maksud dari bentuk di atas adalah Akan dilaksanakan AKSI sebanyak N kali, dimana N adalah nilai2 dikurangi dengan nilai1. Nilai1 dan nilai2 dapat berupa konstanta maupun berupa variabel, dengan syarat tipenya harus integer.
Bentuk perulangan traversal diatas dapat diterapkan dalam Pascal dengan menggunakan bentuk perulangan For-to-do.
Photobucket
2. Repeat N Times
Bentuk perulangan Repeat N Times digunakan untuk perulangan yang mempunyai jumlah perulangan yang telah dipastikan sebelumnya. Bentuk umum dari perulangan Repeat N Times adalah sebagai berikut :
Photobucket
Maksud dari bentuk diatas adalah akan dilaksanakan AKSI sebanyak n kali, Dimana n bernilai integer(ordinal). Bentuk perulangan ini jika diimplementasikan pada pascal, maka akan sama dengan bentuk perulangan For-to-do. Contohnya dapat dilihat pada contoh 4.1 di atas.
3. Repeat-Until
Bentuk perulangan Repeat-Until digunakan untuk perulangan yang mempunyai jumlah perulangan yang tidak dipastikan sebelumnya. Bentuk umum dari perulangan Repeat-Until adalah sebagai berikut :
Photobucket
Maksud dari bentuk diatas adalah akan dilaksanakan AKSI secara berulang-ulang sampai kondisi_berhenti terpenuhi.
Pada bentuk perulangan ini, perulangan akan terus dilakukan selama kondisi_berhenti tidak terpenuhi, dan jika kondisi_berhenti terpenuhi, maka AKSI tidak dilakukan atau perulangan berhenti. Perulangan AKSI pada bentuk ini akan dilakukan setidaknya/minimal satu kali karena pengecekan kondisi_berhenti dilakukan di akhir.
Bentuk perulangan Repeat-Until di atas dapat diterapkan dalam Pascal dengan menggunakan bentuk perulangan Repeat-Until.
Photobucket
4. While Do
Bentuk perulangan While-Do digunakan untuk perulangan yang mempunyai jumlah perulangan yang tidak dipastikan sebelumnya. Bentuk umum dari perulangan While-Do adalah sebagai berikut:
Photobucket
Maksud dari bentuk diatas adalah Selama kondisi_perulangan terpenuhi, maka dilaksanakan AKSI.
Pada bentuk perulangan ini, perulangan akan terus dilakukan selama kondisi terpenuhi, dan jika kondisi tidak terpenuhi, maka AKSI tidak dilakukan atau perulangan berhenti. Jumlah perulangan ini minimal nol kali, karena pengecekan kondisi dilakukan di awal.
Bentuk perulangan While-Do diatas dapat diterapkan dalam Pascal dengan menggunakan bentuk perulangan While-Do.
Photobucket
5. Iterate Stop
Bentuk perulangan Iterate-Stop digunakan untuk perulangan yang mempunyai jumlah perulangan yang tidak dipastikan sebelumnya. Bentuk umum dari perulangan Iterate-Stop adalah sebagai berikut :
Photobucket
Maksud dari bentuk diatas adalah sebagai berikut :
1. AKSI_1 akan dilaksanakan secara otomatis.
2. Dilakukan pengecekan berhenti pada Stop(Kondisi_berhenti).
3. Jika Kondisi_berhenti terpenuhi, maka perulangan akan berhenti.
4. Jika Kondisi_berhenti tidak terpenuhi, maka AKSI_2 akan dilaksanakan dan kemudian AKSI_1 yang berikutnya akan diulang.
Pengulangan ini berguna untuk kasus-kasus dimana AKSI_2 merupakan hal yang harus dilakukan tergantung dari hasil AKSI_1.
Photobucket

Selengkapnya...
Senin, 06 Februari 2012 - 0 komentar

Array

Sekelompok data sejenis yang disimpan ke dalam variabel dengan nama yang sama, dengan memberi indeks pada variabel untuk membedakan antara yang satu dengan yang lain.

VARIABEL ARRAY
nama_variabel[indeks]

ketentuan nama variabel arrray sama dengan nama variabel biasa.
indeks menunjukkan nomor dari variabel .

DEKLARASI VARIABEL ARRAY

BU : tipe nama_variabel[indeks];

Contoh : float bil[10];
deklarasi variabel array dengan nama bil yang akan menampung 10 data yang bertipe float. Indeks 10 menunjukkan variabel bil terdiri dari 10 elemen, dimana setiap elemen akan menampung sebuah data.

Indeks array dimulai dari nol(0) , sedang nomor elemen biasanya dimulai dari satu(1). Nomor elemen dapat dibuat sama dengan nomor indeks untuk mempermudah pembuatan program yaitu dengan memberi indeks satu lebih banyak dari jumlah data yang dibutuhkan, sehingga menjadi :
float bil[11]

INISIALISASI ARRAY 1 DIMENSI
Inisialisasi dapat dilakukan bersama dengan deklarasi atau tersendiri. Inisialisasi suatu array adalah dengan meletakkan elemen array di antara tanda kurung kurawal {}, antara elemen yang satu dengan lainnya dipisahkan koma.
int bil[2] = {4,1,8}

bil[0] = 4
bil[1] = 1
bil[2] = 8

AUTOMATIC ARRAY adalah Inisialisasi array dilakukan di dalam fungsi tertentu. Hanya compiler C yang berstandar ANSI C yang dapat menginisialisasikan automatic array.
Cara menginisialisasikan array dari compiler yg tidak mengikuti standar ANSI C:
1. Diinisialisasikan di luar fungsi sebagai variabel GLOBAL/EXTERNAL ARRAY.
int bil[2]={0,0,0};
main()

2. Diinisialisasikan didlm fungsi sebagai variabel LOKAL/STATIC ARRAY.
main()
{
static int bil[2]={0,0,0};
.........

Pada automatic array yang tidak diinisialisasikan , elemen array akan memiliki nilai yang tidak beraturan. Bila global & static array tidak diinisialisasi maka semua elemen array secara otomatis akan diberi nilai nol(0).

Contoh :
main()
{
int y;
int hitung=0;
int x[0];
for(y=0;y<5;y++) { hitung+=y; x[y]=hitung; printf("%3d - %3d\n",y,x[y]); } } OUTPUT: 0- 0
1- 1
2- 3
3- 6
4- 10
MENDEFINISIKAN JUMLAH ELEMEN ARRAY DALAM VARIABEL
Besarnya variabel indeks dapat ditentukan dengan menggunakan
preprocessor directives #define
#define N 40
main()
{
int no[N],gaji[N],gol[N],status[N],juman[N];
Bila besari indeks akan diubah menjadi 50, cukup diganti dengan
#define N 50
ARRAY 2 DIMENSI
nama_variabel [indeks1][indeks2]

indeks1 : jumlah/nomor baris
indeks2 : jumlah/nomor kolom
Jumlah elemen yang dimiliki array 2 dimensi dapat ditentukan dari hasil perkalian
indeks1 * indeks2
misal : array A[2][3] akan memiliki 2*3 = 6 elemen.
main()
{
float bil [5] [5]
.......

dapat dituliskan dengan #define
#define N 5
main()
{
float bil [N] [N]
.......

INISIALISASI ARRAY 2 DIMENSI
main()
{
float bil[2] [3] =
{ { 1,2,3}, /*baris 0*/
{ 4,5,6}, /*baris 1*/
}
elemen bil [0] [0] = 1
elemen bil [0] [1] = 2
elemen bil [0] [2] = 3
elemen bil [1] [0] = 4
elemen bil [1] [1] = 5
elemen bil [1] [2] = 6

Contoh :
main()
{
int x[3][5];
int y,z;
int hitung=0;
for(y=0;y<3;y++)

{
printf("y = %d\n",y);
for(z=0;z<5;z++)
{
hitung+=z;
x[y][z] = hitung;
printf("%/t%3d - %3d\n",z,x[y][z]);
}
}
}

OUTPUT:
y = 0
0- 0
1- 1
2- 2
3- 6
4- 10
y = 1
0- 10
1- 11
2- 13
3- 16
4- 20
y = 2
0- 20
1- 21
2- 23
3- 26
4- 30

STRING dan ARRAY
1. Pada string terdapat karakter null(\0) di akhir string
2. String sudah pasti array, array belum tentu string

CONTOH - CONTOH :
1. array dengan pengisian input melalui keyboard
baca_input()
{
float nilai[10];
for(i=0;i<10;i++)
scanf("%d",&nilai[i]);
}

2. Fungsi yang mencetak isi array dari akhir ke awal
cetak_array()
{
float nilai[10];
for(i=9;i>=0;i--)

scanf("%3f",nilai[i]);

}

3. Menghitung rata - rata isi array nilai
rata_rata()
{
float nilai[10],jum*rata;
for(i=0,jum=0;i<=9;i++)
jum+=nilai[i];
rata=jum/i;
}

4. Mencari nilai terbesar
besar()
float temp,nilai[10];
{
for(temp=nilai[0],i=1;i<=9;i++)
if(nilai[i] > temp)
temp=nilai[i];
}
return(temp)

Selengkapnya...
- 0 komentar

Tipe Data

Tipe data yang dikenal dalam bahasa pascal antara lain :

• Tipe data sederhana / Jenis data yang standar (Dasar)
1. Integer
2. Real
3. Karakter
4. Boolean

• Tipe data non standar (user defined)
1. Enumerated
2. Sub-range

• Tipe data berstuktur
1. Array
2. Record
3. Set
4. File

• Jenis data Pointer

INTEGER

Jenis data ini merupakan nilai bilangan bulat, yang terdiri atas integer positif, integer negatif dan nol. Pada TURBO PASCAL jenis data ini di bagi atas beberapa bagian. (lihat tabel 1)
Photobucket
Nilai JUMLAH = 200


REAL

Penulisan untuk jenis data ini selalu menggunakan titik desimal. Nilai konstanta numerik real berkisar dari 1E-38 sampai dengan 1E+38 dengan mantissa yang signifikan sampai dengan 11 digit. E menunjukkan nilai 10 pangkat. Nilai konstanta numerik real menempati memori sebesar 6 byte.

Contoh :
123.45
12345. -> salah, titik desimal tidak boleh dibelakang
12E5
12E+5
-12.34
.1234 -> salah, titik desimal tidak boleh dimuka

Pada TURBO PASCAL, jenis data ini dibedakan ( lihat tabel 2.)
Photobucket
Operator untuk jenis data ini terdiri atas : + , - , * dan /

KARAKTER

Yang dimaksud dengan jenis data ini adalah karakter tunggal atau sebuah karakter yang ditulis diantara tanda petik tunggal, seperti misalnya ‘A’, ’a’, ’!’, ’5’ dsb.

Dasarnya adalah ASCII CHARACTER SET.

Misalnya : 032 pada tabel ASCII CHARACTER SET menunjukkan karakter.

Blank.
033 ----------- !
048 ----------- 0
076 ----------- L
dst
STRING

Nilai data string merupakan urut-urutan dari karakter yang terletak di antara tanda petik tunggal. Nilai data string akan menenpati memori sebesar banyaknya karakter stringnya ditambah dengan 1 byte. Bila panjang dari suatu string di dalam deklarasi variabel tidak disebutkan, maka dianggap panjangnya adalah 255 karakter.

Contoh :
Photobucket
BOOLEAN

Jenis data ini mempunyai nilai TRUE atau FALSE.

Operator untuk jenis data ini adalah :
1. Logical Operator, yaitu : NOT, AND dan OR
2. Relational Operator, yaitu : >, <, >=, <=, <> dan =


JENIS DATA NON-STANDARD (USER DEFINED)

ENUMERATED.
Jenis data ini terdiri atas barisan identifier yang terurut dimana setiap identifier tersebut dianggap sebagai suatu individual data item (elemen data yang berdiri sendiri).

Pada saat mendeklarasikan jenis data ini kita harus menuliskan semua elemen-elemennya.

Bentuk umum deklarasinya adalah :

TYPE nama = (data_item_1, data_item_2, ……., data_item_n);

Contoh :

TYPE hari = (sen,sel,rab,kam,jum,sab,ming);

TYPE warna = (red,blue,green,yellow,black,white);

Setelah jenis data ini dideklarasikan, maka selanjutnya kita dapat mendeklarasikan suatu variabel yang berjenis data sama dengan jenis data ini.

Misalnya :
TYPE nama_hari = (sen,sel,rab,kam,jum,sab,ming);
VAR libur : nama_hari;

Fungsi standar yang dapat digunakan pada jenis data ini adalah :

PRED, SUCC dan ORD

Misalnya :

PRED (sel) = sen
SUCC (sen) = sel
ORD (sen) = 0
ORD (sel) = 1

dsb

SUB-RANGE.

Jenis data ini berupa range dari suatu kumpulan data yang mempunyai urutan..

Bentuk umum deklarasinya adalah :

TYPE nama = data_item_pertama .. data_item_terakhir;

Contoh :
Photobucket
TANDA OPERASI


Tanda operasi (operator) di dalam bahasa Pascal dikelompokkan ke dalam 9 kategori,

1. Assignment operator.
2. Binary operator.
3. Unary operator.
4. Bitwise operator.
5. Relational operator.
6. Logical operator.
7. Address operator.
8. Set operator.
9. String operator.

Assignment operator
Assignment operator (operator pengerjaan) menggunakan simbol titik dua diikuti oleh tanda sama dengan (:=).

Contoh :
A:=B;

Binary operator
Digunakan untuk mengoperasikan dua buah operand. Operand dapat berbentuk konstanta ataupun variabel. Operator ini digunakan untuk operasi aritmatika yang berhubungan dengan nilai tipe data integer dan real.
Photobucket
Contoh :
15*5 hasilnya 75
20/3 hasilnya 6.6666666667E+00
20 div 3 hasilnya 6
20 mod 3 hasilnya 2
Unary operator
Operator ini hanya menggunakan sebuah operand saja. Dapat berupa unary minus dan unary plus. Unary minus digunakan untuk menunjukkan nilai negatif, baik pada operang numerik real maupun integer. Unaru plus adalah operator untuk memberai tanda plus.

Contoh :
-5 +7
-2.5 +2.5

Bitwise operator
Digunakan untuk operasi bit per bit pada nilai integer. Terdiri dari operator NOT, AND, OR, XOR, Shl, Shr.

Relational operator
Relational operator digunakan untuk membandingkan hubungan antara dua buah operand dan akan didapatkan hasil tipe boolean, yaitu True atau False. Terdiri dari operator : =, <, >, <=, >=, <>


Logical operator
Terdapat 4 buah logical operator yaitu : NOT, AND, OR dan XOR. Operator ini bekerja dengan nilai-nilai logika, yaitu True dan False.

Set operator
Digunakan untuk operasi himpunan.

String operator
Digunakan untuk operasi string. Hanya ada sebuah operator string saja, yaitu operator + yang digunakan untuk menggabungkan dua buah nilai string.

Contoh :
Nama1 := ‘Arief ‘;
Nama2 := ‘Kurniawan’;
Nama3 := Nama1 + Nama2;

Selengkapnya...
Jumat, 09 Desember 2011 - 0 komentar

Fungsi Input/Output

Fungsi Input
1. Input Tanpa Format
a. Memasukkan Nilai Karakter
Fungsi yang digunakan :
getche( ) : memasukkan karakter tanpa penekanan Enter
getchar( ) : memasukkan karakter dengan penekanan Enter
getch( ) : memasukkan karakter dengan penekanan enter tanpa menampilkan di layar monitor.
Contoh ;
#include
#include
main()
{
char C;
printf(“Masukan karakter : “); C = getche();
printf(“\nKarakter yang dimasukkan adalah : %c, C);
}
Out : Masukkan karakter : a
Karakter yang dimasukkan adalah : a

b. Memasukkan String
Fungsi yang digunakan adalah fungsi gets( ). Fungsi ini menggunakan argument variabel string untuk menerima data.
Contoh :
#include
#include
main()
{
char S[50];
printf(“Masukan String : “); C = gets(S);
printf(“String yang dimasukkan adalah : %s,S);
}
Out : Masukkan String : Saya
String yang dimasukkan adalah : Saya

Contoh input string :
#include”stdio.h”
main( )
{ char S[80];
printf(“Masukkan string : “); scanf(“%[^\n]”,S);
printf(“Nilai String adalah : %s \n”, S) ;
}
Out : Masukkan string : saya suka kamu
Nilai string adalah : saya suka kamu
Ket : %[^\n] digunakan menggantikan %s agar semua karakter termasuk spasi akan dibaca sampai ditemui penekan tombol enter, karena %s tidak akan membaca spasi atau tab. Untuk input string tidak perlu menggunakan operator pointer ‘&’, karena pengenal ini sudah berbentuk suatu pointer.

Contoh input numeric

#include
main ( )
{ float F;
int I;
char C;
scanf(“%4f %4d %c”,&F,&I,&C);
printf(“Nilai yang diinput : %5.2f %i dan %c \n”,F,I,C);
}
Out : Jika nilai yang diinput 12.345678 a
Nilai yang diinput : 12.30 4567 dan 8

Catt : Pemisah nilai-nilai data yang dimasukkan tergantung dari pemisah kode format yang digunakan. Jika antara kode format digunakan pemisah spasi atau tanpa pemisah maka nilai data yang dimasukkan harus dipisahkan dengan whitespace character(blank, tabulasi atau enter).

Fungsi Output
1. Output Tanpa Format
Fungsi yang digunakan adalah :
Putch() : untuk menampiulkan karakter
Putchar() : untuk menampilkan nilai karakter.
Puts() : untuk menampilkan string.
Contoh :
Char C, S[10] = “ini string”;
C = ‘A’;
Putchar(C); Puts(S);
Output : Aini string

2. Output dengan format
Fungsi yang digunakan adalah printf( )

Kode-kode format untuk printf

• Mencetak karakter atau string
Format penampilan :
%-Nc : menampilkan 1 karakter dengan lebar N karakter rata kiri..
%s : menampilkan semua karakter di nilai string rata kiri.
%Ns : menampilkan semua karakter rata kanan dengan lebar minimum N posisi.
%-Ns : menampilkan semua karakter rata kiri dengan lebar min N posisi.
%N.Ms : menampilkan rata kanan hanya M buah karakter pertama saja dengan lebar N posisi.
%-N.Ms : menampilkan rata kiri hanya M buah karakter pertama saja dengan lebar N posisi.
%.Ms : menampilkan sejumlah M karakter pertama rata kiri..

• Menampilkan Nilai decimal Integer
Kombinasi kode format untuk integer :
%ld, %li : long int
%hi : short int
%hu : unsigned short int
%lu : unsigned long int
Format penampilan :
%i : menampilkan semua digit rata kiri.
%Ni : menampilkan semua digit rata kanan dengan lebar minimum N posisi.
%-Ni : menampilkan semua digit rata kiri dengan lebar min N posisi.
%0Ni : menampilkan rata kanan dengan lebar N digit, blank diisi dengan nol.
%+Ni : menampilkan tanda positip pada numeric positip.

• Menampilkan nilai pecahan
Kombinasi Kode format :
%lf atat %le atau %lg : double
%Lf , %Le atau %Lg : long double

Format penampilan :
%f : menampilkan semua digit rata kiri.
%Nf atau % -Nf : menampilkan semua digit rata kanan atau rata kiri dengan lebar minimum N digit.
%N.Mf : menampilkan semua digit rata kanan dengan lebar min N digit dengan M digit nilai di belakang koma..
%0Nf : menampilkan rata kanan dengan lebar minimum N digit, blank diisi dengan nol.
%N.0f : menampilkan semua digit rata kanan dengan lebar min N digit tanpa pecahan.
%.Mf : menampilkan nilai dengan M digit dibelakang desimal rata kiri.
# : mencegah pembuangan angka-angka nol di belakang titik decimal.

• Menampilkan Nilai Hexadesimal dan Oktal
%#x : menampilkan nilai hexa dengan tampilan diawali 0x
%#o : menampilkan nilai octal dengan tampilan diawali 0

• clrscr() : perintah untuk membersihkan layar dan Prototype fungsi terdapat di file judul conio.h
• gotoxy(kol,bar) : mengatur posisi kursor pada kolom dan baris yang dituju.

Contoh :
#include
#include “conio.h”

void main ()
{ char A =’A’;
char B[9]=”bahasa C”;
int C = 1234;
int D = -400;
float E = 123.4567; float F = 12.0;
printf(“%-5c\n”,A);
printf(“%-15s\n”,B); printf(“%15.3s\n”,B);
printf(“%3i\n”,C); printf(“%07d\n”,C):printf(“%-7d\n”,C);printf(“%+-3i\n”,C);
printf(“%+6i\n”,D);printf(“%-6d\n”,D); printf(“%u\n”,D);
printf(“%-15f\n”,E); printf(%09.2f\n”,E); printf(“%15.0f\n”,E);
printf(“%7g dan %#7g\n”,F,F); printf(“%#x dan #o\n”,C,C);
}

Selengkapnya...
- 0 komentar

Konsep Dasar Algoritma

Beberapa metode untuk merancang algoritma dalam program
komputer :
1. Diagram Alir (Flow Chart)
2. Kode Semu (Psedo Code)
3. Algoritma Fundamental
Knuth (1973) menyatakan 5 komponen utama dalam
algoritma yaitu finiteness, definiteness, input, output dan
effectiveness.


Komponen yang harus ada dalam merancang algoritma:
1. Komponen masukan : terdiri dari pemilihan variable, jenis variable,
tipe variable, konstanta dan parameter (dalam fungsi).
2. Komponen keluaran: merupakan tujuan dari perancangan algoritma
dan program.
Permasalahan yang diselesaikan dalam algoritma dan program harus
ditampilkan dalam komponen keluaran. Karakteristik keluaran yang
baik adalah menjawab permasalahan dan tampilan yang ramah
3. Komponen proses : merupakan bagian utama dan terpenting dalam
merancang sebuah algoritma. Dalam bagian ini terdapat logika
masalah, logika algoritma (sintaksis dan semantik), rumusan, metode
(rekursi, perbandingan, penggabungan, pengurangan dll).

Flowchart : Algoritma ini menggunakan sejumlah simbol

untuk menyatakan kegiatan-kegiatan secara keseluruhan.
Knuth (1973)menyajikan format algoritma yang dapat
digunakan secara bebas untuk berbagai bahasa pemrograman,
artinya dapat dengan mudah diimplementasikan
menggunakan Pascal, C, Fortran, PL atau BASIC.

Psedo code
Kode atau tanda yang menyerupai (pseudo) atau merupakan pejelasan cara
menyelesaikan suatu masalah. Psedo-code sering digunakan oleh manusia
untuk menuliskan algoritma.
Problem: mencari bilangan terbesar dari dua bilangan yang diinputkan.
Contoh Psedo-code:
1. Masukkan bilangan pertama
2. Masukkan bilangan kedua
3. Jika bilangan pertama > bilangan kedua maka kerjakan langkah 4, jika
tidak, kerjakan langkah 5.
4. Tampilkan bilangan pertama
5. Tampilkan bilangan kedua
Aturan Algoritma Fundamental
1. Nama/judul algoritma harus ditulis dengan huruf kapital
2. Berikan komentar dan penjelasan pendahuluan.
3. Pernyataan dan struktur Kontrol
4. Nama-nama variabel harus ditulis dengan huruf besar
5. Input dan output
6. Prosedur
7. Fungsi

Selengkapnya...
Kamis, 08 Desember 2011 - 0 komentar

Algoritma

Dalam matematika dan komputasi, algoritma atau algoritme merupakan kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan dapat selalu berakhir untuk semua kondisi awal yang memenuhi kriteria, dalam hal ini berbeda dengan heuristik.
Algoritma sering mempunyai langkah pengulangan (iterasi) atau memerlukan keputusan (logika Boolean dan perbandingan) sampai tugasnya selesai.

Desain dan analisis algoritma adalah suatu cabang khusus dalam ilmu komputer yang mempelajari karakteristik dan performa dari suatu algoritma dalam menyelesaikan masalah, terlepas dari implementasi algoritma tersebut. Dalam cabang disiplin ini algoritma dipelajari secara abstrak, terlepas dari sistem komputer atau bahasa pemrograman yang digunakan. Algoritma yang berbeda dapat diterapkan pada suatu masalah dengan kriteria yang sama.

Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.

Sejarah istilah "algoritma"

Kata algoritma berasal dari latinisasi nama seorang ahli matematika dari Uzbekistan Al Khawārizmi (hidup sekitar abad ke-9), sebagaimana tercantum pada terjemahan karyanya dalam bahasa latin dari abad ke-12 "Algorithmi de numero Indorum". Pada awalnya kata algorisma adalah istilah yang merujuk kepada aturan-aturan aritmetis untuk menyelesaikan persoalan dengan menggunakan bilangan numerik arab (sebenarnya dari India, seperti tertulis pada judul di atas). Pada abad ke-18, istilah ini berkembang menjadi algoritma, yang mencakup semua prosedur atau urutan langkah yang jelas dan diperlukan untuk menyelesaikan suatu permasalahan. Masalah timbul pada saat akan menuangkan bagaimana proses yang harus dilalui dalam suatu/sebuah sistem (program) bagi komputer sehingga pada saat eksekusinya, komputer dapat bekerja seperti yang diharapkan. Programer komputer akan lebih nyaman menuangkan prosedur komputasinya atau urutan langkah proses dengan terlebih dahulu membuat gambaran (diagram alur) diatas kertas.

Jenis-jenis Algoritma

Terdapat beragam klasifikasi algoritma dan setiap klasifikasi mempunyai alasan tersendiri. Salah satu cara untuk melakukan klasifikasi jenis-jenis algoritma adalah dengan memperhatikan paradigma dan metode yang digunakan untuk mendesain algoritma tersebut. Beberapa paradigma yang digunakan dalam menyusun suatu algoritma akan dipaparkan dibagian ini. Masing-masing paradigma dapat digunakan dalam banyak algoritma yang berbeda.

Divide and Conquer, paradigma untuk membagi suatu permasalahan besar menjadi permasalahan-permasalahan yang lebih kecil. Pembagian masalah ini dilakukan terus menerus sampai ditemukan bagian masalah kecil yang mudah untuk dipecahkan. Singkatnya menyelesaikan keseluruhan masalah dengan membagi masalah besar dan kemudian memecahkan permasalahan-permasalahan kecil yang terbentuk.

Dynamic programming, paradigma pemrograman dinamik akan sesuai jika digunakan pada suatu masalah yang mengandung sub-struktur yang optimal (, dan mengandung beberapa bagian permasalahan yang tumpang tindih . Paradigma ini sekilas terlihat mirip dengan paradigma Divide and Conquer, sama-sama mencoba untuk membagi permasalahan menjadi sub permasalahan yang lebih kecil, tapi secara intrinsik ada perbedaan dari karakter permasalahan yang dihadapi.

Metode serakah. Sebuah algoritma serakah mirip dengan sebuah Pemrograman dinamik, bedanya jawaban dari submasalah tidak perlu diketahui dalam setiap tahap; dan menggunakan pilihan "serakah" apa yang dilihat terbaik pada saat itu.

Selengkapnya...