Belajar Pemrograman Yukkk !!! (Part 1)

Pada posting saya kali ini, saya pengen share gimana caranya agar kita bisa menjadi seorang programmer yang handal. Tapi kita belajar dari dasar dulu ya..saya juga baru belajar ni. Mari kita belajar bersama dan berbagi ilmu.

Untuk menjadi seorang programmer yang handal, kita tidak hanya harus bisa menguasai / hapal sama yang namanya syntax-syntax dalam suatu bahasa pemrogramman. Tetapi kita juga harus menguasai yang namanya ilmu Algoritma Pemrograman. Nah, Algoritma Pemrograman inilah yang merupakan dasar untuk kita agar bisa menjadi seorang programmer handal. Gak Cuma hapal and nguasain syntax. Tapi juga kita memahaminya.

Di ‘Part 1’ ini saya ingin berbagi mengenai ilmu Algoritma Pemrograman dasar dulu nih. Berdasarkan pemahaman saya dari buku yang saya baca. 😀

Okey, kita mulai dari pengenalan dulu. Yang namanya ‘Komputer’ itu salah satu fungsinya adalah dibuat untuk membantu memecahkan masalah. Sementara itu, untuk memecahkan masalah, kita harus bisa membuat pemecahan masalahnya secara tepat dan jelas. Lantas bagaimana agar kita bisa memecahkan permasalah-permasalah itu dengan baik? Khususnya jika kita ingin memecahkannya dengan bantuan computer. Berikut ini adalah langkah-langkahnya:

  1. menjabarkan masalah
  2. merinci langkah-langkah yang harus dilakukan untuk menyelesaikan masalah
  3. membuat sarana interaksi manusia-komputer

Jika kita ingin memecahkan masalah dengan computer, maka kita harus membuat sarana interaksi antara manusia dengan computer. Dalam hal ini adalah ‘Program computer’. Program computer merupakan urutan langkah kerja dalam bentuk bahasa pemrograman computer.

Lantas bagaimana kita bisa mentranformasikan masalah kedalam program computer?

Untuk mentranformasi masalah menjadi program komputer diperlukan:

  1. bentuk urutan masalah
  2. bahasa yang dipakai
  3. konsep mesin computer

Bagaimana cara mengembangkan dan menganalisa langkah-langkah penyelesaian masalah tanpa tergantung pada karakteristik bahasa yang dipakai ataupun sifat mesin yang digunakan? Hal inilah yang melatarbelakangi mengapa diperlukannya sebuah Algoritma.

Apa sih Algoritma itu? Asal mula kata Algoritma adalah Algorism yang berasal dari nama penulis buku Arab yaitu Abu Ja’far Muhammad ibnu Musa Al-Khuwarizmi.

Keuntungan pemakaian algoritma adalah logika pemecahan masalah dapat dibuat bertingkat (mulai dari global menuju terperinci), algoritma merupakan bentuk fleksibel untuk diterapkan ke berbagai bahasa pemrograman.

Jadi Algoritma adalah:

  1. penyusunaan aspek proses logika dari suatu pemecahan masalah tanpa melihat karakteristik bahasa pemrograman yang akan digunakan
  2. urutan notasi logika yang merupakan hasil analisis dan rancangan sistematik dari strategi pemecahan masalah, untuk menggambarkan urutan langkah kerja yang jika dikerjakan akan membawa ke tujuannya.
  3. urutan logika langkah kerja untuk meyelesaikan suatu masalah.

Contoh algoritma dalam kehidupan sehari-hari, misalnya: menjahit pakaian, membuat kue, jadwal harian, panduan merakit komputer, dan lain-lain.

Setelah kita berkenalan dengan Algoritma dan mengetahui Apa si Algoritma itu? Sekarang kita cari tau, dalam pemrograman, algoritma itu bentuknya seperti apa si?

Dalam pemrograman algoritma dapat ditulis dengan beberapa notasi. Untuk mengetahui notasi-notasi algoritmanya, silakan baca di postingan saya berikutnya.

^_-

Belajar Pemrograman Yukkk !!! (Part 2)

Setelah sebelumnya kita berkenalan dengan Algoritma, Apa sih algoritma itu??
Sekarang kita akan belajar memahami notasi-notasi Algoritma dalam pemrograman.

Notasi Algoritma independen dengan bahasa pemrograman dan mesin komputer

Beberapa notasi yang digunakan dalam penulisan algoritma :

1. Notasi I : untaian kalimat deskriptif

2. Notasi II : diagram alir (flow chart)

3. Notasi III : psudo-code

Contoh
Notasi Algoritma mencari bilangan terbesar dari dua bilangan yang diinputkan
Notasi I –> Untaian Kalimat Deskriptif:
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

Notasi II –> Psudo Code
1. Masukkan bilangan pertama (a)
2. Masukkan bilangan kedua (b)
3. if a > b then kerjakan langkah 4
4. print (a )
5. print (b )

  • Simbol-simbol program flowchart

     

    No.

    Simbol

    Gambar

    Keterangan

    1

    Terminal

    clip_image001

    Digunakan untuk menunjukkan awal dan akhir dari program

    2

    Persiapan

    clip_image002

    Digunakan untuk memberikan nilai awal pada suatu variabel

    3

    Pengolahan/Proses

    clip_image003

    Digunakan untuk pengolahan arithmatika dan pemindahan data

    4

    Keputusan

    clip_image004

    Digunakan untuk mewakili operasi perbandingan logika

    5

    Input/Output

    clip_image005

    Digunakan untuk menyatakan proses input/baca dan output/tulis

    6

    Garis

    clip_image006

    Digunakan untuk menyatakan urutan pelaksanaan, atau alur proses

  • Contoh Sorting Dengan Menggunakan Bubble Sort + Struct

    Sebelumnya kita telah membahas secara sederhana penggunakan metode sorting ‘Bubble Sort’. Nah sekarang saya akan memberikan contoh yang lebih kompleks lagi, yaitu mengkombinasikan ‘Bubble Sort’ dengan ‘Struct’.

    Seperti apa contoh programnya?

    ni saya berikan contoh program yang menggunakan kombinasi ‘Bubble Sort’ dan ‘Struct’

    //Sorting Dengan Metode Bubble Sort
    #include <iostream.h>
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    main()
    {
        struct mhs {
            int nrp;
            char nama[30];
            int uts, uas, praktek, na;
        };

        struct mhs data_mhs[5];
        struct mhs temp;
        int a, b, c, d, x, y;
        char lihat, e;

        cout << "Data Nilai Mahasiswa Matakuliah AP2"<<endl;
        cout << "==================================="<<endl;
        cout << "Masukkan Jumlah Data Mahasiswa yang Akan di Input: ";
        cin >> c;
        clrscr();
        cout << "Inputkan Data Mahasiswa!\n"<<endl;
        for (a=0;a<c;a++)
        {
            cout << "No ["<<a+1<<"]"<<endl;
            cout << "NRP\t\t: ";
            cin >> data_mhs[a].nrp;
            cout << "Nama\t\t: ";
            gets (data_mhs[a].nama);
            cout << "Nilai UTS\t: ";
            cin >> data_mhs[a].uts;
            cout << "Nilai UAS\t: ";
            cin >> data_mhs[a].uas;
            cout << "Nilai Praktek\t: ";
            cin >> data_mhs[a].praktek;
            data_mhs[a].na=((25*data_mhs[a].uts)+(50*data_mhs[a].uas)+(25*data_mhs[a].praktek))/100;
            cout << "Nilai Akhir\t: "<<data_mhs[a].na;
            cout << "\n\n";
        }
        clrscr();
        lihat:
        cout << "Lihat Data:\n";
        cout << "[1] Belum Terurut\n";
        cout << "[2] Berdasarkan Urutan NRP\n";
        cout << "[3] Berdasarkan Urutan Nilai Akhir\n";
        cout << "Masukan Pilihan: ";
        cin >> lihat;
        if (lihat==’1′)
        {
            clrscr();
            for (a=0;a<c;a++)
            {
                cout << "NRP\t\t: "<<data_mhs[a].nrp<<endl;
                cout << "Nama\t\t: "<<data_mhs[a].nama<<endl;
                cout << "Nilai UTS\t: "<<data_mhs[a].uts<<endl;
                cout << "Nilai UAS\t: "<<data_mhs[a].uas<<endl;
                cout << "Nilai Praktek\t: "<<data_mhs[a].praktek<<endl;
                cout << "Nilai Akhir\t: "<<data_mhs[a].na;
                cout << "\n\n";
            }

            lagi:
            cout << "Lihat Lagi [Y/N]: ";
            cin >> e;
            if (e==’Y’||e==’y’)
            {
                clrscr();
                goto lihat;
            }else if (e==’N’||e==’n’)
            {
                clrscr();
                cout << "SELESAI";
            }else{
                clrscr();
                cout << "Kode Salah!!!";
                goto lagi;
            }
        }else if (lihat==’2′)
        {
            clrscr();
            for (a=1;a<c;a++)
            {
                for (b=0; b<c-a; b++)
                if (data_mhs[b].nrp>data_mhs[b+1].nrp)
                {
                    temp.nrp=data_mhs[b].nrp;
                    data_mhs[b].nrp=data_mhs[b+1].nrp;
                    data_mhs[b+1].nrp=temp.nrp;

                    strcpy(temp.nama, data_mhs[b].nama);
                    strcpy(data_mhs[b].nama, data_mhs[b+1].nama);
                    strcpy(data_mhs[b+1].nama, temp.nama);

                    temp.uts=data_mhs[b].uts;
                    data_mhs[b].uts=data_mhs[b+1].uts;
                    data_mhs[b+1].uts=temp.uts;

                    temp.uas=data_mhs[b].uas;
                    data_mhs[b].uas=data_mhs[b+1].uas;
                    data_mhs[b+1].uas=temp.uas;

                    temp.praktek=data_mhs[b].praktek;
                    data_mhs[b].praktek=data_mhs[b+1].praktek;
                    data_mhs[b+1].praktek=temp.praktek;

                    temp.na=data_mhs[b].na;
                    data_mhs[b].na=data_mhs[b+1].na;
                    data_mhs[b+1].na=temp.na;
                }

                for (a=0;a<c;a++)
                {
                    cout << "NRP\t\t: "<<data_mhs[a].nrp<<endl;
                    cout << "Nama\t\t: "<<data_mhs[a].nama<<endl;
                    cout << "Nilai UTS\t: "<<data_mhs[a].uts<<endl;
                    cout << "Nilai UAS\t: "<<data_mhs[a].uas<<endl;
                    cout << "Nilai Praktek\t: "<<data_mhs[a].praktek<<endl;
                    cout << "Nilai Akhir\t: "<<data_mhs[a].na;
                    cout << "\n\n";
                }
            }

            goto lagi;
        }else if (lihat==’3′)
        {
            clrscr();
            for (a=1;a<c;a++)
            {
                for (b=0; b<c-a; b++)
                if (data_mhs[b].na<data_mhs[b+1].na)
                {
                    temp.nrp=data_mhs[b].nrp;
                    data_mhs[b].nrp=data_mhs[b+1].nrp;
                    data_mhs[b+1].nrp=temp.nrp;

                    strcpy(temp.nama, data_mhs[b].nama);
                    strcpy(data_mhs[b].nama, data_mhs[b+1].nama);
                    strcpy(data_mhs[b+1].nama, temp.nama);

                    temp.uts=data_mhs[b].uts;
                    data_mhs[b].uts=data_mhs[b+1].uts;
                    data_mhs[b+1].uts=temp.uts;

                    temp.uas=data_mhs[b].uas;
                    data_mhs[b].uas=data_mhs[b+1].uas;
                    data_mhs[b+1].uas=temp.uas;

                    temp.praktek=data_mhs[b].praktek;
                    data_mhs[b].praktek=data_mhs[b+1].praktek;
                    data_mhs[b+1].praktek=temp.praktek;

                    temp.na=data_mhs[b].na;
                    data_mhs[b].na=data_mhs[b+1].na;
                    data_mhs[b+1].na=temp.na;
                }

                for (a=0;a<c;a++)
                {
                    cout << "Nilai Akhir\t: "<<data_mhs[a].na<<endl;
                    cout << "NRP\t\t: "<<data_mhs[a].nrp<<endl;
                    cout << "Nama\t\t: "<<data_mhs[a].nama<<endl;
                    cout << "Nilai UTS\t: "<<data_mhs[a].uts<<endl;
                    cout << "Nilai UAS\t: "<<data_mhs[a].uas<<endl;
                    cout << "Nilai Praktek\t: "<<data_mhs[a].praktek<<endl;
                    cout << "\n\n";
                }
            }

            goto lagi;
        }else{
            clrscr();
            cout << "Kode Salah!!!"<<endl;
            goto lihat;
        }
    }

    Dan hasil outputnya akan seperti ini ;

    bs_2a

    Di sini saya mengambil contoh jumlah data mahasiswa yang akan diinputkan adalah sebanyak 2 buah.

    Maka tampilan berikutnya adalah seperti ini :

    Baca pos ini lebih lanjut

    Contoh Sorting dengan Menggunakan Metode Bubble Sort

    Selain dengan menggunakan metode ‘Penyisipan Langsung (Straight Insertion Sort)’, kita juga dapat menggunakan metode ‘Penukaran (Exchange Selection)’ atau yang lebih kita kenal dengan istilah metode ‘Gelembung (Bubble Sort)’.

    Apa itu ‘Bubble Sort’ ?

    Metode ‘Bubble Sort’ merupakan metode pertama yang paling banyak dipelajari oleh programmer. Karena lebih sederhana. Akan tetapi ‘Bubble Sort’ sendiri memiliki kelemahan/kekurangan. Seperti :

    1. ‘Bubble Sort’ tidak efisien dan menyita lebih banyak waktu prosessor dibandingkan dengan metode sorting yang lain.
    2. Penggunaan ‘Bubble Sort’ masih dapat terlihat baik jika jumlah data/elemen yang di inputkan tidak lebih dari 30 atau kurang dari 30 elemen.

    Metode gelembung / penukaran adalah metode yang mendasarkan penukaran 2 buah elemen untuk mencapai keadaan urut yang diinginkan.

    Berikut ini adalah contoh program dengan menggunakan metode ‘Bubble Sort’ :

    #include<stdio.h>

    void tampilkan_larik(int data[],int n)
    {
        int i;
        for(i=0 ; i<n; i++)
        printf(" %d",data[i]);

        printf ("\n");

    }

    void bubble_sort (int data[],int n)
    {
        int tahap, j, tmp;
        for(tahap = 1; tahap < n; tahap++)
        {
            for(j=0; j < n-tahap; j++)

            if(data[j] > data[j+1])
            {
                tmp = data[j];
                data[j] = data[j+1];
                data[j+1] = tmp;
            }

            printf ("Hasil tahap %d:", tahap);
            tampilkan_larik (data,n);
        }
    }

    int main()
    {

        const JUM_DATA=10;
        int i;
        int data[] = {12,15,4,25,45,10,19,9,32,33};

        bubble_sort (data, JUM_DATA);

        printf ("hasil pengurutan:\n");
        tampilkan_larik (data, JUM_DATA);

        return 0;
    }

    Baca pos ini lebih lanjut