Program C++ dan contoh script Program - PROGRAMMING LOGIC

Breaking

Thursday, 28 May 2015

Program C++ dan contoh script Program

1.1C & C++ Berbicara tentang C++ biasanya tidak lepas dari C, sebagai bahasa pendahulunya. Pencipta C adalah Brian W. Kerninghan dan Dennis M. Ritchie pada sekitar tahun 1972, dan sekitar satu dekade setelahnya diciptakanlah C++, oleh Bjarne Stroustrup dari Laboratorium Bell, AT&T, pada tahun 1983. C++ cukup kompatibel dengan bahasa pendahulunya C. Pada mulanya C++ disebut “ a better C “. Nama C++ sendiri diberikan oleh Rick Mascitti pada tahun 1983, yang berasal dari operator increment pada bahasa C. Keistimewaan yang sangat berari dari C++ ini adalah karena bahasa ini mendukung pemrograman yang berorientasi objek ( OOP / Object Oriented Programming). 1.2PEMROGRAMAN BERORIENTASI OBJEK Sampai saat ini, program dianggap sebagai sekumpulan procedure yang melakukan aksi terhadap data. Procedure, atau function, adalah suatu set instruksi khusus yang dieksekusi secara bergantian. Data terpisah dari procedure, dan trik pemrogramannya adalah menjaga urutan pemanggilan fungsi, dan data apa yang diubah. Dalam demikian terciptalah program yang terstruktur. Ide dari pemrograman terstruktur adalah memecah program yang besar menjadi kecil sehingga lebih mudah dipahami. Program-program lama memaksa pengguna untuk melakukan langkah-perlangkah melalui layar monitor. Sedangkan program modern menyajikan semua pilihan sekaligus dan merespon aksi pengguna. OOP berusaha untuk memenuhi kebutuhan itu, menyediakan teknik untuk mengelola kompleksitas, mencatat penggunaan ulang komponen software dsb. Inti dari OOP adalah memperlakukan data dan procedure sebagai sebuah objek berisi entitas dengan identitas dan ciri yang khusus. 1.3C++ & OBJECT ORIENTED PROGRAMMING Tiga karakteristik utama dari bahasa yang berorientasi objek adalah 1. Encapsulation 2. Inheritance 3. Polymorphisme. Tiga ciri diatas mendukung reusability, yang merupakan salah satu factor penentu kualitas software. C++ mendukung karakteristik encapsulation dengan menggunakan konsep class. Setelah terbentuk, maka class akan bertindak sebagai entitas yang tenkapsulasi. Dengan adanya konsep inheritance, maka C++ mendukung ide penggunaan ulang suatu object. Polymorphisme ( Banyak Bentuk ) merupakan suatu konsep yang menyatakan sesuatu yang sama dapat memiliki berbagai bentuk dan perilaku yang berbeda. 1.4 MENYIAPKAN PROGRAM Source code C++ dapat ditulis pada text editor apapun. Baik itu digunakan pada sistem operasi Windows atau Unix (Linux, BSD, dsb). Walaupun demikian, lebih disarankan apabila digunakan dengan editor khusus C++, agar penggunaan tools yang lain lebih mudah. 1.5KOMPILASI Untuk mengubah source code menjadi sebuah program, kita gunakan compiler. Setelah source code tercompile, terbentuklah sebuah file objek dengan ekstension “ .obj “. File “ .obj “ ini belum merupakan sebuah program executable. Untuk membentuk program executable linker harus dijalankan. Jika program executable sudah diperoleh, walaupun di komputer anda tidak terinstall compiler C++ namun program masih tetap dapat dijalankan. Saat ini banyak compiler C++ yang berada di pasaran, contohnyaa Borland C++, Turbo C++, Microsoft C++, C++ Builder, Visual C++ sampai pada compiler gratis seperti g++ di Unix. II. ELEMEN DASAR Untuk membuat suatu program ada baiknya kita mengenal terlebih dahulu apa yang disebut dengan prepocessor directive. Propocessor ditandai dengan adanya awalan # . Preprocessor selalu dijalankan terlebih dahulu pada saat proses kompilasi terjadi. Setiap program C++ mempunyai bentuk seperti di bawah , yaitu: #prepocessor directive main() { // Batang Tubuh Program Utama } Melihat bentuk seperti itu dapat kita ambil kesimpulan bahwa batang tubuh program utama berada didalam fungsi main(). Berarti dalam setiap pembuatan program utama, maka dapat dipastikan seorang pemrogram menggunakan minimal sebuah fungsi. Pembahasan lebih lanjut mengenai fungsi akan diterangkan kemudian. Yang sekarang coba ditekankan adalah kita menuliskan program utama kita didalam sebuah fungsi main(). Jangan lupa bahwa C++ bersifat case sensitive, sehingga, nama hallo dan Hallo berbeda artinya. 2.1 CARA PENULISAN • Komentar Komentar tidak pernah dicompile oleh compiler. Dalam C++ terdapat 2 jenis komentar, yaitu: Jenis 1 : /* Komentar anda diletakkan di dalam ini Bisa mengapit lebih dari satu baris */ Jenis 2 : // Komentar anda diletakkan disini ( hanya bisa perbaris ) • Semicolon Tanda semicolon “;” digunakan untuk mengakhiri sebuah pernyataan. Setiap pernyataan harus diakhiri dengan sebuah tanda semicolon. Baris yang diawali dengan tanda #, seperti #include tidak diakhiri dengan tanda semicolon, karena bentuk tersebut bukanlah suatu bentuk pernyataan, tetapi merupakan prepocessor directive 2.2 MASUKAN DAN KELUARAN DASAR Pada C++ terdapat 2 jenis I/O dasar, yaitu: a.cout (character out), standard keluaran b.cin (character in), standard masukan Untuk dapat menggunakan keyword diatas, maka harus ditambahkan #include pada prapocessor directive. Contoh : #include main() { char nama[100]; // Dekalarasi variable nama cout<<”Masukkan nama Anda : “; cin>>nama; // Meminta user untuk menginisialisasi variable nama cout<<”Nama anda adalah “< harus dimasukkan dalam program diatas main(). Contoh : #include #include main() { cout< main() { int n=66; cout< main() { int n; n=66; // sama juga jika ditulis int n=66; cout< main() { int n; cout<> Jika variable tidak diinisialisai, namun nilai keluarannya diminta, maka compiler dengan bijak akan menampilkan nilai acak yang nilainya tergantung dari jenis compilernya. 2.6 KONSTANTA 1.Konstanta Oktal, digit yang digunakan 0-7 2.Konstanta Heksadesimal, digit yang digunakan 0-9, A-F 3.Konstanta Bernama a. Menggunakan keyword const Contoh : const float PI = 3.14152965; Berbeda dengan variable, konstanta bernama tidak dapat diubah jika telah diinisialisasi b. Menggunakan #define Contoh : #define PI 3.14152965 Keuntungan menggunakan #define apabila dibandingkan dengan const adalah kecepatan kompilasi, karena sebelum kompilasi dilaksanakan, kompiler pertama kali mencari symbol #define ( oleh sebab itu mengapa # dikatakan prepocessor directive ) dan mengganti semua PI dengan nilai 3.14152965. III. OPERATOR Operator adalah symbol yang biasa dilibatkan dalam program untuk melakukan sesuatu operasi atau manipulasi. Contoh : a = b + c * d / 4 a, b, c, d  disebut operand =, +, *, /  disebut operator 3.1 OPERATOR ARITMATIKA Operator Deskripsi Contoh + Penjumlahan ( Add ) m + n - Pengurangan ( Substract ) m – n * Perkalian ( Multiply ) m * n / Pembagian ( Divide ) m / n % Sisa Pembagian Integer ( Modulus ) m % n - Negasi ( Negate ) -m NB : Operator seperti operator negasi (-) disebut unary operator, karena membutuhkan hanya satu buah operand Contoh : #include void main() { int m = 82, n = 26; cout<> 2"<<" = "<<(m>>2)< 100) cout< 10) cout< void main() { int nilai; cout<<”Masukkan nilai test : “; cin>>nilai; switch(nilai/10) { case 10: case 9: case 8:cout<<’A’< #include #define TINGGI 5 #define LEBAR 10 // Program menggambarkan karakter khusus pada sebuah // koordinat yang ditentukan void main() { char matrix[TINGGI][LEBAR]; int x,y; for(y=0;y=0 && y>=0) { for(y=0;y>x>>y; matrix[y-1][x-1]='\xBO'; } getch(); } Penjelasan : Program ini adalah program menggambar karakter [] jika dicompile di Turbo C++ atau mengambar ♂ jika dicompile di Borland C++. ( ditunjukkan oleh karakter ’xBO’ ). Karena adanya pernyataan while(x>=0 && y>=0), maka program akan langsung mengeksekusi pernyataan cout<<"Koordinat : "; cin>>x>>y; matrix[y-1][x-1]='\xBO'; jika user memasukkan bilangan negatif. Pada program diatas terdapat fungsi getch(). Gunanya adalah untuk memberhentikan keluaran program sampai user menekan tombol keyboard. Untuk menggunakannya, file conio.h harus diinclude. 4.6.4 Pernyataan do…while Pernyataan do…while mirip seperti pernyataan while, hanya saja pada do…while pernyataan yang terdapat didalamnya minimal akan sekali dieksekusi. Bentuk : do{ pernyataan; } while(kondisi); Terlihat, walaupun kondisi tidak terpenuhi, maka pernyataan minimal akan dieksekusi sekali. Contoh : #include #include #include // Program konversi bilangan desimal ke biner void main() { int p,n,i=0; cout<<"Masukkan bilangan desimal : "; cin>>p; double A[100]; do { A[++i]=p%2; p=p/2; floor(p); } while (p>1); cout<<"Nilai binernya : "; cout<=1;n--) { cout< void main() { for(int x=1 ; x<=100 ; x++) cout< void main() { for(int x=1 ; ;x++) cout< #include #include main() { unsigned int n,a,b,x,s[100],p[100]; cout<<"Masukkan nilai n: "; cin>>n; for(a=0,x=0;a<=n;a++,x+=2) { cout< void main() { int n; for(;;) { cout<<”Masukkan bilangan integer : “; cin>>n; if(n % 2 == 0) continue; else if(n % 5 == 0) break; cout<<”\tLanjutkan loop berikutnya.\n”; } cout<<”Akhiri Loop.\n”; } Keluarannya : Masukkan bilangan integer : 9 Lanjutkan loop berikutnya Masukkan bilangan integer : 8 Masukkan bilangan integer : 5 Akhiri Loop V. FUNGSI Fungsi adalah sekumpullan perintah operasi program yang dapat menerima argumen input dan dapat memberikan hasil output yang dapat berupa nilai ataupun sebuah hasil operasi. Nama fungis yang didefinisikan sendiri oleh pemrogram tidak boleh sama dengan nama build-in function pada compiler C++. Fungsi digunakan agar pemrogram dapat menghindari penulisan bagian program ( kode ) berulang-ulang, dapat menyusun kode program agar terlihat lebih rapi dan kemudahan dalam debugging program. 5.1 FUNGSI, DEKLARASI DAN DEFINISI NYA Pemrogram dapat membuat fungsi yang didefinisikan sendiri olehnya. Contoh : // Fungsi kuadrat // tipe_return nama_fungsi (tipe_argument argumen) float kuadrat ( float x ) { return x*x; } Fungsi yang didefinisikan oleh pemrogram terdiri atas dua bagian, yaitu judul ( header ) dan isi ( body ). Judul dari sebuah fungsi terdiri dari tipe return ( float ), nama fungsi ( kuadrat ) dan list parameter ( float x ). Jadi, judul untuk fungsi kuadrat adalah float kuadrat ( float x ) Isi dari sebuah fungsi adalah blok kode yang mengikuti judulnya. Berisi kode yang menjalankan aksi dari fungsi, termasuk pernyataan return yang memuat nilai fungsi yang akan dikembalikan ke yang memanggilnya, Isi dari fungsi kuadrat() adalah { return x*x; } Biasanya isi dari fungsi cukup besar. Meskipun demikian, judulnya tetap hanya berada dalam satu baris. Isi dari sebuah fungsi dapat memanggil fungsi itu sendiri ( disebut rekursif ) atau memanggil fungsi lainnya. Pernyataan return dari sebuah fungsi mempunyai dua manfaat, yaitu akan mengakhiri fungsi dan mengembalikan nilainya ke program pemanggil. Bentuk umum pernyataan return adalah : return ekspresi; Dengan ekspresi adalah sebuah ekspresi yang nilainya dinyatakan untuk sebuah variable yang tipenya sama seperti tipe return. Terdapat juga fungsi yang tidak memberikan nilai return atau tipe returnnyavoid. Contoh : #include void sayHello(char[]) ; // deklarasi fungsi sayHello() void main() { char n[50]; cout<<"Masukkan nama anda : "; cin>>n; sayHello(n); } void sayHello(char nama[]) // definisi funsi sayHello() { cout<<"Selamat datang "< #include #include void cekInt(double); void main() { double angka; cout<<"Masukan sebuah angka :";cin>>angka; cekInt(angka); } void cekInt(double n) { if(n>1)cekInt(n-1); else if(n<1)cekInt(-n-1); else { if(n>0&&n<1)cout< #include void sayHello(int); void main() { sayHello(); } void sayHello(int n=1) { for(int m=0;m void ubah(int x[]); void main() { int ujian[] = {90,95,78,85}; ubah(ujian); cout<<" Elemen kedua dari array ujian adalah "< { cout<<”Array[“< void main() { char nama[5] = “Andi”; cout<<”Nama awal : “< void ubah(char *); void main() { char *ptr,nama[5] = “Andi”; ptr = nama; // ptr sebagai pointer ke variable nama cout<<”Nama awal : “< void main() { int uang =10000; int &duit = uang; cout<<”Nilai uang Rp.“< void main() { int n; int array[4] = {10,20,30,40}; for(n=0;n<4;n++) { cout<<”Array[“< void main() { char nama[5] = “Andi”; cout<<”Nama awal : “< void ubah(char *); void main() { char *ptr,nama[5] = “Andi”; ptr = nama; // ptr sebagai pointer ke variable nama cout<<”Nama awal : “< void main() { int uang =10000; int &duit = uang; cout<<”Nilai uang Rp.“< void main(int argc, char *argv[]) { for(int a=0;a #include #include #include void main(int argc, char *argv[]) { if(argc !=2) { cerr<<"Pemakaian : dec2bin angka"; exit(1); } int p = atoi(argv[1]),n,i=0; double A[100]; do { A[++i]=p%2; p=p/2; floor(p); } while (p>1); cout<<"Nilai binernya : "; cout<=1;n--) { cout< 7.1 MEMBUKA FILE Pembukaan dari suatu file mempunyai dua tujuan, yaitu membaca isi file atau untuk menulis ke dalam file tersebut. Dalam C++ penanganan pembukaan file untuk membaca atau menulis ke dalam file berbeda. 7.1.1 Membuka file untuk dibaca ifstream file_objek; Setelah objek_input diciptakan, maka file dibuka dengan cara file_objek.open(“nama_file”); Adapun dua pernyataan diatas dapat disederhanakan sebagai berikut: ifstream file_objek(“nama_file”); 7.1.2 Membuka file untuk ditulisi ofstream file_objek; Setelah objek_output diciptakan, maka file dibuka dengan cara file_objek.open(“nama_file”); Adapun dua pernyataan diatas dapat disederhanakan sebagai berikut: ofstream file_objek(“nama_file”); 7.1.3 Membuka File dengan Modus Tertentu Pada 7.1.1 dan 7.1.2 pembukaan file hanya bias dilakukan untuk keperluan membaca atau menulis saja, bukan untuk kedua-duanya, dan pada 7.1.2 jika isi dari nama_file sudah ada, maka isi yang lama akan dihapus dan digantikan dengan isi yang baru. Pada suatu waktu mungkin anda memerlukan cara supaya file yang anda buka dapat dipergunakan untuk membaca dan menulis sekaligus, atau isi file yang sudah ada tidak dihapus jika anda ingin menambah isi file yang baru. Untuk keperluan itu, anda harus memformat modus pembukaan file. Adapun modus pembukaan file yang disediakan oleh C++ adalah sebagai berikut : Modus Keterangan ios::app Membuka file dengan modus keluaran dan memungkinkan operasi penambahan data pada file yang telah ada. Jika file belum ada, maka membuat file baru. ios::ate Membuka file dengan modus masukan dan keluaran. Secara otomatis menempatkan pointer file ke posisi akhir file ios::in Membuka file dengan modus masukan. Penggunaannya sama dengan ifstream. ios::out Membuka file dengan modus keluaran. Penggunaannya sama dengan ofstream. ios::nocreate Membuka file yang sudah ada. Jika file yang akan dibuka belum ada, maka C++ tidak akan membuat file baru. ios::noreplace Membuka file baru. Jika file sudah ada maka operasi pembukaan menjadi gagal. Jika file belum ada, maka akan dibuat file baru. Hal ini bertentangan dengan ios::nocreate ios::trunc Menghapus file yang sudah ada dan menciptakan file baru (replace) ios::binary Membuka file dengan operasi baca-tulis secara binary. Adapun contoh penggunaan dari modus – modus pembukaan file diatas adalah sebagai berikut : fstream file_objek (“nama_file”,ios::in | ios::out); Pernyataan diatas adalah dekalarasi file nama_file dengan sehinggan nama_file dapat dibaca dan ditulisi. 7.2 PEMROSESAN FILE Setelah file dibuka, maka dilakukan pemrosesan pada file yang telah dibuka tersebut, antara lain : 7.2.1 Menulis ke File Contoh : #include #include void main() { ofstream file_objek; file_objek.open("latihan.txt"); cout<<"Latihan menulis ke dalam sebuah file\n"; for(int i=1;i<11;i++) file_objek<<"Ini adalah baris ke "< #include void main() { const int MAX = 80; char buffer[MAX+1]; ifstream file_objek; file_objek.open("latihan.txt"); cout<<"Membaca isi file latihan.txt\n"; while(file_objek) { file_objek.getline(buffer,MAX); cout< #include void main() { const int MAX = 80; char buffer[MAX+1]; ifstream file_objek; file_objek.open("latihan.txt"); cout<<"Membaca isi file latihan.txt\n"; while(!file_objek.eof()) { file_objek.getline(buffer,MAX); cout< #include #include #include #include #define max 80 void main(int argc,char *argv[]) { char buffer[max+1]; if (argc!=3) { cerr<<"Pemakaian : cp file_yang_akan_dikopi file_baru\n"; exit(1); } strupr(argv[1]); ifstream input(argv[1], ios::binary); ofstream output(argv[2], ios::binary); if (!input) { cerr<<"File yang akan dikopi tidak ada, periksa kembali !!!\n"; exit(1); } for(;;) { input.read(buffer,max); output.write(buffer,max); if(input.eof())break; } input.close(); output.close(); } 2. Program Membaca Isi Suatu File // Simpan dengan nama baca.cpp #include #include #include #include #include void main(int argc,char *argv[]) { clrscr(); const int max=84; char buffer[max+1]; char namafile[64]; if(argc!=2) { cerr<<"Penggunaan : Baca nama_file\n"; exit(1); } strcpy(namafile,argv[1]); strupr(namafile); ifstream input; input.open(namafile); while(!input) { cerr<<"File Not Found !!!\n"; exit(1); } while (!input.eof()) { input.getline(buffer,max); cout< void main() { struct keluarga { char suami[15]; char istri[15]; int jumlah_anak; }; keluarga Andi = {“Andi”,”Nina”,3}; keluarga Budi = {“Budi”,”Ana”,5}; cout<<”Jumlah anak Bapak Andi “< void main() { struct mahasiswa { long nim; int nilai; }; mahasiswa teknik[3]; teknik[0].nim = 19500376; teknik[0].nilai = 78; teknik[1].nim = 19500378; teknik[1].nilai = 71; teknik[2].nim = 19500276; teknik[2].nilai = 76; cout<<”NIM NILAI \n”; for(int n=0;n<3;n++) { cout< void main() { struct kuliah { char kuliah1[30]; char kuliah2[30]; struct kuliah *ptr; }; kuliah semester[3] = {{"Komputer 207","Matematika 217",&semester[1]}, {"Electronic 210","Sistem Kendali 303",&semester[2]}, {"Analisis Numerik 301","Telekomunikasi 367",&semester[0]}}; int n; for(n=0; n<3;n++) { cout<<"Isi sedang menujuk ke : "; cout<kuliah1< void main() { struct anak { char pria[15]; char wanita[15]; }; struct keluarga { char suami[15]; char istri[15]; struct anak ; } struct anak Andi = {“Tedi”,”Lisa”} struct keluarga Budi = {“Budi”,”Ana”,”Ryu”,”Caecilia”}; cout<<”Anak laki-laki Andi “< #include void main() { union bil_bulat { unsigned int di; unsigned char dc[2]; }; bil_bulat bil; bil.di = 0x2345; cout< #include class penduduk { private: int id; char nama[80]; public: void tampilkan(void) { cout<<”No. KTP : “< #include class penduduk { private: int id; char nama[80]; public: void tampilkan(); void set(int idn, char *n); }; void main() { penduduk saya; saya.set(1234,”Andi”); saya.tampilkan(); } void penduduk :: tampilkan(void) { cout<<”No. KTP : “< class jumlah { public: int jumlah1; int jumlah2; jumlah(); }; jumlah objek1,objek2; void main() { cout<<”Didalam main() \n”; cout<<”objek1.jumlah1 adalah “< class jumlah { public: int jumlah1; int jumlah2; ~jumlah(); }; jumlah objek1,objek2; void main() { cout<<”Didalam main() \n”; cout<<”objek1.jumlah1 adalah “< #include class Basis { private : int alpha; int bravo; public : void info_basis() { cout<<”info_basis() dijalankan…”< #include class Basis { private : int alpha; int bravo; public : void info_basis() { cout<<”info_basis() dijalankan…”<