FUNGSI

DASAR TEORI



Fungsi merupakan blok dari kode yang dirancang untuk melaksanakan tugas.
1.   Untuk mengurangi pengulanga penulisan program yang sama
      2. Agar program menjadi lebih terstruktur sehinggah mudah dipahami dan dapat di kembangkan.

A.      STRUKTUR FUNGSI.
Bentuk penulisannya :
Nama_fungsi(argument)         {
            -----pernyataan/perintah
            -----pernyataan/ perintah
}

*         Nama fungsi, boleh dituliskan secara bebas dengan ketentuan tidak menggunakan spasi dan nama fungsi mempunyai arti tersendiri
*         Argument, diletakkan pada tanda kurung yang terletak di belakang nama fungsi. Argumen boleh diisi dengan suatu data atau dikosongkan.
*   Pernyataan atau perintah, diletakkan diantara tanda kurung “{}”

B.      PROTOTIPE FUNGSI
Digunakan untuk mendeklarasikan ke compiler mengenai :
*         Tipe data keluaran dari fungsi
*        Jumlah parameter yang digunakan
*         Tipe data dari masing – masing parameter yang digunakan
Keuntungan pemakaian :
*         Melakukan konversi  antar tipe parameter dalam defenisi dan parameter fungsi
*         Jika jumlah parameter yang digunakan dalam defenisi fungsi dan pada saat pematnggilan fungsi berbeda atau tidak sama maka akan menunjukan kesalahan.

Contoh prototype fungsi :
Nama Fungsi

Float total (float a, float b) ;
Tipe data parameter kedua  
Tipe data parameter pertama
       Tipe data keluaran fungsi


C.      PARAMETER FUNGSI
Terdapat 2 jenis yaitu :
*         Parameter formal yaitu variabel yang terdapat pada daftar parameter yang berada di dalam defenisi fungsi
Contoh :
Main(){
            ....
            X=total(a,b);
            ....
}
*         Parameter aktual yaitu variabel yang digunakan pada pemanggilan suatu fungsi
Contoh :
Float total (float a, float b) {
Return (a+b);
}
   
         1.    Pemanggilan dengan nilai
Nilai dari parameter aktual akan dimasukkan ke parameter formal. Dengan cara ini nilai parameter aktual; tidak akan berubah, walaupun nilai dari parameter formal berubah

2.       Pemanggilan dengan referensi
Merupakan pemangilan alamat suatu variabel di dalam fungsi. Cara ini dapat dipakai untuk mengubah suatu variabel yang ada di luar fungsi, yang dilakukan dengan mengubah nilai suatu variabel yang ada di dalam fungsi

D.      PERNYATAAN RETURN ()
Digunakan untuk mengirim nilai dari suatu fungsi kepada fungsi lain yang memanggilnya. Pernyataan ini diikuti oleh argumen yang berupa nilai yang akan dikirim

E.       JENIS VARIABEL PADA FUNGSI      
*         Variabel lokal : variabel yang mendeklerasikam di dalam fungsi dan hanya dikenal oleh fungsi yang bersangkutan
*         Variabel eksternal : variabel yang di deklerasikan diluar fungsi yang bersifat global yang berarti dapat digunakan bersama – sama tanpa harus dideklerasikan berulang – ulang
*         Variabel statis :
a.       Jika variabel bersifat lokan maka variabekl hanya dikenal dengan fungsi tempat variabel tersebut dideklerasikan
b.      Jika variabel bersifat eksternal maka variabel dapat digunakan oleh semua fungsi yang terletak pada file yang sama di tempat variabel statis dideklerasikan
c.       Jika tidak ada inisialisasi oleh program maka secara otomatis akan diberikan nilai awal nol.

F.       INLINE FUCTION
Inline function digunakan untuk mengurangi lambatnya eksekusi program dan mempercepat eksekusi program terutama pada program yang sering menggunakan atau memanggil fungsi yang berlebihan, terutama program yang menggunakan pernyataan perulangan. Inline fuction dideklerasikan dengan menambahkan kata kunci inline di depan tipe data.

G.     FUNCTION OVERLOADING
Mendefenisikan beberapa fungsi yang memiloki nama yang sama tetapi parameter berbeda.


LANGKAH LANGKAH PRTIKUM

LATIHAN 1001

INPUT

1.     #include<conio.h>
#include<iostream.h>
garis(){
cout<<"========================================="<<endl;
}
void main () {
 garis();
 cout<<"STIKOM TUNAS BANGSA"<<endl;
 garis();
 getche();
}

OUTPUTNYA :
=====================
STIKOM TUNAS BANGSA
=====================

LATIHAN 1002

INPUT

 //=====================================//
//PEMANGGIL DENGAN NILAI               //
//=====================================//
#include<conio.h>
#include<iostream.h>
tambah(int m, int n) {
m+=5;
n+=7;
 cout<<"nilai dalam fungsi tambah()"<<endl;
 cout<<"m="<<m<<endl;
 cout<<"n="<<n<<endl;
}
void main(){
 int a, b;
 a=5;
 b=9;
 cout<<"nilai sebelum fungsi digunakan"<<endl;
 cout<<"a="<<a<<endl;
 cout<<"b="<<b<<endl;
 tambah(a,b);
 cout<<"nilai setelah fungsi digunakan"<<endl;
 cout<<"a="<<a<<endl;
 cout<<"b="<<b<<endl;
 getch();
}

OUTPUTNYA :
Nilai sebelum fungsi digunakan
A=5
B=9
Nilai di dalam fungsi tambah ()
M=10
N=16
Nilai setelah fungsi digunakan
A=5
B=9

LATIHAN 1003

INPUT
 
//=========================================//
//PEMANGGILAN DENGAN REFERENSI             //
//=========================================//
#include<conio.h>
#include<iostream.h>
tambah(int *m, int *n) {
 *m+=5;
 *n+=7;
 cout<<"nilai di dalam fungsi tambah()"<<endl;
 cout<<"m="<<*m<<endl;
 cout<<"n="<<*n<<endl;
}
void main () {
 int a, b;
 a=5;
 b=9;
 cout<<"nilai sebelum fungsi digunakan"<<endl;
 cout<<"a="<<a<<endl;
 cout<<"b="<<b<<endl;
 tambah(&a, &b);
 cout<<"nilai setelah fungsi digunakan"<<endl;
 cout<<"a="<<a<<endl;
 cout<<"b="<<b<<endl;
 getch();
}

OUTPUTNYA :
Nilai sebelum fungsi digunakan
A=5
B=9
Nilai di dalam fungsi tambah ()
M=10
N=16
Nilai setelah fungsi digunakan
A=10
B=16

LATIHAN 1004

INPUT

         //======================================//
//PENGGUNAAN FUNGSI RETURN              //
//======================================//
#include<conio.h>
#include<iostream.h>
tambah(int *m) {
 return(*m+=5);
}
void main () {
 int a, b;
 b=9;
 a= tambah (&b);
 cout<<"nilai setelah fungsi digunakan"<<endl;
 cout<<"a="<<a<<endl;
 getch();
}

OUTPUTNYA :
Nilai setelah fungsi digunakan
A=14

POINTER

DASAR TEORI




A.       Operator Pointer

Terdapat dua macam operator pointer yang disediakan oleh C++, yaitu

1.    Operator Dereference(&)
Operator deferente (&) biasa disebut dengan address of atau operator alamat. Dengan menggunakan opera tor ini dereference (&) ini, suatu variable akan menghasilkan alamt lokasi memori

Contoh :
X = 85;
Y = X;
Z = &X;

2.    Operator Reference (*)
Dengan menggunakan operator reference (*), anda dapat mengakses secara langsung nilai yang terdapat didalam variable yang pointer. Operator ini bias disebut dengan value pointed by. Dengan menggunakan operator refence(*) ini akan dihasilkn nilai yang berada pada suatu alamat memori.

Contoh :
X = 85;
Y = &X;
Z = *Y;


B.   Deklarasian Pointer pada konstanta

Suatu pointer dapat dideklarasikan secara konstanta. Untuk mendeklarasikan pointer secara pointer secara konstanta dilakukan dengan memberikan kata const didepan nama konstanta.

Tipe_data *  const nama_konstanta;


C.      Deklarasian Pointer pada Variabel

Pointer dapat digunakan untuk menunjukan secara lansung ke suatu nilai.

Tipe_data *nama_konstanta;


D.      Deklarasi Pointer pada Pointer


Tidak terbatas menunjukan alamat dari suatu variable,pointer dapat pula menunjukan ke pointer lainnya. Didalam pendeklarasiannya, dilakukan hanya dengan menambahkan pointer reference (*) pada variable yang ditunjukan.

Tipe_data *nama_konstanta;


D.      Pointer pasa Array


Konsep array diantaranya adalah banyak loncatan dari pointer satu ke pointer yang lain karena yang lain karena secara internal array juga menyatakan alamat, dimana pengenal array sama dengan alamat pada elemen pertama pada array.


LANGKAH LANGKAH PRATIKUM

Latihan 901

   Input

//-------------------------------------------------//
//Pendeklarasian Pointer Reference dan Dereference //
//-------------------------------------------------//

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

void main(){
 int a, *b, c, *d;
 a = 75;
 b = &a;
 c = *b;

 cout<<"Nilai a = "<<a<<endl;
 cout<<"Nilai b = "<<b<<endl;
 cout<<"Nilai c = "<<c<<endl;
 getch();
}

   Output

Nilai a = 75
Nilai b = 0x24f7240a
Nilai c = 75


Latihan 902

   Input

//--------------------------------------//
//pendeklarasian pointer konstanta      //
//--------------------------------------//

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

void main() {
 char *const nama = "Borland c++";
 cout<<"Nama Program = "<<nama <<endl;
 nama: "Visual c++";
 cout<<"Nama Program = "<<nama <<endl;
 getch();
}

Output

Nama Program = Borland c++
Nama Program = Borland C++


Latihan 903

Input

//------------------------------------//
//perubahan nilai dengan pointer      //
//------------------------------------//

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

void main(){
 int a = 94;
 int *b;
 cout<<"Nilai Awal a = "<<a<<endl;
 b = &a;
 cout<<"nilai b sekarang = "<<*b<<endl;
 *b = 50;
 cout<<"Nilai b sekarang = "<<*b<<endl;
  cout<<"Nilai a sekarang = "<<a<<endl;
 getch() ;
}

Output

Nilai Awal a = 94
Nilai b sekarang = 94
Nilai b sekarang = 50
Nilai a sekatang = 50


Latihan 904

Input

//------------------------------------------//
//penggunaan pointer dengan pointer         //
//------------------------------------------//

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

void main() {
 int a, *b, **c;
 a = 75;

 cout<<"Nilai b hasil mengakses a = "<<*b<<endl;
 cout<<"Nilai c hasil mengakses a = "<<**c<<endl;
 getch() ;
}

Output

Nilai b hasil mengakses a = 21829


Latihan 905

Input

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

void main() {
 int i, nilai[5], *ptrNilai;
 ptrNilai = nilai;

 for(i=1; i<=5; i++) {
         cout <<"Masukan Nilai "<<i<<"= ";
         cin>>nilai[i];
 }

 cout<<endl;
 cout<<"Hasil Pengaksesan Elemen Array Lewat Pointer";
 cout<<endl<<endl;

 for(i=1; i<=5; i++) {
         cout<<"Elemen "<<i<<". Nilai "<<nilai[1];
         cout<<", menempati Alamat Memori = "<<&ptrNilai[i];
         cout<<endl;
 }
 getche();
}

Output

Masukan Nilai 1 = 5
Masukan Nilai 2 = 6
Masukan Nilai 3 = 7
Masukan Nilai 4 = 8
Masukan Nilai 5 = 9

hasil mengakseskan elemen array lewat pointer
elemen 1. Hasil 5, menempati alamat memori = 8x1b6f2552
elemen 2. Hasil 6, menempati alamat memori = 8x1b6f2554
elemen 3. Hasil 7, menempati alamat memori = 8x1b6f2556
elemen 4. Hasil 8, menempati alamat memori = 8x1b6f2558
elemen 5. Hasil 9, menempati alamat memori = 8x1b6f255a

Latihan 906

Input

//--------------------//
//Pointer Pada String //
//--------------------//

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

void main() {
 char band_metal[] = "SEPULTURA";
 char *band_punk = "RANCID";
 cout<<"Nama band metal = "<<band_metal<<endl;
 cout<<band_metal<<endl;

 band_punk+=3;

 cout<<"Nama band metal = "<<band_metal<<endl;
 cout<<"Nama band punk  = "<<band_punk<<endl;

 getche();
}

Output

Nama band metal=SEPULTURA
Nama band punk=RANCID
Nama band metal=SEPULTURA
Nama band punk=CID

Variabel Array


DASAR TEORI



Variable array adalah tipe terstruktur yang terjadi dari sejumlah komponen yang mempunyai tipe yang sama. A. Array berdimensi Satu Bentuk umum pendeklarasian array : Tipe_Data Nama_Variabel (ukuran) Contoh : Float Nilai_Akhir[6]; Suatu array digambar sebagai kotak panjang yang berisik kotak-kotak kecil di dalam kotak panjang tersebut. Elemen 1 Elemen 2 Elemen 3 Elemen 4 Elemen 5 Elemen 6 0 1 2 3 4 5 Index 1. Mengakses Array Berdimensi Satu Suatu array dapat diakses dengan menggunakan indeknya. Bentuk umum pengaksesnya adalah: Nama_Array [index] ; Contoh : Nilai_Akhir[3]; Nilai_Akhir[2]; 2. Inisialisasi Array Bedimensi Satu Insialisasi adalah memberikan nilai awal terhadap suatu variable. Bentuk pendefenisian suatu array dapat dilihat dari contoh berikut : Tipe_Data nama_Array [jml_Elemen] = { nilai array } ; Contoh : Float nilai[5] = { 56.5,66.7,87.45,98.5,78.9 } ; B. Array Berdimensi Dua Bentuk umum pendeklarasian array : Tipe_Data nama_variabel [index1] [index2] Keterangan : Index1 : Menyatakan jumlah baris Index2 : Menyatakan jumlah kolom Contoh : Pendeklarasian yang digunakan adalah pengolahan data penjualan. No Tahun Penjualan 2001 2002 2003 1 150 159 230 2 100 125 150 3 210 125 156 Table diatas dapat dituliskan ke dalam array dimensi dua, sebagai berikut : Int data_jual [3][3]; 1. Mengakses Array Berdimensi Tiga suatu array dapat diakses dengan menggunakan indeksnya. Bentuk umum pengaksesnya adalah : Nama_Array [index-1] [index-2] ; Contoh : data_jual[2][2]; data_jual[1][2]; 2. Inisialisasi Array Berdimensi dua Inisialisasi adalah memberi nilai awal terhadap suatu variable. Bentuk pendefenisian suatu array dapat dilihat dari contoh berikut : Tipe_Data nama_Array [jml_Elemen] = { nilai array } ; Contoh : Int data_jual[3][3] = { {150, 159, 230}, {100, 125, 150}, {210, 125, 156} }; C. Array Berdemensi tiga Bentuk umum pendeklarasian array : Tipe_Data nama_Array [jml_Elemen] = { nilai array ] ; Keterangan : Index1 : Menyatakan jumlah baris Index2 : Menyatakan isi dari baris Index3 : Menyatakan jumlah kolom Contoh : Pendeklarasian yang digunakan adalah pengolahan data penjualan. Tahun Ke Hasil Ke Tahun Penjualanm Ke 1 2 1 1 150 159 2 20 400 2 1 100 125 2 210 125 Table diatas dapat dituliskan ke dalam array dimensi dua, sebagi berikut : Int data_juak [2][2][2] 1. Mengakses Array Berdimensi Tiga Suatu array dapat diakses dengan menggunakn indeknya. Bentuk umum pengaksesnya adalah : Nama_Array [index-1] [index-2] [index-3] ; Contoh : data_jual [1] [1] [1]; data_jual [1] [0] [1] 2. Insialisasi Array Berdimensi Tiga Inisialialisasi alah memberikan nilai awal terhadap suatu variable. Bentuk pendefenisian suatu array dapat dilihat dari contoh berikut : Tipe_Data nama_Array [jml_Elemen] = { nilai array } ; Contoh : Int data_jual [2] [4] [3] ={{{100,200,300},{150,240,360},{250,340,460,{250,340,460}}, {{160,250,365,},{175,275,375},{275,375,575},{280,380,580}}} Langkah - Langkah pratikum A. Latihan 801 Input #include<conio.h> #include<stdio.h> #include<iostream.h> #include<iomanip.h> void main() { int i; char Nama[5][20]; float nilai1[5], nilai2[5], hasil[5]; for(i=1; i<<=2; i++) { cout<<"Data ke-"<<i<<endl; cout<<"Nama siswa : "; gets (Nama[i]); cout<<"Nilai Midtest : "; cin>>nilai1[i]; cout<<"Nilai Final : "; cin>>nilai2[i]; hasil[1] = (nilai1[i] * 0.40) + (nilai2[i] * 0.60); cout<<endl; } cout<<"=================================================="<<endl; cout<<" No Nama Nilai Nilai Hasil "<<endl; cout<<" Midtest Final Ujian "<<endl; cout<<"=================================================="<<endl; for(i=1; i<<=2; i++) { cout<<""; cout<<setiosflags(ios::left)<<setw(9)<<i; cout<<setiosflags(ios::left)<<setw(13)<<Nama[i]; cout<<setprecision(2)<<" "<<nilai1[i]; cout<<setprecision(2)<<" "<<nilai2[i]; cout<<setprecision(2)<<" "<<hasil[1]<<endl; } cout<<"=================================================="<<endl; getch(); } Output Data ke-4 Nama siswa : reza napitu Nilai Midtest :90 Nilai Final : 100 Data Ke-2 Nama siswa : johannes saragi Nilai Midtest :80 Nilai Final :90 ====================================== No Nama Nilai Nilai Hasil Midtest Final