Anda di halaman 1dari 13

Jobsheet 16 - Alpro

Percabangan
Tipe soal

: Tertulis, praktikum

Topik

: Fungsi

Kontributor : Ridwan Rismanto

1. Deskripsi Soal
Jawablah pertanyaan-pertanyaan dibawah ini. Tuliskan jawaban anda ditempat yang sudah
disediakan.
1. Cobalah program dibawah ini, tulis outputnya di tempat yang disediakan.

Jawaban:
Hasil: 17
2. Cobalah program dibawah ini, tulis outputnya di tempat yang disediakan.

Jawaban:
Hasil: 17
3. Fungsi apakah yang terdapat pada soal no. 2, dan apa gunanya?
Jawaban:
Fungsi tambah, gunanya untuk menjumlahkan dua bilangan bulat yang dimasukkan
melalui fungsi dan mengembalikan hasil penjumlahannya
4. Apa perbedaan dari program pada soal no. 1 dan no. 2?
Jawaban:
Pada soal no. 1, fungsi tambah terletak dibawah fungsi main, sehingga fungsi
tambah membutuhkan prototype fungsi yang diletakkan diatas fungsi main.
Sedangkan pada soal no. 2, fungsi tambah terletak diatas fungsi main, sehingga
fungsi tambah tidak membutuhkan prototype fungsi agar bisa dijalankan.
5. Modifikasi program pada no. 2, ubah fungsi tambah() menjadi fungsi kali() yang
mengalikan dua bilangan, kemudian memanfaatkan fungsi tersebut, tampilkan ke
layar hasil perkalian 8 * 9.
Jawaban:
#include <stdio.h>
int kali(int a, int b)
{

int hasil;
hasil = a * b;
return hasil;
}
int main()
{
int x;
x = kali(8, 9);
printf("Hasil: %d", x);
return 0;
}

6. Carilah kesalahan pada program dibawah ini:

Jawaban:
a. Manakah kode program yang salah pada program diatas?
Pada fungsi Fungsi, tidak terdapat perintah return untuk mengembalikan nilai
int
Pada baris 12, pemanggilangan fungsi Fungsi tidak terdapat parameter
b. Mengapa kode tersebut salah?
fungsi Fungsi bertipe int, sehingga membutuhkan perintah return untuk
mengembalikan nilai int.
fungsi Fungsi memiliki sebuah parameter bertipe int bernama a, sehingga
ketika akan melakukan pemanggilan fungsi, maka kita harus menyertakan parameter
untuk diinputkan ke fungsi

7. Buatlah fungsi yang memiliki parameter 3 buah bilangan kemudian mengembalikan


hasil rata-rata dari ketiga bilangan tersebut.
Buat header fungsinya seperti berikut:
float rataRata(float bil1, float bil2, float bil3)
Jawaban:
#include <stdio.h>
float rataRata(float bil1, float bil2, float bil3)
{
float jml = bil1 + bil2 + bil3;
return jml / 3;

}
int main()
{
float x;
x = rataRata(5, 12, 5);
printf("Hasil: %f", x);
return 0;
}
8. Cobalah program dibawah ini, tulis outputnya di tempat yang disediakan.

Jawaban:
Hasilnya 1032
9. Cobalah program dibawah ini, tulis outputnya di tempat yang disediakan.

Jawaban:
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
10.Apa yang dimaksud dengan tipe void?

Jawaban:
Fungsi yang memiliki tipe void tidak akan mengembalikan nilai apapun

11.Cobalah program dibawah ini, tulis outputnya di tempat yang disediakan.

Jawaban:
Halo dunia!

12.Modifikasi program no. 11 agar menampilkan nama lengkap anda ke layar.


Jawaban:
#include <stdio.h>
void sayHello()
{
printf("M. Nindra Zaka");
}
int main()
{
sayHello();
return 0;
}
13.Buatlah program yang terdapat beberapa fungsi :
- tambah() yang menambah dua bilangan
- kurang() yang mengurangi dua bilangan
- kali() yang mengalikan dua bilangan
- bagi() yang membagi dua bilangan
Kemudian dengan memanfaatkan fungsi tersebut, hitung x dengan rumus: x = ((x *
10) - (x + 10)) / 5.
Input
x: 10
X: 9

Output
Hasil x: 16
Hasil x: 14.2

Jawaban:
#include <stdio.h>
int tambah(int a, int b)
{
return a + b;
}
int kurang(int a, int b)
{
return a - b;
}
int kali(int a, int b)
{
return a * b;
}
float bagi(int a, int b)
{
return (float) a / b;
}
int main()
{
int x;
printf("masukkan x : ");
scanf("%d", &x);
float hasil;
hasil = bagi(kurang(kali(x, 10), tambah(x, 10)), 5);
printf("hasil x: %f", hasil);
return 0;
}
14.Carilah kesalahan pada program dibawah ini. Program dibawah ini jika di-compile
memang tidak error. Akan tetapi ketika dijalankan maka akan not responding/hang.
Carilah kesalahannya:

Jawaban:
c. Manakah kode program yang salah pada program diatas?
Yang salah adalah pada fungsiRekursif tidak ada kondisi untuk menghentikan
fungsiRekursif tersebut, sehingga fungsi tersebut akan terus berjalan saat
dipanggil pada baris 17
d. Mengapa kode tersebut salah?
fungsiRekursif merupakan fungsi yang akan memanggil dirinya sendiri,
seharusnya, apabila akan membuat fungsiRekursif kita perlu menyertakan
kondisi agar fungsi tersebut berhenti memanggil dirinya sendiri, dalam contoh
program diatas, fungsiRekursif tidak memiliki kondisi untuk berhenti,
sehingga apabila dijalankan program tersebut akan menjadi not
responding/hang, karena terjadi infinite loop saat pemanggilan
fungsiRekursif

15.Buatlah fungsi yang memiliki parameter 2 buah bilangan x dan y, lalu


mengembalikan nilai xy
Buat header fungsinya seperti berikut:
int pangkat(int x, int y)
Jawaban:
#include <stdio.h>
int pangkat(int x, int y);
int main()
{

//mencetak hasil 3 pangkat 5


printf("%d", pangkat(3, 5));
return 0;
}
int pangkat(int x, int y)
{
if(y == 0)
{
return 1;
}
else
{
return x * pangkat(x, y - 1);
}
}
16.Buatlah fungsi yang memiliki parameter 1 buah bilangan N, lalu mengembalikan nilai
faktorial dari N. Rumus faktorial:
N! = N * (N 1) * (N 2) * * (N n) dan 0! = 1
Buat header fungsinya seperti berikut:
int faktorial(int N)
Jawaban:
#include <stdio.h>
int faktorial(int N);
int main()
{
//mencetak faktorial dari 5
printf("%d", faktorial(5));
return 0;
}
int faktorial(int N)
{
if(N == 0)
{
return 1;
}
else
{
return N * faktorial(N - 1);
}
}

17.Buatlah fungsi program yang dapat mengubah bilangan yang dimasukkan (0


999.999) lalu menampilkan ke layar bilangan tersebut dalam sebuah kalimat
Input
1500
378952

Output
seribu lima ratus
tiga ratus tujuh puluh delapan ribu sembilan
ratus lima puluh dua

Jawaban:
#include <stdio.h>
#include <string.h>
void satuan(int n);
void terbilang(int n);
int main()
{
int angka;
printf("Masukkan angka : ");
scanf("%d", &angka);
if(angka == 0)
{
printf("nol");
}
else if(angka < 0)
{
printf("angka tidak boleh negatif");
}
else if(angka > 999999)
{
printf("angka melebihi ketentuan");
}
else
{
terbilang(angka);
}
return 0;
}
void satuan(int n)
{
if(n == 1)
{
printf(" satu ");
}
else if(n == 2)

{
printf(" dua ");
}
else if(n == 3)
{
printf(" tiga ");
}
else if(n == 4)
{
printf(" empat ");
}
else if(n == 5)
{
printf(" lima ");
}
else if(n == 6)
{
printf(" enam ");
}
else if(n == 7)
{
printf(" tujuh ");
}
else if(n == 8)
{
printf(" delapan ");
}
else if(n == 9)
{
printf(" sembilan ");
}
else if(n == 10)
{
printf(" sepuluh ");
}
else if(n == 11)
{
printf(" sebelas ");
}
}
void terbilang(int n)
{
if(n <= 11)
{
satuan(n);
}
else if(n <= 19)
{
satuan(n % 10);
printf("belas");

}
else if(n <= 99)
{
satuan(n / 10);
printf("puluh");
satuan(n % 10);
}
else if(n <= 199)
{
printf("seratus");
terbilang(n % 100);
}
else if(n <= 999)
{
terbilang(n / 100);
printf("ratus");
terbilang(n % 100);
}
else if(n <= 1999)
{
printf("seribu");
terbilang(n % 1000);
}
else if(n <= 999999)
{
terbilang(n / 1000);
printf("ribu");
terbilang(n % 1000);
}
}
Time Limit
Memory
Limit

180
-

2. Jawaban
Jawaban berupa kode program.

3. Score
Total Score

Feedback

Anda mungkin juga menyukai