Kamis, 10 April 2014

Rekursif

Rekursif
Fungsi rekursif merupakan fungsi yang memanggil dirinya sendiri. Terdapat dua komponen penting dalam fungsi rekursif, yaitu kondisi kapan berhentinya fungsi dan pengurangan atau pembagian dataketika fungsi memanggil dirinya sendiri. Optimasi fungsi rekursif dapat dilakukan dengan menggunakan teknik tail call, meskipun teknik ini tidak selalu diimplementasikan oleh semua bahasa pemrograman. Selain sebagai fungsi, konsep rekursif juga terkadang digunakan untuk struktur data seperti binary tree atau list. Salah satu konsep paling dasar dalam ilmu komputer dan pemrograman adalah pengunaan fungsi sebagai abstraksi untuk kode-kode yang digunakan berulang kali. Kedekatan ilmu komputer dengan matematika juga menyebabkan konsep-konsep fungsi pada matematika seringkali dijumpai. Salah satu konsep fungsi pada matematika yang ditemui pada ilmu komputer adalah fungsi rekursif: sebuah fungsi yang memanggil dirinya sendiri.

Kode berikut memperlihatkan contoh fungsi rekursif, untuk menghitung hasil kali dari dua bilangan:
def kali(a, b):
    return a if b == 1 else a + kali(a, b - 1)
Bagaimana cara kerja fungsi rekursif ini? Sederhananya, selama nilai b bukan 1, fungsi akan terus memanggil perintah a + kali(a, b - 1), yang tiap tahapnya memanggil dirinya sendiri sambil mengurangi nilai b. Mari kita coba panggil fungsi kali dan uraikan langkah pemanggilannya:
kali(2, 4)
  -> 2 + kali(2, 3)
  -> 2 + (2 + kali(2, 2))
  -> 2 + (2 + (2 + kali(2, 1)))
  -> 2 + (2 + (2 + 2))
  -> 2 + (2 + 4)
  -> 2 + 6
  -> 8
Perhatikan bahwa sebelum melakukan penambahan program melakukan pemanggilan fungsi rekursif terlebih dahulu sampai fungsi rekursif mengembalikan nilai pasti (2). Setelah menghilangkan semua pemanggilan fungsi, penambahan baru dilakukan, mulai dari nilai kembalian dari fungsi yang paling terakhir. Mari kita lihat contoh fungsi rekursif lainnya, yang digunakan untuk melakukan perhitungan faktorial:
def faktorial(n):
    return n if n == 1 else n * faktorial(n - 1)
Fungsi faktorial memiliki cara kerja yang sama dengan fungsi kali. Mari kita panggil dan lihat langkah pemanggilannya:
faktorial(5)
  -> 5 * faktorial(4)
  -> 5 * (4 * faktorial(3))
  -> 5 * (4 * (3 * faktorial(2)))
  -> 5 * (4 * (3 * (2 * faktorial(1))))
  -> 5 * (4 * (3 * (2 * 1)))
  -> 5 * (4 * (3 * 2))
  -> 5 * (4 * 6)
  -> 5 * 24
  -> 120
Dengan melihat kemiripan cara kerja serta kode dari fungsi faktorial dan kali, kita dapat melihat bagaimana fungsi rekursif memiliki dua ciri khas:
  1. Fungsi rekursif selalu memiliki kondisi yang menyatakan kapan fungsi tersebut berhenti. Kondisi ini harus dapat dibuktikan akan tercapai, karena jika tidak tercapai maka kita tidak dapat membuktikan bahwa fungsi akan berhenti, yang berarti algoritma kita tidak benar.
  2. Fungsi rekursif selalu memanggil dirinya sendiri sambil mengurangi atau memecahkan data masukan setiap panggilannya. Hal ini penting diingat, karena tujuan utama dari rekursif ialah memecahkan masalah dengan mengurangi masalah tersebut menjadi masalah-masalah kecil.
Setiap fungsi rekursif yang ada harus memenuhi kedua persyaratan di atas untuk memastikan fungsi rekursif dapat berhenti dan memberikan hasil. Kebenaran dari nilai yang dihasilkan tentu saja memerlukan pembuktian dengan cara tersendiri. Tetapi sebelum masuk ke analisa dan pembuktian fungsi rekursif, mari kita lihat kegunaan dan contoh-contoh fungsi rekursif lainnya lagi.

Prosedur dan fungsi Rekursif 

Prosedur dan fungsi merupakan sub program yang sangat bermanfaat dalam pemrograman, terutama untuk program atau proyek yang besar. Manfaat penggunaan sub program antara lain adalah :

Prosedur dan fungsi merupakan sub program yang sangat bermanfaat dalam pemrograman, terutama untuk program atau proyek yang besar. Manfaat penggunaan sub program antara lain adalah :

1. meningkatkan readibility, yaitu mempermudah pembacaan program
2. meningkatkan modularity, yaitu memecah sesuatu yang besar menjadi modul-modul atau bagian-bagian yang lebih kecil sesuai dengan fungsinya, sehingga mempermudah pengecekan, testing dan lokalisasi kesalahan.
3. meningkatkan reusability, yaitu suatu sub program dapat dipakai berulang kali dengan hanya memanggil sub program tersebut tanpa menuliskan perintah-perintah yang semestinya diulang-ulang.

Sub Program Rekursif adalah sub program yang memanggil dirinya sendiri selama kondisi pemanggilan dipenuhi.

adalah Dengan melihat sifat sub program rekursif di atas maka sub program rekursif harus memiliki :

1. kondisi yang menyebabkan pemanggilan dirinya berhenti (disebut kondisi khusus atau special condition)
2. pemanggilan diri sub program (yaitu bila kondisi khusus tidak dipenuhi)

Secara umum bentuk dari sub program rekursif memiliki statemen kondisional :

if kondisi khusus tak dipenuhi
then panggil diri-sendiri dengan parameter yang sesuai
else lakukan instruksi yang akan dieksekusi bila kondisi khusus dipenuhi

Sub program rekursif umumnya dipakai untuk permasalahan yang memiliki langkah penyelesaian yang terpola atau langkah-langkah yang teratur. Bila kita memiliki suatu permasalahan dan kita mengetahui algoritma penyelesaiannya, kadang-kadang sub program rekursif menjadi pilihan kita bila memang memungkinkan untuk dipergunakan. Secara algoritmis (dari segi algoritma, yaitu bila kita mempertimbangkan penggunaan memori, waktu eksekusi sub program) sub program rekursif sering bersifat tidak efisien .
Dengan demikian sub program rekursif umumnya memiliki efisiensi dalam penulisan perintah, tetapi kadang tidak efisien secara algoritmis. Meskipun demikian banyak pula permasalahan-permasalahan yang lebih sesuai diselesaikan dengan cara rekursif (misalnya dalam pencarian / searching, yang akan dibahas pada pertemuan-pertemuan yang akan datang).

Contoh sub program rekursif dalam bahasa Pascal.

1. Contoh sederhana
PROCEDURE TULIS_1(banyak : integer;kata : string);
begin
if banyak > 1 then TULIS_1(banyak-1,kata);
writeln(kata, banyak:5);
end;

OUTPUT (misal dipanggil dengan TULIS_1(5,"Cetakan ke "))

Cetakan ke 1
Cetakan ke 2
Cetakan ke 3
Cetakan ke 4
Cetakan ke 5

Bandingkan prosedur dan outputnya di atas dengan prosedur di bawah ini!

PROCEDURE TULIS_2(banyak : integer;kata : string);
begin
writeln(kata, banyak:5);
if banyak > 1 then TULIS_1(banyak-1,kata);
end;

OUTPUT (misal dipanggil dengan TULIS_2(5,"Cetakan ke "))

Cetakan ke 5
Cetakan ke 4
Cetakan ke 3
Cetakan ke 2
Cetakan ke 1

Mengapa hasilnya jauh berbeda?

2. Contoh terapan
Secara matematis, perkalian dua bilangan bulat positif a dengan b (ditulis ab atau a x b) pada hakekatnya merupakan penjumlahan dari a sebanyak b suku, yaitu a + a + a + …. + a sebanyak b suku. Misalnya 2 x 3 dapat diartikan sebagai 2 + 2 + 2 = 6 , yaitu penjumlahan 2 sebanyak 3 suku Dengan mengingat bahwa suatu bilangan bila dikalikan dengan angka 1 (satu) akan menghasilkan bilangan itu sendiri, maka permasalahan perkalian dengan menyatakannya dalam bentuk penjumlahan di atas dapat diselesaikan dengan komputer secara mudah.



Dengan non rekursif
1. Dengan prosedur

Procedure KALI_BIASA_P(a,b : integer; var hasil : longint);
var i : integer;
begin
hasil := 0;
for i:= 1 to b do hasil := hasil + a;
end;
2. Dengan fungsi
Function KALI_BIASA_F(a,b:integer):longint;
var hasil : longint; i: integer;
begin
hasil := 0;
for i:= 1 to b do hasil := hasil + a;
KALI_BIASA_F := hasil;
end;


Dengan Rekursif


1. Dengan Prosedur

Procedure KALI_REK_P(a,b:integer;var hasil:longint)
begin
if b>1 then KALI_REK_P(a,b-1,hasil);
hasil:= hasil+a;
end;
2. Dengan Fungsi

Function KALI_REK_F(a,b:integer):longint;
begin
if b>1 then
KALI_REK_F := KALI_REK_F(a,b-1)+a
else
KALI_REK_F := a;
end;

TUGAS :
1. Ubahlah prosedur perkalian di atas ( contoh 2.i dan 2.ii ) sehingga outputnya bukanlah hasil perkalian tetapi hasil pemangkatan. Misal parameter a:= 3 dan b:= 2, hasil yang diberikan bukanlah 6 (yaitu 3x2) tetapi outputnya adalah 9 (yaitu 3 pangkat 2)
2. Buatlah program secara lengkap dimana program tersebut memanggil atau mempergunakan fungsi/prosedur di atas!

RECORD (REKAMAN)

Record adalah tipe terstruktur yang terdiri atas sejumlah elemen yang tipenya tidak harus sama.

Elemen di dalam suatu record disebut dengan istilah field (medan). Sebelumnya sudah dibicarakan struktur data yang juga memiliki sejumlah elemen yaitu array. Perbedaan utama dari keduanya adalah bahwa elemen dalam suatu array semuanya memiliki tipe yang sama sedang elemen-elemen di dalam rekaman tidak harus bertipe sama. Contoh :

type LARIK = array [1..100] of real;
var a : larik;
Dari deklarasi di atas berarti kita mendefinisikan suatu tipe data baru bernama LARIK yang merupakan array berisi data real dengan elemen maksimum yang dapat ditampung sebanyak 100 yang ditandai sebagai elemen ke-1, ke-2, ke-3 dan seterusnya. Salah satu variabel yang memiliki tipe LARIK adalah variabel A. Dengan demikian variabel A dapat menampung data maksimum sebanyak 100 dan data yang disimpan harus bertipe real.. Untuk memahami tipe data record perhatikan contoh tabel data mahasiswa di bawah ini.

NIM NAMA USIA JML_SAUDARA
5234 K Mustofa 26 2
5233 AS Anandya S 25 1
5127 Dina A 23 3
4006 Yadi 20 5

Bila kita perhatikan tabel di atas, kita peroleh gambaran:

1. dalam 1 kolom, tipe data yang diisikan pasti sama (misal NIM dideklarasikan sebagai data numeric (integer misalnya) maka semua NIM harus berupa data angka)
2. suatu obyek dapat dikenali secara tunggal menggunakan gabungan nilai data kolom-kolom dalam setiap barisnya. (misal : gabungan nilai NIM ‘5234’, NAMA ‘K. Mustofa’, USIA ‘26’ dan JML_SAUDARA ‘2’ mengacu pada suatu obyek yang tertentu yaitu seseorang)

Di dalam konsep database, kolom dalam suatu tabel seperti di atas disebut sebagai atribut atau field. Sedang gabungan field-field dalam suatu baris disebut tuple atau record. Dengan deskripsi di atas, dapat dikatakan bahwa seorang mahasiswa dapat dinyatakan sebagai suatu record yang memiliki 4 data (elemen) yaitu field NIM, field NAMA, field USIA dan field JML_SAUDARA.

Bagaimanakan representasi record dalam PASCAL?

Record dalam bahasa pascal dapat dideklarasikan dengan cara (bentuk umum) sebagai berikut:

TYPE nama_pengenal_record = RECORD
nama_field1: type_field1;
nama_field2: type_field2;
nama_field3: type_field3;
:
:
nama_fieldn: type_fieldn;
END;

Dengan mengambil contoh data mahasiswa di atas, kita dapat memiliki deklarasi sebagai berikut:

TYPE mhs = RECORD
nim : integer;
nama: string[30];
usia: byte;
jml_saudara: 0..15;
END;



Bagaimana Menggunakan Tipe Data Record dan Mengakses Field-Field di dalamnya?

Kalau kita sudah memiliki deklarasi record seperti di atas, maka untuk menggunakannya di dalam program tentunya kita tinggal memesan variabel-variabel yang kita perlukan dengan perintah VAR. Perhatikan contoh berikut:

var satu : mhs;
banyak : array[1..20] of mhs;

Deklarasi / pemesanan variabel di atas berarti program memerlukan alokasi memori yang akan dipergunakan untuk menyimpan data bertipe mhs. Variabel "satu" dapat dipergunakan untuk menyimpan data satu mahasiswa, sedang variabel "banyak" dapat dipergunakan untuk menyimpan maksimum 20 data mahasiswa. Untuk mengakses data bertipe record kita tidak dapa melakukannya dengan satu langkah seperti halnya ketika kita mengakses suatu variabel sederhana. Kalau kita memiliki variabel p bertipe sederhana (integer, byte, word, char, real) maka untuk memberikan nilai kira dapat menggunakan operator assignment (:=) atau untuk membaca masukan dari user kita dapat melakukannya dengan perintah readln(p), tetapi dengan data/variabel bertipe record kita tidak dapat melakukannya sesederhana itu. Untuk mengakses fiel-field pada suatu variabel bertipe record dapat dilakukan dengan dua cara :

1. dengan menggunakan operator/notasi titik

Syntax secara umum :

nama_variabel_record . nama_field

Contoh berikut adalah sah:
1. readln(satu.nim); readln(satu.nama);
2. satu.nama := ‘AMIKOM’;
3. banyak[1]. nim := 5558;
4. banyak[6].nama := ‘YOGYAKARTA’;
2. dengan menggunakan statemen pembatas with … do

Syntax secara umum :

with nama_variabel do
begin
lakukan operasi terhadap field-field
-----
-----
end;
Contoh berikut adalah valid :
1. with satu do readln(nama)
2. with satu do begin
readln(nama);{sama artinya dengan readln (satu.nama)}
readln(nim);
readln(usia);
jml_saudara := 5; {sama artinya dengan satu.jml_saudara := 5}
nama:= ‘AKU’
end;
3. with banyak[5] do begin
readln(usia);
readln(nama);
end;



Contoh program :

Program contoh_rekaman;
uses crt;

type mhs = record
nim: string[8];
nama: string[30];
usia: byte;
jml_saudara: 0..20;
end;
var siswa : array[1..20] of mhs;
i, n : integer;
begin
clrscr;
write(‘Banyak data yang akan dimasukkan : ‘); readln(n);

{langkah pemasukan data}

for i:= 1 to n do
begin
clrscr;
writeln(‘Data ke : ‘,i);
with siswa[i] do
begin write(‘ NIM : ‘);readln(nim);
write(‘NAMA : ‘);readln(nama);
write(‘USIA : ‘);readln(usia);
write(‘SAUDARA : ‘);readln(jml_saudara);
end;
end;

{penampilan data}

clrscr;
writeln(‘DATA YANG ANDA MASUKKAN ‘);
writeln;
for i:= 1 to n do
begin
write(siswa[i].nim:11);
write(siswa[i].nama:23);
write(siswa[i].usia:5);
write(siswa[i].jml_saudara:5);
writeln;
end;
readln;
end.
Sekian Pembahasan tentang rekursif dan prosedur beserta fungsinya. Terima Kasih
Sumber :Bertzzie

Jumat, 07 Maret 2014

Selection Sort


SELECTION SORT
Pengertian dari selection sort adalah mencari elemen yang tepat untuk diletakkan di posisi yang telah diketahui, dan meletakkannya di posisi tersebut setelah data tersebut ditemukan,
Selection Sort Membandingkan elemen yang sekarang dengan elemen yang berikutnya sampai dengan elemen yang terakhir. Jika ditemukan elemen lain yang lebih kecil dari elemen sekarang 
maka dicatat posisinya dan kemudian ditukar.
Pengurutan data dalam struktur data sangat penting untuk data yang beripe data numerik ataupun karakter.Pengurutan dapat dilakukan secara ascending (urut naik) dan descending (urut turun) Pengurutan (Sorting) adalah proses menyusun kembali data yang sebelumnya telah disusun dengan suatu pola tertentu, sehingga tersusun secara teratur menurut aturan tertentu.
Contoh:
Data Acak    : 5 6 8 1 3 25 10
Ascending    : 1 3 5 6 8 10 25
Descending    : 25 10 8 6 5 3 1
Konsep Selection Sort Algoritma pengurutan sederhana salah satunya adalah Selection Sort. Ide dasarnya adalah melakukan beberapa kali pass untuk melakukan penyeleksian elemen struktur data. Untuk sorting ascending (menaik),
elemen yang paling kecil di antara elemen-elemen yang belum urut,  disimpan indeksnya, kemudian dilakukan pertukaran nilai elemen dengan indeks yang disimpan tersebut dengan elemen yang paling depan yang belum urut. Sebaliknya, untuk sorting descending (menurun), elemen yang paling besar yang disimpan indeksnya kemudian ditukar.
Selection Sort diakui karena kesederhanaan algoritmanya dan performanya lebih bagus daripada algoritma lain yang lebih rumit dalam situasi tertentu. Algoritma ini bekerja sebagai berikut:
1. Mencari nilai minimum (jika ascending) atau maksimum (jika descending) dalam sebuah list
2. Menukarkan nilai ini dengan elemen pertama list 
3. Mengulangi langkah di atas untuk sisa list dengan dimulai pada posisi kedua. Secara efisien kita membagi list menjadi dua bagian yaitu bagian yang sudah diurutkan, yang didapat dengan membangun dari kiri ke kanan dan dilakukan pada saat awal, dan bagian list yang elemennya akan diurutkan.

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    int i,j,n,data[100],simpan,min,posisi;
   cout<<"\nMasukan Data Yang Di Inginkan :";cin>>n;
   cout<<""<<endl;
   for(i=1;i<=n;i++)
   {
    cout<<"Data "<<i<<" = ";cin>>data[i];
   }
    cout<<"\n\nData Sebelum Diurutkan:";
    for(i=1; i<=n; i++)
    cout<<data[i]<<".";
    cout<<endl;
   for(i=1;i<n;i++)
   {
    for(j=i+1;j<=n;j++)
      {
            if(data[i]>data[j])
         {
            simpan=data[i];
            data[i]=data[j];
            data[j]=simpan;
         }
      }
   }
   cout<<"\nData Setelah Diurutkan:";
    for(i=1; i<=n; i++)
    cout<<data[i]<<".";
    cout<<endl;
getch();
}

Hasil Program Tersebut 

Kamis, 20 Februari 2014

Bubble sort

 Assalamualaikum wr.wb 
      Disini saya akan menjabarkan Pengertian Bubble sort dan contoh program mengurutkan nilai

Bubble Sort

     Bubble sort merupakan salah satu jenis sorting. Bubble sort ada metode sorting termudah. Diberikan nama “bubble” karena konsep dari algoritmanya diibaratkan seperti gelembung air untuk elemen struktur data yang seharusnya pada posisi awal. Bubble sort mengurut data dengan cara membandingkan elemen sekarang dengan elemen berikutnya. Dimana cara kerjanya adalah dengan berulang-ulang melakukan proses looping ( perulangan) terhadap elemen-elemen struktur data yang belum diurutkan. Nilai dari masing-masing elemen akan dibandingkan selama proses looping tersebut .jika selama proses looping tersebut ditemukan ada urutannya tidak sesuai dengan permintaan, maka akan dilakukan proses pemukaran (swap). Sesungguhnya secara tidak langsung, algoritma dari program ini seolah-olah menggeser satu demi satu elemen dari kanan ke kiri atau dari kiri ke kanan tergantung pada jenis pengurutannya. Perlu diketahui, jenis pengurutan sorting ada 2 yaitu asscending dan descending. Dimana asscending itu mengurut data dari kecil ke besar dan descending itu mengurut data dari besar ke kecil. Jika semua elemen sudah diperiksa oleh fungsi bubble sort, dan tidak ada pertukaran lagi atau semua nilai sudah sesuai, maka saat itu program bubble sort akan berhenti bekerja. Misalkan jika ada data 22 10 15 3 8 2. Data tersebut masih dalam keadaan acak. Maka ilustrasi pengurutan dengan bubble sortnya akan terlihat seperti pada table dibawah ini :
LANGKAH 1 :
1 2 3 4 5 6 POSISI DATA
22 10 15 3 8 2 Data Awal
22 10 15 3 2 8 tukar data 5 dengan 6
22 10 15 2 3 8 tukar data 4 dengan 3
22 10 2 15 3 8 tukar data 3 dengan 2
22 2 10 15 3 8 tukar data 2 dengan 1
2 22 10 15 3 8 LANGKAH 1 SELESAI
LANGKAH 2 :
1 2 3 4 5 6 POSISI DATA
2 22 10 15 3 8 Data Langkah 1 Akhir
2 22 10 3 15 8 tukar data 4 dengan 3
2 22 3 10 15 8 tukar data 3 dengan 2
2 3 22 10 15 8 LANGKAH 2 SELESAI
LANGKAH 3 :
1 2 3 4 5 6 POSISI DATA
2 3 22 10 15 8 Data Langkah 2 Akhir
2 3 22 10 8 15 tukar data 5 dengan 6
2 3 22 8 10 15 tukar data 4 dengan 3
2 3 8 22 10 15 LANGKAH 3 SELESAI
LANGKAH 4 :
1 2 3 4 5 6 POSISI DATA
2 3 8 22 10 15 Data Langkah 3 Akhir
2 3 8 22 10 15 tukar data 5 dengan 4
2 3 8 10 22 15 LANGKAH 4 SELESAI
LANGKAH 5 :
1 2 3 4 5 6 POSISI DATA
2 3 8 10 22 15 Tukar data 5 dengan 6
2 3 8 10 15 22 TERURUT

Berikut Adalah Contoh Program bubble sort

Dan Berikut ini Hasilnya..
 

sumber : Wikipedia dan aioaeoaiueo

Kamis, 13 Februari 2014

Binary Search

Binary Search / Pencarian Biner

Pengertian Binary Search

Binary Search adalah algoritma pencarian yang lebih efisien daripada algorima Sequential Search. Hal ini dikarenakan algoritma ini tidak perlu menjelajahi setiap elemen dari tabel. Kerugiannya adalah algoritma ini hanya bisa digunakan pada tabel yang elemennya sudah terurut baik menaik maupun menurun.
Sebuah algoritma pencarian biner (atau pemilahan biner) adalah sebuah teknik untuk menemukan nilai tertentu dalam sebuah larik (array) linear, dengan menghilangkan setengah data pada setiap langkah, dipakai secara luas tetapi tidak secara ekslusif dalam ilmu komputer. Sebuah pencarian biner mencari nilai tengah (median), melakukan sebuah pembandingan untuk menentukan apakah nilai yang dicari ada sebelum atau sesudahnya, kemudian mencari setengah sisanya dengan cara yang sama. Sebuah pencarian biner adalah salah satu contoh dari algoritma divide and conquer (atau lebih khusus algoritma decrease and conquer) dan sebuah pencarian dikotomi (lebih rinci di Algoritma pencarian).


Contoh Programnya :

#include #include int binary_search(int array[],int size, int elemen); void main() { const int size = 10; int array[size]={0,6,9,12,20,23,29,32,47,79}; cout<<"Isi dari array: "<>elemen; cout<<"\n\n"; tanda= binary_search(array,size,elemen); if (tanda!=-1) cout<<"Data "<array[middle]) start=middle+1; middle=(start+end)/2; } while(start<=end && array[middle]!=elemen); if(array[middle]==elemen) posisi=middle; return posisi; }

Original Source : http://blog.creanivate.com/2010/08/contoh-binary-search-dalam-c.html
Copyright blog.creanivate.com
#include #include int binary_search(int array[],int size, int elemen); void main() { const int size = 10; int array[size]={0,6,9,12,20,23,29,32,47,79}; cout<<"Isi dari array: "<>elemen; cout<<"\n\n"; tanda= binary_search(array,size,elemen); if (tanda!=-1) cout<<"Data "<array[middle]) start=middle+1; middle=(start+end)/2; } while(start<=end && array[middle]!=elemen); if(array[middle]==elemen) posisi=middle; return posisi; }

Original Source : http://blog.creanivate.com/2010/08/contoh-binary-search-dalam-c.html
Copyright blog.creanivate.com
#include <iostream.h>
#include <conio.h>

int binary_search(int array[],int size, int elemen);

void main()
{
  const int size = 10;
  int array[size]={0,6,9,12,20,23,29,32,47,79};
  cout<<"Isi dari array: "<<endl;
  for(int i=0;i<size;i++)
   cout<<" "<<array[i];

  int elemen;             
  int tanda;
  cout<<"\n\n";
  cout<<"Masukkan data yang dicari: ";
  cin>>elemen;

  cout<<"\n\n";
  tanda= binary_search(array,size,elemen);
  if (tanda!=-1)
  cout<<"Data "<<elemen<<" ditemukan pada posisi : array["<<
  tanda<<"],"<<" atau deret ke-"<<(tanda+1);

  else
  cout<<"\n data tersebut tidak ditemukan ";
  getch();
}

int binary_search(int array[],int size,int elemen)
{
  int start=0;
  int end=size - 1;
  int middle;
  int posisi=-1;
  middle=(start + end ) / 2;
  do
  {
   if(elemen<array[middle])
   end=middle-1;
   else if (elemen>array[middle])
      start=middle+1;
   middle=(start+end)/2;

  }
  while(start<=end && array[middle]!=elemen);

  if(array[middle]==elemen)
   posisi=middle;
  return posisi;
}

Terima kasih
#include #include int binary_search(int array[],int size, int elemen); void main() { const int size = 10; int array[size]={0,6,9,12,20,23,29,32,47,79}; cout<<"Isi dari array: "<>elemen; cout<<"\n\n"; tanda= binary_search(array,size,elemen); if (tanda!=-1) cout<<"Data "<array[middle]) start=middle+1; middle=(start+end)/2; } while(start<=end && array[middle]!=elemen); if(array[middle]==elemen) posisi=middle; return posisi; }

Original Source : http://blog.creanivate.com/2010/08/contoh-binary-search-dalam-c.html
Copyright blog.creanivate.c
#include #include int binary_search(int array[],int size, int elemen); void main() { const int size = 10; int array[size]={0,6,9,12,20,23,29,32,47,79}; cout<<"Isi dari array: "<>elemen; cout<<"\n\n"; tanda= binary_search(array,size,elemen); if (tanda!=-1) cout<<"Data "<array[middle]) start=middle+1; middle=(start+end)/2; } while(start<=end && array[middle]!=elemen); if(array[middle]==elemen) posisi=middle; return posisi; }

Original Source : http://blog.creanivate.com/2010/08/contoh-binary-search-dalam-c.html
Copyright blog.creanivate.com
#include #include int binary_search(int array[],int size, int elemen); void main() { const int size = 10; int array[size]={0,6,9,12,20,23,29,32,47,79}; cout<<"Isi dari array: "<>elemen; cout<<"\n\n"; tanda= binary_search(array,size,elemen); if (tanda!=-1) cout<<"Data "<array[middle]) start=middle+1; middle=(start+end)/2; } while(start<=end && array[middle]!=elemen); if(array[middle]==elemen) posisi=middle; return posisi; }

Original Source : http://blog.creanivate.com/2010/08/contoh-binary-search-dalam-c.html
Copyright blog.creanivate.com

Jumat, 31 Januari 2014

Perbedaan Function,Procedure,Array Berserta Contohnya

Nama : M. Arif Renaldi
Nim    : 09031281320023

1.Function

     Fungsi adalah suatu bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya dipisahkan dari bagian program yang dijalankan.Sebuah function berisi sejumlah pernyataan yang dikemas dalam sebuah nama.
Nama ini selanjutnya dapat dipanggil beberapa kali di beberapa tempat dalam
program.
Tujuannya:

1. memudahkan dalam mengembangkan program. Program dibagi menjadi
beberapa subprogram kecil, sehingga hal ini menjadi kunci dalam pembuatan
program terstruktur.
2. menghemat ukuran program, karena beberapa perintah yang sama dan
dijalankan beberapa kali dalam program dapat dijadikan satu kali saja dalam
suatu function, kemudian function tersebut dapat dipanggil berulang kali.
Contoh Function :

#include <iostream.h>
#include <conio.h>
void garis(); // prototype function
void main() // main function
{
clrscr();
garis(); // panggil function
cout << “NIM NAMA MAHASISWA” << endl;
garis(); // panggil function
cout << “M0197001 AMIR HAMZAH “ << endl;
cout << “M0197002 PAIMAN” << endl;
garis(); // panggil function
}
void garis() // detail function
{
int i;
for(i=0;i<=40;i++)
{
cout << “-”;
}
cout << endl;
}


2. Procedure

     Prosedur adalah sekumpulan perintah yang merupakan bagian dari program yang lebih besar, yang berfungsi mengerjakan suatu tugas tertentu. Prosedur atau kadang disebut subrutin / subprogram biasanya relative independent terhadap bagian kode program yang lain. Atau sebenarnya prosedur dapat berdiri sendiri. Keuntungan menggunakan prosedur adalah:

  • mengurangi duplikasi kode program.
  • memberikan kemungkinan penggunaan kembali kode untuk program yang lain.
  • memecah masalah yang rumit dalam masalah-masalah yang lebih kecil dan lebih mudah diselesaikan.
  • membuat kode program lebih mudah dibaca.
  • dapat digunakan untuk menyembunyikan detil program.
 contoh procedure :
Program Penjumlahan_2_bilangan;
uses crt;
var bil1,bil2: integer;

Procedure jumlahkan;
var hasilJum: integer;
begin
  hasilJum := bil1+bil2;
  writeln('hasil penjumlahan: ',hasilJum);
end;

BEGIN
  clrscr;
  writeln('masukan 2 bilangan');
  write('bilangan pertama: '); readln(bil1);
  write('bilangan kedua  : '); readln(bil2);
  jumlahkan;
END.3. Array
   
Array adalah suatu tipe data terstruktur yang dapat menyimpan banyak data dengan suatu nama yang sama dan menempati tempat di memori yang berurutan serta bertipe data sama pula.
Array dapat diakses berdasarkan indeksnya. Array umumnya dimulai dari 0 dan ada pula yang dimulai dari angka bukan 0. Pengaksesan larik biasanya dibuat dengan menggunakan perulangan (looping). array dapat di bedakan berdasarkn jumlah dimensinya.
  • Dimensi satu.Array ini biasanya digunkan hanya untuk menyimpan nilai tunggal, seperti umur karyawan, atau semua tipe data yang tungga.
  • Dimensi dua. Array ini biasanya digunkan untuk mengakses tabel ataupun matriks pada matematika yang memerlukan 2 dimensi.
  • Multi dimensi. Array ini sangat jarang digunkan, karena sangat jarang ada program yang memerlukan penapungan data secara multi dimensi atau lebih dari 3 dimensi. oleh karena itu array multi dimensi jaranf digunkan. 
 Contoh array :
namespace Array1Dimensi
 {
 class Program
 {
 public byte banyak; //property
public static void Main(string[] args)
 {
 Arr arre = new Arr(); //deklarasi Class Arr
 arre.Masuk(); //panggil method Masuk dr class Arr
Console.WriteLine();
 Console.Write("Press any key to continue . . . ");
 Console.ReadKey(true);
 }
 }
 class Arr
 {
 public void Masuk()
 {
 Program pro = new Program(); //deklarasi Class Program
 string [] nama;  //deklarasi Array
Console.Write("masukkan banyak elemen array = ");
 pro.banyak = Convert.ToByte(Console.ReadLine()); //input mengunakan property Class program
 Console.WriteLine();
nama = new string[pro.banyak]; //inisialisasi array
//mengisi Array
 for (byte i = 0; i<pro.banyak; i++)
 {
 Console.Write("Masukkan nama mahasiswa ke {0} = ",i+1);
 nama[i] = Console.ReadLine();
 }
Console.WriteLine();
//menampilkan Array
 for (byte i = 0; i<pro.banyak; i++)
 {
 Console.WriteLine("Nama maha siswa ke {0} adalah = {1}",i+1,nama[i]);
 }
 }
 }
 }
 

Perbedaan Fungsi dan Procedure
    Fungsi dapat mengembalikan suatu nilai yang dapat digunakan dalam ekspresi. Sedangkan, prosedur tidak memiliki nilai yang berhubungan dengan namanya. Fungsi digunakan untuk membuat operasi-operasi yang tidak ada dalam fungsi utama. Sedangkan, prosedur digunakan untuk menstrukturkan suatu program dan untuk memperbaiki kejelasan dan keumumannya.