Rabu, 06 Februari 2013

Contoh Program Penggajian Karyawan Bahasa C

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  //identifier
   long int gaji_pokok=1000000,total_gaji_lembur,gaji_kotor;
   int jam_lembur;
   float gaji_bersih,pajak;
   char nama[31];
 
   system("cls");
  //input
   printf("Nama Pegawai : "); fflush(stdin); gets(nama);
   printf("Lama Lembur  : "); scanf("%i",&jam_lembur);

 //proses
   total_gaji_lembur = (long int)5000*jam_lembur;
  
   gaji_kotor = gaji_pokok + total_gaji_lembur;
   pajak = 0.1 * gaji_kotor;
   gaji_bersih = gaji_kotor - pajak;

   system("cls");
 
  //outpout
  printf("Hasil Perhitungan : \n");
  printf("Nama Pegawai      : %s\n",nama);
  printf("Gaji Pokok        : Rp. %10li\n",gaji_pokok);
  printf("Lama Lembur       : %i jam\n",jam_lembur);
  printf("Total Gaji Lembur : Rp. %10li\n",total_gaji_lembur);
  printf("Pajak(10%%)        : Rp. %10.0f\n",pajak);
  printf("Gaji Bersih       : Rp. %10.0f\n",gaji_bersih);
 
  system("PAUSE");   
  return 0;
}

Pointer pada C / C++




Pointer adalah suatu variabel yang menyimpan alamat memori yang menyimpan suatu nilai. Yang harus diperhatikan dalam mempelajari pointer yaitu bila menggunakan pointer dengan carta yang salah maka akan menyebabkan sistem operasi menjadi rusak.
Satu byte di dalam memori akan memiliki sebuah alamat. Di dalam alamat memori inilah sebuah variabel akan disimpan. Pointer di dalam progaram dimaksudkan untuk menunjuk suatu alamat memori variabel. Contoh ada sebuah variabel bernama point yang bertindak sebagai pointer dan sebuah variabel varpoint yang bertindak sebagai variabel yang alamatnya akan ditunjuk oleh point.
Alamat suatu variabel dapat diketahui dengan mudah. Caranya menggunakan operator alamat yaitu simbol & (and)  di depan suatu variabel. Sebagai contoh variabel bertipe integer bernama x maka untuk menampilkan alamatnya &x.
Ciri khas dari variabel pointer yaitu terletak pada apa yang disimpannya. Bentuk pendeklarasian variabel pointer adalah sbb :
tipe_data *nama_variabel;
atau
tipe_data* nama_variabel;
Bentuk umum tersebut menggambarkan bahwa pointer yang di deklarasikan akan ditempati oleh data dengan tipe data yang disebutkan ketika pendeklarasian. Contoh :
Int *nama_variabel;
Tipe data pada pendeklarasian variabel harus sama dengan tipe data variabel yang ditunjuk. Disarankan menggunakan variabel p untuk mempermudah membedakan variabel pointer dengan variabel biasa.
Setelabh di deklarasikan, variabel pointer harus ditugaskan untuk menunuk variabel. Hal ini dilakukan supaya variabel pointer dapat menunjuk variabel lain yang bersangkutan. Bentuk umunnya sbb :
variabel_pointer=&variabel_yang_ditunjuk;
Pernyataan diatas berarti variabel pointer diisi dengan alamat dari variabel yang ditunjuk. Untuk dapat mengakses alamat dari variabel yang ditunjuk pointer, tinggal menyebutkan nama variabel pointernya saja sedangkan untuk mengakses nilai dari variabel yang ditunjuk oleh pointer harus menyebutkan nama variabel pointer diawali dengan tanda * .
Perlu diketahui bahwa hasil eksekusi pada bahasa C dan C++ akan berbeda. Perbedaanya terletak dalam menampilkan alamat memori. Bahasa C menyebutkan dua 0 di depan alamat memori contoh : 0022ff44 . Sedangkan pada C++ tidak , contoh : 22ff44.
Pointer tidak bertipe (pointer void) yaitu pendeklarasian variabel tanpa menyebutkan tipe datanya terlebih dahulu (tipe datanya diisi void). Hal ini dilakukan agar satu pointer dapat menunjuk variabel yang berbeda tipe data.  Bentuk umum pendeklarasian pointer tak bertipe sbb :
void *nama_pointer;
Dalam pemanggilan alamat dan nilainya, variabel pointer harus disetai dengan tipe datanya. Bentuk pemanggilannya sbb :
//Pemanggilan alamat
(tipe_data*)nama_pointer;

//pemanggilan nilai
*( tipe_data*)nama_pointer;

Pointer dan array memiliki hubungan yang dekat. Secara internal array pun menyatakan alamat. Contoh array yang menyimpan 5 bilangan bulat sbb :
Int bil_bulat []={0,1,2,3,4};
 Dan sebuah pointer yang akan menunjuk array tersebut sebagai berikut :
Int *pbil_bulat;
 Maka penugasan pointer terhadap variabel arraynya sebagai berikut :
pbil_bulat=bil_bulat;
atau
pbil_bulat=&bil_bulat[indeks];
Dalam penugasan pointer di atas terdapat pernyataan yang tidak menggunakan &. Hal ini disebabkan karena nama array sebenarnya sudah menunjuk suatu alamat sehingga  tanda & tidak lagi diperlukan. Ada cara lain untuk pengaksesan seluruh isi elemen array. Caranya sbb :
//pengaksesan nilai array
For(var=0;var<maks_array;var++)
{
     //perintah output diikuti *(nama_array+var)
}

//pengaksesan alamat
For(var=0;var<maks_array;var++)
{
   //perintah output diikuti (nama_array+var)
}
Pointer juga bisa digunakan untuk menunjuk variabel bertipe string. Adapun contoh pendeklarasiannya sbb : char *pstring=”UNIKOM”; maka pemanggilan alamtnya sbb: printf(“Alamat string : 0x%p”,&pstring);.
Selain untuk menunjuk variabel biasa, pointer juga bisa digunakan untuk menunjuk variabel pointer yang lain. Bentuk umum pointer menunuk pointer adalah sebagai berikut :



//pendeklarasian
tipe_data nama_variabel;
tipe_data *pointer1; //menunjuk ke variabel
tipe_data **pointer2; //menunjuk ke pointer

//penugasan
pointer1=&nama_variabel;
pointer2=&pointer1;

//pemanggilan nilai
perintah output diikuti perintah **pointer2

//pemanggilan alamat
perintah output diikuti perintah *pointer2

Salah satu pengaplikasian pointer adalah untuk memanejemen memori dinamis. Maksudnya seorang programer bisa memesan memori untuk variabelnya ketika program sedang dijalankan. Ada dua pasang perintah yang bisa digunakan yaitu :
1.       Malloc dan free
2.       New dan delete.
Malloc adalah perintah untuk mengalokasikan memori ketika program sedang berjalan sedangkan free adalah perintah untuk mendealokasikan memori ketika program sedang berjalan. Bentuk umum malloc dan free sbb :
//malloc
pointer = (tipe_data *)malloc(sizeof(tipe_data)*jumlah_data);

//free
Free(pointer);
Perbedaan pada bahasa C dan C++ yaitu terletak pada perintah input data dinamis. Dalam bahasa C++ perintah cin>> harus diikuti dengan *nama_pointer sedangkan pada C tidak perlu.
Sama seperti mallic dan free, new digunakan untuk mengalokasikan memori sedangkan delete untuk dealokasi memori. Tetapi perintah ini mempunyai kelemahan yaitu harus menyertakan file header cstdlib yang hanya ada di C++. Bentuk umunya sbb :
//new
pointer = new tipe_data_pointer; //satu memori

atau

pointer = new tipe_data_pointer[jumlah_data];

//delete
delete pointer;

Tipe Data Dasar Pada C / C++

1.            Apa Yang dimaksud dengan Rentang / Jangkauan  pada tipe data ?
Rentang / jangkauan pada tipe data yaitu ukuran batasan nilai dari nilai yang terkecil (minimum) dan paling terbesar (maksimum) pada suatu variable. Jika nilai suatu variable lebih kecil dari nilai minimalnya maka akan diisi oleh nilai maksimalnya sebaliknya jika nilai suatu variable lebih besar dari nilai maksimalnya maka akan diisi oleh nilai minimalnya. Memori yang diperlukan untuk menyimpan suatu tipe data dalam ukuran (satuan) byte/bit di dalam memori.
2.            Tuliskan dan Jelaskan maksud dari Rentang dan Jangkauan pada Tabel Tipe Data Dasar !
Tipe Data
Memory
(Byte)
Rentang / Jangkauan
Control String
Char

1
-128 sampai 127 atau 0 sampai 255

%c

Unsigned Char
0 sampai 255
Signed Char
-128 sampai 127
Float
4
1.2E-38 sampai 3.4E+38
%f
Double
8
2.3E-308 sampai 1.7E+308
%f
Long Double
12
3.4E-4932 sampai 1.1E+4932
%lf
Int
4
-32768 sampai 32767
%d atau %i
Unsigned Int
4
0 sampai 6535
%u
Signed Int
4
-32768 sampai 32767 (sama seperti int)
%i
Short Int
2
-32.768 sampai 32.767
%i
Unsigned Short Int
2
0 sampai 65.535
%u
Signed Short Int
2
-32.768 sampai 32.767 (sama seperti short int)
%i
Long Int
4
-2.147.483.648 sampai 2.147.483.647
%ld
Signed Long Int
4
Sama seperti  Long Int (-2.147.483.648 sampai 2.147.483.647)
%li
Unsigned Long Int
4
0 sampai 4.294.967.295
%lu

1.       Char / Karakter
Char adalah tipe data dasar yang terdiri dari satu buah huruf, angka, karakter khusus atau tanda baca. Variabel yang menggunakn tipe data dasar ini memeliki rentang dari -128 sampai 127 atau 0 sampai 255 dengan control string %c. Biasanya tipe data dasar ini diawali dengan tanda kutip dua (“) pada awal dan akhir dalam sebuah program dan memerlukan memori sebanyak 1 byte (8 bit). Tipe data dasar Char terbagi 3 yaitu Char, Unsigned Char dengan rentang 0 sampai 255 dan Sign Char dengan rentang -128 sampai 127.
2.        Float / Bilangan Pecahan
Float adalah tipe data dasar yang berupa bilangan pecahan desimal. Dalam suatu program, jika biasanya tanda desimal menggunakan tanda koma (,) maka nilai dari sebuah tipe data dasar ini menggunakan tanda titik (.) sebagai pengganti nilai dari bilangan utuh dan bilangan pecahannya. Tipe data float ini terbagi menjadi 3 yaitu :
a.       Float memiliki rentang 1.2E-38  sampai 3.4E+38
Tipe data dasar ini memerlukan memory sebanyak 4 byte dengan control string %f.
b.      Double memiliki rentang 2.3E 308  sampai 1.7E+308
Tipe data dasar ini memerlukan memori sebanyak 8 byte dengan control string %f.
c.       Long double memiliki rentang  3.4E-4932   sampai 1.1E+4932 . Tipe data dasar ini memerlukan memori sebanyak 12 byte dengan control string %lf.

3.       Integer / Bilangan Bulat
Integer adalah tipe data dasar bilangan bulat. Pada tipe data dasar ini tidak memiliki pecahan dan tidak ada karakter khusus apapun. Macam-macam tipe data dasar integer :
a.       Int memiliki rentang -32768 sampai 32767. Variabel yang menggunakan tipe data dasar ini memerlukan memori sebanyak 4 byte dengan control string %i.
b.      Unsigned int. Variabel yang menggunakan tipe data dasar ini memiliki rentang 0 sampai 6535, memerlukan sebanyak 4 byte dengan control string %u.
c.       Signed Int. Variabel yang menggunakan tipe data dasar ini memiliki rentang -32768 sampai 32767 sama halnya dengan int, tipe data ini memerlukan memori sebanyak 4 byte dengan control string %i.
d.      Short int. Variabel yang menggunakan tipe data dasar ini memiliki rentang -32768 sampai 32767, tipe data ini memerlukan memori sebanyak 4 byte dengan control string %i.
e.      Unsigned short int. Variabel yang menggunakan tipe data dasar ini  memiliki rentang 0 sampai 65.535. Tipe data ini memerlukan memori sebanyak 2 byte dengan control string %u.
f.        Signed Short int. Variabel yang menggunakan tipe data ini memiliki rentang -32.768 sampai 32.767 dan sama halnya seperti short int. Tipe data ini memerlukan memori sebanyak 2 byte dengan control string %i.
g.       Long int. Variabel yang menggunakan tipe data ini memiliki rentang -2.147.483.648 sampai 2.147.483.648. Tipe data ini memerlukan memori sebanyak 4 byte dengan control string %ld.
h.      Signed long int. Variabel yang menggunakan tipe data ini  memiliki rentang yang sama halnya seperti long int namun bedanya pada control string yaitu %li.
i.         Unsigned Long int. Variabel yang menggunakan tipe data dasar ini memiliki rentang 0 sampai 4.294.967.295. Memerlukan memori sebanyak 4 byte dengan control string %lu.

4.       String
String adalah tipe data dasar yang terdiri dari beberapa karakter. Pengetikannya menggunakan tanda kutip dua  pada awal dan akhir (“).