struct Mahasiswa
{
char Nim[9];
char Nama[25];
char Alamat[40];
short Umur;
};
void Baca(Mahasiswa *Mhs);
void Cetak(Mahasiswa *Mhs);
main()
{
Mahasiswa Mhs;
cout<<"Membaca Nilai Anggota Struktur \n";
Baca (&Mhs);
cout<<"\nMencetak Nilai Anggota Struktur ";
Cetak(&Mhs);
getch();
}
void Baca(Mahasiswa *Mhs)
{
cout<<"Nim : ";
cin.getline(Mhs->Nim,9);
cout<<"Nama : ";
cin.getline(Mhs->Nama,25);
cout<<"Alamat : ";
cin.getline(Mhs->Alamat,40);
cout<<"Umur : ";
cin>>Mhs->Umur;
}
void Cetak(Mahasiswa *Mhs)
{
cout<<"\nNIM : "<< Mhs->Nim;
cout<<"\nNama : "<< Mhs->Nama;
cout<<"\nAlamat : "<< Mhs->Alamat;
cout<<"\nUmur : "<< Mhs->Umur;
}
Baca juga : Pengertian dan Contoh Program Struct pada C++
9. Fungsi Rekursif
Fungsi rekursif adalah suatu fungsi yang memanggil dirinya sendiri. Pada beberapa persoalan, fungsi rekursif sangat berguna karena mempermudah solusi. Namun demikian, fungsi rekursif juga memiliki kelemahan, yakni memungkinkan terjadinya overflow pada stack, yang berarti stack tidak lagi mampu menangani permintaan pemanggilan fungsi karena kehabisan memori (stack adalah area memori yang dipakai untuk variabel lokal untuk mengalokasikan memori ketika suatu fungsi dipanggil. Oleh sebab itu harus ada jaminan bahwa proses rekursif akan berhenti pada suatu waktu tertentu, yang menyebabkan pemanggilan fungsi berhenti. Oleh karena itu, jika bisa diselesaikan dengan metode iteratif, gunakanlah metode iteratif.
Bentuk umum fungsi rekursif:
return_data_type function_name(parameter_list)
{
...
function_name(parameter_list);
...
}
Salah satu penggunaan rekursif biasanya digunakan dalam menghitung perpangkatan dua buah bilangan, faktorial dari suatu bilangan bulat, menentukan suku pada deret fibonacci, Tower Hanoi, dan lain sebagainya. Dalam buku ini hanya memberi contoh program perpangkatan dua buah bilangan.
Untuk menghitung perpangkatan dua buah bilangan (x^n) secara rekursif dilakukan dengan cara berikut:
- Xn = x, jika n=1
- Xn = x * xn-1 jika n ≠ 1
/* Program Fungsi Overloading
Nama File : Lat_Fungsi_09 */
#include
#include
#include
int Pangkat(int x, int n);
void main()
{
int x, n;
cout<<"Masukkan Nilai x = "; cin>>x;
cout<<"Masukkan Nilai n = "; cin>>n;
cout<10. Fungsi Overloading
Mendefinisikan beberapa fungsi yang memiliki nama yang sama tetapi parameter yang berbeda. Kompiler C akan memanggil fungsi yang berdasarkan tipe data argumennya atau banyaknya argumen dan tipe data argumen pada pemanggilan fungsinya.
Berikut program overloading dengan memanggil fungsi berdasarkan tipe data argumennya.
/* Program Fungsi Overloading
Nama File : Lat_Fungsi_10 */
#include
#include(stdio.h)
#include
int Kali(nt x);
long Kali(long y);
double Kali(double z);
void main()
{
cout<<"Hasil Fungsi Overloading Kali(77777) = "<Pada saat pemanggilan fungsi Kali(77777) maka kompiler akan memanggil fungsi double Kali(double x) karena 77777 adalah termasuk range tipe data long(long int). Pemanggilan Kali(6) juga akan memanggil fungsi int Kali(int x) sesuai dengan tipe data argumen x. Demikian juga halnya pemanggilan fungsi Kali(9.3) akan memanggil fungsi double Kali(double x).
Sedangkan program berikut ini akan memperlihatkan pemanggilan fungsi overloading berdasarkan argumen dan tipe data argumennya.
/* Program Fungsi Overloading
Nama File : Lat_Fungsi_11 */
#include
#include
#include
int Kali(int x);
int Kali(int x, int y);
double Kali(int x, double y);
void main()
{
cout<<" Hasil Fungsi Overloading Kali(6,7)="<Pemanggilan fungsi Kali(6,7) maka akan memanggil int Kali(int x, int y) karena banyaknya argumen ada dua dan tipe data yang bersesuaian sama. Pemanggilan fungsi Kali(6) maka akan memanggil int Kali(int x) karena banyaknya argumen ada satu dengan tipe data yang sama. pemanggilan fungsi Kali(3,9.3) maka akan memanggil double Kali(int x, double y) karena banyaknya argumen ada dua dengan tipe data yang bersesuaian sama.