FUNGSI
Soal & Penyelesaian
1.
Demonstrasikanlah pendeklarasian, pendefinisian, dan
penggunaan sebuah fungsi dalam suatu program C++.
Penyelesian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
//DeklarasiDefinisiFungsi.cpp
#include <iostream>
#include <conio.h>
int Luas(int
panjang, int lebar); //prototipe
fungsi
int main()
{
using
std::cout;
using
std::cin;
int
panjangHalaman;
int
lebarHalaman;
int
luasHalaman;
cout << "\nBerapa lebar halaman Anda? ";
cin >> lebarHalaman;
cout << "\nBerapa panjang halaman Anda? ";
cin >> panjangHalaman;
luasHalaman= Luas(panjangHalaman,
lebarHalaman);
cout << "\nHalaman Anda memiliki luas ";
cout << luasHalaman;
cout << " meter persegi\n\n";
getch();
return
0;
}
int Luas(int pjg, int lbr)
{
return
pjg * lbr;
}
|
Berapa lebar halaman Anda? 23
Berapa panjang halaman Anda? 34
Halaman Anda memiliki luas 782 meter persegi
2.
Demonstrasikanlan penggunakan variabel dan parameter
lokal.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
//VariabelParameterLokal.cpp
#include <iostream>
#include <conio.h>
float Konversi(float);
int main()
{
using
namespace std;
float
suhuFer;
float
suhuSel;
cout << "Masukkan suhu dalam Fahrenheit: ";
cin >> suhuFer;
suhuSel = Konversi(suhuFer);
cout << "\nBerikut adalah suhu dalam Celcius: ";
cout << suhuSel << endl;
getch();
return
0;
}
float Konversi(float
suhuFer)
{
float
suhuSel;
suhuSel = ((suhuFer - 32) * 5) / 9;
return
suhuSel;
}
|
Masukkan suhu dalam Fahrenheit: 123
Berikut adalah suhu dalam Celcius: 50.5556
3.
Demonstrasikanlah penggunaan variabel yang memiliki
skop blok.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
//VariabelSkopBlok.cpp
#include <iostream>
#include <conio.h>
void fungsiKu();
int main()
{
int
x = 5;
std::cout << "\nDalam main x adalah: "
<< x;
fungsiKu();
std::cout << "\nKembali dalam main, x adalah: "
<< x;
getch();
return
0;
}
void fungsiKu()
{
int
x = 8;
std::cout << "\nDalam fungsiKu, x lokal:
" << x << std::endl;
{
std::cout << "\nDalam blok di dalam fungsiKu, x adalah: "
<< x;
int
x = 9;
std::cout << "\nx lokal: " << x;
}
std::cout << "\nDi luar blok, di dalam fungsiKu, x: "
<< x << std::endl;
}
|
Dalam main x adalah: 5
Dalam fungsiKu, x lokal: 8
Dalam blok di dalam fungsiKu, x adalah: 8
x lokal: 9
Di luar blok, di dalam fungsiKu, x: 8
Kembali dalam main, x adalah: 5
4.
Demonstrasikanlah pelewatan dengan nilai pada sebuah
program C++.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
//FungsiPelewatanDenganNilai.cpp
#include <iostream>
#include <conio.h>
using namespace std;
void tukar(int x, int y);
int main()
{
int
x = 5, y = 10;
cout << "Main. Sebelum tukar, x:
" << x << " y: " << y << endl;
tukar(x,y);
cout << "Main. Setelah tukar, x:
" << x << " y: " << y << endl;
getch();
return
0;
}
void tukar (int x, int y)
{
int
temp;
cout << "Tukar. Sebelum tukar, x: "
<< x << " y:
" << y << endl;
temp = x;
x = y;
y = temp;
cout << "Tukar. Setelah tukar, x: "
<< x << " y: " << y << endl;
}
|
Main. Sebelum tukar, x: 5 y: 10
Tukar. Sebelum tukar, x: 5 y: 10
Tukar. Setelah tukar, x: 10 y: 5
Main. Setelah tukar, x: 5 y: 10
5.
Demonstrasikanlah penggunaan variabel lokal dan
variabel global.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
//VariabelLokalGlobal.cpp
#include <iostream>
#include <conio.h>
void fungsiKu(); // prototipe
int x = 5, y = 7; // variabel global
int main()
{
using
namespace std;
cout << "x dari main: " << x << endl;
cout << "y dari main: " << y << endl << endl;
fungsiKu();
cout << "Kembali dari fungsiKu!" << endl << endl;
cout << "x dari main: " << x << endl;
cout << "y dari main: " << y << endl;
getch();
return
0;
}
void fungsiKu()
{
using
namespace std;
int
y = 10;
cout << "x dari fungsiKu: " << x << endl;
cout << "y dari fungsiKu: " << y << endl << endl;
}
|
x dari main: 5
y dari main: 7
x dari fungsiKu: 5
y dari fungsiKu: 10
Kembali dari fungsiKu!
x dari main: 5
y dari main: 7
6.
Demonstrasikanlah penggunaan beberapa statemen return.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
//BeberapaStatemenReturn.cpp
#include <iostream>
#include <conio.h>
int Pengganda(int
YangDigandakan);
int main()
{
using
std::cout;
int
hasil = 0;
int
masukan;
cout << "Masukkan sebuah angka antara 0 dan 10000 untuk
digandakan: ";
std::cin >> masukan;
cout << "\nSebelum Pengganda dipanggil... ";
cout << "\nmasukan: " << masukan <<
" digandakan: "
<< hasil << "\n";
hasil = Pengganda(masukan);
cout << "\nKembali dari Pengganda...\n";
cout << "\nmasukan: " << masukan
<< " digandakan: "
<< hasil << "\n";
getch();
return
0;
}
int Pengganda(int
asli)
{
if
(asli <= 10000)
return
asli * 2;
else
return
-1;
std::cout << "Anda tidak bisa sampai di sini!\n";
}
|
Masukkan sebuah angka antara 0 dan 10000 untuk
digandakan: 345
Sebelum Pengganda dipanggil...
masukan: 345 digandakan: 0
Kembali dari Pengganda...
masukan: 345 digandakan: 690
7.
Demonstrasikanlah penggunaan nilai parameter default
dalam sebuah program C++.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
//NilaiParameterDefault.cpp
#include <iostream>
#include <conio.h>
int LuasKubik(int
panjang, int lebar = 25, int tinggi = 1);
int main()
{
int
panjang = 100;
int
lebar = 50;
int
tinggi = 2;
int
luas;
luas = LuasKubik(panjang, lebar, tinggi);
std::cout << "Luas pertama sama dengan: "
<< luas << "\n";
luas = LuasKubik(panjang, lebar);
std::cout << "Kedua kali luas sama dengan: "
<< luas << "\n";
luas = LuasKubik(panjang);
std::cout << "Ketiga kali luas sama dengan: "
<< luas << "\n";
getch();
return
0;
}
int LuasKubik(int
panjang, int lebar, int tinggi)
{
return
(panjang * lebar * tinggi);
}
|
Luas pertama sama dengan: 10000
Kedua kali luas sama dengan: 5000
Ketiga kali luas sama dengan: 2500
8.
Demonstrasikanlah polimorfisme fungsi dalam sebuah
program C++.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
//PolimorfismeFungsi.cpp
#include <iostream>
#include <conio.h>
int Double(int);
long Double(long);
float Double(float);
double Double(double);
using namespace std;
int main()
{
int
intKu = 6500;
long
longKu = 65000;
float
floatKu = 6.5F;
double
doubleKu = 6.5e20;
int
doubledInt;
long
doubledLong;
float
doubledFloat;
double
doubledDouble;
cout << "intKu: " << intKu << "\n";
cout << "longKu: " << longKu << "\n";
cout << "floatKu: " << floatKu << "\n";
cout << "doubleKu: " << doubleKu << "\n";
doubledInt = Double(intKu);
doubledLong = Double(longKu);
doubledFloat = Double(floatKu);
doubledDouble = Double(doubleKu);
cout << "doubledInt: " << doubledInt << "\n";
cout << "doubledLong: " << doubledLong << "\n";
cout << "doubledFloat: " << doubledFloat <<
"\n";
cout << "doubledDouble: " << doubledDouble <<
"\n";
getch();
return
0;
}
int Double(int
original)
{
cout << "Dalam Double(int)\n";
return
2 * original;
}
long Double(long
original)
{
cout << "Dalam Double(long)\n";
return
2 * original;
}
float Double(float
original)
{
cout << "Dalam Double(float)\n";
return
2 * original;
}
double Double(double
original)
{
cout << "Dalam Double(double)\n";
return
2 * original;
}
|
intKu: 6500
longKu: 65000
floatKu: 6.5
doubleKu: 6.5e+020
Dalam Double(int)
Dalam Double(long)
Dalam Double(float)
Dalam Double(double)
doubledInt: 13000
doubledLong: 130000
doubledFloat: 13
doubledDouble: 1.3e+021
9.
Demonstrasikanlah fungsi inline dalam sebuah program
C++.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
//fungsiInline.cpp
#include <iostream>
#include <conio.h>
inline int Double(int);
int main()
{
int
target;
using
std::cout;
using
std::cin;
using
std::endl;
cout << "Masukkan sebuah angka: ";
cin >> target;
cout << "\n";
target = Double(target);
cout << "Target: " << target << endl;
target = Double(target);
cout << "Target: " << target << endl;
target = Double(target);
cout << "Target: " << target << endl;
getch();
return
0;
}
int Double(int
target)
{
return
2*target;
}
|
Masukkan sebuah angka: 23
Target: 46
Target: 92
Target: 184
10.
Demonstrasikanlah rekursi menggunakan deret Fibonacci.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
//RekursiDeretFibonacci.cpp
#include <iostream>
#include <conio.h>
int fib (int n);
int main()
{
int n, jawaban;
std::cout << "Masukkan angka yang akan dihitung:
";
std::cin >> n;
std::cout << "\n\n";
jawaban = fib(n);
std::cout << jawaban <<
" adalah angka Fibonacci ke-" << n;
getch();
return
0;
}
int fib (int n)
{
std::cout << "Memproses fib(" << n << ")... ";
if (n < 3 )
{
std::cout << "Menghasilkan 1!\n";
return (1);
}
else
{
std::cout << "Memanggil fib(" << n-2 << ") ";
std::cout << "dan fib(" << n-1 << ").\n";
return(
fib(n-2) + fib(n-1));
}
}
|
Masukkan angka yang akan dihitung: 8
Memproses fib(8)... Memanggil fib(6) dan
fib(7).
Memproses fib(6)... Memanggil fib(4) dan
fib(5).
Memproses fib(4)... Memanggil fib(2) dan
fib(3).
Memproses fib(2)... Menghasilkan 1!
Memproses fib(3)... Memanggil fib(1) dan
fib(2).
Memproses fib(1)... Menghasilkan 1!
Memproses fib(2)... Menghasilkan 1!
Memproses fib(5)... Memanggil fib(3) dan
fib(4).
Memproses fib(3)... Memanggil fib(1) dan
fib(2).
Memproses fib(1)... Menghasilkan 1!
Memproses fib(2)... Menghasilkan 1!
Memproses fib(4)... Memanggil fib(2) dan
fib(3).
Memproses fib(2)... Menghasilkan 1!
Memproses fib(3)... Memanggil fib(1) dan
fib(2).
Memproses fib(1)... Menghasilkan 1!
Memproses fib(2)... Menghasilkan 1!
Memproses fib(7)... Memanggil fib(5) dan
fib(6).
Memproses fib(5)... Memanggil fib(3) dan
fib(4).
Memproses fib(3)... Memanggil fib(1) dan
fib(2).
Memproses fib(1)... Menghasilkan 1!
Memproses fib(2)... Menghasilkan 1!
Memproses fib(4)... Memanggil fib(2) dan
fib(3).
Memproses fib(2)... Menghasilkan 1!
Memproses fib(3)... Memanggil fib(1) dan
fib(2).
Memproses fib(1)... Menghasilkan 1!
Memproses fib(2)... Menghasilkan 1!
Memproses fib(6)... Memanggil fib(4) dan
fib(5).
Memproses fib(4)... Memanggil fib(2) dan
fib(3).
Memproses fib(2)... Menghasilkan 1!
Memproses fib(3)... Memanggil fib(1) dan
fib(2).
Memproses fib(1)... Menghasilkan 1!
Memproses fib(2)... Menghasilkan 1!
Memproses fib(5)... Memanggil fib(3) dan
fib(4).
Memproses fib(3)... Memanggil fib(1) dan
fib(2).
Memproses fib(1)... Menghasilkan 1!
Memproses fib(2)... Menghasilkan 1!
Memproses fib(4)... Memanggil fib(2) dan
fib(3).
Memproses fib(2)... Menghasilkan 1!
Memproses fib(3)... Memanggil fib(1) dan
fib(2).
Memproses fib(1)... Menghasilkan 1!
Memproses fib(2)... Menghasilkan 1!
21 adalah angka Fibonacci ke-8
11.
Tulislah sebuah program C++ untuk mendemonstrasikan pendefinisian
dan pemanggilan fungsi.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
//pendefinisianDanPemanggilanFungsi.cpp
#include <iostream>
#include <conio.h>
using namespace std;
double biaya_total(int
jum_barang, double harga_barang);
int main( )
{
double
harga, bayar;
int
jumlah;
cout << "Masukkan jumlah item yang dibeli: ";
cin >> jumlah;
cout << "Masukkan harga per item Rp. ";
cin >> harga;
bayar = biaya_total(jumlah, harga);
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
cout << "Sebanyak " << jumlah << " item dengan harga Rp. "
<< harga <<
".\n"
<< "Pembayaran, termasuk pajak, adalah Rp. " << bayar
<< endl;
getch();
return
0;
}
double biaya_total(int
jum_barang, double harga_barang)
{
const
double PERSEN_PAJAK = 0.05;
double
subtotal;
subtotal = harga_barang * jum_barang;
return
(subtotal + subtotal*PERSEN_PAJAK);
}
|
Masukkan jumlah item yang dibeli: 10
Masukkan harga per item Rp. 25500
Sebanyak 10 item dengan harga Rp. 25500.00.
Pembayaran, termasuk pajak, adalah Rp.
267750.00
12. Tulislah sebuah
program C++ yang melibatkan penggunaan variabel global.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
//variabelGlobal.cpp
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;
//Variabel global
const double PI =
3.14159;
double luas(double
radius);
double volume(double
radius);
int main( )
{
double
keduaRadius, luas_lingkaran, volume_sphere;
cout << "Masukkan radius untuk kedua lingkaran\n"
<< "dan sphere (dalam cm): ";
cin >> keduaRadius;
luas_lingkaran = luas(keduaRadius);
volume_sphere = volume(keduaRadius);
cout << "Radius = "
<< keduaRadius << " cm\n"
<< "luas lingkaran = " << luas_lingkaran
<< " cm^2\n"
<< "Volume sphere = " << volume_sphere
<<
" cm^3\n";
getch();
return
0;
}
double luas(double
radius)
{
return
(PI * pow(radius, 2));
}
double volume(double
radius)
{
return
((4.0/3.0) * PI * pow(radius, 3));
}
|
Masukkan radius untuk kedua lingkaran
dan sphere (dalam cm): 25
Radius = 25 cm
luas lingkaran = 1963.49 cm^2
Volume sphere = 65449.8 cm^3
13. Tulislah sebuah
program C++ yang mendemonstrasikan pengoverloadan fungsi.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
//pengoverloadanFungsi.cpp
#include <iostream>
#include <conio.h>
double rerata(double n1, double n2);
double rerata(double n1, double n2, double n3);
int main( )
{
using
namespace std;
cout << "Rerata dari 2.0, 2.5, dan 3.0 adalah "
<< rerata(2.0, 2.5, 3.0)
<< endl;
cout << "Rerata dari 4.5 dan 5.5 adalah "
<< rerata(4.5, 5.5) <<
endl;
getch();
return
0;
}
double rerata(double
n1, double n2)
{
return
((n1 + n2)/2.0);
}
double rerata(double
n1, double n2, double n3)
{
return
((n1 + n2 + n3)/3.0);
}
|
Rerata dari 2.0, 2.5, andand 3.0 adalah 2.5
Rerata dari 4.5 dan 5.5 adalah 5
14. Tulislah sebuah
program C++ yang melibatkan pemanggilan lewat referensi.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
//pemanggilanLewatReferensi.cpp
#include <iostream>
#include <conio.h>
void baca_angka(int&
masukan1, int& masukan2);
void tukar_nilai(int&
variabel1, int& variabel2);
void tampil_hasil(int
keluaran1, int keluaran2);
int main( )
{
int
angka_pertama, angka_kedua;
baca_angka(angka_pertama, angka_kedua);
tukar_nilai(angka_pertama, angka_kedua);
tampil_hasil(angka_pertama, angka_kedua);
getch();
return
0;
}
void baca_angka(int&
masukan1, int& masukan2)
{
using
namespace std;
cout << "Masukkan dua integer: ";
cin >> masukan1 >> masukan2;
}
void tukar_nilai(int&
variabel1, int& variabel2)
{
int
temp;
temp = variabel1;
variabel1 = variabel2;
variabel2 = temp;
}
void tampil_hasil(int keluaran1, int keluaran2)
{
using
namespace std;
cout << "Dalam urutan terbalik, angka-angka tersebut adalah: "
<< keluaran1 << "
" << keluaran2 << endl;
}
|
Masukkan dua integer: 23 45
Dalam urutan terbalik, angka-angka tersebut
adalah: 45 23
15. Tulislah sebuah
program C++ yang melibatkan fungsi yang memanggil fungsi lain.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
//fungsiPanggilFungsiLain.cpp
#include <iostream>
#include <conio.h>
void baca_masukan(int&
masukan1, int& masukan2);
void tukar_nilai(int&
variabel1, int& variabel2);
void susun(int&
n1, int& n2);
void beri_hasil(int
keluaran1, int keluaran2);
int main( )
{
int
angka_pertama, angka_kedua;
baca_masukan(angka_pertama, angka_kedua);
susun(angka_pertama, angka_kedua);
beri_hasil(angka_pertama, angka_kedua);
getch();
return
0;
}
void baca_masukan(int&
masukan1, int& masukan2)
{
using namespace std;
cout << "Masukkan dua integer: ";
cin >> masukan1 >> masukan2;
}
void tukar_nilai(int&
variabel1, int& variabel2)
{
int
temp;
temp = variabel1;
variabel1 = variabel2;
variabel2 = temp;
}
void susun(int&
n1, int& n2)
{
if
(n1 > n2)
tukar_nilai(n1, n2);
}
void beri_hasil(int
keluaran1, int keluaran2)
{
using namespace std;
cout << "Dalam
tatanan menaik, kedua angka tersebut adalah: "
<< keluaran1 << "
" << keluaran2 << endl;
}
|
Masukkan dua integer: 23 45
Dalam tatanan menaik, kedua angka tersebut
adalah: 23 45
No comments:
Post a Comment