Thursday, September 29, 2011

Dahsyatnya C++

Hellow Blogger.......
Kali ini posting hanya sekedar ingin menceritakan sedikit tentang bahasa pemrograman C++, bukan tentang codding ataw sejarahnya bagaimana c mulai muncul dan berkembang untuk megembangkan aplikasi software.
Tidak mudah untuk mempelajarinya tapi bukan berarti tidak bisa dipelajari,,,, Tetap berusaha untuk menguasainya , 
Happy dengan tantangan tapi lama-lama jenuh,,,
Jenuh hanya satu rintangan yang bakalan aku lewatin hingga bisa menakhlukkan kan C++

Wednesday, September 21, 2011

Membuat Linked List dengan C++

Hellow blogger..........
Posting ini saya akan coba membuat program Linked List yang sudah saya ada pada posting saya sebelumnya, untuk kali ini saya akan membuat programnya dengan Dev Cpp. Dalam program ini akan dibuat aplikasi untuk menyimpan data seseorang dengan format penyimpanan nama, tahun lulus, angkatan, profesi, dan no Hp,  juga untuk menghapus data yang sudah disimpan. Jadi inilah keuntungan linked list yang bersifat dinamis, tidak seperti array yang bersifat statis, jadi kalau menggunakan Linked List  ini programer akan dimudahkan ketika menyimpan data karena elemen yang disimpan pada memori tidak dibatasi tergantung dari kemampuan memori untuk menyimpan data, Linked List secara otomatis akan menambahkan alamat memori untuk menyimpan data, sistemnya berkesinambungan seperti rantai. Oke sekarang kita langsung ke contoh programnya ya, berikut sourcecode Untuk Linked List...

Tuesday, September 20, 2011

Linked List (Senarai Bertaut)

Hellow Blogger,,,,,
Artikel kali ini saya akan menuliskan tentang Kegunaan, keuntungan dan kerugian dari Linked List atau dalam bahasa Indonesia disebut dengan Senarai Bertaut, Yang nanti saya akan membuat project Linked list dengan C++, jadi sebelum saya buat projectnya saya pengen tahu terlebih dahulu tentang Link List. 
 
Linked List (Senarai Berantai) dalam ilmu komputer merupakan sebuah struktur data yang digunakan untuk menyimpan sejumlah objek data biasanya disimpan secara berurut, sehingga memungkinkan Penambahan, pengurangan, dan pencarian data yang disimpan dalam list dengan lebih efektif. Pada prakteknya sebuah struktur data memiliki elemen yang digunakan untuk saling menyimpan rujukan antara satu dengan lainnya sehingga membentuk sebuah senarai abstrak, tiap-tiap elemen yang terdapat pada senarai abstrak ini seringkali disebut sebagai node. karena mekanisme rujukan yang saling terkait inilah disebut sebagai senarai berantai.
 Singly-linked-list.svg
Sebuah senarai berantai dengan tiap-tiap node yang terdiri atas dua elemen, data integer, dan elemen rujukan ke node berikutnya
Linked List merupakan bentuk struktur data paling umum dan sederhana yang banyak digunakan untuk mengimplementasikan model struktur data lainnya, termasuk antrian, stack, ataupun larik assosiatif.

Keuntungan dan kerugian

Keuntungan utama pemanfaatan linked list (senarai berantai) dibandingkan larik, ataupun senarai biasa adalah kemudahan dan efektifitas kerja yang lebih baik dalam hal menambah, mengurangi, serta mencari suatu elemen/node yang terdapat dalam senarai. Hal tersebut dimungkinkan karena elemen-elemen yang terdapat pada sebuah senarai berantai tidak ditempatkan pada sebuah blok memori komputer seperti halnya larik ataupun senarai biasa, melainkan tiap-tiap elemen/node tersebut tersimpan dalam blok memori terpisah, penambahan, pengurangan, ataupun penggantian node dapat dilakukan dengan mengubah elemen rujukan atas tiap-tiap node yang terkait. Kerugiannya, sebuah senarai berantai tidak memungkinkan pengaksesan elemen secara acak, dalam artian untuk dapat mengakses node ke tiga pada contoh di atas harus dilakukan dengan cara mengunjungi elemen-elemen sebelumnya, dimulai dari elemen pertama, ke dua, seterusnya hingga pada lokasi elemen yang dimaksudkan. (Sumber : Wikipedia Indonesia)

Thursday, September 15, 2011

Membuat Class / Kelas dengan Cpp

Hellow Blogger,,,,
Untuk memahami tentang konsep class, saya membuat latihan dengan menghitung balok, kubus, persegi panjang, persegi dan lain-lain, semua rusmkus tersebut saya buat dalam satu project, dimana dalam project tersebut kita terdapat pilhan kita akan menghitung persegi, segitiga dan lainnya. pilih bangun apa yang akan dihitung.
dalam project tersebut rumu-rumus nya di tulis dalam file yang akan disimpan dalam bentuk file header (.h).
Kemudian file header tersebut akan dipanggil atau diproses pada file yang disimpan dengan (main.cpp) (.cpp)
Jadi dari beberapa file header akan dipanggil dalam satu main.cpp, untuk lebih jelas nya berikut adalah source code untuk file yang disimpan dengan (.h)
class balok{
      public:
             void setNilaiBl();
             void getResultBl();
      private:
              double p,l,t;
              };
void balok::setNilaiBl(){
     cout<<"Menghitung Balok";
     cout<<endl;
     cout<<"Masukkan Panjang(p) : ";
     cin>>p;
     cout<<"Masukkan Lebar(l) : ";
     cin>>l;
     cout<<"masukkan Tinggi(t) : ";
     cin>>t;
}
     void balok::getResultBl(){
          cout<<"Luas Permukaan Balok : " << 2* ((p*l) + (p*t) + (l*t))<<endl;
          cout<<"Volume Balok : " << p*l*t<<endl;
          
          }
Simpan source code diatas dengan nama file (balok.h)

lanjut ke file (.h) berikutnya, tulis source code untuk kubus dibawah ini

class kubus{
      public:
             void setNilaiKb();
             void getResultKb();
      private:
              double S;
      };
              
      void kubus::setNilaiKb(){
           cout<<"Menghitung Kubus";
           cout<<endl;
           cout<<"masukkan Ruas/Sisi Kubus: ";
           cin>>S;
           }
           
      void kubus::getResultKb(){
           cout<<"Volume Kubus : "<<S*S*S<<endl;
           cout<<"Luas Kubus   : "<<6*S*S<<endl;
           }
Simpan source code diatas dengan nama (Kubus.h). Buat File header untuk Segitiga, ketik kode berikut:

class segi{
      public:
             void setNilai();
             double getResult();
      private:
              double a,t,l;

      };

      void segi::setNilai(){
           cout<<"Menghitung Segitiga"<<endl;
           cout<<"Masukkan alas   : ";
           cin>>a;
           cout<<"Masukkan tinggi : ";
           cin>>t;
           }

      double segi::getResult(){
           l=a*t;
           l/=2;
           return l;
           } 

Simpan code diatas dengan nama file (segi3.h), Untuk lingkaran Ketik code berikut:

class lingkaran{
      public:
             void setNilaiL();
             void getResultL();
      private:
              double r;
      };              

      void lingkaran::setNilaiL(){
           cout<<endl<<"Menghitung Lingkaran"<<endl;
           cout<<"Masukkan jari-jari: ";
           cin>>r;
           }

      void lingkaran::getResultL(){
           cout<<"Luas     : "<<phi*r*r<<endl;
           cout<<"Keliling : "<<phi*(2*r)<<endl;
           }
simpan source code diatas dengan nama file (Lingkaran.h), Untuk Peregi Panjang ketik code berikut:

class segiP{
      public:
             void setNilaiP();
             void getResultP();
      private:
              double p,L;
      };

      void segiP::setNilaiP(){
           cout<<endl<<"Menghitung Persegi Panjang"<<endl;
           cout<<"Masukkan panjang: ";
           cin>>p;
           cout<<"Masukkan lebar  : ";
           cin>>L;
           }

      void segiP::getResultP(){
           cout<<"Luas     : "<<p*L<<endl;
           cout<<"Keliling : "<<(p+L)*2<<endl;
           }

simpan source code diatas dengan nama (Segipanjang.h), Untuk source code rumus persegi ketik code berikut:

class persegi{
      public:
             void setNilaiPs();
             void getResultPs();
      private:
              double s;
      };    

      void persegi::setNilaiPs(){
           cout<<endl<<"Menghitung Persegi"<<endl;
           cout<<"Masukkan sisi: ";
           cin>>s;
           }

      void persegi::getResultPs(){
           cout<<"Luas     : "<<s*s<<endl;
           cout<<"Keliling : "<<s*4<<endl;
           }
Simpan dengan nama (Persegi.h), ketik semua enam file (.h) tersebut, setelah seemua selesai diketik, sekarang kita buat file untuk menggabungkan semua file2 (.h) , ketikan code berikut dalam project c++ :

#include <cstdlib>
#include <iostream>
#define phi 3.14
using namespace std;
#include "segi3.h" //Harus sama dengan nama file(.h) yang sudah kita buat
#include "segipanjang.h" //Harus sama dengan nama file(.h) yang sudah kita buat
#include "persegi.h"
#include "lingkaran.h"
#include "kubus.h"
#include "Balok.h"

enum BOOLEAN { FALSE, TRUE };

int main(int argc, char *argv[])
{
ulang: // alamat yang akan dituju untunk pengulangan
         int pilihan;
while (TRUE){
cout<<"\n\n";
cout<<"1)menghitung Lingkaran\n";
cout<<"2)menghitung Persegi\n";
cout<<"3)Menghitung segi Tiga\n";
cout<<"4)Menghitung Segi Panjang\n";
cout<<"5)Menghitung Kubus\n";
cout<<"6)Menghitung Balok\n";
cout<<"7)Keluar\n";

cout<<"<ketik angka>, kamu Pengen menghitung apa?\n";
cin>>pilihan;
if (pilihan == 3){
    segi tiga; //membuat objek untuk menghitung segitiga
    tiga.setNilai();//nama objeknya tiga
    cout<<"Luas segitiga: "<<tiga.getResult()<<endl;
goto ulang; // kembali kealamat awal agar proses tetap berjalan
//exit(0);

}
else if (pilihan == 4)
{
  segiP pjg;//membuat objek untuk menghitung persegi panjang
    pjg.setNilaiP();//nama objeknya pjg
    pjg.getResultP();
goto ulang; 

}
else if (pilihan == 2)
{
  persegi Persegi;//membuat objek untuk menghitung persegi
    Persegi.setNilaiPs();//nama objeknya Persegi
    Persegi.getResultPs();
    goto ulang;

}
else if (pilihan == 1)
{
    lingkaran Lingkaran;//membuat objek dari class lingkaran
    Lingkaran.setNilaiL();//nama objek Lingkaran
    Lingkaran.getResultL();
    goto ulang;
}
else if (pilihan == 5)
{
    cout<<endl;
    kubus Kubus;      //membuat objek dari class kubus
    Kubus.setNilaiKb(); //nama objek Kubus
    Kubus.getResultKb();
    goto ulang;
}
else if (pilihan == 6)
{
     cout<<endl;
     balok Balok;
     Balok.setNilaiBl();
     Balok.getResultBl();
     goto ulang;
}

else if (pilihan == 7) // pilihan untuk keluar dari program
{
     exit(0);
}


    system("PAUSE");
    return EXIT_SUCCESS;
}
}

Simpan dengan nama main.cpp atau apa saja, yang penting belakangnya disimpan dengan (.cpp).
Sekarang tinggal langkah terakhir, jalankan project kita denga klik excute lalu pilih "compile & run" atau bisa langsung tekan (F9), Jika berhasil dijalankan maka tampilannya akan seperti berikut
Sekian untuk project menghitung bangun dengan cpp, selamat mencoba,,,
salam sepuluh ribu jam untuk jadi Expert,,,

Tuesday, September 13, 2011

Mempelajari Object dan Class di C++

Hellow Blogger.....
Melangkah ke tahap berikutnya, kali ini saya akan mempelajari tentang class dan object di C++.
Pengertian Class:
Class / kelas adalah bentuk penyederhanaan dari suatu pemasalahan yang berkaitan dengan object. maka dari itu class dapat didefinisikan sebagai sesuatu yang mempunyai data (sifat) dan fungsi  (Kelakuan). Apabila temen-temen sebelumnya pernah mempelajari bahasa pemrograman seperti C++Builder, Delphi, visual basic dan yang lainnya , pasti akan selalu berhubungan dengan yang namanya kelas. Namun data-data yang terdapat didalam kelas tersebut akan dinamakan property sedangkan fungsi-fungsinya akan dinamakan Method.
Contoh nyata atau perwujudan dari kelas : Manusia adalah sebagai suatu kelas maka  object dari kelas Manusia adalah Farul, Iqo, Dedi dan yang lainnya.   (Pemrograman C++,Budi Rahardjo).
Jadi untuk kelas adalah bagian yang lebih umum atau luas sedangkan objectnya adalah bagian khusus dari kelas tersebut.
Hal Baru,,,, Ilmu baru,,,,
semanagat Baru........!!!
salam sepuluh Ribu Jam Untuk jadi Expert.... ^_^

Friday, September 9, 2011

Membuat client dengan pemrograman c ++

Hellow blogger….
Untuk tulisan berikut ini saya akan membuat laporan tentang pemrograman dengan C++, untuk program yang akan saya buat masih sama dengan tugas yang kemarin yaitu membuat server – Client, tapi yang membuat beda disini adalah untuk Server tetap menggunakan server dari VB.6 yang sudah kita buat, dan untuk membuat Client nya menggunakan pemrograman C++.
Berikut adalah source code C++ untuk Client :
#define _CRT_SECURE_NO_DEPR]ECATE
int StartClient(unsigned short port, const char* serverName);
void EndClient(int clientSocket);
#include <winsock2.h>
#include <iostream>

using namespace std;

int main()
{
   
    cout << "\n\n"
         << "Client: Memulai sambungan ke server\n";
              
    HANDLE hConsole;
    hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hConsole, 2);
    // -----------------------------------------------------
    int mySocket;
    mySocket = StartClient(70, "localhost");

    if (mySocket == -1)
    {
        EndClient(mySocket);
        return 1;
    }

    int pilihan;
   int msg;
   char Nama[10];
   char ID[10];
   string ip;
    {cout<<"Nama    = ";
    cin>>Nama;
    cout<<"Pasword = ";
    cin>>ID;
    cout<<Nama;
    cout<<ID<<endl;
  
}

cout<<"1)Mulai Chat\n";
cout<<"2)CANCEL\n";
cin>>pilihan;
if ( pilihan == 2 )
     exit (0);
else if (pilihan == 1 )

    int nBytes;
    #define MAX_MESSAGE_SIZE 4096
  
    char buffer[MAX_MESSAGE_SIZE];
    char inMessage[MAX_MESSAGE_SIZE];
  
    cout << "Client: Jika ingin Keluar, Ketik 'exit'\n";
    cout<<"Client: Silahkan tulis Pesan !\nClient: > ";

    for (;;)
    {
        gets(buffer);
        if (strcmp(buffer, "exit") == 0)
        {
            break;
        }
        unsigned long messageSize = strlen(buffer);
        messageSize = htonl(messageSize);
        if ((nBytes = send(mySocket, (char*)&messageSize, sizeof(messageSize), 0)) == SOCKET_ERROR)
        {
            cout << "Client: Sambungan Gagal!!\n";
        }
        messageSize = ntohl(messageSize);
        if ((nBytes = send(mySocket, buffer, messageSize, 0)) == SOCKET_ERROR)
        {
            cout << "Client: Pesan tidak terkirim!!\n";
        }
        cout << "\n>";

    }

    EndClient(mySocket);
    return 0;
}

int StartClient(unsigned short port, const char* serverName)
{
    int error;
    WSAData wsaData; // menyimpan informasi dari jaringan
    if ((error = WSAStartup(MAKEWORD(2, 2), &wsaData)) == SOCKET_ERROR) //membuat panggilan untuk memulai winsock
    {
              return -1;
    }
    int mySocket = socket(AF_INET, SOCK_STREAM, 0); //AF_INET untuk menyiapkan sambungan ke internet, Sock_sream Socket memulai sambungan.
    if (mySocket == SOCKET_ERROR) // Untuk memeriksa kalau terjadi kesalahan
    {
        cout << "Client: Error!\n";
        return -1;
    }
    struct hostent *host_entry;
    if ((host_entry = gethostbyname(serverName)) == NULL) //memeriksa jika server tidak ada
    {
        cout << "Client: Sambungan Ke server Tidak tersedia, Server Off\n";
    }
    struct sockaddr_in server;
    server.sin_family = AF_INET; //AF_INET ; Menyiapkan Sambunagn ke internet
    server.sin_port = htons(port);
    server.sin_addr.s_addr = *(unsigned long*) host_entry->h_addr;
    if (connect(mySocket, (sockaddr*)&server, sizeof(server)) == SOCKET_ERROR)
    {
        cout << "Client: error****.\n";
    }
    cout << "Client: Siap,,!\n";

    return mySocket;
}


void EndClient(int clientSocket)
{
    closesocket(clientSocket);
    WSACleanup();
 
}

Codding ini baru bisa digunakan untuk mengirim pesan ke server saja dan belum bisa digunakan untuk menerima data yang dikirim dari Server.