Rabu, 20 Desember 2017

FUNGSI pada c++

1. PENGERTIAN FUNGSI

Fungsi merupakan blok program yang dirancang untuk melaksanakan tugas tertentu. Beberapa keguaan fungsi antara lain : 
  • Untuk mengurangi pengulangan program yang sama 
  • Agar program menjadi terstruktur, rapi dan lebih mudah dikembangkan.

2. STRUKTUR FUNGSI

Sebuah fungsi sederhana mempunyai bentuk penulisan sebagai berikut:
return_type nama_fungsi(parameter) {
pernyataan 
}

Keterangan:
  • return_type adalah nilai balik saat fungsi dipanggil 
  • nama_fungsi, biasanya disesuaikan dengan kegunaan dari fungsi, namun boleh ditulis secara bebas dengan ketentuan tidak menggunakan spasi dan nama-nama fungsi yang memiliki arti sendiri. 
  • parameter/argumen, diletakan di antara tanda kurung setelah nama fungsi, argumen digunakan sebagai nilai masukan untuk fungsi dan dapat dibuat lebih dari satu atau tidak sama sekali.

Untuk memanggil fungsi, gunakan nama fungsi dan definisi argumen jika dibutuhkan. perhatikan contoh berikut:

Contoh 1:
#include <iostream.h> 
#include <conio.h> 

void hello() { 
cout << "Hello Everyone\n"; 
}

void main() { 
hello(); 
hello(); 
getch(); 
}

Output:
Hello Everyone 
Hello Everyone

3. FUNGSI DENGAN PARAMETER

Parameter adalah nilai yang dapat kita masukkan ke dalam sebuah fungsi. Kita dapat mendefinisikan jumlah parameter berapapun sesuai dengan kebutuhan.

Terdapat dua macam parameter, yaitu: 
  • parameter formal, yaitu variabel yang terdapat dalam definisi fungsi.
  • parameter aktual, yaitu variabel atau nilai yang digunakan saat pemanggilan suatu fungsi.

Perhatikan contoh berikut:
Contoh 2:
#include <iostream.h> 
#include <conio.h> 

void tambah(int a, int b) { 
cout << a + b << endl; 
} 

void main() { 
tambah(10, 12); 
tambah(100, 200); 
getch(); 
}

Output:
22 
300

4. PROTIPE FUNGSI

Prototipe fungsi digunakan untuk mendeklarasikan ke kompiler mengenai: 
  • Nilai balik dari fungsi 
  • Jumlah parameter yang digunakan fungsi 
  • Tipe data dari masing-masing parameter yang digunakan fungsi

Contoh 3:
#include <iostream.h>
#include <conio.h> //definisi prototipe 

void tambah(int a, int b); 
void kurang(int a, int b); 

void main() { 
tambah(10, 12); 
tambah(100, 200); 
kurang(30, 45); 
kurang(200, 125); 
getch(); 
} 

void tambah(int a, int b) { 
cout << a + b << endl;
} 

void kurang(int a, int b) { 
cout << a - b << endl; 
}

Output:
22 
300
-15 
75

5. NILAI BAWAAN PARAMETER

Salah satu keistimewaan C++ adalah adanya kemampuan untuk menggunakan nilai bawaan (default) parameter fungsi. parameter yang mempunyai nilai bawaan nantinya dapat tidak disertakan didalam pemanggilan fungsi.

Contoh 4:
#include <iostream.h>
#include <conio.h> 

void hello(int jum=1); // Prototipe fungsi 

void main() { 
clrscr(); 
hello(); 
hello(3);
getch(); 
} 

void hello(int jum) { 
for (int i = 0; i < jum; i ++) { 
cout << " C++ " << endl; 
}
cout << " Selesai " << endl; 
}

Output:
C++ 
Selesai 
C++ 
C++ 
C++ 
Selesai

6. PASS BY VALUE

Melewatkan parameter dengan nilai (pass by value). Secara default argumen yang kita definisikan dalam fungsi bersifat pass by value, yang berarti akan dilewatkan ke dalam fungsi dan tidak akan mengalami perubahan setelah fungsi dijalankan. Perhatikan contoh berikut:

Contoh 5:
#include <iostream.h> 
#include <conio.h>

void perkalian(int a, int b, int c);

void main() { 
int a = 10, b = 30, c = 0; 
cout << "\nNilai c SEBELUM fungsi perkalian dipanggil : " << c; 
perkalian(a, b, c); 
cout << "\nNilai c SETELAH fungsi perkalian dipanggil : " << c; 
getch(); 
} 

void perkalian(int a, int b, int c) { 
c = a * b; 
cout << "\nNilai c DALAM fungsi perkalian " << c; 
}

Output:
Nilai c SEBELUM fungsi perkalian dipanggil : 0 
Nilai c DALAM fungsi perkalian 300 
Nilai c SETELAH fungsi perkalian dipanggil : 0
script type=textjavascript var gax_wid = 1476437362; var gax_zid = 1509097372; var gax_w =640; var gax_h =360; var gax_content_id = .detail; .class or #id of content wrapper var gax_position=0; 0 ads will display where the ad tag is placed 0ads will display on the specified paragraph number, example paragraph #5 script script type=textjavascript src=gamma.cachefly.netjsmobilejsoutstreaminread.min.jsscript

7. PASS BY REFERENCE

Melewatkan parameter dengaan rerefensi (pass by reference). Berbeda dengan pass by value yang tidak akan mempengaruhi nilai parameter setelah fungsi dijalankan, pass by reference akan mempengaruhi nilai setelah fungsi dijalankan. Untuk melewatkan parameter dengan referensi, tambahkan karakter ampersand ('&') di depan nama parameter. berikut adalah contoh sebelumnya yang telah diubah menjadi pass by reference:

Contoh 6:
#include <iostream.h>
#include <conio.h> 

void perkalian(int a, int b, int &c); 

void main() {
int a = 10, b = 30, c = 0; 
cout << "\nNilai c SEBELUM fungsi perkalian dipanggil : " << c; 
perkalian(a, b, c); 
cout << "\nNilai c SETELAH fungsi perkalian dipanggil : " << c; 
getch(); 
} 

void perkalian(int a, int b, int &c) { 
c = a * b;
cout << "\nNilai c DALAM fungsi perkalian " << c; 
}

Output:
Nilai c SEBELUM fungsi perkalian dipanggil : 0 
Nilai c DALAM fungsi perkalian 300 
Nilai c SETELAH fungsi perkalian dipanggil : 300

8. FUNGSI YANG MENGEMBALIKAN NILAI

Pada saat kita membuat fungsi, sering kali kita ingin agar ketika fungsi dipanggil akan melakukan proses dan mengembalikan nilai tertentu. kita bisa menggunakan keyword return dalam fungsi untuk mengembalikan nilai ketika fungsi tersebut dipanggil. sebagai contoh, perhatikan script berikut:

Contoh 7:
#include <iostream.h> 
#include <conio.h> 

int tambahkan(int a, int b); 
long kuadrat(long a); 

void main() { 
int a = 10, b = 30,
c = 0; a = kuadrat(a); 
b = kuadrat(b);
c = tambahkan(a, b); 
cout << "nilai c sekarang = " << c;
getch(); 
} 

int tambahkan(int a, int b) { 
return a + b;
} 

long kuadrat(long a) { 
return a * a; 
}

Output:
nilai c sekarang = 1000

9. LINGKUP VARIABEL

Lingkup variabel menentukan keberadaan suatu variabel tertentu dalam fungsi. Ada variabel yang hanya dikenal di suatu fungsi dan tidak dikenal pada fungsi lain. Namun ada juga variabel yang dapat diakses oleh semua fungsi.

a. Variabel Lokal
variabel lokal adalah variabel yang dideklarasikan di dalam fungsi dan hanya dikenali dalam fungsi yang bersangkutan. Variabel lokal bisa juga disebut dengan variabel otomatis. Perhatikan contoh berikut:

Contoh 8:
#include <iostream.h> 
#include <conio.h> 

void lokal(); 

void main() { 
int a = 25; 
cout << "\nNilai a dalam fungsi main = " << a; 
lokal();
cout << "\nNilai a dalam fungsi main = " << a; 
getch();
} 

void lokal() { 
int a=70; 
cout << "\nNilai a dalam fungsi lokal = " << a; 
}

Output:
Nilai a dalam fungsi main = 25 
Nilai a dalam fungsi lokal = 70 
Nilai a dalam fungsi main = 25

b. Variabel Eksternal
Variabel eksternal adalah variabel yang dideklarasikan di luar fungsi dan bersifat global sehingga dapat digunakan bersama-sama tanpa harus dideklarasian berulang-ulang. perhatikan contoh berikut:

Contoh 9:
#include <iostream.h>
#include <conio.h> 

int a = 77; 
void lokal();

void main() { 
a = 25; cout << "\nNilai a dalam fungsi main = " << a; 
lokal(); 
cout << "\nNilai a dalam fungsi main = " << a; 
getch(); 
} 

void lokal() { 
a+=7; 
cout << "\nNilai a dalam fungsi lokal = " << a; 
}

Output:
Nilai a dalam fungsi main = 25
Nilai a dalam fungsi lokal = 32 
Nilai a dalam fungsi main = 32

c. Variabel Statis
Variabel statis dapat berupa variabel lokal ataupun variabel eksternal. variabel statis ini mempunyai sifat antara lain:
  • jika variabel statis bersifat lokal, maka variabel hanya dikenal oleh fungsi dimana variabel dideklarasikan. 
  • jika variabel statis bersifat eksternal, maka variabel dapat dipergunakan oleh semua fungsi yang terletak pada file yang sama.
  • jika nilai variabel statis tidak diberikan, secara otomatis akan diberikan nilai nol.

Contoh 10:
#include <iostream.h> 
#include <conio.h> 

void saya_ingat(); 

void main(){ 
int mana = 50; 
clrscr(); 
saya_ingat(); 
saya_ingat(); 
saya_ingat(); 
cout << " main() : mana = " << mana << endl; 
getch(); 
} 

void saya_ingat() { 
static int mana = 77; mana ++; 
cout << " Saya_ingat () : mana = " << mana << endl; 
}

Output:
Saya_ingat () : mana = 78 
Saya_ingat () : mana = 79 
Saya_ingat () : mana = 80 
main() : mana = 50

10. OVERLOADING FUNCTION

Fungsi overloading berarti mendefinisikan beberapa fungsi dengan nama yang sama tetapi dengan parameter yang berbeda.

Contoh 11:
#include <iostream.h> 
#include <conio.h> 

int kuadrat(int angka); 
long kuadrat(long angka); 
float kuadrat(float angka);

void main() { 
int a = 200; 
float b = 50.56; 
long c = 120; 
cout << a << " dikuadratkan menjadi " << kuadrat(a) << endl; 
cout << b << " dikuadratkan menjadi " << kuadrat(b) << endl; 
cout << c << " dikuadratkan menjadi " << kuadrat(c) << endl; 
getch(); 
} 

int kuadrat(int angka){ 
return (angka * angka);
} 

long kuadrat(long angka) { 
return (angka * angka); 
} 

float kuadrat(float angka) { 
return (angka * angka); 
}

Output:
200 dikuadratkan menjadi 40000 
50.56 dikuadratkan menjadi 2556.31 
120 dikuadratkan menjadi 14400

ARRAY


Array

Array merupakan bagian dasar pembentukan suatu struktur data yang lebih kompleks. Hampir setiap jenis struktur data kompleks dapat di sajikan secara logik oleh array.
Array adalah suatu tipe data terstuktur yang berupa sejumlah data sejenis (bertipe data sama) yang jumlahnya tetap dan diberi suatu nama tertentu.

Elemen-elemen array tersusun secara sekuensial di dalam memori sehingga memiliki alamat yang berdekatan. Array dapat berupa array 1 dimensi, 2 dimensi, bahkan n-dimensi. Elemen-elemen array bertipe data sama tapi bisa bernilai sama atau berbeda-beda. Array digunakan untuk menyimpan data-data yang diinputkan masing-masing kedalam memory komputer. Jadi jumlah datanya banyak namun satu jenis.

Karaktersitik Array :
1. mempunyai batasan dari pemesanan alokasi memory (bersifat statis)
2. mempunyai type data sama (homogen)
3. dapat di akses secara acak.
4. berurutan (terstruktur)

Array Mempunyai Dimensi :
1. Array Dimensi satu (vektor)

Elemen-elemen array dapat diakses oleh program menggunakan suatu indeks tertentu. Pengaksesan elemen array dapat dilakukan berurutan atau random berdasarkan indeks tertentu secara langsung. Pengisian dan pengambilan nilai pada indeks tertentu dapat dilakukan dengan mengeset nilai atau menampilkan nilai pada indeks yang dimaksud.
Array satu dimensi juga disebut array dimensi satu atau biasa juga disebut Vektor karena hanya memiliki satu arah.

Deklarasi array satu dimensi :
tipe_data nama_var [ukuran_array]

Ket :
–type_data : menyatakan type elemen array misal int, char, float
–nama_var : nama variabel array
–ukuran : menyatakan jumlah maksimal elemen arranya

2. Array Dimensi banyak
Dimensi dua (matrix / tabel )
- Dimensi tiga (kubik)

Array multi dimensi berarti array yang kita deklasaikan dapat dikembangkan ke array dimensi 2 dan seteruanya. Array multi dimensi merupakan topik yang menarik dalam matematika. Setiap dimensi dalam array direpresentasikan sebagai sub bagian dalam array.

Oleh karena itu, array dua dimensi array memiliki dua sub bagian, sebuah array tiga-dimensi memiliki tiga sub bagian dan sebagainya. Sebuah contoh bentuk nyata yang baik dari array dua dimensi adalah sebuah papan catur. Satu dimensinya merupakan delapan baris, sedangkan dimensi lainnya merupakan delapan kolom.

Array dua dimensi sering kali digambarkan/dianalogikan sebagai sebuah matriks atau bentuk grid. Jika array berdimensi satu hanya terdiri dari 1 baris dan banyak kolom, array berdimensi dua terdiri dari banyak baris dan banyak kolom yang bertipe sama.
Array dua dimensi merupakan array yang terdiri dari M buah baris dan N buah kolom. Bentuknya dapat berupa matriks atau tabel.

Bentuk Umum : 
Tipe_Data Nama_Variabel [index-1] [index-2]

Inisialisasi array dua dimensi
Seperti array berdimensi satu, array berdimensi dua juga bisa diinisialisasi.

Fungsi Array.
Jika suatu fungsi memberikan hasil balik, maka nilai hasil balik yang diberikan oleh fungsi dapat dilakukan oleh statement return yang diikuti  oleh nilai hasil baliknya yang ditulis tanda kurung.

Keuntungan penggunaan array sebagai tipe data dibandingkan dengan penggunaan tipe data yang lain adalah kemampuannya yang dapat mengumpulkan beberapa data yang bertipe sama dalam satu variabel, sehingga dalam pembuatan program yang terdiri dari beberapa tipe yang sama, tidak membutuhkan banyak variabel.

Array juga dapat berfungsi sebagai pointer untuk menunjukan index yang sedang kita
gunakan.

Contoh program array dimensi 1 :


#include <iostream.h>
#include <conio.h>
void main()
{
clrscr ();
 int A[5];
 int i;

 for(i=0;i<5;i++)
 {
cout<<"Masukkan Data "<<i<<"="; cin>>A[i];
 }
 for(i=0;i<5;i++)
{
cout<<endl<<"array ke-"<<i<<" -> "<<A[i];
}     getch () ;
}

Hasilnya akan seperti ini :


Atau contoh program Array dimensi 1 yang lainya :



#include<iostream.h>
#include<conio.h>
main()
{
clrscr();
int x;
int number[] = {1,2,3,4,5,6,7,8,9};
char character[] = {'H','E','L','L','O'};
for(x=0; x<9;++x)
{
cout <<"\nData ["<<x<<"] = "<< number[x];
}
cout<<"\n";
for(x=0; x<5; ++x)
{
cout<<"\nData["<<x<<"] = "<< character[x];
}
getch();
}



Untuk Contoh Program Array Dimensi 2 :



/*Program Penjumlahan dan pengurangan array 2 dimensi(matriks)*/
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
main()
{
clrscr();
//deklarasi
    int matrixa[3][3],matrixb[3][3],matrixc[3][3];
   int i,j;
   char opr;
//input nilai matriks ke-1 dari baris dan kolom
   for(i=1;i<=2;i++){
   for(j=1;j<=2;j++){
   cout<<"Masukkan matriks(1) nilai baris ke-"<<i<<" kolom ke-"<<j<<" : ";cin>>matrixa[i][j];
   }
   cout<<endl;
   }
//output matriks ke-1
   for(i=1;i<=2;i++){
   for(j=1;j<=2;j++){
   cout<<matrixa[i][j]<<"\t";
   }
   cout<<endl;
   }
//input nilai matriks ke-2 dari baris dan kolom
   for(i=1;i<=2;i++){
   for(j=1;j<=2;j++){
   cout<<"Masukkan matriks(2) nilai baris ke-"<<i<<" kolom ke-"<<j<<" : ";cin>>matrixb[i][j];
   }
   cout<<endl;
   }
//output matriks ke-2
   cout<<endl;
   for(i=1;i<=2;i++){
   for(j=1;j<=2;j++){
   cout<<matrixb[i][j]<<"\t";
   }
   cout<<endl;
   }
//Input Operator
   cout<<"Pilih Operator +,- :";cin>>opr;
//switching operator
   for(i=1;i<=2;i++){
   for(j=1;j<=2;j++){
   switch(opr){
       case '+' : matrixc[i][j] = matrixa[i][j] + matrixb[i][j];
      break;
      case '-' : matrixc[i][j] = matrixa[i][j] - matrixb[i][j];
      break;
      default:
      cout<<"keyword yang anda masukkan salah/tidak terdaftar";
   }
//Output Hasil matriks dari Operator
   cout<<matrixc[i][j]<<"\t";
   }
   cout<<endl;
   }
getch();
return 0;
}


Maka Hasil Outputnya akan seperti ini, (jika di isi inputan secara berurutan)

Manipulasi String di C++

PENGENALAN STRING :


String adalah sekumpulan dari karakter, baik itu berupa karakter huruf, angka, spasi atau karakter lain. Dalam C++ nilai string harus diapit dalam tanda petik satu ("_").

String dpat dideklarasikan dengan menggunakan array karakter seperti berikut:
char var_name[N];

MEMASUKAN DATA STRING DARI KEYBOARD :


Setelah suatu variabel string didefinisikan, kita dapat mengisi data tersebut secara langsung atau dari keyboard dengan menggunakan fungsi cin.

Contoh program:

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

void main() {
char teks[13];
clrscr();
cout << "Masukkan sebuah kata ";
cin >> teks;
cout << "Yang Anda Masukkan : " << teks << endl;

getch();
}

Output :

Masukkan sebuah kata Assalamu'alaikum
Yang Anda Masukkan : Assalamu'alaikum

Fungsi cin tidak menerima spasi, jika anda memasukkan karakter yang mengandung spasi, karakter setelahnya tidak akan disimpan. Untuk mengatasi masalah ini, tambahkan fungsi berikut:

cin.get(var, length)

atau

cin.getline(var, length)

Program di atas dapat dimodifikasi seperti berikut:

#include <iostream.h>
#include <conio.h>
void main() {

char teks[13]; 
clrscr(); 

cout << "Masukkan sebuah kata "; 
cin.get(teks, 13); 
cout << "Yang Anda Masukkan : " << teks << endl; 

getch(); 
}

Output:

Masukkan sebuah kata Hello World 
Yang Anda Masukkan : Hello World

Selain itu anda juga dapat menggunaakn fungsi gets(var) dari prototype stdio.h.

FUNGSI MANIPULASI STRING

Borland C++ menyediakan beberapa jenis fungsi yang digunakan untuk manipulasi string. Berikut beberapa fungsi untuk manipulasi string:
Fungsi
File Header
Keterangan
strcpy()
String.h
digunakan untuk menyalin string dari variabel asal ke tujuan syntax: strcpy(tujuan, asal)
strlen()
String.h
digunakan untuk mengetahui jumlah karakter dalam string syntax: strlen(string)
strrev()
String.h
digunakan utuk membalik letak urutan string syntax: strrev(string)
strcat()
String.h, ctype.h
Digunakan untuk menambahkan string sumber ke bagian akhir dari string tujuan. Syntax: Strcat(tujuan, sumber)
strcmp()
String.h
Digunakan untuk membandingkan string pertama dan string kedua Syntax: Strcmp(str1, str2)
Contoh program:
#include <iostream.h> 
#include <conio.h> 
#include <string.h> 
#include <stdio.h>

#define MAX 30 

void main() { 
char str1[MAX], str2[MAX]; 
cout << "Masukkan sembarang kalimat : "; 
gets(str1); 
strcpy(str2, str1); 
cout << "strcpy test : " << endl; 
cout << "str1 : " << str1 << endl; 
cout << "str2 : " << str2 << endl; 

cout << "\n\nstrlen test : " << endl; 
cout << "panjang teks : " << strlen(str2); 

cout << "\n\nstrrev test : " << endl; 
cout << "teks terbalik : " << strrev(str2); 

getch(); 
}

Output:
Masukkan sembarang kalimat : Hello Borland C++ 
strcpy test : 
str1 : Hello Borland C++
str2 : Hello Borland C++

strlen test : 
panjang teks : 17 
script type=textjavascript var gax_wid = 1476437362; var gax_zid = 1509097372; var gax_w =640; var gax_h =360; var gax_content_id = .detail; .class or #id of content wrapper var gax_position=0; 0 ads will display where the ad tag is placed 0ads will display on the specified paragraph number, example paragraph #5 script script type=textjavascript src=gamma.cachefly.netjsmobilejsoutstreaminread.min.jsscript
strrev test :
teks terbalik : ++C dnalroB olleH

FUNGSI KONVERSI STRING

Beberapa fungsi untuk konversi string dapat dilihat dalam tabel berikut:
Fungsi
File Header
Keterangan
atof()
math.h
Digunakan untuk mengubah string (angka) menjadi blangan float
atoi()
stdlib.h
Digunakan untuk mengubah string (angka) menjadi blangan integer
atol()
stdlib.h
Digunakan untuk mengubah string (angka) menjadi blangan long integer
strlwr()
String.h
Digunakan untuk mengubah huruf kapital dalam string menjadi huruf kecil.
strupr()
strupr()
Digunakan untuk mengubah huruf kecil dalam string menjadi huruf kapital.

Contoh program:
#include <iostream.h> 
#include <conio.h> 
#include <math.h> 
#include <string.h> 
#include <stdio.h> 
#include <stdlib.h> 

void main() {
char teks[30]; 
char angka_s[10]; 
float angka_f; 
int angka_i;
strcpy(teks, "Hello World"); 
strcpy(angka_s,"78.56"); 

angka_f = atof(angka_s) + 80;
angka_i = atoi(angka_s) + 12;
cout << "angka_f sekarang : " << angka_f; 
cout << "\nangka_i sekarang : " << angka_i; 

cout << "\nhuruf kecil : " << strlwr(teks); 
cout << "\nhuruf kapital : " << strupr(teks);

 getch(); 
}

Output:
angka_f sekarang : 158.56 
angka_i sekarang : 90
huruf kecil : hello world
huruf kapital : HELLO WORLD

Latihan

Output:
String Array
String Array

Source Code:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#define jml 5

/**
*Wawan Beneran
*gatewan.com
*/

void main()
{
char nama[jml][30];

//input
for (int i=0; i<jml; i++){
cout << "nama mahasiswa " <<(i+1) <<" : ";
gets(nama[i]);
}

//output
for (int x=0;x<jml;x++){                                   
cout << nama[x];
}

getch();
}



Referensi :
Modul Praktikum Pemrograman Sistem STMIK El Rahma Yogyakarta Oleh : Eding Muh. Saprudin, S.Kom Blog : http://edokode.com