Kamis, 23 Desember 2010

#3. Insertion Sort

Diposting oleh hani-rosfadhila di 12/23/2010 08:24:00 AM 1 komentar

  1. Menghitung jumlah huruf ‘a’ dari suatu string inputan user yang sebelumnya telah diurutkan dengan metode insertion sort dan menggunakan bahasa C

  2. Contoh Program:


  3. Mengubah huruf vokal menjadi angka 9 dari string yang diinputkan user yang sebelumnya telah diurutkan dengan metode insertion sort dan menggunakan bahasa C

  4. Contoh Program:

    untuk contoh program dan source code silakan download di sini

Rabu, 22 Desember 2010

#4. Sekilas tentang Sequential Search Sequential Search With Sentinel, Interpolation Search dan Binary Search

Diposting oleh hani-rosfadhila di 12/22/2010 11:31:00 PM 0 komentar
  • Sequential Search
Pada dasarnya algoritma Pencarian Beruntun (Sequential Search) adalah proses membandingkan setiap elemen larik satu persatu secara beruntun. Pencarian beruntun dilakukan dengan melakukan penelusuran data satu persatu kemudian dicocokkan dengan data yang dicari, jika tidak sama maka penelusuran dilanjutkan, jika sama maka penelusuran dihentikan, berarti data telah ditemukan.
Sequential search dapat dilakukan pada data yang algoritmanya seperti berikut:
  • larik L berisi data sebanyak n, apakah ada data x didalam larik L;

  • jika ada, catat indeks dimana x ditemukan
contoh:

Perhatikan larik L dibawah ini dengan n=6 elemen


Misalkan nilai yang dicari adalah 21, berarti x=21
  • Elemen yang dibandingkan(berturut-turut): 13, 16, 14, 21(ditemukan)

  • Nilai 21 ditemukan pada indeks ke 4
Prosedur Pencarian berurut (Sequential Search)

Procedure SeqSearch (input L : larikInt, input n : integer, input x : integer, output ketemu : boolean)

{Mencari keberadaan nilai x di dalam larik L[1..n]}
{K.Awal: x dan larik L[1..n] sudah terdefinisi nilainya}

{K.Akhir: ketemu bernilai true jika x ditemukan. Jika x tidak ditemukan, ketemu bernilai false}

DEKLARASI

i : integer {pencatat indeks larik}

ALGORITMA

i <- 1

while (i <>
i <- i + 1

endwhile

{i = n or L[i] = x}

If L[i] = x then

ketemu <- true {x ditemukan}

else

ketemu <- false {x tidak ada didalam larik}

endif

  • Sequential Search with Sentinel
Sequential Search with Sentilnel adalah elemen fiktif yang sengaja ditambahkan sesudah elemen terakhir larik.
Perhatikan array data berikut :


Terdapat 6 buah data dalam array (dari indeks 0 s/d 5) dan terdapat 1 indeks array tambahan (indeks ke 6) yang belum berisi data (disebut sentinel).

Array pada indeks ke 6 berguna untuk menjaga agar indeks data berada pada indeks 0 s/d 5 saja. Bila pencarian data sudah mencapai array indeks yang ke-6 maka berarti data TIDAK ADA, sedangkan jika pencarian tidak mencapai indeks ke-6, maka data ADA.

Analisa Algoritma :
  • Sebelumnya setiap pemeriksaan apakah x=l[i], selalu didahului oleh pemeriksaan apakah i<=n

  • Pemeriksaan i<=n dapat dihilangkan, asal dijamin bahwa pasti ditemukan data x didalam larik l.

  • Untuk itu pada elemen larik ke n+1 dimasukkan x sebagai sentinel (sehingga i tidak melewati batas akhir larik)

  • Jika data x ditemukan pada indeks n+1, berarti bahwa x tidak ada didalam larik l, dan jika x ditemukan pada indeks selain n+1, berarti x ditemukan


  • Interpolation Search
Interpolation search sering juga disebut sebagai pencarian ekstrapolasi yaitu algoritma untuk mencari nilai kunci yang diberikan dalam array di indeks yang telah diperintahkan oleh nilai-nilai kunci.
Pada metode pencarian ini, kita mencoba menebak letak data yang kita cari, dengan perhitungan



  • Jika data[posisi] > data yg dicari, high = pos – 1

  • Jika data[posisi] < low =" pos">



  • Pencarian Bagi Dua (Binary Search)
Pencarian bagi dua atau binary search hanya bisa dilakukan pada data yang sudah terurut. Pencarian bagidua atau pencarian biner adalah metode pencarian yang diterapkan pada sekumpulan data yang sudah terurut (terurut menaik atau terurut menurun). Salah satu keuntungan data terurut adalah memudahkan pencarian, dalam hal ini pencarian bagidua.

Pencarian Biner (Binary Search) dilakukan untuk :
  1. memperkecil jumlah operasi pembandingan yang harus dilakukan antara data yang dicari dengan data yang ada di dalam tabel, khususnya untuk jumlah data yang sangat besar ukurannya.

  2. Prinsip dasarnya adalah melakukan proses pembagian ruang pencarian secara berulang-ulang sampai data ditemukan atau sampai ruang pencarian tidak dapat dibagi lagi (berarti ada kemungkinan data tidak ditemukan).

  3. Syarat utama untuk pencarian biner adalah data di dalam tabel harus sudah terurut, misalkan terurut menaik.
Langkah-Langkah dalam melakukan pencarian dengan binary search yaitu:


Contoh :

Terdapat sebuah array yang berisi angka-angka seperti dibawah ini:


Dicari angka 89, maka prosesnya:


Bahasa Algoritma


Untuk Contoh Program Silakan Download Di Sini

#2. Bubble Sort Dengan Tiga File

Diposting oleh hani-rosfadhila di 12/22/2010 10:57:00 PM 0 komentar
  1. Buat bubblesort dengan menggunakan tiga file dengan syarat sorting di lakukan dalam satu prosedure dan inputan dalam prosedure
  2. Contoh Program



  3. Lakukan sorting seperti halnya no 1 tetapi menggunakan karakter
  4. Contoh Program


  5. Lakukan sorting seperti no 2 tetapi di ambil dari kalimat (kalimat terdiri dari 30 kata tanpa spasi
  6. Contoh Program



    untuk program dan source code bisa di download di sini

#1. Segitiga Bintang, Tebak Angka, Kalkulator

Diposting oleh hani-rosfadhila di 12/22/2010 10:15:00 PM 0 komentar
  • Program bintang-bintang dengan masukkan dari user menggunakan For statement



source code
#include "stdio.h"

int main ()
{
int h,a,n,i,r;
printf ("\n......Bintang Segitiga......\n");
printf ("\n");
printf ("\n Masukan angka : \n");
scanf ("%i",&h);
r=1;
for(a=1;a<=h;a++) { for (n=h-1;n>=a; n--)
{
printf(" ");
}
for (i=1;i<=r;i++) {//masukkan syarat pengulangan
printf ("*");
} r=r+2;
printf ("\n");
}
}

  • Program tebak angka seperti pembuatan kode penjinakkan bom dengan 3 kali kesempatan. Program ini dibuat dengan menggunakan nested IF dalam bahasa C
source code
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>;

int main ()
{

int h,a,n,i,r,f;

printf ("Masukan sebuah angka (Imajinasikan bukan anda yang memasukan) :");
scanf ("%i",&h);
printf ("");

printf ("\n Tolong Jinakkan bom secepatnya!! \n");
printf ("\n Anda memiliki 3 kesempatan menebak angka \n");
printf ("\n Jika gagal bom akan meledak \n");
printf ("\n Kesempatan Pertama !!! \n");
printf ("\n Masukan Angka : \n");
scanf ("%i",&a);

if (a==h) {
printf ("SELAMAT ANDA BERHASIL !! \n");
}
else if (a!=h) {
printf ("Wah Anda Salah! Berhati-Hatilah \n");
printf ("Kesempatan Kedua !!! \n");
printf ("\nMasukan Angka : \n");
scanf ("%i",&n);
}

if (n==h) {
printf ("SELAMAT ANDA BERHASIL\n");
}
else if (n!=h) {
printf ("Ya Ampun Salah lagy!! Waspadalah \n");
printf ("Ini Kesempatan Terakhir Anda!!!! \n");
printf ("\nMasukan Angka : \n");
scanf ("%i",&i);
}

if (i==h) {
printf ("Horeee...Akhirnya Anda Berhasil!!\n");
}

else if (i!=h) {
printf ("DUAAAAAAAAAAAAAAAAAAAARRRRRRRRRRRRRRRRRRRRR\n");
r=0;

for (f=1;f<=1060;f++) { r=r+1; printf("*"); } printf("ANDA GAGAL!!!"); printf("\n"); } getch(); return 1; }

  • Program kalkulator dua variabel dengan operasi perhitugan +, -, /, mod dan div menggunakan IF Statement dengan bahasa C

source code
//file header, mendeklarasi atau mengimport library c

#include<stdio.h>
#include<conio.h>


//memulai main program
int main(){

int h,d,hasil;//deklarasi variabel

float r,l,jwb;//deklarasi variabel

int menu;//deklarasi variabel

printf("=====PROGRAM KALKULATOR====\n")//mencetak ke layar

printf("Pilih Menu !!\n");//mencetak ke layar

printf("1. Penjumlahan 2. Pengurangan\n");//mencetak ke layar

printf("3. Perkalian 4. Pembagian\n");//mencetak ke layar

printf("5. Mod 6. Div\n");//mencetak ke layar

printf("Anda pilih : \n");//mencetak ke layar

scanf("%i", &menu);//membaca masukkan, %i membaca format integer

if (menu==1){// jika menu yang dipilih adalah 1 maka yg diproses penjumlahan

printf(" Penjumlahan (+)\n");//mencetak ke layar

printf("Masukkan angka ke-1 :");//mencetak ke layar

scanf("%f", &r);//membaca masukkan, %f membaca nilai data pecahan

printf("Masukkan angka ke-2 :");
//mencetak ke layar

scanf("%f", &l);//membaca masukkan, %f membaca nilai data pecahan

jwb=r+l;//proses penjumlahan

printf("Hasilnya = %.2f", jwb);//mencetak hasil penjumlahan ke layar

printf("\n");//mencetak baris barus ke layar

}else if (menu==2){// jika menu yang dipilih adalah 2 maka yg diproses pengurangan

printf(" Pengurangan (-)\n");

printf("Masukkan angka ke-1 :");

scanf("%f", &r);

printf("Masukkan angka ke-2 :");

scanf("%f", &l);

jwb=r-l;//proses pengurangan

printf("Hasilnya = %.2f", jwb);//mencetak hasil pengurangan ke layar

printf("\n");

}else if (menu==3){// jika menu yang dipilih adalah 3 maka yg diproses pengurangan

printf(" Perkalian (X)\n");

printf("Masukkan angka ke-1 :");

scanf("%f", &r);

printf("Masukkan angka ke-2 :");

scanf("%f", &l);

jwb=r*l;//proses perkalian

printf("Hasilnya = %.2f", jwb);//mencetak hasil perkalian ke layar

printf("\n");

}else if (menu==4){// jika menu yang dipilih adalah 4 maka yg diproses pembagian

printf(" Pembagian (/)\n");

printf("Masukkan angka ke-1 :");

scanf("%f", &r);

printf("Masukkan angka ke-2 :");

scanf("%f", &l);

jwb=r/l;//proses pembagian

printf("Hasilnya = %.2f", jwb);//mencetak hasil pembagian ke layar

printf("\n");

}else if (menu==5){// jika menu yang dipilih adalah 5 maka yg diproses adalah mod

printf(" Mod \n");

printf("Masukkan angka ke-1 :");

scanf("%i", &h);

printf("Masukkan angka ke-2 :");

scanf("%i", &d);

hasil=h%d;//proses mod

printf("Hasilnya = %i", hasil);//mencetak hasil mod ke layar

printf("\n");

}else if (menu==6){// jika menu yang dipilih adalah 6 maka yg diproses adalah div

printf(" Div \n");

printf("Masukkan angka ke-1 :");

scanf("%f", &r);

printf("Masukkan angka ke-2 :");

scanf("%f", &l);

hasil=(int)r/l;//proses div

printf("Hasilnya = %i", hasil);//mencetak hasil div berupa intger ke layar

printf("\n");
}
return 1;//memberikan nilai balikan
}


untuk program dan source code bisa download
di sini
 

Zahra-Cyberstar Copyright 2009 Sweet Cupcake Designed by Ipiet Templates Image by Tadpole's Notez