Minggu, 13 Oktober 2019

Teori Dasar Pemograman C++


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.


         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

conio.h
getch(); supaya program tidak menutup secara  otomat


Contoh gambar di program:



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.


                         Untuk lebih jelasnya, fungsi manipulator ends dapat dilihat pada program dibawah ini:




          · 
          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




           Untuk lebih jelasnya, fungsi manipulator setiosflags( ) yang menggunakan tanda format ios::left dan ios::right dapat dilihat pada contoh program dibawah ini:







          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.



          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.




           10.contoh 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;
          }

           C .contoh program percabangan (if, else)






          #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 :) .






          Tidak ada komentar:

          Posting Komentar