Jumat, 21 Februari 2014

Definisi Sorting (Pengurutan) dan BUBBLE SORT

SORTING (PENGURUTAN)
-> Sorting (pengurutan) adalah proses mengatur sekumpulan objek menurut urutan atau susunan tertentu. 

Masalah pengurutan dapat ditulis menjadi 2 jenis, yaitu:
1. Ascending (Tersusun / terurut secara menaik)
Diberikan larik L dengan n elemen yang sudah terdefinisi elemen-elemennya.
Urutan larik tersebut sehingga tersusun secara menaik (dari urutan nilai terkecil ke urutan nilai terbesar), yaitu: L[0] L[1] L[2] ... L[n-1]
2. Descending (Tersusun / terurut secara menurun)
Diberikan larik L dengan n elemen yang sudah terdefinisi elemen-elemennya.
Urutan larik tersebut sehingga tersusun secara menurun (dari urutan nilai terbesar ke urutan nilai terkecil), yaitu: L[0] L[1] L[2] ... L[n-1]

Contoh data yang belum terurut : 70, 12, 45, 10, 11, 60, 13, 33, 50
Ascending = 10, 11, 12, 13, 33, 45, 50, 60, 70
Descending = 70, 60, 50, 45, 33, 13, 12, 11, 10

*Pengurutan dikatakan STABIL, jika dua atau lebih data yang sama (identik) tetap pada urutan yang sama setelah pengurutan. Misalnya didalam sekelompok data integer berikut terdapat 3 buah nilai 12 (diberi tanda petik ', '', ''' untuk mengidentifikasi urutannya.
Contoh : 70, 12', 45, 10, 12'', 60, 12''', 33, 50
Dikatakan STABIL jika hasil pengurutannya menjadi : 10, 12', 12'', 12''', 33, 45, 50, 60, 70
Dikatakan TIDAK STABIL jika hasil pengurutannya menjadi : 10, 12'', 12', 12''', 33, 45, 50, 60, 70

ALGORITMA SORTING (PENGURUTAN)
-----------------------------------------------------------
Macam-macam algoritma sorting (pengurutan), yaitu:
1. Bubble Sort
2. Selection Sort
3. Insertion Sort
4. Heap Sort
5. Shell Sort
6. Quick Sort
7. Merge Sort
8. Radix Sort
9. Tree Sort 

Tetapi kali ini eta hanya akan membahas Bubble Sort saja, karena itulah tugas yang harus dikumpul kali ini *hahaha*

1. BUBBLE SORT
Diberi nama "bubble" karena proses pengurutan secara berangsur-angsur bergerak / berpindah ke posisinya yang tepat, seperti gelembung yang keluar dari sebuah gelar bersoda. 

Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya. 
- Jika elemen sekarang lebih besar dari elemen berikutnya maka kedua elemen tersebut ditukar (untuk pengurutan ascending). 
- Jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen tersebut ditukar (untuk pengurutan descending).

Algoritma ini seolah-olah menggeser satu per satu elemen dari kanan ke kiri atau dari kiri ke kanan, tergantung jenis pengurutannya. Ketika satu proses telah selesai, maka bubble sort akan mengulangi proses, demikian seterusnya.

Bubble Sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapainya perurutan yang telah diinginkan.

Algoritma Bubble Sort beroperasi sebagai berikut :
1. Membandingkan data ke-i dengan data ke-(i+1) (tepat bersebelahan). Jika tidak sesuai maka tukar (data ke-i = data ke-(i+1) dan data ke-(i+1) = data ke-i). Apa maksudnya tidak sesuai? Jika kita menginginkan algoritma menghasilkan data dengan urutan ascending (A-Z), kondisi tidak sesuai adalah data ke-i > data ke-i+1, dan sebaliknya untuk urutan descending (A-Z), data ke-i < data ke-i+1.
2. Membandingkan data ke-(i+1) dengan data ke-(i+2). Kita melakukan pembandingan ini sampai data terakhir. Contoh: 1 dengan 2; 2 dengan 3; 3 dengan 4; 4 dengan 5 … ; n-1 dengan n.
3. Selesai satu proses, yang dimana kita sudah selesai membandingkan antara (n-1) dengan n. Setelah selesai satu proses, kita lanjutkan lagi proses berikutnya sesuai dengan aturan ke-1. Mulai dari data ke-1 dengan data ke-2, dan seterusnya.
4. Proses akan berhenti jika tidak ada pertukaran dalam satu proses.

Contoh Program Bubble Sort C++ (Ascending):
#include <iostream>
#include <conio.h>

using namespace std;

int data[10],data2[10];
int n;

void swap(int a,int b)
{
    int swap;
    swap = data[b];
    data[b] = data[a];
    data[a] = swap;
}

void Input()
{
    cout<<"Masukkan jumlah data yang diinginkan : ";
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cout<<"Masukkan data ke-"<<(i+1)<<" : ";
        cin>>data[i];
        data2[i] = data[i];
    }
    cout<<endl;
}

void Tampil()
{
    for(int i=0;i<n;i++)
    {
        cout<<data[i]<<" ";
    }
    cout<<endl;
}

void Bubble_Sort()
{
    for(int i=1;i<n;i++)
    {
        cout<<"Proses ke-"<<(i+1)<<" : ";
        for(int j=n-1;j>=i;j--)
        {
            if(data[j]<data[j-1]) swap(j,j-1);
        }
        Tampil();
    }
    cout<<endl;
}

int main()
{
    cout<<"------------------------------------------"<<endl;
    cout<<"BUBBLE SORT C++"<<endl;
    cout<<"------------------------------------------"<<endl<<endl;
        Input();
    cout<<"Bubble Sort : ";
        Tampil();
        Bubble_Sort();
    cout<<"Hasil Pengurutan Bubble Sort : ";
        Tampil();
    cout<<"------------------------------------------"<<endl;

    getch();
}


Output Setelah di Run : 



Referensi:
Munir, Rinaldi. (2011). Algoritma dan Pemrograman Dalam Bahasa Pascal dan C. Edisi Revisi. Bandung: Informatika.
Krisna, Putu. (23 May 2012). Sorting-Program Bubble Sort. http://belajarohbelajar.blogspot.com/2012/05/program-bubble-sort.html. 20 Februari 2014
Nurhayati, OD. (2010). Algoritma dan Pemrograman Sorting dan Searching. http://eprints.undip.ac.id/19736/1/sorting.pdf. 20 Februari 2014
Susanto, Ilham. (3 April 2013). Analisa Algoritma | Bubble Sort. http://buublesort.blogspot.com/2013/04/analisa-algoritma.html. 20 Februari 2014
Tunk, Tunk. (22 November 2013). Sekedar Berbagi. http://aina-tunk.blogspot.com/. 20 Februari 2014
Santoso, Rachmat. (3 May 2013). Algoritma Sorting (Algoritma dan Struktur Data). http://rachmatsn.blogspot.com/2013/05/algoritma-sorting-algoritma-dan.html. 20 Februari 2014

Kamis, 06 Februari 2014

Program Searching Array C++

Proses pencarian (searching) merupakan proses menemukan nilai (data) tertentu di dalam sekumpulan data yang bertipe sama (baik bertipe dasar atau bertipe bentukan).
Algoritma pencarian yang paling sederhana terbagi menjadi 2, yaitu:
1. Sequential Search (Pencarian Beruntun)
2. Binary Search (Pencarian Bagi Dua)
Kali ini akan membahas pencarian (searching) data di dalam larik atau yang disebut "Array" secara beruntun (Sequential Search). Dinamakan pencarian beruntun karena prosesnya membandingkan setiap elemen larik satu per satu secara beruntun, mulai dari elemen pertama, sampai elemen yang dicari ditemukan atau seluruh elemen sudah diperiksa.

#include <iostream>
using namespace std;

int main()

{
    cout<<"Program Searching C++\n\n";
    int a[10], indeks_larik[10], i, jumlah, n;
    jumlah=0;

    for(i=0;i<10;i++)
    {
        cout<<"Masukkan data di indeks ke-"<<i<<" : ";
        cin>>a[i];
    }
        cout<<"\nMasukkan nilai yang akan dicari : ";
        cin>>n;

    for(i=0;i<10;i++)
    {
        if (a[i]==n)
        {indeks_larik[jumlah]=i; jumlah++;}
    }
        cout<<"Data yang bernilai "<<n<<", jumlahnya ada : "<<jumlah<<endl;

    cout<<"Data tersebut terdapat di : \n";
    for(i=0;i<jumlah;i++)
    {
        cout<<"Indeks ke-";
        cout<<indeks_larik[i]<<endl;
    }

    return 0;
}


Referensi:
Munir, Rinaldi. (2011). Algoritma dan Pemrograman Dalam Bahasa Pascal dan C. Edisi Revisi. Bandung: Informatika.

Minggu, 02 Februari 2014

TIPS BELAJAR GITAR BAGI PEMULA

Halo selamat siang!!
Hari ini eta mau berbagi pengalaman yaa, lebih tepatnya sih pengalaman pribadi..

Bingung judulnya apaan, yang pasti ini berhubungan dengan alat musik yaitu GITAR :)
Mungkin "Tips Belajar Gitar Bagi Pemula" kali yaaa.. haha

Cerita sedikit, dulu sekitar kelas 2 atau 3 smp ya, bisa jadi kelas 1 smp, gitar yang ada dirumah jarang dimainkan, karenaa............ "nggak bisa".
Tapi, entah kenapa ada saatnya eta pengen bisa main gitar. Yang awalnya belajar dengan sendirinya, lalu dibantu papa untuk belajar petikannya juga dan sampai pada akhirnya bisa main gitar :)
Kalian bisa denger permainan gitarnya di soundcloud eta, ini linknya:
https://soundcloud.com/maretaputriviani

Ini tips belajar gitar untuk pemula dari eta :)
1. Kalian harus punya gitar yaa haha
2. Setel gitarnya (Stem Gitar), yang gunanya untuk menyamakan tinggi/rendahnya nada dengan nada dasar gitar agar enak didengar pada saat memainkannya dengan sebuah lagu. Biasanya di aplikasi android ada yang namanya "Guitar Tuner (Free)" atau bisa cari di google untuk aplikasi lain yang berhubungan dengan stem gitar. Sebelum kalian stem gitarnya, kalian harus tau nada-nada dasar gitar ditiap senar.
E = Senar ke-1 dipetik tanpa ditekan.
B = Senar ke-2 dipetik tanpa ditekan.
G = Senar ke-3 dipetik tanpa ditekan.
D = Senar ke-4 dipetik tanpa ditekan.
A = Senar ke-5 dipetik tanpa ditekan.
E = Senar ke-6 dipetik tanpa ditekan.
(NOTE: Senar ke-1 itu senar yang paling bawah dan senar ke-6 itu senar yang paling atas)
*Cara stemnya tinggal diputar senar gitarnya perlahan sampai nadanya terdengar sama seperti di guitar tuner. (Diputar ke kiri, nadanya akan semakin tinggi dan diputar ke kanan, nadanya akan semakin rendah)
3. Apapun yang bisa dilakukan dengan sendirinya silahkan dilakukan, CONTOHNYA: search/cari kunci atau chord gitar yang mudah terlebih dahulu, misalnya kunci A, Am, D, Dm, C, E, Em, G. Menurut eta itu kunci awal yang mudah untuk dipelajari. Usahakan ketika kita menekan senar, jari-jari kita tidak menyentuh senar yang lain, karena itu akan mempengaruhi bunyinya.
Eta sudah buat panduan/petunjuk untuk kunci atau chord gitarnya agar lebih mudah dimengerti seperti gambar dibawah ini:


4. Carilah sebuah lagu yang kunci atau chord gitarnya mudah.
*Saran: Dulu, waktu pertama kali eta belajar gitar, eta coba lagu Adele-Someone Like You yang kunci gitarnya G, D, Em, C.
5. Pelajari kunci atau chord tersebut secara rutin, karena untuk mendapatkan hasil yang maksimal harus ada usaha maksimal juga dong :) Oh iya, jangan pernah nyerah untuk main gitar, karena kemampuan setiap orang berbeda-beda, ada yang langsung bisa dan ada juga yang butuh waktu lama untuk bisa :) Kemarin, awal eta belajar gitar juga nggak langsung bisa, diujung jari-jari yang digunakan untuk menekan gitar terasa sakit. Tapi, lama kelamaan sudah terbiasa.
Intinya "Rutin"!
-Rutin untuk bolak-balik kunci, misalnya dari kunci A, ke kunci C, terus kembali lagi ke kunci A dan seterusnya. Jika sudah lancar, cobalah dengan kunci yang lainnya. Secara tidak langsung, kita sudah belajar untuk melancarkan perpindahan dari kunci gitar yang satu ke kunci gitar yang lain.
-Rutin untuk menghafal kunci gitar. Kalau lupa, search lagi. Lupa lagi? search lagi dan seterusnya.
-Rutin untuk mencoba lagu-lagu yang lain agar pengetahuan tentang kunci atau chord gitar kita bertambah.
-Rutin untuk mencari dan mempelajari kunci-kunci yang lain, termasuk kunci yang agak susah dan kunci yang sering disebut "Kunci Gantung".
-Rutin search/cari tutorial gitar di youtube, biar tambah mantepp :)

Lalu, "Yakin"!
Main gitar itu susah susah gampang, dibilang susah tapi nggak terlalu susah, dibilang gampang juga enggak. Intinya jangan dianggap terlalu gampang dan jangan dianggap terlalu susah :)
Yakinlah terhadap diri sendiri, yakinlah kalau kita bisa! Yakinlah dan tetap belajar!

Dan jangan lupa, "Enjoy"!
Berusahalah enjoy terhadap permainan gitarmu, nikmatilah tiap alunan nada yang keluar dari permainan gitarmu, karenaa..... akan lebih enak "taste" atau rasanya ketika mendengar seseorang bermain gitar dengan "feeling", dibandingkan dengan seseorang yang tidak punya feeling terhadap permainannya.

*Apabila kita sudah bisa memainkan gitar/rutin belajar gitar, pada saatnya nanti kita tidak perlu lagi melihat untuk melakukan perpindahan kunci, karena jari-jari kita/tangan kita akan dengan sendirinya/otomatis berpindah :) dan itu sangaaaaatttt menyenangkaaannnn!!!

Oh iyaa, eta juga punya sedikit info tentang CAPO GITAR nih bagi yang belum tau/belum menggunakannya..


SEMOGA DAPAT MEMBERIKAN MOTIVASI UNTUK KALIAN SEMUA :)
-SELAMAT MENCOBA!!-
By: Eta