DASAR TEORI PEMOGRAMAN KOMPUTER BAHASA C++
1.Dasar teori pemograman c++
C++ adalah sebuah bahasa pemrograman yang memiliki banyak dialek, seperti bahasa orang yang banyak memiliki dialek. Dalam C++, dialek bukan disebabkan oleh karena si pembicara berasal dari Jepang atau Indonesia, melainkan karena bahasa ini memiliki beberapa kompiler yang berbeda. Ada empat kompiler umum yaitu : C++ Borland, C++ Microsoft Visual, C/386 Watcom, dan DJGPP. Anda dapat mendownload DJGPP atau mungkin saja anda telah memiliki kompiler lain.
Meskipun C dibuat untuk memprogram sistem dan jaringan komputer namun bahasa ini juga sering digunakan dalam mengembangkan software aplikasi. C juga banyak dipakai oleh berbagai jenis platform sistem operasi dan arsitektur komputer, bahkan terdapat beberapa compiler yang sangat populer telah tersedia. C secara luar biasa mempengaruhi bahasa populer lainnya, terutama C++ yang eksternal dari C.
Di dalam bahasa pemrograman C, seringkali digunakan beberapa pustaka (Library). Pustaka adalah kumpulan fungsi-fungsi terkandung dalam satu file. Setiap file pustaka mempunyai satu Header yang menyimpan cetak biru dari fungsi-fungsi yang terkandung dalam file pustaka.
Di dalam bahasa pemrograman C, seringkali digunakan beberapa pustaka (Library). Pustaka adalah kumpulan fungsi-fungsi terkandung dalam satu file. Setiap file pustaka mempunyai satu Header yang menyimpan cetak biru dari fungsi-fungsi yang terkandung dalam file pustaka.
Bahasa C seringkali dipakai untuk membuat file-file pustaka yang menyimpan fungsi-fungsi tertentu, dikarenakan C dapat dikompile menjadi bahasa mesin yang sangat cepat dan kecil ukurannya, kemudian bahasa pemrograman lain seperti Python yang akan menciptakan antar-muka dari fungsi-fungsi yang dikandungnya.
Program C pada hakekatnya tersusun atas sejumlah blok fungsi. sebuah program minimal mengandung sebuah fungsi. fungsi pertama yang harus ada dalam program C dan sudah di tentukan namanya adalah main(). Setiap fungsi terdiri atas satu atau beberapa pernyataan, yang secara keseluruhan dimaksudkan untuk melaksanakan tugas khusus. Bagian pernyataan fungsi sering disebut tubuh fungsi diawali dengan tanda kurung kurawal buka ({) dan diakhiri dengan tanda kurung kurawal tutup (}). Diantara kurung kurawal itu dapat di tuliskan statement-statement program C. NAmun pada kenyataannya suatu fungsi bisa saja tidak mengandung pernyataan sama sekali. walaupun fungsi tidak memiliki pernyataan, kurung kurawal harus tetap ada, sebab kurung kurawal mengisyaratkan awal dan akhir definisi fungsi
A. struktur Program C++
§ #include <iostream>
Kalimat yang diawali dengan tanda (#) adalah preprocessor directive. #include <iostream.h> memberitahukan preprocessor kompiler untuk menyertakan header file standard iostream. File spesifik ini juga termasuk library deklarasi standard I/O pada C++. File ini disertakan karena fungsi-fungsinya akan digunakan nanti dalam program.
§ void main()
Baris ini mencocokan pada awal dari deklarasi fungsi main. Fungsi main merupakan titik awal dimana seluruh program C++ akan mulai dieksekusi. Diletakan diawal, ditengah atau diakhir program. Isi dari fungsi main akan selalu dieksekusi pertama kali.
§ cout << “Pengenalan Bahasa C++”;
Perintah cout << “Pengenalan Bahasa C++”; merupakan salah satu contoh
statement. Perintah tersebut digunakan untuk mencetak tulisan pada layar.
Setiap statement harus diakhiri dengan (;). Hal yang menjadi catatan penting di sini bahwa program C++ bersifat case sensitive, artinya huruf b esar dan kecil dianggap beda.
Contoh struktur dasar program C++ :
2.Sejarah dan konsep Bahasa Pemograman C++
Bahasa C++ lahir pada tahun 1980, yang dibuat oleh Bjarne Stroustrup di AT&T Bell Laboratories awal tahun 1980-an berdasarkan C ANSI (American National Standard Institute). Pertama kali, prototype C++ muncul sebagai C yang dipercanggih dengan fasilitas kelas, bahasa tersebut disebut “C dengan kelas” (C with Class).
Pada tahun 1983-1984, C dengan kelas disempurnakan dengan menambahkan fasilitas overloading operator, yang mulanya disebut “a better C” kemudian berganti nama pada tahun 1983 menjadi C++. Simbol
++ merupakan operator penaikan pada C, digunakan untuk menunjukkan bahwa bahasa baru ini merupakan versi yang lebih canggih dari C.
Borland International merilis kompiler Borland C++ dan Turbo C++. Kedua kompiler ini sama-sama dapat digunakan untuk mengkompilasi kode C++. Bedanya, Borland C++ selain dapat digunakan dibawah lingkungan DOS, juga dapat digunakan untuk pemrograman Windows. Selain Borland International beberapa perusahaan lain juga merilis kompiler C++, seperti Topspeed C++ dan Zortech C++.
Awal mula Bjarne Stroustrup membuat membuat C++ adalah ketika Bjarne Stroustrup melakukan pekerjaan untuk gelar Ph.D. tesis pada salah satu bahasa pemrograman dan Stroustrup memiliki kesempatan untuk bekerja dengan bahasa tersebut yang disebut Simula,
Simula merupakan bahasa untuk simulasi. The Simula 67 bahasa yang merupakan varian bekerja dengan Stroustrup. bahasa tersebut dianggap sebagai bahasa pertama untuk mendukung paradigma pemrograman berorientasi obyek. Stroustrup menyadari bahwa paradigma ini sangat berguna untuk pengembangan perangkat lunak, dengan kelebihan bahasa Simula tersebut tetapi bahasa Simula memiliki kekurangan yaitu, bahasa Simula terlalu lambat untuk penggunaan praktis.
Tak Lama kemudian, ia memulai untuk mengerjakan bahasa pemrograman berdasarkan ide yang telah ia dapatkan. Stroustrup mengerjakan C++ dengan nama awalnya yaitu C With Class. yang dimaksudkan untuk menjadi superset dari bahasa C, dengan menambahkan pemrograman berorientasi obyek ke dalam bahasa C.
Alasan Kenapa Stroustrup lebih memilih untuk mengembangkan C adalah, karena bahasa pemrograman C merupakan bahasa pemrograman yang sangat popular karena kecepatan, kinerja yang bagus, memungkinkan untuk melakukan pengkodean bahasa tingkat rendah dan lain sebagainya.
Pada tahun 1998, panitia standar C ++ menerbitkan Standar Internasional pertama untuk C ++ ISO / IEC 14882: 1998. Pada tahun 2003, panitia mendapati beberapa masalah yang dilaporkan dengan C++ Standar mereka pada tahun 1998, karena itu bahasa diperbaharui yang merupakan revisi masalah sebelumnya dan dijuluki C ++ 03.
Pada tahun 2005, panitia Standarisasi C ++ merilis laporan teknis yang dijuluki TR1, merinci berbagai fitur mereka berencana untuk menambah C ++ standar terbaru. Standar baru itu secara informal dijuluki C ++ 0x seperti yang diharapkan akan dirilis sebelum akhir dekade pertama. Namun, ironisnya, standar baru tidak dirilis sampai pertengahan 2011.
3. Definisi Variabel, Library, Operator, Manipulator
A. Definisi Variabel dalam Bahasa C
Variabel adalah ‘penanda’ identitas yang digunakan untuk menampung suatu nilai. Nilai tersebut dapat diubah sepanjang kode program. Secara teknis, variabel merujuk kepada suatu alamat di memory komputer. Setiap variabel memiliki nama yang sebagai identitas untuk variabel tersebut.
Sesuai dengan namanya, isi dari variabel bisa berubah dari waktu ke waktu tergantung kebutuhan. Untuk konstanta, nilai tersebut akan tetap dan tidak bisa diubah sepanjang kode program.Sebagai contoh, jika saya membuat program menghitung luas lingkaran, saya bisa membuat variabel ‘jari2‘ dan mengisinya dengan nilai ‘7’, kemudian di dalam kode program, saya bisa mengubah nilainya menjadi ‘8’, ’10’ atau ‘1000’. Sedangkan jika ‘jari2‘ ini dibuat sebagai konstanta, maka nilainya akan tetap ‘7’ sepanjang program dijalankan.
Contoh program:
B. Pengertian Library
Library C++ merupakan suatu pustaka yang disediakan oleh C++ untuk mempermudah programmer dalam membuat program.
Library awal yang biasa digunakan:
iostream.h
library ini digunakan untuk input dan output sederhana.
cin>> untuk menginputkan suatu data melalui variabel
cout<< untuk menampilkan teks/data dari suatu variabel
library ini digunakan untuk input dan output sederhana.
cin>> untuk menginputkan suatu data melalui variabel
cout<< untuk menampilkan teks/data dari suatu variabel
conio.h
getch(); supaya program tidak menutup secara otomat
C. Operator:
OPERATOR merupakan symbol atau karakter yang biasa dilibatkan dalam program untuk melakukan sesuatu operasi atau manipulasi, seperti penjumlahan, pengurandan lain-lain
Keterangan
|
Contoh
|
Penjumlahan
|
a + b hasilnya 40
|
Pengurangan
|
a – b hasilnya 20
|
Perkalian
|
a * b hasilnya 300
|
Pembagian
|
a / b hasilnya 3
|
Sisa Pembagian
|
a % b hasilnya 0
|
Contoh program:-
D. Pengertian Manipulator
Manipulator adalah fungsi pembantu yang memungkinkan untuk mengontrol input / output stream. Manipulator pada umumnya digunakan untuk mengatur tampilan layar. Contohnya untuk mengatur supaya suatu nilai ditampilkan dengan lebar 8 karakter dan diatur rata kiri terhadap lebar tersebut.
Dalam C++, terdapat beberapa manipulator yang merupakan fitur baru, yang baru ditambahkan. hal ini karena compiler C++ klasik (belum distandarisasi) tidak mendukung adanya manipulator
4. Tipe Data
Tipe data merupakan identifier atau pengenal suatu variabel. Tipe data akan memberitahukan kepada compiler mengenai jenis tipe data dan seberapa lebar compiler mengalokasikan ruang memori untuk suatu variabel. Sehingga dengan mekanise alokasi memori pada pemrograman C++, program yang berjalan akan lebih efisien dari segi memori.
Tipe data dalam pemrograman terkhusus C++ dapat dibedakan berdasarkan adanya tanda (signed) dan tidak adanya tanda (unsigned). Perbedaan antara keduanya adalah adanya tanda bilangan yang menunjukan positif dan negatif. Untuk tipe data unsigned (tanpa tanda) suatu bilangan hanya diawali dari 0 ke suatu jangkauan tertentu, sedangkan untuk tipe signed (bertanda), bilangan diawali dari nilai negatif (-) menuju ke jangkauan nilai positif (+).
Macam-macam tipe data di C++ dapat dilihat dari tabel berikut.
Nama Tipe Data
|
Ukuran dalam Memori
|
Rentang Nilai
|
char
|
1byte
|
-127 sampai 127 atau 0 sampai 255
|
unsigned char
|
1byte
|
0 sampai 255
|
signed char
|
1byte
|
-127 sampai 127
|
Int
|
4bytes
|
-2147483648 sampai 2147483647
|
unsigned int
|
4bytes
|
0 sampai 4294967295
|
signed int
|
4bytes
|
-2147483648 sampai 2147483647
|
short int
|
2bytes
|
-32768 sampai 32767
|
unsigned short int
|
Range
|
0 sampai 65,535
|
signed short int
|
Range
|
-32768 sampai 32767
|
long int
|
4bytes
|
-2,147,483,648 sampai 2,147,483,647
|
signed long int
|
4bytes
|
same as long int
|
unsigned long int
|
4bytes
|
0 sampai 4,294,967,295
|
float
|
4bytes
|
+/- 3.4e +/- 38 (~7 digits)
|
double
|
8bytes
|
+/- 1.7e +/- 308 (~15 digits)
|
long double
|
8bytes
|
+/- 1.7e +/- 308 (~15 digits)
|
wchar_t
|
2 or 4 bytes
|
1 wide character
|
boolean
|
4bytes
|
true atau false
|
5.Format Penulisan Variabel dan Konstanta
A. penulisan variabel
Pendeklarasian variabel sangatlah mudah, yaitu dengan menuliskan terlebih dahulu tipe data dan diikuti nama variabelnya. Sebagai contoh:
int a;
int b;
Penulisan diatas dapat dirangkum menjadi int a,b;
Berdasarkan cakupanya, variabel dapat dibedakan menjadi dua yaitu variabel global dan lokal. Variabel global merupakan variabel yang berlaku untuk semua kode program. Variabel ini dapat dipanggil dimanapun dari bagian suatu program. Sedangkan variabel lokal adalah variabel yang hanya berlaku pada suatu fungsi tertentu saja dan variabel tersebut tidak berdampak pada variabel diluar fungsi. Untuk lebih jelasknya perhatikan contoh berikut:
B. Penulisan konstanta
Konstanya merupakan variabel dengan nilai yang tetap dan tidak dapat dilakukan perubahan. Pendeklarasian konstanta dapat dilakukan dengan dua cara yaitu:
- . Dengan menggunakan instruksi const
const float phi = 3.14;
const char karakter = ‘a’;
- . Dengan menggunakan preprocessor #define
#define phi = 3,14;
Pada proses deklarasi dengan preprocessor, kamu tidak perlu menyertakan tipe data dari nilai konstanta tersebut.
Untuk lebih jelasknya perhatikan contoh berikut:
6. Input dan Ouput (cin, cout, komentar)
A. output(cout)
Perintah keluaran / output adalah perintah yang berfungsi untuk menampilkan pernyataan sehingga muncul ke layar / hasil consol program. Perintah standar yang disediakan di bahasa pemrograman C++ adalah cout() sedangkan dalam bahasa C adalah printf().
Bentuk Umum Output Operator C++ :
cout<<ekspresi;
Dalam bahasa pemrograman C++ kita dapat menggunakan Escape Sequences untuk merepresentasikan sebuah karakter yang tidak ada dalam tradisional symbol. Berikut beberapa
contohnya:
\n : baris baru / linefeed
\" : petik ganda
\b : back space
B. input (cin)
· Perintah masukan / input adalah perintah yang berfungsi untuk mamasukan data pernyataan kedalam memori program, yang biasanya akan diproses dan dikeluarkan dalam bentuk peintah keluaran (output) atau kemungkinan diolah/diproses terlebih dahulu sebelum dikeluarkan. Perintah standar yang disediakan di bahasa pemrograman C++ untuk melakukan input adalah cin() sedangkan dalam bahasa C adalah scanf().
·
· Bentuk umum Input Operator C++ :
cin>>variable;
7.Jenis Manipulator
· endl adalah sebuah fungsi manipulator yang berguna untuk memasukkan karakter NewLine atau mengatur pindah baris, dengan kata lain fungsi manipulator ini serupa dengan "\n". Fungsi endl sangat dibutuhkan untuk piranti keluaran berupa file di disk. Untuk menggunakan manipulator ini, sobat harus menyertakan file header <iostream>
U Untuk lebih jelasnya, fungsi manipulator endl dapat dilihat pada program dibawah ini:
· ends adalah sebuah fungsi manipulator yang berguna untuk menambah karakter null (nilai ASCII NOL) kederetan suatu karakter. Fungsi seperti ini seringkali diperlukan, misalnya untuk mengirim sejumlah karakter ke file di disk atau modem dan mengakhirinya dengan karakter NULL. Untuk menggunakan manipulator ini, sobat harus menyertakan file header <iostream>
Contoh :
cout<<'M'<<'D'<<ends;
pernyataan di atas mengirimkan 2 buah karakter (M dan D) serta sebuah karakter null. Pada layar, ends akan menimbulkan sebuah karakter kosong.
· setw( ) adalah sebuah fungsi manipulator yang berguna untuk mengatur lebar dari suatu tampilan data. Seandainya sobat akan menggunakan manipulator ini, sobat harus menyertakan file header <iomanip>. Bentuk umum penulisan setw() adalah sebgai berikut:
setw(int n);
n = adalah nilai lebar tampilan data, yang bernilai integer.
Untuk lebih jelasnya, fungsi manipulator setw() dapat dilihat pada program dibawah ini:
· dec, oct dan hex adalah sebuah fungsi manipulator yang berguna untuk memunculkan data dalam bentuk hexadesimal (bilangan berbasis 16), oktal (bilangan berbasis 8) dan desimal (bilangan berbasis 10). Seandainya sobat akan menggunakan manipulator ini, sobat harus menyertakan file header <iomanip>.
Untuk lebih jelasnya, fungsi manipulator dec(), oct() dan hex() dapat dilihat pada contoh program dibawah ini:
· setbase( ) adalah sebuah fungsi manipulator yang berguna untuk konversi bilangan desimal, oktal dan hexadesimal. Seandainya sobat akan menggunakan manipulator setbase(), sobat harus menyertakan file header <iomanip>. Bentuk penulisannya setbase() adalah sebgai berikut:
setbase(base bilangan);
Untuk lebih jelasnya, fungsi manipulator setbase( ) dapat dilihat pada contoh program dibawah ini:
· setfill( ) adalah sebuah fungsi manipulator yang berguna untuk menampilkan suatu karakter yang diletakkan didepan nilai yang diatur oleh fungsi setfill(). Untuk menggunakan manipulator setfill(), sobat harus menyertakan file header <iomanip>. Bentuk penulisannya setfill() adalah sebgai berikut:
setfill(charakter)
Untuk lebih jelasnya, fungsi manipulator setprecision( ) dapat dilihat pada program dibawah ini:
· setiosflags( ) adalah sebuah fungsi manipulator yang dipakai untuk mengatur berbagai format keluaran data, Untuk menggunakan manipulator setiosflags(), sobat harus menyertakan file header <iomanip>. Terdapat berbagai format keluaran (outout) untuk fungsi setiosflags(), diantaranya adalah sebagai berikut:
Tebel Tanda format untuk menampilkan setiosflags() dan resetiosflags()
Tanda Format
|
Keterangan
|
ios::right
|
Menyetel rata kanan pada lebar field yang diatur melalui setw()
|
ios::left
|
Menyetel rata kiri pada lebar field yang diatur melalui setw()
|
ios::fixed
|
Memformat keluaran dalam bentuk notasi desimal
|
ios::scientific
|
Memformat keluaran pada notasi eksponensial
|
ios::oct
|
Memformat keluaran pada basis 8 (oktal)
|
ios::hex
|
Memformat keluaran pada basis 16 (heksadesimal)
|
ios::dec
|
Memformat keluaran pada basis 10 (desimal)
|
ios::uppercase
|
Memformat huruf dalam notasi heksadesimal pada bentuk huruf kapital
|
ios::showpoint
|
Menampilkan titik desimal dalam bilangan pecahan yang tidak mempunyai bagian pecahan
|
ios::showbase
|
Menampilkan awalan 0x bagi bilangan heksadesimal atau 0 (nol) bagi bilangan oktal
|
ios::showpos
|
Untuk menampilkan tanda + pada bilangan positif
|
8.Percabangan (if, else, switch)
· if : Percabangan if ini digunakan jika kita hanya memiliki satu pernyaatan yang akan dijalankan dengan syarat tertentu. Sintaks if seperti berikut :
if(kondisi){
pernyataan
}
Jika kondisi benar, maka pernyataan akan dijalankan.
Contoh :
public class coba{
public static void main (String [] args){
int a=0;
if (a==0)
System.out.println("Nilai a = 0");
if (a==1)
System.out.println("Nilai a = 1");
}
}
Output : Program akan menampilkan nilai a = 0 saja, karena pada if yang kedua, kondisi tidak memenuhi atau salah.
· if else : Percabangan if else digunakan saat kita memiliki dua pernyataan dengan syarat tertentu. Sintaks if-else seperti berikut :
if(kondisi){
pernyataan1
}else{
pernyataan2
}
Jika hasil dari if benar, maka pernyataan1 yang dijalankan, sedangkan jika salah, pernyataan dua yang akan dijalankan.
Contoh :
public class coba{
public static void main (String [] args){
int a=0;
if (a==0)
System.out.println("Nilai a = 0");
else
System.out.println("Nilai a = 1");
}
}
Output : program akan menampilkan nilai a = 0, karena kondisi if bernilai benar, jika pada inisialisasi nilai a tidak bernilai 0, maka program akan menampilkan nilai a = 1.
· switch-case : percabangan yang digunakan saat kita memiliki banyak kondisi (lebih dari 2) dan banyak pernyataan (ledbih dari 2). Sebenarnya switch-case ini hampir sama dengan else if, hanya saja sintaksnya yang berbeda. Sintaks dari switch-case seperti berikut :
switch (variabel) {
case nilai1: pernyataan1;
break;
case nilai2: pernyataan2;
break;
default: pernyataan3;
}
Jika nilai variabel yang ditunjuk bernilai sesuai nilai1, maka pernyataan1 akan dijalankan, jika nilai variabel yang ditunjuk bernilai sesuai nilai2, pernyataan2 dijalankan, jika tidak ,maka pernyataan3 yang akan dijalankan.
public class coba{
public static void main (String [] args){
int a=3;
switch (a) {
case 1:
System.out.println("Nilai a=1");break;
case 2:
System.out.println("Nilai a=2"); break;
case 3:
System.out.println("Nilai a=3");break;
default:
System.out.println("Nilai a=4"); break
}
}
}
Output : Program akan menampilkan nilai a = 2 saja, karena kondisi bernilai benar, perhatika break dibelakang pernyataan, jika break ini dihapus, maka semua pernyataan akan dijalankan. Break digunakan untuk keluar dari switch-case saat 1 pernyataan sudah dijalankan.
Output : Program akan menampilkan nilai a = 2 saja, karena kondisi bernilai benar, perhatika break dibelakang pernyataan, jika break ini dihapus, maka semua pernyataan akan dijalankan. Break digunakan untuk keluar dari switch-case saat 1 pernyataan sudah dijalankan.
9. Perulangan
Perulangan adalah suatu proses eksekusi statemen-statemen dalam sebuah program secara terus-menerus sampai terdapat kondisi untuk menghentikannya. Operasi perulangan / looping selalu dijumpai didalam berbagai bahasa pemrograman, hal tersebut karena struktur perulangan akan sangat membantu dalam efisiensi program.
A. contoh program variabel
#include <iostream>
using namespace std;
int main(){
// deklarasi tipe data variabel
string nama;
int umur;
char jenis_kelamin;
// --- proses input ---
cout << "Siapakah namamu?" << endl;
cout << "jawab: ";
// menyimpan data ke variabel
getline(cin,nama);
cout << "Berapa umurmu?" << endl;
cout << "jawab: ";
// menyimpan data ke variabel
cin >> umur;
cout << "Jenis kelamin [L/P]: ";
// menyimpan data ke variabel
cin >> jenis_kelamin;
// --- proses output ---
cout << "Salam kenal, " << nama << " Sekarang engkau berusia ";
cout << umur << " dan kau berjenis kelamin "<< jenis_kelamin;
return 0;
B. contoh program perulangan (for)
#include <iostream>
using namespace std;
int main () {
// Local variable declaration:
int a = 1;
// while loop execution
while( a < 10 ) {
cout << "value of a: " << a << endl;
a++;
}
return 0;
}
#include <iostream>
using namespace std;
void Hasil (int x, int y){
if (x==1) {
if (y>=17){
cout << "Pria Dewasa";
}
else{
cout << "Perjaka";
}
}
else {
if (y>=17){
cout << "Wanita Dewasa";
}
else{
cout
}
}
}
int main(){
int umur, kel;
cout << "Jenis Kelamin" << '\n';
cout << "1. Laki-Laki" << '\n';
cout << "2. Perempuan" << '\n';
cout << "Masukan Pilihan Anda (1-2): "; cin >> kel;
cout << "Masukan Umur Anda (1-100): "; cin >> umur;
Hasil(kel,umur);
}
D .contoh program berdasarkan kasus
#include <iostream>
using namespace std;
int pilihan;
string text;
int main(){
cout << "Daftar bahasa pemrograman:\n";
cout << "1. Java \n2. C++ \n3. PHP\n";
ulangi:
cout << "Masukan pilihan anda (1-3): ";
cin >> pilihan;
switch(pilihan){
case 1:
text="Anda memilih Pemrograman Java";
break;
case 2:
text="Anda memilih Pemrograman C++";
break;
case 3:
text="Anda memilih Pemrograman PHP";
break;
default:
goto ulangi;
}
cout << text;
}
Terima kasih telah membaca Blog saya semoga bermanfaat :) .
















