21 Okt 2009

PBO Pertemuan 4


Abstract Data Type ( ADT )  didefinisikan sebagai tempat penyimpanan data secara berkelompok yang mampu berisi berbagai tipe data baik homogen maupun heterogen.
 

ADT Homogen adalah Array, yang mampu menampung beberapa variabel yang memiliki tipe data yang sama.
ADT Heterogen adalah Struct, yaitu tipe data bentukan yang berisi kumpulan variabel dengan tipe data sama atau berbeda, struct juga dapat menyimpan variabel array dan struct (disebut juga nested struct, yang berarti struct dalam struct).
 

Contoh struct yang paling mudah adalah Struct Data Mahasiswa yang biasanya berisi elemen-elemen seperti :

Ø    NIM, berupa char yang terdiri dari 10 digit angka
Ø    Nama, berupa char
Ø    Nilai TM, berupa integer
Ø    Nilai UTP, berupa integer
Ø    Nilai UAS, berupa integer
Ø    IPK, berupa float
 

Cara pengaksesan struct
Operator dot (.) untuk mengakses member struct dg variable biasa / array
Operator arrow (->) untuk mengakses member struct dg variable pointer/ref

Typedef digunakan Untuk memberikan nama alias dari suatu tipe data.
  
Contoh coding menghitung nilai IPK Mahasiswa
 

#include "iostream.h"
#include "stdio.h"
#include "string.h"

struct Mtk
{  char kode[5];
    char nMtk[20];
    int sks;
    int nilai;
    int grade;
    int bobot;
};


typedef struct Mahasiswa  // contoh typedef
{   char nim[11];
     char nama[25];
     Mtk x[50]; // contoh nested struct
} Mhs;

void ini (int x)  // function untuk mengkonversi nilai ke grade
{   char grade;
     if((x>=85)&&(x<=100))
     grade = 'A';
     if((x>=75)&&(x<=84))
     grade = 'B';
     if((x>=65)&&(x<=74))
     grade = 'C';
     if((x>=50)&&(x<=64))
     grade = 'D';
     if((x<=49)&&(x>=0))
     grade = 'E';
     cout << "Grade = " << grade << endl;
}

int itu(int x)  // function untuk mengkonversi nilai ke bobot
 {  int bbt;
     if(x>=85) bbt=4 ;
     if((x>=75)&&(x<=84)) bbt=3;
     if((x>=65)&&(x<=74)) bbt=2;
     if((x>=50)&&(x<=64)) bbt=1;
     if(x<=49) bbt=0;
     return(bbt);
 }

void main()
{
    int bobot,ttl[10],i,jum;
    float js=0, IPK=0;
   {
     Mhs data;
     cout << "Nama               : ";
     cin >> data.nama;
     cin.clear();
     cin.sync();
     cout << "NIM                : ";
     cin >> data.nim;
     cin.clear();
     cin.sync();
     do{  cout << "Jumlah mata kuliah : ";
            cin >> jum;
            cin.clear();
             cin.sync();
         } while(jum<2||jum>10);

      cout << endl;

      for(i=0;i
     {
        cout << "Kode Mata Kuliah : ";
        cin >> data.x[i].kode;
        cin.clear();
        cin.sync();
        cout << "Nama Mata Kuliah : ";
        cin >> data.x[i].nMtk;
        cin.clear();
        cin.sync();
        cout << "Jumlah SKS       : ";
        cin >> data.x[i].sks;
        cin.clear();
        cin.sync();
        cout << "Nilai            : ";
        cin >> data.x[i].nilai;
        cin.clear();
        cin.sync();

        ini(data.x[i].nilai);

        bobot = itu (data.x[i].nilai);
        cout << "Bobot = " << bobot << endl;

        ttl[i]=(data.x[i].sks*bobot);
        IPK+=ttl[i];
        js+=data.x[i].sks;
        cout << endl;
     }

     cout.precision(2);
     cout.setf(ios::fixed);
     cout << "Nilai IPK = " << (IPK/js);
     cin.clear();
     cin.sync();
  }
  cin.get();
}

14 Okt 2009

PBO pertemuan 3


Stream adalah sebuah abstraksi yang mewakili perangkat input dan ouput yang dilakukan operasi dan  untuk menampung aliran data (contoh : file, keyboard, mouse),maupun untuk keluaran (contoh : layer, printer).

Untuk beroperasi dengan streams, C + + menyediakan library iostream standar. iostream library merupakan sebuah library berorientasi objek yang menyediakan fungsi input dan output dengan menggunakan stream. iostream.h  yg disebut file header merupakan file program yang mengandung deklarasi kelas kelas yang diperlukan oleh objek cout. Contoh file header lainnya seperti strstrea.h, fstream.h, dan constrea.h.
 

Unsur-unsur dari iostream :

Basic class templates
Dasar dari iostream library adalah hierarki kelas template. Template kelas menyediakan sebagian besar fungsi library dalam tipe yg berdiri sendri. Template masing-masing mempunyai dua parameter: tipe char (char T) parameter, yang menentukan jenis elemen-elemen yang akan dimanipulasi dan sifat-sifat parameter, yang memberikan karakteristik tambahan spesifik untuk jenis elemen  tertentu.

Class template instantiations

Dua kelompok standar dari seluruh template kelas iostream, adalah narrow-oriented, untuk memanipulasi elemen tipe char, contohnya seperti ios , istream dan ofstream. Wide-oriented, untuk memanipulasi unsur-unsur jenis wchar_t, seperti wios, wistream dan wofstream.

Standard objects

Sebagai bagian dari library iostream, file header menyatakan objek tertentu yang digunakan untuk melakukan operasi input dan output pada standard input dan output.
Iostream dikelompokkan menjadi 2 bagian,
"    narrow-oriented objects, yg sering dipakai adalah cin, cout, cerr, dan clog
"    wide-oriented counterparts, menerangkan wcin, wcout, wcerr, dan wclog.

Types
Kelas-kelas iostream umumnya menggunakan tipe yang didefinisikan tergantung pada sifat-sifat yang digunakan. Contoh  streampos untuk mewakili posisi, streamoff untuk mewakili offset  dan streamsize untuk mewakili ukuran.

Manipulators
Manipulator adalah fungsi-fungsi global yang dirancang untuk digunakan bersama dengan penyisipan (<<) dan ekstraksi (>>) operator dilakukan pada iostream objek. Manipulator umumnya digunakan untuk memodifikasi dan mengatur format stream.
Contohnya seperti endl untuk newline, hex untuk basis hexadecimal, oct untuk basis octal, dec untuk decimal menggunakan basis.

11 Okt 2009

Pertemuan 2 PBO

Dalam C++ modul berperan sebagai fungsi dan class

Ada 2 jenis modul, yaitu :
1. Prepackaged, yaitu berupa standard library yg sudah tersedia dalam bahasa pemrograman.
2. Modul baru, yaitu modul yg dibuat oleh programmer sendiri.

Apa itu fungsi??
Fungsi biasa disebut function adalah merupakan kumpulan instruksi program yang dikelompokkan menjadi satu dan letaknya terpisah dari main program.

Sifat fungsi :
1. Fan-in tinggi
Semakin sering sebuah modul dipanggil, semakin tinggi nilai fan-in nya.
2. Fan-out rendah
Semakin spesifik fungsi suatu modul, semakin rendah pula nilai fan-out nya.

Keuntungan menggunakan fungsi :
1. Main program akan terlihat lebih singkat dan mudah untuk dimengerti.
2. Lebih mudah mencari kesalahan jika terjadi error.
3. Program yg besar dapat dipecah-pecah menjadi satuan fungsi yg lebih kecil.
4. Memungkinkan pembuatan program dilakukan oleh beberapa orang.
5. Lebih mudah untuk dokumentasi program.

Fungsi biasanya diletakkan diatas main program. Bila fungsi ditulis dibawah main program, saat dicompile program akan error. Hal ini disebabkan karena cara jalan program ( sequence ) yg membaca program dari atas ke bawah. Karena itu fungsi tidak akan ditemukan saat main program memanggil fungsi tersebut. Salah satu cara agar fungsi bisa terbaca, yaitu dengan menggunakan prototype. Prototype ditulis diatas main program untuk mendeklarasikan fungsi yg ditulis dibawah main program.


//contoh program yang menggunakan function dan prototype

#include "iostream.h"

float gaji;
float tax;

void pajak(); // prototype

void main()
{
    cin >> gaji;
    cin.clear();
    cin.sync();
    pajak();
    cin.get();
}


//contoh function
void pajak()

{
     if(gaji <= 5000)
     tax = 0;

     else
     {    if((gaji > = 5100) && (gaji < = 10000))
           tax = (gaji*6)/100;

           else if((gaji > = 11000)  && (gaji < = 20000))
           tax = (gaji*15)/100;

            else if((gaji > = 21000)  && (gaji < = 30000))
            tax = (gaji*20)/100;

            else if((gaji > = 31000)  && (gaji < = 40000))
            tax = (gaji*25)/100;

            else tax = (gaji*30)/100;
       }

       cout << "Gaji : " << gaji << "  --  Tax : " << tax;
}

6 Okt 2009

mencari nilai ASCII C++

#include "iostream.h"

int main()
{
    char ascii;
    int numeric;

    cout << "Masukkan huruf : ";
    cin >> ascii;
    cin.clear();
    cin.sync();

    cout << endl << "Nilai ASCII-nya : " << (int) ascii << endl;

    cout << endl << "Masukkan nilai : ";
    cin >> numeric;
    cin.clear();
    cin.sync();

    cout << endl << "Konversi ke huruf : "  << (char) numeric;

    cin.get();

    return 0;
}

4 Okt 2009

contoh codingan sederhana dengan C++

// menghitung luas dan keliling persegi panjang

#include "iostream.h"

void main()
{
    int panjang, lebar, luas, keliling;

   // untuk menginput panjang
   cout << "Masukkan panjang : ";
   cin >> panjang;
   cin.clear();
   cin.sync();

   // untuk menginput lebar
   cout << "Masukkan lebar   : ";
   cin >> lebar;
   cin.clear();
   cin.sync();

   // memasukkan rumus luas dan keliling
   luas = panjang*lebar;
   keliling = 2*(panjang+lebar);

   // mencetak luas dan keliling
   cout << endl << "Luas     : " << luas;
   cout << endl << "Keliling : " << keliling;

   cin.get();

}