Senin, 25 Juni 2012

modul 1,2,3 pratikum algoritma dan struktur data

BAB I
PENGANTAR C++
1.SEJARAH C++
            C++ diciptakan oleh Bjarne Stroustrup di laboratorium Bell pada awal tahun 1980-an, sebagai pengembangan dari bahasa C dan Simula. Saat ini, C++ merupakan salah satu bahasa yang paling popular untuk pengembangan softwere berbasis OOP. Kompiler untuk C++ telah banyak beredar di pasaran. Software developer yang paling diminati adalah Borland Inc, dan Microsoft Corp. Produk dari Borland untuk compiler C++ adalah Turbo C++, Borland C++, Borland C++ Builder. Sedangkan dari Microsft adalah Ms.Visual C++. Walaupun banyak kompiler yang tersedia, namun pada intinya bahasa pemorograman yang di pakai adalah C++. Sebelum mulai melakukan kode program, sebaiknya diingat bahwa C++ bersifat “case sensitive”, yang artinya huruf besar dan huruf kecil dibedakan.
2. STURKTUR BAHASA C++
            Salah satu cara untuk belajar bahasa pemrograman adalah dengan langsung mempraktikannya. Cobalah contoh program berikut :
//program pertamaku
#include <iostream.h>
#include <conio.h>
void main()
{
Cout<<”Selamat belajar c++\n”;
Getch();
}

Analisis : Sisi atas merupakan source code, dan sisi bawah adalah hasilnya setelah di-kompile dan di-eksekusi. tetapi dalam program tersebut mengandung komponen dasar yang selalu ada pada setiap pemrograman C++.
            Ketika di-run, maka di layar akan muncul sebuah tulisan “Selamat belajar c++’. Contoh di atas, adalah sebuah contoh program sederhana menggunakan C++. Namun, penggalan program tersebut telah menyertakan sintak-sintak dasar bahasa C++. Sintak dasar tersebut akan dibahas satu per satu:
Ø  // program pertamaku
Merupakan sebuah baris komentar. Semua baris, yang ditandai dengan dua buah tanda slash(//) akan dianggap sebagai baris komentar dan tidak akan berpengaruh pada hasil. Biasanya baris komentar dipakai oleh programmer untuk memberikan penjelasannya tentang program. Baris komentar dalam C++, selain ditandai dengan (//) juga dapat ditandai dengan(/*….*/)
Perbedaan mendasar dari keduanya adalah:
//baris komentar
/* blok komentar */
Ø  #include <iostream.h>
#include <conio.h>
Pernyataan yang diawali dengan tanda (#) merupakan pernyataan untuk menyertakan preprocessor. Pernyataan ini bukan untuk dieksekusi. #include<iostream.h> berarti memerintahkan kompiler untuk menyertakan file file header iostream.h. Dalam file header ini, terdapat beberapa fungsi standar yang dipakai dalam proses input dan output. Seperti misalnya perintah cout yang dipakai dalam program utama.
Ø  Void main ()
Baris ini menandai dimulainya kompiler akan mengeksekusi program. Atau dengan kata lain, pernyataan main sebagai penanda program utama. Adalah suatu keharusan dimana sebuah program yang ditulis dalam bahasa C++ memiliki sebuah main. Main diikuti oleh sebuah tanda kurung () karena main merupakan sebuah fungsi.
            Dalam bahasa C++ sebuah fungsi harus diikuti dengan tanda (), yang nantinya dapat berisi argument. Dan  sintak formalnya, sebuah fungsi dimulai dengan tanda {}, seperti contoh program.

Ø  Cout <<”Selamat belajar c++”;
Perintah ini merupakan hal yang akan dieksekusi oleh kompiler dan merupakan perintah yang akan dikerjakan. Cout termasuk dalam file iostream. Cout merupakan perintah untuk menampilkan ke layar. Perlu diingat, bahwa setiap pernyataan dalam C++ harus diakhiri dengan tanda semicolon (;) untuk memisahkan antara pernyataan satu dengan pernyataan lainnya.
Ø  Getch ();
Pernyataan getch adalah fungsi untuk menunggu input dari keyboard. Sehingga program menjadi berhenti sementara.
            Dalam library C++, iostream mendukung dua oprasi dasar yaitu cout untuk output dan cin untuk input atau masukan melalui keyboard.
a). Output(cout)
Untuk cout menggunakan operator <<(insertion operation).
Cout << “Selamat Datang”;    //mencetak tulisan Selamat datang ke layar
Cout << 120;                           //mencetak angka 120 ke layar
Cout << x;                                           //mencetak isi nilai variable x ke layar
Operator << dikenal sebagai insertion operator yang memberikan perintah kepada cout. Untuk contoh pertama, kalimat yang akan di cetak di layar di apit tanda “ “ karena berupa string. Sedangkan untuk contoh kedua dan ketiga, tanpa tanda “ “, karena yang akan ditampilkan  ke layar bukan berupa string ataupun karakter. Insertion Operation (<<) dapat digunakan lebih dari satu dalam sebuah pernyataan:
Cout <<”Halo, “<<” saya “<< belajar c++ “;
Dengan perintah di atas, maka dilayar akan muncul pesan Halo, saya belajar C++. Selanjutnya dapat juga dikombinasikan dengan variable. Misalnya:
Cout << “Halo, saya berusia”<<age<<”tahun”;
Maka tampilan di layar, adalah sebagai berikut: Halo, saya berusia 23 tahun.
            Yang paling penting dari cout adalah bahwa perintah ini tidak akan menambahkan perintah ganti baris. Untuk menambahkan perintah ganti baris, ada dua perintah yang dapat dipakai:
Cout<<:Kalimat pertama.\n”;
Cout<<”Kalimat kedua.\nkalimat ketiga.”;
Tampilan di layar adalah sebagai berikut:
Kalimat pertama.
Kalimat kedua.
Kalimat ketiga.
Atau dapat juga dengan menggunakan perintah endl:
Cout<<”kalimat pertama.”<<endl;
Cout<<”kalimat kedua.”<<endl;
Tampilan dilayarnya adalah sebagai berikut:
Kalimat pertama
Kalimat Kedua.
b). Input (cin)
            Untuk menerima inputan dengan perintah cin, maka operator yang akan digunakan adalah overloaded operator (>>) dan diikuti oleh variable tempat menyimpan inputan data. Seperti contoh:
Int age;
Cin>>age;
Cin hanya dapat diproses setelah penekanan tombol ENTER. Jadi, walaupun hanya satu karakter yang dimasukkan, sebeleum penekanan Enter, cin tidak akan merespon apa-apa. Cin juga dapat digunakan menerima beberapa inputan dalam sekali pernyataan:
cin >> a >> b; sama dengan pernyataan:
Cin>>a;
Cin>>b;
Kedua pernyataan di atas, jika dijalankan akan meminta dua kali inputan data. Satu untuk variable a dan satunya lagi adalah untuk variable b. Dan untuk pemasukan datanya dipisahkan dengan pemisah, misalnya dengan Spasi, Tab atau Enter. Cobalah contoh program berikut :
#include<iostream.h>
#include<conio.h>
void main ()
{
float panjang,lebar,Luas;
cout<<”Program Pencari Lebar Persegi Panjang \n”;
cout<<”Masukkan nilai Luas :”;cin>>Luas;
cout<<”Masukkan nilai panjang :”cin>>panjang;
lebar=Luas/panjang;
cout<<”lebar persegi panjang :”<<lebar;
getch();
}
Analisis: memasukan dan menampilkan hasil inputan (cin) program pencari lebar persegi panjang.






BAB II
STRUKTUR KONTROL
            Dalam sebuah proses program, biasanya terdapat kode penyeleksian kondisi, kode pengulangan program, atau kode untuk pengambilan keputusan.
1.  SELEKSI KONDISIONAL (if…else…)
Format penulisannya: if (kondisi) pernyataan;
Kondisi adalah ekspresi yang akan dibandingkan. Jika kondisi bernilai benar, maka pernyataan aka dijalankan. Namun, jika kondisi bernilai salah, maka pernyataan akan diabaikan. Contoh pernyataan berikut akan menampilkan tuliskan x adalah 100 apabila x bernilai 100:
If (x==100)
Cout << “x adalah 100”;
Jika menginginkan lebih dari sebuah pernyataan yang dijalankan, ketika kondisi terpenuhi maka blok instruksi harus menyertakan tanda {dan}.
If (x==100)
{
Cout << “x adalah “;
Cout << x;
}
Bila menginginkan sesuatu dijalankan ketika kondisitidak terpenuhi, dapat di tambahkan keyword else. Sintaknya adalah:
If (kondisi)

If (x==100)
Pernyataan1;
Cout <<”x adalah 100”;
Else
Else
Pernyataan2;
Cout <<”x bukan 100”;

Pernyataan if…else…dapat terdiri dari beberapa else. Pada contoh berikut, program akan memeberikan jawaban terhadap inputan data, apakah berupa nilai positif, negative atau nol:
if (x>0)
            Cout<<”positive”;
else if (x<0)
            Cout<<”negative”;
else
            Cout<<”x adalah 0”;
2. PERULANGAN (loops)
Sebuah atau beberapa pernyataan akan dijalankan secara berulang-ulang, selama kondisi terpenuhi.
·         Perulangan dengan while
Sintaknya adalah:        while (kondisi) pernyataan;
Pernyataannya akan dijalankan selama ekspresi bernilai true. Contoh:
//hitungan mundur menggunakan while
#include<iostream.h>
#include<conio.h>
void main()
{
int n;
cout<<”Masukkan angka untuk mulai:”;
cin>>n;
while (n>0)
{
cout <<n<<”,”;
--n;
}
cout <<”STOP!”;
getch();
}

Analisi: Pada fungsi pengulangan do, data yang di inputkan oleh kita nilai angka nya akan semakin berkurang/bertambah (pada kasus ini berkurang) hingga berhenti pada angka yang telah ditentukan (n>0).
·         Perulangan dengan do…while
Sintaknya:       do pernyataan while (kondisi);
Konsep do…while mirip dengan while. Namun pernyataan akan dijalankan terlebih dahulu sebelum pengecekan kondisi. Untuk lebih jelasnya, perhatikan contoh berikut:
#include<iostream.h>
#include<conio.h>
void main()
{
int n;
do
{
cout <<”Masukkan nomor (tekan 0 untuk mengakhiri):”;
cin>>n;
cout<<”Anda memasukkan angka :”<<n<<”\n”;
} while (n!=0);
getch();
}

Analisis: Pada perintah ini data yang di inputkan akan berhenti pada angka yang di inputkan tersebut, maksudnya selain angka (pada kasus ini proses akan berhenti pada saat kompiler memasukkan angka 0) data tidak akan behenti memproses untuk memerintahkan memasukkan angka.

·         Perulangan dengan for
Sintaknya:       for (inisialisasi; kondisi; counter) pernyataan;
Pernyataan akan diulangi jika kondisi bernilai true. Sama seperti perulangan dengan while. Namun for menetapkan inisialisasi dan penaikan berada dalam(dan). Penjelasannya adalah sebagai berikut:
1. Inisialisasi : akan dieksekusi. Biasanya merupakan variable yang akan dipakai sebagai counter atau pencacah. Bagian ini akan di eksekusi hanya sekali
2. Kondisi : akan diperiksa, jika bernilai true maka perulangan akan dilanjutkan dan jika bernilai false maka perulangan akan dilewati.
3. Pernyataan : akan dieksekusi. Biasanya dapat terdiri dari sebuah instruksi atau blok instruksi yang berada di antara{dan}.
4. Terakhir, apapun perintah dalam counter akan dijalankan dan kemudian perulangan kembali lagi ke langkah 2.
Contoh:
#include<conio.h>
#include<iostream.h>
void main()
{
for (int n=10; n>0;n--)
{
cout<<n<<”,”;
}
cout<<”STOP!”;
getch();
}

Analisis: pada perintah ini,  pernyataan akan diulangi jika kondisi bernilai true (benar). Dan nilai akan berhenti saat kompiler memasukkan angka hingga (pada kasus ini nilai berhenti atau n>0).
Inisialisasi dan Counter adalah optional atau dapat di tiadakan. Namun tidak demikian dengan tanda semicolon (;). Misalnya kita dapat menuliskan: for(;n<10;) jika tanpa inisialisasi dan tanpa penaikan, atau for(;n<10;n++) jika tanpa inisialisasi namun tetap menggunakan penaikan.
·         Nested Loops(Perulangan Bertumpuk)
Perulangan bertumpuk secara sederhana dapat diartikan: terdapat satu atau lebih loop didalam sebuah loop. Banyaknya tingkatan perulangan tergantung dari kebutuhan. Biasanya, nested loops digunakan untuk membuat aplikasi matematika yang menggunakan baris dan kolom. Loop luar, biasanya digunakan untuk mendefinisikan baris. Sedangkan loop dalam digunakan untuk mendefinisikan kolom.
Contoh:
for (int baris = 1; baris <=4; baris++)
{
for (int kolom = 1; kolom <=5; kolom++)
{
cout<<kolom<<” “;
}
cout<<endl;
}
Analisis: perintah pengulangan akan terus mengulang selama nilai yang di inputkan salah, perintah akan berhenti secara otomatis bila nilai sudah benar.

Tambahan:
·         Perintah break
Break berfungsi untuk keluar dari loop, walaupun kondisinya belum seluruhnya terpenuhi. Biasanya, perintah ini digunakan untuk memaksa program keluar dari loop. Contoh berikut akan berhenti menghitung sebelum terhenti secara normal.
For (int n=10; n>0;n--)
{
            Cout<<n<<”, “;
            If (n==3)
            {
            Cout<<”penghitungan dihentikan !”;
            Break;
            }
}
Analisis: menampilkan angka yang di input oleh kompiler hingga angka tersebut bernilai benar, dan perintah angka terus dimunculkan selama angka yang dimasukan salah.
Dan dilayar akan tampak hasil sebagai berikut:
10,9,8,7,6,5,4,3, penghitung dihentikan !
·         Perintah continue
Perintah ini akan melewati satu iterasi yang sesuai dengan syarat tertentu, dan melanjtukan ke iterasi berikutnya. Contoh:
For (int n=10; n>0;n--)
Dan layar akan muncul:
{
10,9,8,7,6,4,3,2,1, STOP !
If (n==5) continue;

}

Cout<<”STOP !”;


Analisis: pada perintah ini,sama menggunakan perintah for hanya saja ditambah perintah continue dalam program ini, dalam program ini angka 5 tidak tampil karena terdapat sintaks if (n==5) continue, sehingga dalam program ini tampilan akhirnya langsung mengahasilkan angka 10 sampai dengan 1 tanpa angka 5 dan diakhiri dengan STOP.
·         Struktur Selektif dengan switch
Logika menggunakan switch sama dengan menggunakan perintah if yang telah dijelaskan sebelumnya. Sintaknya adalah:



Switch (pilihan)
{
            case nilai1:
                        blok pernyataan 1
                        break;
            case nilai2:
                        blok pernyataan 2
                        break;
            -
            -
            default :
            blok pernyataan default
}

Contoh (kedua penggalan program memiliki arti yang sama):
Contoh switch
Contoh if
Switch (x)
If (x==1)
{
{
Case 1 :
   Cout<<”x adalah 1”;
Cout<<”x adalah 1”;
}
Break;
Else if(x==2)
Case:
{
Cout<<”x adalah 2”;
Cout<<”x adalah 2”;
Break;
}
Default:
Else
Cout<<”tidak terindetifikasikasi”:
{
}
Cout<<”tidak teridentifikasika”;
}
}
Sedangkan untuk program yang memiliki beberapa nilai pilahan, maka dapat ditulis seperti contoh berikut:
Switch (x)
{
Case 1:
Case 2:
Case 3:

Cout<<”x=1,2 atau 3”;
Break;
Default:
Cout<<”x tidak sama dengan 1,2 atau 3”;
}















BABIII
FUNGSI
Fungsi merupakan sebuah blok instruksi yang dieksekusi dan dipanggil dari bagian lain tubuh program. Pada intinya fungsi berguna untuk:
·         Kategori Function dalam C/C++
1) Standard Library Function
            Yaitu fungsi-fungsi yang telah disediakan oleh C/C++ dalam file-file header atau librarynya. Misalnya: clrscr(), printf(), getch() Untuk function ini kita harus mendeklarasikan terlebih dahulu library yang akan digunakan, yaitu dengan menggunakan preprosesor direktif.
2) Programmer-Defined function
            Adalah function yang dibuat oleh programmer sendiri. Function ini memiliki nama tertentu yang unik dalam program, letaknya terpisah dan program utama, dan bias dijadikan satu ke dalam suatu library buatan programmer itu sendiri yang kemudian juga di-include-kan untuk penggunaannya. Format penulisannya adalah sebagai berikut: tipe nama (argumen1, argumen2,…) pernyataan;
Contoh penggunaan fungsi:
//contoh fungsi
#include <iostream.h>
#include <conio.h>
int penjumlahan(int a, int b)
{
int r;
r=a+b;
return r;
}
void main()
{
int z;
z=penjumlahan(5,3);
cout<<”Hasil penjumlahan=”<< z;
getch();
}
Analisa  :  menampilkan hasil dari penjumlahan dari 5 + 3. Perintah ini berfungsi untuk penjumlahan dengan menggunakan fungsi, terdapat int a & int b sebagai parameternya dan int penjumlahan sebagai tipe datanya, lalu terdapat juga int r sebagai parmeternya dan r=a+b; sebagai hasilnya , lalu terdapat juga return r. nilai r dan int z sebagai variabelnya, lalu dipanggil fungsinya sehingga mendapatkan hasil 8.
3)  Pendeklarasian fungsi tanpa tipe(menggunakan void)
Kadang-kadang terdapat fungsi yang tanpa memerlukan adanya pengembalian nilai. Misalkan, sebuah fungsi yang hanya bertugas mencetak kalimat ke layar monitor dan tanpa memerlukan adanya pertukaran parameter. Dalam kondisi seperti ini, maka di pergunakan kata kunci void.
Contoh program:
#include <iostream.h>
#include<conio.h>
void garis()
{
int I;
for (i=0;i<35;i++)
cout<<’-‘;
}
void main()
{
garis()
//panggil fungsi garis
cout<<”\n Erwan Ramdani Nugeaha \n”;
cout<<”107006115 \n”;
garis();
getch();
}
Yang harus diperhatikan adalah, pemanggilan fungsi harus disertai dengan tanda().
Analisa : perintah diatas merupakan perintah yang mendeklarasikan sebuah fungsi tanpa tipe nya. Dengan menggunakan fungsi pengganti yaitu void, data yang dituliskan dalam cout akan ditampilkan.
Fungsi Rekrusif
Fungsi rekursif adalah suatu fungsi yang memanggil dirinya sendiri, artinya fungsi tersebut dipanggil di dalam tubuh fungsi itu sendiri. Fungsi rekursif sangat berguna bila diimplementasikan untuk pekerjaan pengurutan data, atau menghitung nilai factorial suatu bilangan.
Bentuk rekursi bertujuan untuk:
1. Menyerdahanakan penulisan program
2. Menggantikan bentuk iterasi
Syarat bentuk rekursif:
1. Ada kondisi terminal(basis)
2. Ada subroutine call yang melibatkan parameter yang nilainya menuju kondisi terminal(recurrence)
Misalnya:
#include<iostream.h>
#include<conio.h>
long factorial (long a)
{
if (a>1)
return (a* factorial (a-1));
else
return (1);
}
void main()
{
long i;
cout<<”tuliskan bilangan :”;
cin>>1;
cout<<”!”<<”= “<<factorial(1);
getch();
}

Analisis : menampilkan sebuah faktorial angka dengan fungsi rekursif.


Tidak ada komentar:

Posting Komentar