Minggu, 06 November 2011

Fungsi (Function)

Pada postingan sebelumnya tidak langsung sudah dipelajari dan diuji coba penggunaan fungsi, akan tetapi beberapa fungsi yang telah disajikan pada bab-bab sebelumnya mengembalikan hanya suatu nilai yang bertipe int. Apabila fungsi yang diciptakan dikehendaki tidak mengembalikan suatu nilai yang bertipe int mungkin bertipe float, double, char dan sebagainya, maka compiler harus diberitahu jenis data yang dikembalikan oleh fungsi tersebut. Sebagai contoh fungsi di bawah ini akan mengembalikan nilai rata-rata dengan menggunakan nilai bertipe float.
#include <stdio.h>
float average_value(int a, int b, int c)
{
return ((a + b + c) / 3.0);
}

void main (void)
{
printf (“The average of 100, 133, and 155 is %f\n”, average_value(100, 133, 155));
}

Variabel Lokal
Compiler C memungkinkan pendeklarasian variabel di dalam fungsi yang dibuat. Variabel semacam ini disebut variabel local penamaan ini disebabkan karena nama dan nilai variabel yang diciptakan hanya dikenal pada fungsi tempat mereka didefinisikan.
Konsep dari variabel local ini dapat dilihat dari contoh program pendek di bawah ini.
#include <stdio.h>
void local_values(void)
{
int a = 1, b = 2, c = 3;
printf (“a contains %d b contains %d c contains %d\n”, a, b, c);
}

void main (void)
{
printf (“a contains %d b contains %d c contains %d\n”, a, b, c);
}

pada program pendek tersebut diatas fungsi local_values mendeklarasikan tiga variabel a, b dan c dan menugaskan angka 1,2 dan 3 ke variabel tersebut. Fungsi main mencoba menampilkan setiap nilai variabel, akan tetapi karena nama variabel tersebut hanya berlaku local untuk fungsi local_values, maka compiler akan menampilkan pesan kesalahan yang menyatakan bahwa symbol a, b, dan c belum didefinisikan.
Setiap kali fungsi local_values dipanggil, Compiler C akan mengalokasikan ruang stack untuk menampung variabel local a, b, c dan setiap kali fungsi tersebut berakhir, ruang stack tersebut dihapuskan, demikian pula nilai-nilai variabel yang tersimpan di dalamnya, sehingga ketika fungsi main akan mencoba menampilkan nilai variabel yang ada pada fungsi local_values dinyatakan belum didefinisikan karena sudah terhapus.
Variabel Global
Seperti yang dipelajari pada sub bab sebelumnya bahwa variabel-variabel local adalah variabel yang didefinisikan di dalam sebuah fungsi yang nama dan kehadirannya hanya diketahui oleh fungsi tersebut. Selain variabel local yang yang telah dipelajari, compiler C juga memungkinkan untuk membuat variabel global yang nama dan kehadirannya diketahui oleh seluruh program yang diciptakan. Untuk memahami variabel global ini perhatikan program pendek di bawah ini.
#include <stdio.h>
int a = 1, b = 2, c = 3;  // variabel global
void global_values(void)
{
printf (“a contains %d b contains %d c contains %d\n”, a, b, c);
}

void main (void)
{
global_values();
printf (“a contains %d b contains %d c contains %d\n”, a, b, c);
}

Apabila program tersebut di atas dikompilasi dan dieksekusi, fungsi global_values dan main akan menampilkan nilai variabel global. Perhatikan bahwa variabel tersebut dideklarasikan di luar semua fungsi. Apabila variabel global dideklarasikan semacam ini, semua fungsi di dalam program dapat menggunakan dan mengubah nilai variabel global terebut dengan menyebutkan nama variabel global. . Meskipun variabel global mula-mula terlihat sangat praktis, akan tetapi apabila salah dalam penggunaannya akan menimbulkan kesalahan yang sangat sulit untuk dilacak. Variabel  global seringkali membuka kemungkinan munculnya lebih banyak kesalahan dari pada menguntungkan. Karena nilai sebuah variabel global dapat berubah pada lokasi mana saja di dalam program, maka kondisi ini membuat sangat sulit bagi pemrogram lain yang membaca program tersebut.untuk mencari setiap lokasi yang mengubah variabel global tersebut di dalam program , kemungkinan yang terjadi adalah pemrogram lain akan mengubah program tanpa benar-benar memahami dampak yang akan terjadi terhadap variabel global. Sebagai pegangan, fungsi-fungsi seharusnya hanya  boleh mengubah variabel yang dilewatkan kepadanya sebagai parameter. dengan cara ini para pemrogram dapat mempelajari prototype fungsi tadi untuk dengan segera menentukan variabel mana yang telah diubah oleh sebuah fungsi. Untuk memahami variabel local dan variabel global cobalah latihan berikut ini dan amati apa yang terjadi.
LATIHAN 1
#include <stdio.h>
int count ;      /*global count*/
main()
{
count = 10;
f1();
printf (“count in main() : %d\n”, count);
}
f1()
{
int count ;   /*local count */
count = 100;
printf (“count in f1() : %d\n”, count);
}

LATIHAN 2
#include <stdio.h>
main()
{
int m, e;
m = 2;
e = 3;
printf (“ %d to the %d is %d\n”, m, e, power(m, e));
printf (“ 4 to the 5 is %d”, power(4,5));
}
/* Parametrized version of power */
power (int m, int e)
{
int temp;
temp = 1;
for (  ; e>0; e--) temp = temp + m;
return temp;
}

Array

A little of Array

Array adalah sekelompok data sejenis yang disimpan ke dalam variabel dengan nama yang sama, dengan memberi indeks pada variabel untuk membedakan antara yang satu dengan yang lain.
VARIABEL ARRAY
            nama_variabel[indeks]
1.      ketentuan nama variabel arrray sama dengan nama variabel biasa.
2.      indeks menunjukkan nomor dari variabel .

DEKLARASI VARIABEL ARRAY
BU                  : tipe nama_variabel[indeks];
Contoh            : float bil[10];
            deklarasi variabel array dengan nama bil yang akan menampung 10 data     yang  bertipe  float.  Indeks  10  menunjukkan  variabel  bil  terdiri  dari  10    elemen, dimana setiap elemen akan menampung sebuah data.
Indeks array dimulai dari nol(0) , sedang nomor elemen biasanya dimulai dari satu(1). Nomor elemen dapat dibuat sama dengan nomor indeks untuk mempermudah pembuatan program yaitu dengan memberi indeks satu lebih banyak dari jumlah data yang dibutuhkan, sehingga menjadi :
            float bil[11]

INISIALISASI  ARRAY 1 DIMENSI
Inisialisasi  dapat dilakukan bersama dengan deklarasi atau tersendiri. Inisialisasi suatu array adalah dengan meletakkan elemen array di antara tanda kurung kurawal {}, antara elemen yang satu dengan lainnya dipisahkan koma.
            int bil[2] = {4,1,8}

            bil[0] = 4
            bil[1] = 1
            bil[2] = 8

AUTOMATIC ARRAY adalah Inisialisasi array dilakukan di dalam fungsi tertentu. Hanya  compiler C yang berstandar ANSI C yang dapat menginisialisasikan automatic array.
Cara menginisialisasikan  array dari compiler yg tidak mengikuti standar  ANSI C:
1. Diinisialisasikan di luar fungsi sebagai variabel GLOBAL/EXTERNAL ARRAY.
            int bil[2]={0,0,0};
            main() 
2. Diinisialisasikan didlm fungsi sebagai variabel LOKAL/STATIC ARRAY.
            main()
            {
                        static int bil[2]={0,0,0};
                        .........

Pada automatic array yang tidak diinisialisasikan , elemen array akan memiliki nilai yang tidak beraturan. Bila global & static array tidak diinisialisasi maka semua elemen array secara otomatis akan diberi nilai nol(0).
Contoh :
main()
{
            int y;
            int hitung=0;
            int x[0];
            for(y=0;y<5;y++)
            {
                        hitung+=y;
                        x[y]=hitung;
                        printf("%3d - %3d\n",y,x[y]);
            }
}
OUTPUT:
0-  0
1-  1
2-  3
3-  6
4-  10

MENDEFINISIKAN JUMLAH ELEMEN ARRAY DALAM VARIABEL
Besarnya variabel indeks dapat ditentukan dengan menggunakan
preprocessor directives #define
#define N 40
main()
{
            int no[N],gaji[N],gol[N],status[N],juman[N];

Bila besari indeks akan diubah menjadi 50, cukup diganti dengan
#define N 50

ARRAY 2 DIMENSI
            nama_variabel [indeks1][indeks2]

indeks1            : jumlah/nomor baris
indeks2            : jumlah/nomor kolom
Jumlah elemen yang dimiliki array 2 dimensi dapat ditentukan dari hasil perkalian indeks1 * indeks2

misal : array A[2][3] akan memiliki 2*3 = 6 elemen.

main()
{
            float  bil [5] [5]
            .......

dapat dituliskan dengan #define
#define N 5
main()
{
            float bil [N]  [N]
            .......

INISIALISASI ARRAY 2 DIMENSI
main()
{
            float bil[2] [3] =
            { { 1,2,3},       /*baris 0*/
              { 4,5,6},        /*baris 1*/
            }

elemen bil [0] [0] = 1
elemen bil [0] [1] = 2
elemen bil [0] [2] = 3
elemen bil [1] [0] = 4
elemen bil [1] [1] = 5
elemen bil [1] [2] = 6

Pointer

Ni ada sedikit pengetahun ane tentang "Pointer" gan, sok...


Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain. Alamat ini merupakan lokasi dari obyek lain (biasanya variabel lain) di dalam memori. Contoh, jika sebuah variabel berisi alamat dari variabel lain, variabel pertama dikatakan menunjuk ke variabel kedua.
Operator Pointer ada dua, yaitu :
1.      Operator  &
      Operator & bersifat unary (hanya memerlukan satu operand saja).
      Operator & menghasilkan alamat dari operandnya.
2.      Operator  *
      Operator * bersifat unary (hanya memerlukan satu operand saja).
      Operator * menghasilkan nilai yang berada pada sebuah alamat



A.    PENDEKLARASIAN POINTER

Seperti halnya variabel yang lain, variabel pointer juga harus dideklarasikan terlebih dahulu sebelum digunakan.
Bentuk Umum :
Tipe_data *nama_pointer;
Contoh Program :
int *px;
char *sh;
Contoh Program :
#include “IOSTREAM.h”
#include “conio.h”
void main()
{ int x, y; /* x dan y bertipe int */
int *px; /* px pointer yang menunjuk objek */
clrscr();
x = 87;
px = &x; /* px berisi alamat dari x */
y = *px; /* y berisi nilai yang ditunjuk px */
cout<<“Alamat x =”<<&x <<\n”;
cout<<“Isi px = \n”, px);
cout<<“Isi x = \n”, x);
cout<<“Nilai yang ditunjuk oleh px = \n”, *px);
cout<<“Nilai y = \n”, y);
getch();}

B.     OPERASI POINTER
1.      Operasi Penugasan
Suatu variable pointer seperti halnya variable yang lain, juga bisa mengalami operasi penugasan. Nilai dari suatu variable pointer dapat disalin ke variable pointer yang lain.
Contoh Program :
#include "iostream.h"
#include "conio.h"
void main()
{ float *x1,y, *x2;
clrscr();
y = 13.45;
x1 = &y;             /* Alamat dari y disalin ke variabel x1 */
x2 = x1;              /* Isi variabel x1 disalin ke variabel x2 */
cout<<"Nilai variabel y =  "<<y<< " ada di alamat "<< x1<<"\n";
cout<<"Nilai variabel y =  "<<y<< " ada di alamat "<< x2<<"\n";
 getch(); }

2.      Operasi Aritmatika
Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer saja. Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan. Operasi penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index selanjutnya) dalam memori. Begitu juga operasi pengurangan.
Contoh Program :
#include <iostream.h>
#include <conio.h>
void main()
{ int nilai[3], *penunjuk;
clrscr();
nilai[0] = 125;
nilai[1] = 345;
nilai[2] = 750;
penunjuk = &nilai[0];
cout<<"Nilai "<<*penunjuk <<" ada di alamat memori " <<penunjuk<<"\n";
cout<<"Nilai "<<*(penunjuk+1) <<" ada di alamat memori " <<penunjuk+1<<"\n";
cout<<"Nilai "<<*(penunjuk+2) <<" ada di alamat memori " <<penunjuk+2<<"\n";
getch();}




3.      Operasi Logika
Suatu pointer juga dapat dikenai operasi logika.
Contoh Program :
#include<iostream.h>
#include "conio.h"
void main()
{ int a = 100, b = 200, *pa, *pb;
clrscr();
pa = &a;
pb = &b;
cout<<"nilai pa= "<<pa<< " nilai pb= "<<pb<<"\n";
if(pa < pb)
cout<<"pa menunjuk ke memori lebih rendah dari pb\n";
if(pa == pb)
cout<<"pa menunjuk ke memori yang sama dengan pb\n";
if(pa > pb)
cout<<"pa menunjuk ke memori lebih tinggi dari pb\n";
getch();}

Jumat, 04 November 2011

Kombinasi Antara Program Perhitungan Bangun Ruang, Jumlah Perhitungan Barang, Perhitungan Aritmatika, dan Jumlah Deret Bilangan Ganjil Dalam Interval Tertentu

Kemarin tuh gue dapet tugas dosen ni. Katanya harus pake C++, ya udah gue kerjain..
Nih hasilnya..


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

//=====================NO.1=================================================
void bujur_sangkar()
{
   clrscr();
double panjang;
   double lebar;
   double luas;
   gotoxy(25,2);
   cout<<"HITUNG LUAS BUJUR SANGKAR"<<endl;
   cout<<"Masukan Panjang : ";cin>>panjang;
   cout<<"Masukan Lebar : ";cin>>lebar;

   luas=panjang*lebar;
   cout<<"Luas Bujur Sangkar adalah : "<<luas;
}

void lingkaran()
{
   clrscr();
double jari;
   double luas;
   gotoxy(25,2);
   cout<<"HITUNG LUAS LINGKARAN"<<endl;
   cout<<"Masukan Jari-jari : ";cin>>jari;
   luas=3.14*(jari*jari);
   cout<<"Luas Lingkaran adalah : "<<luas;
}

void segitiga()
{
   clrscr();
   double alas;
   double tinggi;
   double luas;
   gotoxy(25,2);
   cout<<"HITUNG LUAS SEGITIGA"<<endl;
   cout<<"Masukan Alas : ";cin>>alas;
   cout<<"Masukan Tinggi : ";cin>>tinggi;

   luas=0.5*(alas*tinggi);
   cout<<"Luas Segitiga adalah : "<<luas;
}

void trapesium()
{
   clrscr();
   double alas_bawah;
   double alas_atas;
   double tinggi;
   double luas;
   gotoxy(25,2);
   cout<<"HITUNG LUAS TRAPESIUM"<<endl;
   cout<<"Masukan Alas Bawah : ";cin>>alas_bawah;
   cout<<"Masukan Alas Atas : ";cin>>alas_atas;
   cout<<"Masukan Tinggi : ";cin>>tinggi;

   luas=tinggi*(alas_bawah+alas_atas)/2;
   cout<<"Luas Segitiga adalah : "<<luas;
}

void bangun_ruang()
{
   clrscr();
   int pilih=0;
while(pilih!=5)
   {
cout<<"\n\nPROGRAM ARITMATIKA"<<endl<<endl;
   cout<<"1.Bujur sangkar\n";
   cout<<"2.Lingkaran\n";
   cout<<"3.Segitiga\n";
   cout<<"4.Trapesium\n";
   cout<<"5.Keluar\n";
   cout<<"Pilih : ";cin>>pilih;
   cout<<endl;
      switch(pilih)
      {
         case 1:bujur_sangkar();break;
            case 2:lingkaran();break;
            case 3:segitiga();break;
            case 4:trapesium();break;
            case 5:cout<<"Exit";;break;
      }
  }
   getch();
}


// ==================== NO 3 =============================
void penjumlahan()
{
   int angka1;
   int angka2;
   int hasil;
cout<<"PENJUMLAHAN"<<endl;
cout<<"Masukan Angka 1 : ";cin>>angka1;
   cout<<"Masukan Angka 2 : ";cin>>angka2;
   hasil=angka1+angka2;
   cout<<"Pemjumlahan dari kedua bilangan adalah : "<<hasil;
}

void kurang()
{
   int angka1;
   int angka2;
   int hasil;
cout<<"PENGURANGAN"<<endl;
cout<<"Masukan Angka 1 : ";cin>>angka1;
   cout<<"Masukan Angka 2 : ";cin>>angka2;
   hasil=angka1-angka2;
   cout<<"Pengurangan dari kedua bilangan adalah : "<<hasil;
}

void kali()
{
   int angka1;
   int angka2;
   int hasil;
cout<<"PERKALIAN"<<endl;
cout<<"Masukan Angka 1 : ";cin>>angka1;
   cout<<"Masukan Angka 2 : ";cin>>angka2;
   hasil=angka1*angka2;
   cout<<"Perkalian dari kedua bilangan adalah : "<<hasil;
}

void bagi()
{
   int angka1;
   int angka2;
   float hasil;
cout<<"PENJUMLAHAN"<<endl;
cout<<"Masukan Angka 1 : ";cin>>angka1;
   cout<<"Masukan Angka 2 : ";cin>>angka2;
   hasil=angka1/angka2;
   cout<<"Pembagian dari kedua bilangan adalah : "<<hasil;
}


void aritmatika()
{
   clrscr();
   int pilih=0;
while(pilih!=5)
   {
cout<<"\n\nPROGRAM ARITMATIKA"<<endl<<endl;
cout<<"1.Penjumlahan\n";
   cout<<"2.Pengurangan\n";
   cout<<"3.Perkalian\n";
   cout<<"4.Pembagian\n";
   cout<<"5.Keluar\n";
   cout<<"Pilih : ";cin>>pilih;
   cout<<endl;
      switch(pilih)
      {
         case 1:penjumlahan();break;
            case 2:kurang();break;
            case 3:kali();break;
            case 4:bagi();break;
            case 5:cout<<"Exit";;break;
      }
  }
  getch();
}



// =====================================NO.4=========================================

void bil_ganjil()
{
int x;
   cout<<"Masukan Rentang Angka = ";cin>>x;
   int i,total;
   total=0;
   for (i=1;i<=x;i++)
   {
   if (i%2!=0)
      {
       total+=i;
         cout<<i<<"  ";
      }
   }
   cout<<"  Total = "<<total<<endl;
}
//=======================================NO.2========================================
void hitung_harga()
{
   clrscr();
   double total;

   gotoxy(25,2);
cout<<"TOTAL HARGA DARI SEBUAH BARANG"<<endl<<endl;
cout<<"Ditentukan Jumlah Barang : 5 buah"<<endl;
   cout<<"Harga @ Barang : Rp 5203.02"<<endl;

   total= 5*5203.02;
   cout<<endl<<endl;
   cout<<"Total Harga adalah 5 x Rp 5203.02 :"<<"Rp "<<total;
}

//=======================================MAIN=========================================
void main()
{
clrscr();
   int pilih;
   gotoxy(25,2);
   cout<<"SELAMAT DATANG DI MENU UTAMA PROGRAM"<<endl;
   gotoxy(26,3);
   cout<<"----------------------------------"<<endl;
   gotoxy(26,4);
   cout<<"This Program Created by AMJS crews"<<endl;
   gotoxy(26,5);
   cout<<"----------------------------------"<<endl<<endl;
   cout<<"1. Perhitungan Bangun Ruang"<<endl;
   cout<<"2. Total Harga dari sebuah barang"<<endl;
   cout<<"3. Perhitungan Aritmatika"<<endl;
   cout<<"4. Jumlah bil. ganjil dari interval tertentu"<<endl;
   cout<<"5. Keluar"<<endl<<endl;
   cout<<"Pilih : ";cin>>pilih;
   if (pilih==1)
   {
   bangun_ruang();
   }
   else if(pilih==2)
   {
   hitung_harga();
   }
   else if(pilih==3)
   {
   aritmatika();
   }
   else if(pilih==4)
   {
   bil_ganjil();
   }
   else if(pilih==5)
   {
   cout<<"Anda Keluar dari Program";
   }
else
   {
   cout<<"Inputan salah!!";
   }
   getch();
}


Nahhhh, kalo lo pada mau ngopy, sok aja.. Ilmu kan buat di bagi!

Introducing

Hai..........
I'm new here!!