Senin, 11 April 2011

Pemrograman Berorientasi Objek Menggunakan C++

Program yang saya buat ini tidak hanya menggunakan berkas kelas, di dalamnya juga berisikan beberapa struktur kontrol perulangan seperti FOR, WHILE, dan DO_WHILE, dan juga struktur kontrol kondisi /pilihan seperti SWITCH CASE. Di dalamnya juga ada aplikasi dari ARRAY. Langsung saja tanpa basa-basi. nih source code_nya:

//Author : Efrat 
#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<iomanip.h>
class menu
{
      private:
      public:
            
void pilihan()
{
     clrscr();
     cout<<"                +-------------------+\n";
     cout<<"                |     Menu utama    |\n";
     cout<<"                +-------------------+\n";
     cout<<endl;
     cout<<"1.Ke Menu Perulanagan "<<endl;
     cout<<"2.Program Aplikasi Array"<<endl;
     cout<<"3.Untuk Keluar Dari Program"<<endl;
     cout<<"***************************************\n";
     cout<<"Pilihan anda : ";
     }
};

class tekan
{
      private:
      public:
            
void kembali()
{
     cout<<"\n";
     cout<<"Tekan 1 Untuk Ke Menu Utama"<<endl;
     cout<<"Tekan 2 Untuk Kembali"<<endl;
     cout<<"Tekan 3 Untuk Keluar Dari Program"<<endl;
     }
};

class perulangan
{
      private:
              int i,j,z;
      public:
             void For();
             void While();
             void DoWhile();
            
};

void perulangan::For()
{
     clrscr();
     cout<<"                   +-------------------------------+\n";
     cout<<"                   |    Program Perulangan For     |\n";
     cout<<"                   +-------------------------------+\n";
     cout<<""<<endl;
     cout<<"masukan bilangan : ";
     cin>>z;
     cout<<"====================\n";
     for(int i=0;i<=z;i++){
     for(int j=1;j<=i;j++){
     cout<<j;
     }
     cout<<""<<endl;
     }
     for(int i=z; i>=1; i--){
     for(int j=1; j<i; j++){
     cout<<j;
     }
     cout<<endl;
}
}

void perulangan::While()
{
     clrscr();
     cout<<"                   +-------------------------------+\n";
     cout<<"                   |    Program Perulangan While   |\n";
     cout<<"                   +-------------------------------+\n";
     cout<<""<<endl;
     i=0;
     cout<<"input bilangan bulat : ";
     cin>>z;
     cout<<"===========================\n";
     while(i<=z){
     j=1;
     while(j<=i){
     cout<<j;
     j++;
     }
     cout<<endl;
     i++;
     }
     i=z;
     while(i>=1){
     j=1;
     while(j<i){
     cout<<j;
     j++;
     }
     cout<<endl;
     i--;
     }
     cout<<endl;
}

void perulangan::DoWhile()
{
     clrscr();
     cout<<"                   +-------------------------------+\n";
     cout<<"                   |  Program Perulangan Do While  |\n";
     cout<<"                   +-------------------------------+\n";
     cout<<""<<endl;
     cout<<"input bilangan bulat : ";
     cin>>z;
     cout<<"===========================\n";
     i=0;
     do{
       cout<<endl;
       i++;
       j=1;
         do{
           cout<<j;
           j++;
     }
     while(j<=i);
   }
   while(i<z);

     i=z;
     do{
       cout<<endl;
       i--;
       j=1;
     do{
       cout<<j;
       j++;
     }
   while(j<=i);
   }
     while(i>1);
     cout<<""<<endl;
}

class array
{
    private:
            int i,s;
            char nama[100][100];
            float nilai1[5];
            float nilai2[5];
            double hasil[5];
    public:
           void AppArray();
};

void array::AppArray()
{
    cout<<"Masukkan jumlah siswa: ";
    cin>>s;
    clrscr();
    for(i=1;i<=s;i++)
    {
    cout<<"Data Ke - "<<i<<endl;
    cout<<"Nama Siswa : "; cin>>nama[i];
    cout<<"Nilai Teori : "; cin>>nilai1[i];
    cout<<"Nilai Praktek : "; cin>>nilai2[i];
    hasil[i] = (nilai1[i] * 0.70)+ (nilai2[i] * 0.30);
    cout<<endl;
    }
    clrscr();
    cout<<"+--------------------------------------------------+"<<endl;
    cout<<"|              | Mid Tes FInal Ujian |             |"<<endl;
    cout<<"|--------------------------------------------------|"<<endl;
    cout<<"|No. Nama  Siswa         |Nilai | Nilai| Hasil     |"<<endl;
    cout<<"+------------------------+------+------+-----------+"<<endl;

    for(i=1;i<=s;i++)
    {
    cout<<setiosflags(ios::left)<<setw(2)<<"|"<<i<<". ";
    cout<<setiosflags(ios::left)<<setw(20)<<nama[i];
    cout<<setprecision(2)<<"| "<<nilai1[i]<<"";
    cout<<setprecision(6)<<"   | "<<nilai2[i]<<"";
    cout<<setprecision(10)<<"   | "<<hasil[i]<<""<<"      |"<<endl;
    }
    cout<<"+--------------------------------------------------+";
}
int main()
{
    char pilih;
    char x;
    char nomor;
    char user[30];
    perulangan ulang;
    array ray;
    tekan kem;
    menu men;
    cout<<"Masukan nama anda : ";cin.getline(user, 200);
    label:
    men.pilihan();
    cin>>pilih;
    cout<<"\n";
    switch(pilih)
    {
                 case '1':ulang:clrscr();
                      cout<<"                 Selamat Datang "<<user<< " di \"Program Perulangan\""<<endl;
                      cout<<"                        ******Menu Perulangan******"<<endl;
                      cout<<"1.Perulangan For"<<endl;
                      cout<<"2.Perulangan While"<<endl;
                      cout<<"3.Perulangan Do_While"<<endl;
                      cout<<"4.Exit"<<endl;
                      cout<<"Pilihan Anda : ";
                      cin>>nomor;
                      cout<<"\n";
                      switch(nomor){
                                    case'1':ulang.For();
                                    kem.kembali();
                                    balik1:
                                    cin>>x;
                                    switch(x){
                                              case '1':goto label;
                                              case '2':goto ulang;
                                              case '3':break;
                                              default:
                                              cout<<"Nomor Yang Anda Masukan Salah, Tolong Ulangi Lagi!"<<endl;
                                              goto balik1;
                                    }
                                    break;
                                    case '2':ulang.While();
                                    kem.kembali();
                                    balik2:
                                    cin>>x;
                                    switch(x){
                                              case '1':goto label;
                                              case '2':goto ulang;
                                              case '3':break;
                                              default:
                                              cout<<"Nomor Yang Anda Masukan Salah, Tolong Ulangi Lagi!"<<endl;
                                              goto balik2;
                                              }
                                    break;
                                    case '3':ulang.DoWhile();
                                    kem.kembali();
                                    balik3:
                                    cin>>x;
                                    switch(x){
                                              case '1':goto label;
                                              case '2':goto ulang;
                                              case '3':break;
                                              default:
                                              cout<<"Nomor Yang Anda Masukan Salah, Tolong Ulangi Lagi!"<<endl;
                                              goto balik3;
                                    }
                                    break;
                                    case '4':break;
                                    default:
                                    cout<<"Nomor Yang Anda Masukan Salah, Tolong Ulangi Lagi!"<<endl;
                                    goto ulang;
                      }

                      case '2': matrik:clrscr();
                                cout<<"                 Selamat Datang "<<user<< " di \"Program Array\""<<endl;
                                 cout<<"                        ******Menu Array******"<<endl;

                              ray.AppArray();
                              kem.kembali();
                              balik:
                              cin>>x;
                              switch(x){
                                              case '1':goto label;
                                              case '2':goto matrik;
                                              case '3':break;
                                              default:
                                              cout<<"Nomor Yang Anda Masukan Salah, Tolong Ulangi Lagi!"<<endl;
                                              goto balik;
                                    }break ;
                     
                      case '3':
                      default:
                      cout<<"Nomor Yang Anda Masukan Salah, Tolong Ulangi Lagi!"<<endl;
                      goto label;
                      }
        getch();
} 

Selasa, 05 April 2011

PERMINTAAN DAN PENAWARAN

A. Pengertian/Arti Definisi Permintaan dan Penawaran.

Permintaan adalah sejumlah barang yang dibeli atau diminta pada suatu harga dan waktu tertentu. Sedangkan pengertian penawaran adalah sejumlah barang yang dijual atau ditawarkan pada suatu harga dan waktu tertentu.
Contoh permintaan adalah di pasar kebayoran lama yang bertindak sebagai permintaan adalah pembeli sedangkan penjual sebagai penawaran. Ketika terjadi transaksi antara pembeli dan penjual maka keduanya akan sepakat terjadi transaksi pada harga tertentu yang mungkin hasil dari tawar-menawar yang alot.


B. Hukum Permintaan dan Hukum Penawaran.

Jika semua asumsi diabaikan (ceteris paribus) : Jika harga semakin murah maka permintaan atau pembeli akan semakin banyak dan sebaliknya. Jika harga semakin rendah/murah maka penawaran akan semakin sedikit dan sebaliknya.
Semua terjadi karena semua ingin mencari kepuasan (keuntungan) sebesar-besarnya dari harga yang ada. Apabila harga terlalu tinggi maka pembeli mungkin akan membeli sedikit karena uang yang dimiliki terbatas, namun bagi penjual dengan tingginya harga ia akan mencoba memperbanyak barang yang dijual atau diproduksi agar keuntungan yang didapat semakin besar. Harga yang tinggi juga bisa menyebabkan konsumen/pembeli akan mencari produk lain sebagai pengganti barang yang harganya mahal.


C. Faktor-Faktor Yang Mempengaruhi Tingkat Permintaan (Demand.

1. Perilaku konsumen / selera konsumen
Saat ini handphone blackberry sedang trend dan banyak yang beli, tetapi beberapa tahun mendatang mungkin blackberry sudah dianggap kuno.
2. Ketersediaan dan harga barang sejenis pengganti dan pelengkap
Jika roti tawar tidak ada atau harganya sangat mahal maka meises, selai dan margarin akan turun permintaannya.
3. Pendapatan/penghasilan konsumen
Orang yang punya gaji dan tunjangan besar dia dapat membeli banyak barang yang dia inginkan, tetapi jika pendapatannya rendah maka seseorang mungkin akan mengirit pemakaian barang yang dibelinya agar jarang beli.
4. Perkiraan harga di masa depan
Barang yang harganya diperkirakan akan naik, maka orang akan menimbun atau membeli ketika harganya masih rendah misalnya seperti bbm/bensin.
5. Banyaknya/intensitas kebutuhan konsumen
Ketika flu burung dan flu babi sedang menggila, produk masker pelindung akan sangat laris. Pada bulan puasa (ramadhan) permintaan belewah, timun suri, cincau, sirup, es batu, kurma, dan lain sebagainya akan sangat tinggi dibandingkan bulan lainnya.

D. Faktor-Faktor Yang Mempengaruhi Tingkat Penawaran (Suply)

1. Biaya produksi dan teknologi yang digunakan
Jika biaya pembuatan/produksi suatu produk sangat tinggi maka produsen akan membuat produk lebih sedikit dengan harga jual yang mahal karena takut tidak mampu bersaing dengan produk sejenis dan produk tidak laku terjual. Dengan adanya teknologi canggih bisa menyebabkan pemangkasan biaya produksi sehingga memicu penurunan harga.
2. Tujuan Perusahaan
Perusahaan yang bertujuan mencari keuntungan sebesar-besarnya (profit oriented) akan menjual produknya dengan marjin keuntungan yang besar sehingga harga jual jadi tinggi. Jika perusahaan ingin produknya laris dan menguasai pasar maka perusahaan menetapkan harga yang rendah dengan tingkat keuntungan yang rendah sehingga harga jual akan rendah untuk menarik minat konsumen.
3. Pajak
Pajak yang naik akan menyebabkan harga jual jadi lebih tinggi sehingga perusahan menawarkan lebih sedikit produk akibat permintaan konsumen yang turun.
4. Ketersediaan dan harga barang pengganti/pelengkap
Jika ada produk pesaing sejenis di pasar dengan harga yang murah maka konsumen akan ada yang beralih ke produk yang lebih murah sehingga terjadi penurunan permintaan, akhirnya penawaran pun dikurangi.
5. Prediksi / perkiraan harga di masa depan
Ketika harga jual akan naik di masa mendatang perusahaan akan mempersiapkan diri dengan memperbanyak output produksi dengan harapan bisa menawarkan/menjual lebih banyak ketika harga naik akibat berbagai faktor. 

5. Pengertian Harga Keseimbangan
Dalam ilmu ekonomi harga keseimbangan atau harga ekuilibrium adalah harga yang terbentuk pada titik pertemuan kurva permintaan dan kurva penawaran. Terbentuknya harga dan kuantitas keseimbangan di pasar merupakan hasil kesepakatan antara pembeli (konsumen) dan penjual (produsen) di mana kuantitas yang diminta dan yang ditawarkan sama besarnya. Jika keseimbangan ini telah tercapai, biasanya titik keseimbangan ini akan bertahan lama dan menjadi patokan pihak pembeli dan pihak penjual dalam menentukan harga.
Proses terbentuknya Harga Pasar
Terbentuknya harga pasar dipengaruhi oleh faktor-faktor yang mempengaruhi permintaan
dan penawaran. Masing-masing faktor dapat menyebabkan bergesernya jumlah
permintaan dan jumlah penawaran. Dengan bergesernya permintaan dan penawaran
akan mengakibatkan bergesernya tingkat harga keseimbangan.
Penggolongan Pembeli dan Penjual
Pembeli dan penjual dapat digolongkan berdasarkan perbandingan antara harga pasar
dan harga pokok bagi penjual/produsen dan kemampuan membeli bagi konsumen/
pembeli.
Pembeli dan penjual dapat digolongkan:
a. Pembeli super marginal, yaitu kelompok pembeli yang memiliki kemampuan membeli di atas harga pasar.

Rabu, 09 Maret 2011

Contoh Program INFIX Ke POSTFIX

NOTASI INFIX KE POSTFIX DANGAN BAHASA PEMROGRAMAN PASCAL


Langsung aja tanpa bahasa basinih Coding Programnya:

{********************************************
* notasi infix menjadi notasi postfix  ******
*********************************************}
program KONVERSI_INFIX_KE_POSTFIX;

uses crt;

const Max_Elemen = 255;

type S255 = string[Max_Elemen];
Tumpukan = record
Rinci : S255;
Atas : 0..Max_Elemen
end;

var Infix : S255; {* notasi infix *}
Lagi : char;

{********************************************
* Fungsi untuk menentukan valensi operator *
********************************************}
function VALENSI (Tanda_Op : char) : integer;

begin
case Tanda_Op of
'$' : VALENSI := 3; {* pangkat *}
'*', '/' : VALENSI := 2; {* kali atau bagi *}
'+', '-' : VALENSI := 1; {* plus atau minus *}
'(' : VALENSI := 0 {* kurung buka *}
end
end; {* fungsi VALENSI *}

{************************************************
* Prosedur memasukkan elemen ke dalam tumpukan *
************************************************}
procedure PUSH (var T : Tumpukan; Elemen : char);

begin
T.Atas := T.Atas + 1;
T.Rinci[T.Atas] := Elemen
end; { *** prosedur PUSH *** }
{***********************************************
* Fungsi untuk mengambil elemen dari tumpukan *
*********************************************** }
function POP (var T : Tumpukan) : char;

begin
POP := T.Rinci[T.Atas];
T.Atas := T.Atas - 1
end; { *** fungsi POP *** }

{*************************************
* Prosedur untuk melalukan konversi *
* dan mencetak hasil *
*************************************}
procedure KONVERSI_CETAK (Infix : S255);

var I : integer;
Operator : set of char;
Temp, Kar : char;
T : Tumpukan;
Test : boolean;

begin
{* Himpunan operator yang diijinkan *}
Operator := ['$']+['*']+['/']+['+']+['-'];

{* Melakukan konversi *}
for I := 1 to length(Infix) do
begin
Kar := Infix[I];

{* Kurung buka. Push ke dalam tumpukan *}
if Kar = '(' then PUSH(T, Kar)

{* Kurung tutup. Pop semua elemen tumpukan *
* dan dicetak, sampai elemen atas tumpukan *
* adalah kurung buka. Pop juga elemen ini *
* tetapi tidak perlu ditulis. *}
else if Kar = ')' then
begin
while T.Rinci[T.Atas] <> '(' do
write(POP(T):2);
Temp := POP(T)
end

{* Operator. Test valensinya terhadap *
* valensi elemen atas tumpukan. Jika *
* valensinya lebih kecil, pop elemen atas *
* tumpukan sampai valensi elemen atas *
* tumpukan lebih kecil. Push operator ini *}

else if Kar in Operator then
begin
while (T.Atas <> 0) and (VALENSI(Kar) <= VALENSI(T.Rinci[T.Atas])) do
write(POP(T):2);
PUSH(T, Kar)
end

{* Operand. Langsung dicetak. *}
else if Kar <> ' ' then
write(Kar:2)
end;

if T.Atas <> 0 then
{* Tumpukan masih isi. Pop semua elemen *
* yang masih ada dalam tumpukan *}
repeat
write(POP(T):2)
until T.Atas = 0;
end; { *** prosedur KONVERSI_CETAK *** }

{************************
*  coding Program utama *
*************************}
begin
clrscr;
gotoxy (18,1);
writeln('-----------------------------------------');
gotoxy (18,2);
writeln('| MENGUBAH NOTASI INFIX MENJADI POSTFIX |');
gotoxy (18,3);
writeln('|*******DENGAN MEMANFAATKAN STACK*******|');
gotoxy (18,4);
writeln('-----------------------------------------');
writeln;
repeat

{* Notasi infix yang akan dikonversikan *}
gotoxy (23,5);
write('Masukkan ungkapan infix = ');
readln(Infix);
gotoxy (23,7) ;
write('Ungkapan postfix        = ');

{* Melakukan konversi dan mencetak hasil *}
KONVERSI_CETAK (Infix);

writeln; writeln;
write('Akan mencoba lagi? Y(a)/T(idak): ');
readln(Lagi);
writeln
until not (Lagi in ['Y', 'y'])
end. {* program utama *}


Nih Output_nya:



Rabu, 02 Maret 2011

STACK



Kesimpulan  temtang Stack:
  1.  Mekanisme penyimpanan nilai secara LIFO (Last in First Out)
  2. Bekarja seperti tumpukan
  3. Stack harus diberi nama sebagai indentifikasi
  4. Cara mengaksesnya adalah dangan melakukan Push Pop

Selasa, 22 Februari 2011

ARRAY DAN RECORD


ARRAY DAN RECORD
1.1 ARRAY
            Salah satu tipe data yang terpenting adalah array (larik), merupakan bagian dasar, yang disebut blok, guna keperluan pembentukan suatu struktur data lain yang lebih kompleks. Hampir setiap jenis struktur data kompleks dapat disajikan secara logic oleh  array. Kita dapat mendefinisikan array adalah himpunan hingga elemen terurut dan homogen. Terurut dapat diartikan bahwa elemen tersebut dapat didefinisikan sebagai elemen yang pertama, sedangkan elemen Homogen dapat diartikan bahwa setiap elemen dari array harus mempunyai tipe data yang sama.

            Jadi suatu array dapat mempunyai elemen semuanya berupa integer atau dapat pula seluruhnya berupa untai aksara atau string Bahkan dapat pula terjadi bahwa suatu array mempunyai elemen berupa array pula. Array ada beberarapa jenis yaitu array satu dimensi dan array berdimensi banyak.
  1.  Array berdimensi satu : misalnya suatu pencatatan jumlah mobil yang lewat di suatu jalan tertentu.
  2.  Array berdimensi banyak : dapat diartikan lebih dari 2 dimensi. Misalnya matrik, sehingga dapat dilakukan pengoperasian perkalian, penjumlahan, pengurangan, dll terhadap matrik tersebut.

1.2 RECORD
            Record adalah satuan koleksi data yang heterogen dan elemennya saling terkait misalnya nama, kelas, npm, nilai. Elemen-elemen tersebut bias juga di sebut sebagai field.