Kamis, 14 Juni 2012

Program c++ menghitung gaji kariawan

#include <iostream.h>
#include <conio.h>
#include <stdio.h>

main(){

 char nama[80], yes, golongan_pendidikan[9];
 int jam_kerja = 8 * 6 * 4, golongan_jabatan, total_kerja, jam_lembur;
 long gaji_pokok = 300000, honor_lembur_per_jam = 3500, honor_lembur, tunjangan_jabatan, tunjangan_pendidikan, total_honor;

 atas:
 cout<<" \n PROGRAM HITUNG GAJI KARYAWAN\n";
 cout<<" PT APA ADANTAI\n";
 cout<<"========================================\n\n";
 cout<<" Nama Karyawan                                                            : ";
 gets(nama);

 cout<<" Golongan Jabatan                                                           : "; cin>>golongan_jabatan;
 cout<<" Golongan_Pendidikan                                                     : "; cin>>golongan_pendidikan;
 cout<<" Jumlah Jam Kerja Dalam Sebulan                                    : "; cin>>total_kerja;

 if(golongan_jabatan==1){
   tunjangan_jabatan = 5 * gaji_pokok / 100;
 }
 else if(golongan_jabatan==2){
   tunjangan_jabatan = 10 * gaji_pokok / 100;
 }
 else if(golongan_jabatan==3){
   tunjangan_jabatan = 15 * gaji_pokok / 100;
 }
 else{
   cout<<" \n *Kode Golongan Jabatan Yang Anda Masukkan Salah!!!"<<endl<<endl;
   goto bawah;
 }


 if (strcmp(golongan_pendidikan,"sma")==0||strcmp(golongan_pendidikan,"SMA")==0){
   tunjangan_pendidikan = 2.5 * gaji_pokok / 100;
 }
 else if (strcmp(golongan_pendidikan,"d1")==0||strcmp(golongan_pendidikan,"D1")==0){
   tunjangan_pendidikan = 5 * gaji_pokok / 100;
 }
 else if (strcmp(golongan_pendidikan,"d3")==0||strcmp(golongan_pendidikan,"D3")==0){
   tunjangan_pendidikan = 20 * gaji_pokok / 100;
 }
 else if(strcmp(golongan_pendidikan,"s1")==0||strcmp(golongan_pendidikan,"S1")==0){
   tunjangan_pendidikan = 30 * gaji_pokok / 100;
 }
 else{
   cout<<" \n *Kode Golongan Pendidikan Yang Anda Masukkan Salah!!!"<<endl<<endl;
   goto bawah;
 }


 jam_lembur = total_kerja - jam_kerja;
 honor_lembur = jam_lembur * honor_lembur_per_jam;
 total_honor = honor_lembur + gaji_pokok + tunjangan_jabatan + tunjangan_pendidikan;

 cout<<" \n Karyawan yang bernama "<<nama<<endl;
 cout<<" Honor yang diterima."<<endl<<endl;
 cout<<"    Tunjangan Jabatan                : Rp. "<<tunjangan_jabatan<<endl;
 cout<<"    Tunjangan Pendidikan           : Rp. "<<tunjangan_pendidikan<<endl;
 cout<<"    Honor Lembur                     : Rp. "<<honor_lembur<<endl;
 cout<<"    Gaji Pokok                          : Rp. "<<gaji_pokok<<endl;
 cout<<"                                                 ________________+"<<endl;
 cout<<"    Total Honor                         : Rp. "<<total_honor<<endl<<endl<<endl;



 bawah:
 cout<<"    Anda Ingin Menghitung Lagi ????"<<endl;
 cout<<"    Tekan Y atau N : "; cin>>yes;
 if(yes=='Y'||yes=='y'){
 clrscr();
 goto atas;
 }
 else if(yes=='N'||yes=='n'){
 clrscr();
 cout<<"\n THANK YOU";
 }
 else{
 clrscr();
 cout<<"\n THANK YOU";
 }

 getch();
 }

Kamis, 31 Mei 2012

praktikum 9 array 1 dimensi dan 2 dimensi

 Program

#include <cstdlib>
#include <iostream>

using namespace std;
class array{
      private:
              char data[20][20],e[200];
              int a,b,c;
      public:
             void inputan();
             void proses();
             void keluar();
};

void array::inputan(){
     cout<<"masukan baris :";
     cin>>a;
     cout<<"masukan kolom : " ;
     cin>>b;
    
     for(int i=0;i<a;i++){
             for(int j=0;j<b;j++){
                     cout<<"masukan data array ke-["<<i<<"],["<<j<<"] : ";
                     cin>>data[i][j];}}
}

void array::proses(){
    int k=0;
     for(int i=0;i<a;i++){
             for(int j=0;j<b;j++){
                     e[k]=data[i][j];k=k+1;
                     }
                     }
                     }
void array::keluar(){
     cout<<"data awal yang dimasukan :"<<endl;
     for(int i=0;i<a;i++){cout<<"[";
     for(int j=0;j<b;j++){
             cout<<data[i][j];}cout<<"]"<<endl;}
            
     cout<<"data yang sudah dipindah : "<<endl<<"[";
     for(int i=0;i<(a*b);i++){
             cout<<e[i];
             }cout<<"]";cout<<endl;
             }
int main(int argc, char *argv[])
{
    array algoritma;
    algoritma.inputan();
    algoritma.proses();
    algoritma.keluar();
    system("PAUSE");
    return EXIT_SUCCESS;
}











Kamis, 10 Mei 2012

Menghapus Elemen Array

#include <cstdlib>
#include <iostream>


using namespace std;

class array{
 friend ostream& operator<<(ostream&, const array&);
 friend istream& operator>>(istream&, array&);
public:
 array();
 void cetak();
 void hapus_elemen();

private:
 char a[5];
 int posisi;
};

array::array(){
 for(int i=0;i<5;i++)
 a[i]='O';
}

void array::cetak(){
 for(int i=0;i<5;i++)
 cout<<a[i]<<" ";
}

ostream& operator<<(ostream& out, const array& keluar){
 for(int i=0;i<5;i++)
 out<<keluar.a[i]<<" ";
 out<<endl;
 return out;
}

istream& operator>>(istream& in, array& masuk){
 int posisi;
 for (int posisi=1; posisi<=5; posisi++){
 cout<<"masukkan nilai array posisi ke- : ";
 in>>masuk.posisi;
 if(posisi >= 0 && posisi <= 5){cout<<"masukkan elemen arraynya :";
 in>>masuk.a[posisi-1];
 }
 }
 return in;
}


void array::hapus_elemen(){
 int posisi;
 cout<<"Pilih indeks berapa yg akan di hapus : ";
 cin>>posisi;
 if(posisi>0 && posisi<=5)
 a[posisi-1]='O';
 else cout<<"indeks yg anda masuukan salah karena indek hanya terdiri dari 1 - 5\n";
}

int main(int argc, char *argv[])
{
 array X;
 cout<<"Array masih kosong : "<<X;
 cin>>X;

 cout<<"Isi Array saat ini : "<<X;
 cout<<"Urutan elemen pada indeksnya saat ini : "<<X;
 X.hapus_elemen();
 cout<<"Setelah dihapus menjadi : "<<X;

 system("PAUSE");
 return EXIT_SUCCESS;
}

Selasa, 17 April 2012

semangat

semangat buat hari ini dan esok seterusnya
jangan mudah menyerah walapun dalam masa sulit,semua itu pasti ada jalan keluar untuk melewatinya.
jangan lupa berdoa...
cayyyoooo anak-anak muda semuanya
kelak jadilah pemimpin yang jadi kebanggaan banyak orang, jadi pemimpin yang benar.

tujuan memahmi rekursi

Tujuan
1. Memahami rekursi sebagai konsep yang dapat digunakan untuk merumuskan
    solusi sederhana dalam sebuah permasalahan yang sulit untuk diselesaikan
    secara iteratif dengan menggunakan loop for, while do.
2. Membantu pembaca bagaimana “berpikir secara rekursif”
3. Dapat menyelesaikan suatu permasalahan dengan konsep rekursi

contoh rekursif bilangan 1 sampai n

#include <iostream.h>
#include <conio.h>


void rekursif_angka(int);
main(){
int nomor;
cout<<”Silahkan masukan nilainya :”;
cin>>nomor;
rekursif_angka(nomor);
getch();
}
void rekursif_angka(int n){
if (n>=1){
rekursif_angka(n-1);
cout<<”\n”<<;;
}
}

SUB PROGRAM OOP DAN REKURSIF

yang akan di pahami adalah sebagai berikut    :

  1. Prosedur (procedure)
  2. Fungsi (Function)
  3. Parameter Dalam Subprogram

    tadi udah ada beberapa yang saya jelasin atau saya kasi contohnya.
    untuk yang belum besok admin lengkapi lagi......
    semangat buat anak-anak Teknik Informatika
    Admin lagi MID nih mohon doanya...hehe

Fungsi rekursif

Dalam dunia pemrograman, rekursi diimplementasikan dalam sebuah fungsi yang memanggil dirinya sendiri.
Contoh fungsi rekursif misalnya adalah fungsi pangkat, faktorial, dan barisan fibonacci.
Dalam fungsi pangkat xy
Persamaan (2) di atas adalah contoh hubungan rekurens (recurrence relation), yang berarti bahwa nilai suatu fungsi dengan argumen tertentu bisa dihitung dari fungsi yang sama dengan argumen yang lebih kecil.
Aturan permainannya adalah semua piringan pada tonggak A akan dipindahkan ke tonggak C (dapat dengan melewati tonggak bantuan B), dengan ketentuan bahwa pemindahan piringan dilakukan satu per satu dan piringan yang lebih besar tidak boleh diletakan di atas.

Dalam contoh diatas, yang memanggil fungsi JUMLAH dengan mengirimkan argument berupa variable array c dan sebuah konstanta 5.
Perhatikan bahwa variable array ditulis hanya c tanpa notasi tambahan apapun. Deklarasi variable array yangfactorial(3) = 3*2*1. Oleh karena itu kondisi (n>1) juga disebut stop condition pada fungsi rekursif karena setelah n=1 fungsi factorial tidak lagi rekursif dan memberikan return value tertentu.

CONTOH FUNGSI REKURSIF

1. fungsi pangkat. Menghitung 10 pangkat n dengan menggunakan konsep rekursif;

2. Faktorial. 0! =1; N! = N X (N-1)! untuk N>0; Secara notasi pemrograman dapat dituliskan sebagai berikut tujuan permainan ini adalah memindahkan n buah balok dari tonggak asal A melalui tonggak bantu B menuju tonggak C. dengan aturan balok yang lebih kecil tidak boleh berada di bawah balok yang lebih besar

3. Mengakses Elemen Array. - Pada bahasa C, data array akan disimpan dalam memori pada. lokasi yang berurutan. - Elemen pertama mempunyai indeks bernilai 0. - Jika pada contoh variabel nilai_tes mempunyai 5 elemen, maka .. Pada pertemuan lalu, telah disinggung sedikit mengenai pengertian dan contoh penggunaan fungsi rekursif. Fungsi Rekursif merupakan proses perulangan dengan cara memanggil dirinya sendiri.

contoh program lain tentang rekursif.

Program PerPangkatAn
program pangkat;
uses crt;
var A,x,i,hasil:integer;
begin
writeln(’masukkan bilangan yang akan di pangkatkan’);readln(A);
writeln(’masukkan bilangan pangkat’);readln(x);
hasil:=1;
for i:=1 to x do
hasil:=hasil*A;
writeln(’hasil dari ‘,A,’ pangkat ‘,x,’ adalah ‘,hasil);
readln;
end.

membalik kata yang kita inputkan interatif dan rekursif

i










interatif dan rekursif

Parameter

Terlihat pada tab main membutuhkan input x dan y dari keyboard kemudian memanggil prosedur yangs sudah dibuat tadi.

kelebihan dan kekurangan perulangan rekursif

Perulangan rekursif merupakan salah satu metode didalam pemrograman yang mana dalam sebuah fungsi terdapat intruksi yang memanggil fungsi itu sendri, atau lebih sering disebut memanggil dirinya sendiri.

Kelebihan perulangan rekursif
Sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar
Dapat melakukan perulangan dengan batasan fungsi

Kekurangan perulangan rekursif
Tidak bisa melakukan nested loop atau looping bersarang
Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja
Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan ada kalaya akan menyebabkan stack tak cukup lagi (Stack Overum)
Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk

contoh rekursif dan non rekursif

Dengan Rekursif

    1. Dengan Prosedur

      1. Procedure KALI_REK_P(a,b:integer;var hasil:longint)
        begin
        if b>1 then KALI_REK_P(a,b-1,hasil);
        hasil:= hasil+a;
        end;

    2. Dengan Fungsi

        Function KALI_REK_F(a,b:integer):longint;
        begin
        if b>1 then
        KALI_REK_F := KALI_REK_F(a,b-1)+a
        else
        KALI_REK_F := a;
        end;   
         
         
Dengan non rekursif
  1. Dengan prosedur

    1. Procedure KALI_BIASA_P(a,b : integer; var hasil : longint);
      var i : integer;
      begin
      hasil := 0;
      for i:= 1 to b do hasil := hasil + a;
      end;
  2. Dengan fungsi
      Function KALI_BIASA_F(a,b:integer):longint;
      var hasil : longint; i: integer;
      begin
      hasil := 0;
      for i:= 1 to b do hasil := hasil + a;
      KALI_BIASA_F := hasil;
      end;  
         

prosedur dan rekursif

PROSEDUR dan FUNGSI REKURSIF
Prosedur dan fungsi merupakan sub program yang sangat bermanfaat dalam pemrograman, terutama untuk program atau proyek yang besar. Manfaat penggunaan sub program antara lain adalah :

Prosedur dan fungsi merupakan sub program yang sangat bermanfaat dalam pemrograman, terutama untuk program atau proyek yang besar. Manfaat penggunaan sub program antara lain adalah :
  1. meningkatkan readibility, yaitu mempermudah pembacaan program
  2. meningkatkan modularity, yaitu memecah sesuatu yang besar menjadi modul-modul atau bagian-bagian yang lebih kecil sesuai dengan fungsinya, sehingga mempermudah pengecekan, testing dan lokalisasi kesalahan.
  3. meningkatkan reusability, yaitu suatu sub program dapat dipakai berulang kali dengan hanya memanggil sub program tersebut tanpa menuliskan perintah-perintah yang semestinya diulang-ulang.

adalah Dengan melihat sifat sub program rekursif di atas maka sub program rekursif harus memiliki :
  1. kondisi yang menyebabkan pemanggilan dirinya berhenti (disebut kondisi khusus atau special condition)
  2. pemanggilan diri sub program (yaitu bila kondisi khusus tidak dipenuhi)
Secara umum bentuk dari sub program rekursif memiliki statemen kondisional :

if kondisi khusus tak dipenuhi
then panggil diri-sendiri dengan parameter yang sesuai
else lakukan instruksi yang akan dieksekusi bila kondisi khusus dipenuhi
Sub program rekursif umumnya dipakai untuk permasalahan yang memiliki langkah penyelesaian yang terpola atau langkah-langkah yang teratur. Bila kita memiliki suatu permasalahan dan kita mengetahui algoritma penyelesaiannya, kadang-kadang sub program rekursif menjadi pilihan kita bila memang memungkinkan untuk dipergunakan. Secara algoritmis (dari segi algoritma, yaitu bila kita mempertimbangkan penggunaan memori, waktu eksekusi sub program) sub program rekursif sering bersifat tidak efisien .
Dengan demikian sub program rekursif umumnya memiliki efisiensi dalam penulisan perintah, tetapi kadang tidak efisien secara algoritmis. Meskipun demikian banyak pula permasalahan-permasalahan yang lebih sesuai diselesaikan dengan cara rekursif (misalnya dalam pencarian / searching, yang akan dibahas pada pertemuan-pertemuan yang akan datang).

Contoh sub program rekursif dalam bahasa Pascal.
  • Contoh sederhana

  • PROCEDURE TULIS_1(banyak : integer;kata : string);
    begin
    if banyak > 1 then TULIS_1(banyak-1,kata);
    writeln(kata, banyak:5);
    end;  

    OUTPUT (misal dipanggil dengan TULIS_1(5,"Cetakan ke "))

    Cetakan ke 1
    Cetakan ke 2
    Cetakan ke 3
    Cetakan ke 4
    Cetakan ke 5  

    Bandingkan prosedur dan outputnya di atas dengan prosedur di bawah ini!  

    PROCEDURE TULIS_2(banyak : integer;kata : string);
    begin
    writeln(kata, banyak:5);
    if banyak > 1 then TULIS_1(banyak-1,kata);
    end;

    OUTPUT (misal dipanggil dengan TULIS_2(5,"Cetakan ke "))

    Cetakan ke 5
    Cetakan ke 4
    Cetakan ke 3
    Cetakan ke 2
    Cetakan ke 1  

    MENETUKAN NILA SEGITIGA

    #include <stdio.h>
    #include <conio.h>

    int main(){
        int i,j,
             sudut[3];
        for (i=0;i<3;i++){
            printf("Sudut ke - %d : ",i+1);
            scanf("%d",&sudut[i]);
        }
        int sum;
        bool samaKaki  = false;
        for (i=0;i<3;i++){
            sum = 0;
            for (j=0;j<3;j++){
                if (j != i)  {
                    sum += sudut[j];
                }
            }
            if (sudut[i] == sum){
                 printf("Segitiga Sama Kaki");
                 samaKaki = true;
            }
        }
        if (! samaKaki){
            printf("Bukan segitiga sama kaki");
        }
        getch();
        return 0;
    }

    PEMBALIK KATA C++ REKURSIF

    #include<stdio.h>
    #define MAX 100

    void rekursif_angka_terbalik(int);
    main()
    {
    int i,j,jml=0;
    char bil[MAX];

    printf("\n=======================");
    printf("\n=NAMA    : MAHFUZ      =");
    printf("\n=NIM    : 100533405403=");
    printf("\n=KELAS    : PTI '10 B   =");
    printf("\n=======================");
    printf("\n");
    printf("\n^_^Program Pembalik Angka^_^");
    printf("\n");
    printf("\nMasukkan bilangan yang akan dibalik kawan= ");
    gets(bil);

    for (i=0;bil[i];i++)

    jml=jml++;
    printf("\n");
    printf("Maka hasilnya adalah= ");

    for(j=jml-1;j>=0;j--)

    printf("%c",bil[j]);

    printf("\n");
    }

    Simbol Flowchart