• Algoritma Dan Struktur Data

    Algoritma Tukar isi Bejana


    Diberikan dua buah bejana A dan B, bejana A berisi larutan berwarna merah, bejana B berisi larutan berwarna biru. Pertukarkan isi kedua bejana itu sedemikian sehingga bejana A berisi larutan berwarna biru dan bejana B berisi larutan berwarna merah.
    Caranya….?

    Algoritma Tukar isi Bejana

     DESKRIPSI :
    1. Tuangkan larutan dari bejana A ke dalam bejana C.
    2. Tuangkan larutan dari bejana B ke dalam bejana A.
    3. Tuangkan larutan dari bejana C ke dalam bejana B.

    Saat suatu program dijalankan, maka program akan langsung dijalankan mulai dari baris pertama sampai baris terakhir, dan yang ditampilkan adalah hasil terakhir setelah seluruh statemen dalam program dijalankan. 


    void  main(){
        int  a = 1;
        int  b = 3;
        cout<<“Nilai a sebelumnya = ”;
        cout<<a<<endl;
        a = b + 5;
        cout<<“Nilai a sesudahnya =“;
        cout<<a;
    }


    Jendela input / output
    Pada penjelasan running program, dijelaskan langkah per langkah, apa yang terjadi pada:
    memori (warna )
    input/ouput, dll
    Setiap satu statemen dijalankan

    void  main(){
      int  a = 1;
      int  b = 3;
      cout<<“Nilai a sebelumnya = ;
      cout<<a<<endl;
      a = b + 5;
      cout<<“Nilai a sesudahnya =“;
      cout<<a;
    }
    memori
    Misalkan pada program dibawah, adalah suatu program yang terdiri dari 7 statemen. Maka dijelaskan dari langkah pertama, yaitu dari menjalankan statemen pertama (dicetak berah)


    void  main(){

      int  a = 1;
      int  b = 3;
      cout<<“Nilai a sebelumnya = ”;
      cout<<a<<endl;
      a = b + 5;
      cout<<“Nilai a sesudahnya =“;
      cout<<a;

    }
    Statemen pertama, int  a = 1; adalah pendeklarasian suatu variabel dengan nama a,  kemudian variabel tersebut langsung diberi nilai 1, perubahan tersebut terjadi di memori,  sehingga yang berubah adalah jendela memori. 


    void  main(){

    int  a = 1;
    int  b = 3;
    cout<<“Nilai a sebelumnya = ”;
    cout<<a<<endl;
     a = b + 5;
    }
    cout<<“Nilai a sesudahnya =“;
    cout<<a;

    Setelah statemen pertama selesai dilaksanakan, maka program mulai menjalankan perintah selanjutnya, int b = 3; yaitu mendeklarasikan suatu variabel dengan nama b dan langsung diberikan nilai 3, hal ini terjadi pada memori.

    void  main(){
    int  a = 1;
    int  b = 3;
    cout<<“Nilai a sebelumnya = ”;
    cout<<a<<endl;
    a = b + 5;
    cout<<“Nilai a sesudahnya =“;
    cout<<a;
    }
    Eksekusi statemen selanjutnya, yaitu menampilkan tulisan “Nilai a sebelumnya =“, karena ini adalah proses output, maka yang berubah adalah jendela input/output.

    void  main(){
    int  a = 1;
    int  b = 3;
    cout<<“Nilai a sebelumnya = ”;
    cout<<a<<endl;
    a = b + 5;
    cout<<“Nilai a sesudahnya =“;
    cout<<a;
    }

    Petunjuk Penjelasan Running Program
    Perintah selanjutnya dijalankan, cout<<a<<endl; karena saat ini variabel a bernilai 1 (terlihat pada jendela memori), maka perintah tersebut menjadi cout<<1<<endl; yaitu menampilkan 1, setelah itu memindahkan cursor ke baris selanjutnya. Karena statemen output (cout) yang terjadi, maka perubahan dilakukan pada jendela input/output.

    void  main(){
    int  a = 1;
    int  b = 3;
    cout<<“Nilai a sebelumnya = ”;
    cout<<a<<endl;
    a = b + 5;
    cout<<“Nilai a sesudahnya =“;
    cout<<a;
    }

    a = b + 5; karena saat ini variabel b bernilai 3, maka statemen menjadi a = 3 + 5; atau a = 8; yaitu nilai variabel a berubah, dari sebelumnya bernilai 1, menjadi bernilai 8, statemen ini hanya mengubah jendela memori (liat tulisan merah) , jendela input/output tidak berubah.

    void  main(){
    int  a = 1;
    int  b = 3;
    cout<<“Nilai a sebelumnya = ”;
    cout<<a<<endl;
    a = b + 5;
    cout<<“Nilai a sesudahnya =“;
    cout<<a;
    }
    Petunjuk Penjelasan Running Program
    Statamen selanjutnya, output tulisan “Nilai a sesudahnya =“, karena merupakan perintah output, maka perintah ini hanya mengubah jendela input/output (liat tulisan merah), tidak mengubah jendela memori.


    void  main(){
    int  a = 1;
    int  b = 3;
    cout<<“Nilai a sebelumnya = ”;
    cout<<a<<endl;
    a = b + 5;
    cout<<“Nilai a sesudahnya =“;
    cout<<a;
    }
    Petunjuk Penjelasan Running Program
    Statemen selanjutnya, cout<<a; karena saat ini variabel a bernilai 8 (liat jendela memori), maka perintah tersebut menjadi cout<<8; atau menampilkan tulisan 8 di jendela input/output.
     void  main(){
      int  a = 1;
      int  b = 3;
      cout<<“Nilai a sebelumnya = ”;
      cout<<a<<endl;
      a = b + 5;
      cout<<“Nilai a sesudahnya =“;
      cout<<a;

    Petunjuk Penjelasan Running Program

    Setelah semua statemen selesai dilaksanakan, maka program berhenti. Output yang akan terlihat adalah seperti pada jendela input/output .
    void  main(){
    int  a = 1;
    int  b = 3;
    cout<<“Nilai a sebelumnya = ”;
    cout<<a<<endl;
    a = b + 5;
    cout<<“Nilai a sesudahnya =“;
    cout<<a;
    }
    Format Penjelasan Running Program
    void  main(){
    int  a = 1;
    cout<<“sebelum while”<<endl;
    while(a == 0){
    cout<<“ a = “<< a << endl;
    a = a + 1;
    }
    cout<<“setelah while   a = ”<<a;
    }

    Bagian kode program, baris yang berwarna merah tebal, merupakan baris perintah yang sedang dijalankan saat ini.  
    Keterangan, yaitu menjelaskan, operasi yang terjadi saat suatu baris program dijalankan.

    void  main(){
    int  a = 1;
    cout<<“sebelum while”<<endl;
    while(a == 0){
    cout<<“ a = “<< a << endl;
    a = a + 1;
    }
    cout<<“setelah while   a = ”<<a;
    }
    Jendela memori (Daftar variabel) yang telah dideklarasikan, beserta nilai yang disimpannya saat ini.
    Jendela memori (Daftar variabel) yang telah dideklarasikan, beserta nilai yang disimpannya saat ini.
    void  main(){
    int  a = 1;
    cout<<“sebelum while”<<endl;
    while(a == 0){
    cout<<“ a = “<< a << endl;
    a = a + 1;
    }
    cout<<“setelah while   a = ”<<a;
    }
    Jendela input/output dari program.
    void  main(){
    int  a = 1;
    cout<<“sebelum while”<<endl;
    while(a == 0){
    cout<<“ a = “<< a << endl;
    a = a + 1;
    }
    cout<<“setelah while   a = ”<<a;
    }
    Keuntungan menggunakan penjelasan runing program
    Bisa menelusuri bagaimana sampai bisa mendapatkan output yang ditampilkan.

    Pada program dibawah, kurang bisa dipahami, mengapa setelah program dijalankan, tidak ada yang terjadi pada jendela output. Tidak muncul “Splendid” ataupun “Poor”.

    void  main(){
    int  a = 5;
    if(a <= 4){
    cout<<“Splendid”;
    }else if(a < 5){
    cout<<“Poor”;
    }
    Coba dipelajari menggunakan penjelasan running program, dimulai dari pelaksanaan statemen pertama. Yaitu mendeklarasikan variabel a dan memberikan nilai 5.
    void  main(){
    int  a = 5;
    if(a <= 4){
    cout<<“Splendid”;
    }else if(a < 5){
    cout<<“Poor”;
    }
    }
    Selanjutnya masuk pada perintah if, kondisi (a<=4), karena saat ini variabel a bernilai 5 (lihat di jendela memori), maka  kondisi menjadi (5 <= 4) yaitu bernilai false.
    void  main(){
    int  a = 5;
    if(a <= 4){
    cout<<“Splendid”;
    }else if(a < 5){
    cout<<“Poor”;
    }
    }
    Karena bernilai false, maka statemen if langsung memerisa bagian else if. Kondisi (a<5), karena saat ini variabel a bernilai 5, maka kondisi menjadi (5 < 5) atau bernilai false.
    void  main(){
    int  a = 5;
    if(a <= 4){
    cout<<“Splendid”;
    }else if(a < 5){
    cout<<“Poor”;
    }
    }
    Karena else if bernilai false, maka langsung lompat ke statemen selanjutnya. dan karena sudah sampai pada akhir program maka program selesai. Terlihat bahwa sampai akhir program tidak ada perubahan (kosong) pada jendela input/output. 
    void  main(){
    int  a = 5;
    if(a <= 4){
    cout<<“Splendid”;
    }else if(a < 5){
    cout<<“Poor”;
    }
    }
    Dan sudah diketahui penyebab tidak munculnya output (“Splendid” atau “Poor”) adalah karena kondisi untuk kedua if tersebut bernilai false.
    void  main(){
    int  a = 5;
    if(a <= 4){
    cout<<“Splendid”;
    }else if(a < 5){
    cout<<“Poor”;
    }
    }
    Keuntungan menggunakan penjelasan runing program
    Keuntungan lainnya menggunakan penjelasan running program adalah bisa memahami apa arti dari setiap statemen (pemberian nilai, input, output, percabangan, perulangan, dll).

    Contoh :
    void  main(){
    int  a = 2;
    int  b = 9;
    int  c = 1;
    while(a < b){
    c = c + c;
    a = a + c;
    b = b - 1; 
    cout<<a<<","<<b<<","<<c<<endl;
    }
    }
    mulai dari statemen int a = 2, mendeklarasikan variabel a dan memberikan nilai 2.
    void  main(){
    int  a = 2;
    int  b = 9;
    int  c = 1;
    while(a < b){
    c = c + c;
    a = a + c;
    b = b - 1; 
    cout<<a<<","<<b<<","<<c<<endl;
    }
    }
    Petunjuk Penjelasan Running Program
    Statemen selanjutnya, int b = 9, mendeklarasikan variabel b dan memberikan nilai 9.

    void  main(){
    int  a = 2;
    int  b = 9;
    int  c = 1;
    while(a < b){
    c = c + c;
    a = a + c;
    b = b - 1; 
    cout<<a<<","<<b<<","<<c<<endl;
    }
    }

     Petunjuk Penjelasan Running Program
    void  main(){
    int  a = 2;
    int  b = 9;
    int  c = 1;
    while(a < b){
    c = c + c;
    a = a + c;
    b = b - 1; 
    cout<<a<<","<<b<<","<<c<<endl;
    }
    }
    Masuk pada statemen while(a < b), karena saat ini a bernilai 2 dan b bernilai 9 (lihat pada jendela memori), maka kondisi menjadi (2<9), dan bernilai true. karena true maka seluruh statemen dalam badan while dilaksanakan.
    void  main(){
    int  a = 2;
    int  b = 9;
    int  c = 1;
    while(a < b){
    c = c + c;
    a = a + c;
    b = b - 1; 
    cout<<a<<","<<b<<","<<c<<endl;
    }
    }
    c = c + c; karena saat ini c bernilai 1 maka statemen menjadi c = 1 + 1; atau c = 2, yaitu perintah untuk menyimpan nilai 2 ke variabel c.
    void  main(){
    int  a = 2;
    int  b = 9;
    int  c = 1;
    while(a < b){
    c = c + c;
    a = a + c;
    b = b - 1; 
    cout<<a<<","<<b<<","<<c<<endl;
    }
    }
    a = a + c; karena saat ini a bernilai 2 dan c bernilai 2 maka statemen menjadi a = 2 + 2; atau a = 4, yaitu perintah untuk menyimpan nilai 4 ke variabel a.
    void  main(){
    int  a = 2;
    int  b = 9;
    int  c = 1;
    while(a < b){
    c = c + c;
    a = a + c;
    b = b - 1; 
    cout<<a<<","<<b<<","<<c<<endl;
    }
    }
    b = b - 1; karena saat ini b bernilai 9 maka statemen menjadi b = 9 - 1; atau a = 8, yaitu perintah untuk menyimpan nilai 8 ke variabel a.
    void  main(){
    int  a = 2;
    int  b = 9;
    int  c = 1;
    while(a < b){
    c = c + c;
    a = a + c;
    b = b - 1; 
    cout<<a<<","<<b<<","<<c<<endl;
    }
    }
    cout<<a<<“,”<<b<<“,”<<c<<endl, menjadi
    cout<<4<<“,”<<8<<“,”<<2<<endl;
    Setelah seluruh statemen dalam badan while, maka kembali dengan memeriksa kondisi while(a<b), karena a saat ini bernilai 4, dan b bernilai 8 maka menjadi (4<8) atau bernilai true. Karena bernilai true, maka seluruh statemen dalam badan while dijalankan.
    void  main(){
    int  a = 2;
    int  b = 9;
    int  c = 1;
    while(a < b){
    c = c + c;
    a = a + c;
    b = b - 1; 
    cout<<a<<","<<b<<","<<c<<endl;
    }
    }
    c = c + c; karena c saat ini bernilai 2, maka menjadi c = 2 + 2; atau c = 4.

    void  main(){
    int  a = 2;
    int  b = 9;
    int  c = 1;
    while(a < b){
    c = c + c;
    a = a + c;
    b = b - 1; 
    cout<<a<<","<<b<<","<<c<<endl;
    }
    }
    a = a + c; karena a saat ini bernilai 4 dan c bernilai 4, maka menjadi a = 4 + 4; atau a = 8.

    void  main(){
    int  a = 2;
    int  b = 9;
    int  c = 1;
    while(a < b){
    c = c + c;
    a = a + c;
    b = b - 1; 
    cout<<a<<","<<b<<","<<c<<endl;
    }
    }
    b = b - 1; karena b saat ini bernilai 8, maka menjadi b = 8 - 1; atau b = 7.

    void  main(){
    int  a = 2;
    int  b = 9;
    int  c = 1;
    while(a < b){
    c = c + c;
    a = a + c;
    b = b - 1; 
    cout<<a<<","<<b<<","<<c<<endl;
    }
    }
    cout<<a<<“,”<<b<<“,”<<c<<endl; menjadi
    cout<<8<<“,”<<7<<“,”<<4<<endl;

    void  main(){
    int  a = 2;
    int  b = 9;
    int  c = 1;
    while(a < b){
    c = c + c;
    a = a + c;
    b = b - 1; 
    cout<<a<<","<<b<<","<<c<<endl;
    }
    }
    Karena seluruh statemen dalam badan while selesai, maka kondisi while kembali dinilai (a<b), menjadi (8<7) atau bernilai false.

    void  main(){
    int  a = 2;
    int  b = 9;
    int  c = 1;
    while(a < b){
    c = c + c;
    a = a + c;
    b = b - 1; 
    cout<<a<<","<<b<<","<<c<<endl;
    }
    }
    Karena kondisi bernilai false, maka dilanjutkan dengan melaksanakan statemen selanjutnya setelah while, karena sudah tidak ada statemen lagi, maka program berhenti.

    void  main(){
    int  a = 2;
    int  b = 9;
    int  c = 1;
    while(a < b){
    c = c + c;
    a = a + c;
    b = b - 1; 
    cout<<a<<","<<b<<","<<c<<endl;
    }
    }
    Sekarang sudah diketahui, bagaimana statemen while dijalankan, yaitu :
    1.Periksa kondisi while
       a. Apabila kondisi bernilai true, maka lanjut ke langkah (2).
       b. Apabila kondisi bernilai false, maka keluar dari statemen while, dan melanjutkan melaksanakan          statemen setelah while.
    Jalankan seluruh statemen dalam badan while, setelah itu kembali ke langkah (1).

    void  main(){
    int  a = 2;
    int  b = 9;
    int  c = 1;
    while(a < b){
    c = c + c;
    a = a + c;
    b = b - 1; 
    cout<<a<<","<<b<<","<<c<<endl;
    }
    }
    Penjelasan Program Yang Menggunakan Input

    Program yang menggunakan input, bisa menghasilkan output yang berbeda-beda tergantung input yang diberikan. misalkan program dibawah, akan menghasilkan output yang berbeda tergantung dari input yang diberikan :

    void  main(){
    char  name[10]=“”;
    cout<<“Username : “;
    cin>>name;
    if(strcmp(name, “adi”)==0){
       cout<<“Monggo”;
    }else if(strcmp(name, “budi”)==0){
       cout<<“Silahkan”;
    } else
    {
       cout<<“Dilarang masuk”;
    }
    }
    Untuk program yang menggunakan input seperti dibawah, harus dipilih salah satu dari seluruh kasus yang mungkin. 

    void  main(){
    char  name[10]=“”;
    cout<<“Username : “;
    cin>>name;
    if(strcmp(name, “adi”)==0){
       cout<<“Monggo”;
    }else if(strcmp(name, “budi”)==0){
       cout<<“Silahkan”;
    } else
    {
       cout<<“Dilarang masuk”;
    }
    }
    Misalkan dipilih kasus untuk menjelaskan input berupa string budi.

    void  main(){
    char  name[10]=“”;
    cout<<“Username : “;
    cin>>name;
    if(strcmp(name, “adi”)==0){
       cout<<“Monggo”;
    }else if(strcmp(name, “budi”)==0){
       cout<<“Silahkan”;
    } else
    {
       cout<<“Dilarang masuk”;
    }
    }

    Deklarasi variabel name dan berikan nilai awal string kosong “”

    void  main(){
    char  name[10]=“”;
    cout<<“Username : “;
    cin>>name;
    if(strcmp(name, “adi”)==0){
       cout<<“Monggo”;
    }else if(strcmp(name, “budi”)==0){
       cout<<“Silahkan”;
    } else
    {
       cout<<“Dilarang masuk”;
    }
    }
    Tampilkan String “Username : “, ke jendela input/output

    void  main(){
    char  name[10]=“”;
    cout<<“Username : “;
    cin>>name;
    if(strcmp(name, “adi”)==0){
       cout<<“Monggo”;
    }else if(strcmp(name, “budi”)==0){
       cout<<“Silahkan”;
    } else
    {
       cout<<“Dilarang masuk”;
    }
    }
    Perintah cin>>name, yaitu menunggu user mengetikkan nilai kemudian menekan enter, setelah user menekan enter maka nilai tersebut akan tersimpan dalam variabel name.
    void  main(){
    char  name[10]=“”;
    cout<<“Username : “;
    cin>>name;
    if(strcmp(name, “adi”)==0){
       cout<<“Monggo”;
    }else if(strcmp(name, “budi”)==0){
       cout<<“Silahkan”;
    } else
    {
       cout<<“Dilarang masuk”;
    }
    }
    Karena sudah ditentukan sebelumnya bahwa input yang akan diberikan adalah budi maka inilah yang dijelaskan.
    void  main(){
    char  name[10]=“”;
    cout<<“Username : “;
    cin>>name;
    if(strcmp(name, “adi”)==0){
       cout<<“Monggo”;
    }else if(strcmp(name, “budi”)==0){
       cout<<“Silahkan”;
    } else
    {
       cout<<“Dilarang masuk”;
    }
    }
    if(strcmp(name, “adi”)==0), menjadi if(strcmp(“budi”, “adi”)==0), karena “budi” berbeda dengan “adi” maka menjadi if(5 == 0) atau bernilai if(false)

    Catatan, fungsi strcmp akan menghasilkan nilai bukan nol (positif atau negatif), apabila kedua nilai string yang dibandingkan tidak sama.

    void  main(){
    char  name[10]=“”;
    cout<<“Username : “;
    cin>>name;
    if(strcmp(name, “adi”)==0){
       cout<<“Monggo”;
    }else if(strcmp(name, “budi”)==0){
       cout<<“Silahkan”;
    } else
    {
       cout<<“Dilarang masuk”;
    }
    }

    karena if(false), maka langsung melompat pada else if(strcmp(name,”budi”)==0), menjadi else if(strcmp(“budi”, “budi”)==0), menjadi else if( 0 == 0 ), atau bernilai  if(true).

    Catatan, strcmp akan menghasilkan nol, apabila kedua string yang dibandingkan adalah sama.

    void  main(){
    char  name[10]=“”;
    cout<<“Username : “;
    cin>>name;
    if(strcmp(name, “adi”)==0){
       cout<<“Monggo”;
    }else if(strcmp(name, “budi”)==0){
       cout<<“Silahkan”;
    } else
    {
       cout<<“Dilarang masuk”;
    }
    }
    Karena if(true), maka seluruh statemen dalam badan if akan dilaksanakan, Tampilkan “Silahkan” pada jendela input/output.

    void  main(){
    char  name[10]=“”;
    cout<<“Username : “;
    cin>>name;
    if(strcmp(name, “adi”)==0){
       cout<<“Monggo”;
    }else if(strcmp(name, “budi”)==0){
       cout<<“Silahkan”;
    } else
    {
       cout<<“Dilarang masuk”;
    }
    }
    Karena semua statemen dalam badan if sudah dilaksanakan, maka langsung keluar dari if dan laksanakan perintah selanjutnya (setelah if).

    void  main(){
    char  name[10]=“”;
    cout<<“Username : “;
    cin>>name;
    if(strcmp(name, “adi”)==0){
       cout<<“Monggo”;
    }else if(strcmp(name, “budi”)==0){
       cout<<“Silahkan”;
    } else
    {
       cout<<“Dilarang masuk”;
    }
    }


    Referensi : 
                      Inditya R. Padiku S.Kom, M.kom
  • You might also like

    Tidak ada komentar:

    Posting Komentar

    Jika ada pertanyaan, pendapat atau sanggahan silahkan berkomentar dibawah ini