Selasa, 09 Desember 2014

Program Meaow Pet Care

Program Penitipan Hewan Peliharaan

Meow Pet Care

 

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

struct
{
 char kh,kp,jnsh[10],jp[20];
   long int jh,bp,st;
}php[5];

char np[20],npem[20],idl;
long int jd,tb,ub,uk,a;

judul()
{
 cout<<"   Penitipan Hewan Pemeliharaan"<<endl;
   cout<<"       'Meaow Pet Care'"<<endl;
   cout<<"=================================="<<endl;
}

tobay()
{
 tb=tb+php[a].st;
}

main()
{
 awal:
   clrscr();
   tb=0;
   judul();
   cout<<"Nama Petugas :";cin>>np;
   cout<<"Nama Pemilik :";cin>>npem;
   cout<<"Jumlah Data Peliharaan :";cin>>jd;

   for(a=1;a<=jd;a++)
   {
    cout<<"Hewan ke-"<<a<<endl;
      cout<<"Kode Jenis Hewan :";cin>>php[a].kh;
      cout<<"Kode Perawatan   :";cin>>php[a].kp;
      cout<<"Jumlah Hewan     :";cin>>php[a].jh;

      if(php[a].kh=='K')
      {
       strcpy(php[a].jnsh,"Kucing");
         if(php[a].kp=='1')
         {
            strcpy(php[a].jp,"Lux");
          php[a].bp=25000;
         }
         else
         {
          strcpy(php[a].jp,"Intensif");
            php[a].bp=30000;
         }
      }
  else
      {
       strcpy(php[a].jnsh,"Hamster");
         if(php[a].kp=='1')
         {
            strcpy(php[a].jp,"Lux");
          php[a].bp=15000;
         }
         else
         {
          strcpy(php[a].jp,"Intensif");
            php[a].bp=10000;
         }
      }
   }

   clrscr();
   judul();
   cout<<"Nama Petugas : "<<np<<endl;
   cout<<"Nama Pemilik : "<<npem<<endl;
   cout<<"=================================================="<<endl;
   cout<<"No. Jenis    Jenis       Biaya     Jumlah Subtotal"<<endl;
   cout<<"    Hewan    Perawatan   Perawatan hewan"<<endl;
   cout<<"=================================================="<<endl;
        //12345678901234567890123456789012345678901234567890
   for(a=1;a<=jd;a++)
   {
    gotoxy(1,9+a);cout<<a;
      gotoxy(5,9+a);cout<<php[a].jnsh;
      gotoxy(14,9+a);cout<<php[a].jp;
      gotoxy(26,9+a);cout<<php[a].bp;
      gotoxy(36,9+a);cout<<php[a].jh;
      php[a].st=php[a].bp*php[a].jh;
      gotoxy(43,9+a);cout<<php[a].st<<endl;
      tobay();
   }
   cout<<"=================================================="<<endl;
   cout<<"               Total Bayar :Rp."<<tb<<endl;
   cout<<"               Uang Bayar  :Rp.";cin>>ub;
   uk=ub-tb;
   cout<<"               Uang Kembali:Rp."<<uk<<endl;
   cout<<"=================================================="<<endl;
   cout<<"Input data lagi [y/t] :";cin>>idl;
   if(idl=='y')
    goto awal;
   getch();
   }
Ini adalah screen shot tampilannya:

Luas Segitiga

Program C++ Menghitung Luas Segitiga


  SCREEN SHOT PROGRAM


KODE PROGRAM
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
main()
{

float luas_segitiga,alas,tinggi;

puts("  ------------------------ ");
puts("  TUGAS LOGIKA & ALGORITMA ");
puts("  ------------------------ ");
puts("  KELAS GA JELAS SMTR SERATUS ");
puts("  --------------------------- ");
cout<<endl;
puts("  --------------------------------------------------------- ");
puts("  MENGHITUNG LUAS SEGITIGA ");
puts("  --------------------------------------------------------- ");
cout<<"  Masukan Nilai Alas   = ";cin>>alas;
cout<<"  Masukan Nilai Tinggi = ";cin>>tinggi;
luas_segitiga=0.5*(alas*tinggi);
cout<<"  Luas Segitiga        = "<<luas_segitiga<<endl<<endl<<endl;
puts("  --------------------------------------------------------- ");
getche();
}

Macro C++

MACRO dan FILE HEADER

Didalam penyusunan macro ada beberapa hal yang harus dipahami:
Prepocessor Directives
Prepocessor Directives merupakan suatu perintah yang masuk kedalam program,tetapi bukanlah intruksi dari program itu sendiri,tetapi untuk prepocessor.Prepocessor ini dijalankan secara otomatis oleh kompiler,ketika didalam proses penterjemahan (Compile) program berlangsung,didalamnya membuat nilai pembuktian pertama dan menterjemahkan code program didalam kode objek.Didalam penggunaan Prepocessor directives selalu dimulai dengan tanda : #
Ada beberapa prepocessor directives,diantaranya adalah:
· #define,Digunakan untuk mendefinisikan suatu nilai tertentu kepada suatu nama konstanta.Bentuk umum dari #define adalah : #define nama_konstanta teks
· #include,Berfungsi untuk memasukkan atau menyertakan file-file header kedalam program yang akan dibuat.Bentuk umum dari #include : #include”nama_file_header” or #include
· #if-#endif,Digunakan untuk mengkompilasi jika pernyataan kondisi pada #if bernilai benar,dan jika salah maka diabaikan.
· #if-#else-#endif,Digunakan untuk mengkompilasi jika pernyataan pada #if bernilai benar,dan jika #if bernilai salah maka pernyataan #else di kompilasi.
· #elif,Digunakan untuk mengkompilasi dari pernyataan bertingkat.Dalam hal ini #elif sama halnya dengan #elseif,merupakan kombinasi dari #if dan #else.
· #undef,Digunakan untuk menghilangkan nilai yang telah didefinisikan dari daftar definisi.
· #ifdef-#ifndef,Digunkan untuk memberikan bagian dari program yang akan di kompile,hal ini dapat dilakukan jika sudah konstanta didefinisikan pada bagian #define.

PEMBUATAN FILE HEADER

File Header adalah suatu file dengan akhiran .h.File ini sebenarnya berisikan deklarasi fungsi dan definisi konstanta.Selain file-file header standard yang disediakan oleh C++,kita juga bisa membuat file header sendiri,dengan cara yang sama seperti membuat file editor.Yang harus diperhatikan saat menyimpan file header yang telah dibuat harus gunakan akhiran .h.
Sebagai latihan berikut ini akan dibuatkan suatu file header sendiri yang akan digunakan pada file editor.
Buatlah Program Fileheader dibawah ini,kemudian simpan dengan nama lingkaran.h ,pada program kerja anda folder include.

Setelah disimpan pada direktori C:\BC5\INCLUDE\...,selanjutnya compile file lingkaran.h.
Buatlah program menghitung luas dan keliling lingkaran .Proses berada didalam file header .
Tampilan yang diinginkan:
Masukkan Nilai Jari-jari =...
Luas Lingkaran =...
Keliling Lingkaran =...

Pointer C++

POINTER PADA C++


Variabel merupakan suatu nilai yang disimpan dalam memory yang dapat diakses dengan identifier. Variabel ini sesunggunhnya disimpan pada suatu alamat didalam memory. Dimana setiap alamat memory akan berbeda dengan yang lainnya (unik).
Operator Alamat (Address operator (&))
Pada saat pendeklarasian variable, user tidak diharuskan menentukan lokasi sesungguhnya pada memory, hal ini akan dilakukan secara otomatis oleh kompilerdan operating sysem pada saat run-time. Jika ingin mengetahui dimana suatu variable akan disimpan, dapat dilakukan dengan memberikan tanda ampersand (&) didepan variable , yang berarti “address of”. Contoh :
ted = &andy;
Akan memberikan variable ted alamat dari variable andy, karena variable andy diberi awalan karakter ampersand (&), maka yang menjadi pokok disini adalah alamat dalam memory, bukan isi variable. Misalkan andy diletakkan pada alamat 1776 kemudian dituliskan instruksi sbb :
andy = 25; fred = andy; ted = &andy;
Operator Reference (*)
Dengan menggunakan pointer, kita dapat mengakses nilai yang tersimpan secara langsung dengan memberikan awalan operator asterisk (*) pada identifier pointer, yang berarti value pointed by”. Contoh        :
beth = *ted;
(dapat dikatakan:”beth sama dengan nilai yang ditunjuk oleh ted”) beth = 25, karena ted
dialamat 1776, dan nilai yang berada pada alamat 1776 adalah 25.
Ekspresi dibawah ini semuanya benar, perhatikan         :
andy == 25
&andy == 1776 ted == 1776
*ted == 25
Ekspresi pertama merupakan assignation bahwa    andy=25;. Kedua, menggunakan operator alamat (address/derefence operator (&)), sehingga akan mengembalikan alamat dari variabel andy. Ketiga bernilai benar karena assignation untuk ted adalah ted = &andy;. Keempat menggunakan  reference operator (*) yang berarti nilai yang ada pada alamat yang ditunjuk oleh  ted, yaitu 25.  Maka ekspresi dibawah ini pun akan bernilai benar  :
*ted == andy
Deklarasi variable bertipe pointer
Format deklarasi pointer          :
type * pointer_name;
Dimana type merupakan tipe dari data yang ditunjuk, bukan tipe dari pointer-nya. Contoh  :
int * number;
char * character;
float * greatnumber;
Contoh :
// my first pointer
#include <iostream.h>
int main ()
{ int value1 = 5, value2 = 15;
int * mypointer;
mypointer = &value1;
*mypointer = 10;
mypointer = &value2;
*mypointer = 20;
cout << “value1==” << value1 << “/ value2==” << value2;
return 0;
}
Output :
value1==10 / value2==20
Perhatikan bagaimana nilai dari value1 dan value2 diubah secara tidak langsung. Pertama
mypointer diberikan alamat value1 dengan menggunakan  tanda ampersand (&). Kemudian memberikan nilai 10 ke nilai yang ditunjuk oleh mypointer, yaitu alamat dari value1, maka secara tidak langsung value1 telah dimodifikasi. Begitu pula untuk value2.
Contoh :
// more pointers
#include <iostream.h>
int main ()
{
int value1 = 5, value2 = 15;
int *p1, *p2;
p1 = &value1;     // p1 = address of value1
p2 = &value2;     // p2 = address of value2
*p1 = 10;         // value pointed by p1 = 10
*p2 = *p1;        // value pointed by p2 = value pointed by p1
p1 = p2;          // p1 = p2 (value of pointer copied)
*p1 = 20;         // value pointed by p1 = 20
cout << “value1==” << value1 << “/ value2==” << value2;
return 0;
}
Output :
value1==10 / value2==20
Array dan Pointer
Identifier suatu array equivalen dengan alamat dari elemen pertama,     pointer equivalen dengan alamat elemen pertama yang ditunjuk. Perhatikan deklarasi berikut                                        :
int numbers [20];
int * p;
maka deklarasi dibawah ini juga benar :
p = numbers;
p dan numbers equivalen, dan memiliki sifat (properties) yang sama. Perbedaannya, user dapat menentukan nilai lain untuk pointer p dimana numbers akan selalu menunjuk nilai yang sama  seperti  yang  telah  didefinisikan.  p,  merupakan  variable pointer, numbers adalah constant pointer. Karena itu walaupun instruksi diatas benar, tetapi tidak untuk instruksi dibawah ini       :
numbers = p;
karena numbers adalah array (constant pointer), dan tidak ada nilai yang dapat diberikan untuk identifier konstant (constant identifiers).
Contoh :                                               Output :
// more pointers                              10, 20, 30, 40, 50,
#include <iostream.h>
int main ()
{
int numbers[5];
int * p;
p = numbers;  *p = 10;
p++;  *p = 20;
p = &numbers[2];  *p = 30; p = numbers + 3;              *p = 40; p = numbers;    *(p+4) = 50; for (int n=0; n<5; n++)
cout << numbers[n] << “, “;
return 0;
}
Inisialisasi Pointer
Contoh :
int number;
int *tommy = &number;
Equivalen dengan          :
int number;
int *tommy;
tommy = &number;
Seperti pada array, inisialisasi isi dari pointer dapat dilakukan dengan deklarasi seperti contoh berikut :
char * terry = “hello”;
Pointer Arithmatika
Contoh,  char memerlukan  1  byte,  short memerlukan  2  bytes  dan  long memerlukan  4.
Terdapat 3 buah pointer          :
char *mychar; short *myshort; long *mylong;
ekspresi diatas akan menunjuk pada lokasi dimemory masing-masing 1000, 2000 and 3000, sehingga jika dituliskan                                                :
mychar++; myshort++; mylong++;
mychar, akan bernilai 1001, myshort bernilai 2002, dan mylong bernilai 3004. Alasannya adalah ketika terjadi pertambahan maka akan ditambahkan dengan tipe yang sama seperti yang didefinisikan berupa ukuran dalam bytes.
Perhatikan ekspresi dibawah ini            :
*p++;
*p++ = *q++;
Ekspresi pertama equivalen dengan *(p++) dan yang dilakukan adalah menambahkan p (yaitu alamat yang ditunjuk, bukan nilai yang dikandungnya).
Ekspresi kedua, yang dilakukan pertama adalah memberikan nilai *q ke *p dan kemudian keduanya ditambahkan 1 atau dengan kata lain :
*p = *q;
p++;
q++;
void pointer
Tipe pointer void merupakan tipe khusus. void pointers dapat menunjuk pada tipe data
apapun, nilai integer value atau float, maupun string atau karakter. Keterbatasannya adalah
tidak dapat menggunakan operator asterisk (*), karena panjang pointer tidak diketahui, sehingga diperlukan operator type casting atau assignations untuk mengembalikan nilai void pointer ketipe data sebenarnya.
Contoh :
// integer increaser
#include <iostream.h>
void increase (void* data, int type)
{
switch (type)
{
case sizeof(char) : (*((char*)data))++; break; case sizeof(short): (*((short*)data))++; break; case sizeof(long) : (*((long*)data))++; break;
}
}
int main ()
{
char a = 5; short b = 9; long c = 12;
increase (&a,sizeof(a)); increase (&b,sizeof(b)); increase (&c,sizeof(c));
cout << (int) a << “, ” << b << “, ” << c;
return 0;
}
Output :
6, 10, 13
Pointer untuk functions
C++ memperbolehkan operasi dengan pointer pada function. Kegunaan yang utama adalah untuk memberikan satu function sebagai parameter untuk function lainnya. Deklarasi pointer untuk function sama seperti prototype function kecuali nama function dituliskan diantara tanda kurung () dan operator asterisk (*) diberikan sebelum nama.
Contoh :
// pointer to functions
#include <iostream.h>
int addition (int a, int b)
{ return (a+b); }
int subtraction (int a, int b)
{ return (a-b); }
int (*minus)(int,int) = subtraction;
int operation (int x, int y, int (*functocall)(int,int))
{
int g;
g = (*functocall)(x,y);
return (g);
}
int main ()
{
int m,n;
m = operation (7, 5, addition); n = operation (20, m, minus); cout <<n;
return 0;
}
Output :
8
Dari  contoh  diatas,  minus merupakan  pointer  global  untuk  function  yang  mempunyai  2
parameters bertipe int, kemudian diberikan untuk menunjuk function subtraction, ditulis dalam satu baris instruksi                                                :
int (* minus)(int,int) = subtraction