Anda di halaman 1dari 14

2016

PRAKTIKUM : 14

BAHASA C : BAB FUNGSI SUB-BAB: PARAMETER FORMAL &


AKTUAL
DWI SETIYA NINGSIH // 210 315 70 25

[COMPANY NAME] | [Company address]


PRAKTIKUM 14 - > PARAMETER FORMAL & AKTUAL

1. a. Definisikan sebuah fungsi ganjil() yang memilliki sebuah parameter bilangan bulat
dan mengembalikan nilai 1 jika parameter yang diberikan adalah bilangan ganjil dan
mengembalikan nilai 0 jika parameter tsb bukan bilangan ganjil
b. Tulislah prototipe fungsi untuk fungsi tersebut.
c. Buat function main untuk memanggil function ganjil() yang menerima input sebuah
bilangan bulat yang akan ditentukan ganjil/genapnya. Tampilkan pesannya (ganjil/genap)
dalam main().
Penyelesaian:

a) Source code (listing program)


#include <stdio.h>

int ganjil(int);

main()
{
int bil,bilGanjil;

printf("\n\t*******************************************
***************\n");
printf("\t\tCHECK BILANGAN GANJIL GENAP DENGAN
FUNGSI");
printf("\n\t*******************************************
***************\n");

printf("Masukkan bilangan\t:");
scanf("%d",&bil);
printf("\n");

bilGanjil = ganjil(bil);
if(bilGanjil)
printf("Bilangan %d adalah bilangan GANJIL\n\n",bil);
else
printf("Bilangan %d adalah bilangan GENAP\n\n",bil);
}

int ganjil(checking)
{
return checking % 2;
}

b) SS Program
c) Analisis Program
bilangan ganjil adalah bilangan yang apabila dibagi 3 hasil
b a g i n y a 2 . d e n g a n k o n s e p tersebut maka dibuatlah fungsi untuk
mengecek suatu bilangan ganjil atau bukan. Fungsi tersebut bertipe integer
yang apabila bilangan yang dimasukkan ke parameter adalah bilangan ganjil maka
memberikan return value 1 bila tidak maka 0. Hasil return value tadi
diseleksi kembali menggunakan pernyataan bilGanjil di fungsi pemanggil.

2. Buatlah program untuk menghitung faktorial dengan menggunakan 2 fungsi (main()


dan faktorial()). Fungsi faktorial() memberikan return value bertipe long int yang akan
dicetak ke layar dalam fungsi main().
Contoh Input : n = 4
Output : Hasil faktorialnya = 24
Penyelesaian:

a) Source code (listing program)


#include <stdio.h>

long faktorial(long bil);

main()
{
long Sum,bil;
printf("\n\t*****************************************
*****************\n");
printf("\t\tFUNGSI UNTUK MENAMPILKAN JUMLAH
FACTORIAL");
printf("\n\t*****************************************
*****************\n");

printf("\nMasukkan bilangan \t: ");


scanf("%ld",&bil);

Sum = faktorial(bil);

printf("\nJumlah faktorial dari %ld adalah


%ld\n\n",bil,Sum);
}

long faktorial(long bil)


{
int i,sumF = 1;

for(i=bil;i>0;i--)
{
sumF = sumF * i;
}
return sumF;
}

b) SS Program

c) Analisis Program
Faktorial merupakan hasil kali seluruh bilangan mulai dari 1 hingga
bilangan itu sendiri, k a r e n a p a s t i h a s i l f a c t o r i a l t i d a k s e d i k i t ,
m a k a d i g u n a k a n t i p e d a t a l o n g y a n g b i a s menyimpan lebih
banyak digit bilangan. Pada program ini, fungsi akan menerima bilangan
yang akan dicari faktorialnya dari parameter. Kemudian
memprosesnya dengan cara melakukan pengulangan. Selanjutnya
j u m l a h d a r i f a c t o r i a l t a d i d i k e m b a l i k a n k e f u n g s i pemangil untuk
ditampilkan ke layar.

3. Buatlah fungsi prima(), yang memberikan nilai balik 1 bila bilangan yang dimasukkan
adalah prima, dan 0 bila bukan bilangan prima.
Contoh Input : n = 23
Output : 23 adalah bilangan prima ungkapan
Penyelesaian:

a) Source code (listing program)


#include <stdio.h>

int prima(int bil);

main()
{
int bil,cekPrima;

printf("\n\t*****************************************
*****************\n");
printf("\t\tPENGECEKAN BILANGAN PRIMA MENGGUNAKAN
FUNGSI");
printf("\n\t*****************************************
*****************\n");
printf("\nMasukkan bilangan \t= ");
scanf("%d",&bil);

cekPrima = prima(bil);

if(cekPrima)
printf("\n %d adalah bilangan PRIMA\n\n",bil);
else
printf("\n %d BUKAN bilangan PRIMA\n\n",bil);

getch();
}

int prima(int bil)


{
int bagi,faktor = 0;
for(bagi = 1;bagi <= bil;bagi++)
{
if(bil % bagi == 0)
faktor++;
}

if(faktor <= 2)
return 1;
else
return 0;
}

b) SS Program

c) Analisis Program
Bilangan Prima hanyalah bilangan yang hanya mempunyai 3 faktor
yaitu bilangan 1 dan bilangan itu sendiri. Maka dari itu pada program kali ini
fungsi melakukan looping untuk mengecheck apakah faktor dari bilangan
tersebut kurang dari atau sama dengan 3 atau tidak. Bila iya maka me-return 1
yang berarti bilangan Prima, bila tidak maka me-return 0 yang berarti bukan
bilangan prima

4. a. Definisikan sebuah fungsi radian() yang berfungsi untuk mengkonversi besaran


sudut dari derajat ke radian dengan rumus sbb : rad = drjt / 180.0f * PI. Fungsi tersebut
memiliki sebuah parameter yaitu derajat yang akan dikonversi, dan memiliki sebuah
return value berupa hasil konversi dalam radian.
b. Tulislah prototipe fungsi untuk fungsi tersebut.
c. Buat function main untuk memanggil function radian(), setelah sebelumnya meminta
masukan nilai derajat yang akan dikonversi.
d. Definisikan PI sebagai sebuah konstanta yang bernilai : 3.14159f
Contoh Input : derajat = 90
Output : derajat dalam radian = 0.5
Penyelesaian:

a) Source code (listing program)


#include <stdio.h>
#define PHI 3.14159f;
float radian(float);

main()
{
float derajad,hslRad;

printf("\n\t*****************************************
*****************\n");
printf("\t\tKONVERSI BESARAN SUDUT MENGGUNAKAN
FUNGSI");
printf("\n\t*****************************************
*****************\n");
printf("\n\t\tKonversi dari besaran sudut Derajat ke
Radian\n\n\n");
printf("\nTuliskan nilai Derajat \t= ");
scanf("%f",&derajad);

hslRad = radian(derajad);

printf("Hasil konversi RADIAN :\t %f\n\n",hslRad);

getch();
}

float radian(float derajad)


{
return (derajad / 180.0f) * PHI;
}

b) SS Program
c) Analisis Program
Untuk mengkonversi nilai sudut dari derajad ke radian, yang
diperlukan hanyalah fungsiyang membagi nilai sudut dalam derajat
tadi dengan 180 kemudian dikali dengan nilai PHI. Nilai PHI sendiri
karena tidak pernah berubah maka dideklarasikan sebagai konstanta

5. a. Definisikan sebuah fungsi float konversi(suhu, asal, tuj), untuk mengkonversikan


suhu dari Celsius ke Fahrenheit, Celsius ke Reamur, Fahrenheit ke Celsius, Fahrenheit
ke Reamur, Reamur ke Celsius, dan Reamur ke Fahrenheit. Dimana suhu adalah suhu
sumber, asal adalah satuan awal suhu yang akan dikonversi dan tuj adalah satuan hasil
konversi
b. Tulislah prototipe fungsi untuk fungsi tersebut.
c. Buat function main() untuk memanggil function konversi(), setelah sebelumnya
meminta masukan nilai suhu, satuan asal dan satuan tujuannya.
Contoh tampilan:
Masukkan suhu sumber = 100
Masukkan satuan asal = C
Masukkan satuan tujuan = R
Hasil konversi suhu 100 C = 80 R
Penyelesaian:

a) Source code (listing program)


#include <stdio.h>

float konversi(char,float,char);

main()
{
char sumber,tujuan;
float suhuSumber,suhuTujuan;

printf("\n\t*****************************************
*****************\n");
printf("\t\tKONVERSI BESARAN SUHU MENGGUNAKAN
FUNGSI");
printf("\n\t*****************************************
*****************\n");

printf("\nMasukkan suhu sumber \t= ");


scanf("%f",&suhuSumber);
fflush(stdin);
printf("\nMasukkan satuan asal [C/F/R]\t= ");
scanf("%c",&sumber);
fflush(stdin);
printf("\nMasukkan satuan tujuan [C/F/R]\t= ");
scanf("%c",&tujuan);

suhuTujuan = konversi(sumber,suhuSumber,tujuan);

printf("\n%.2f %c = %.2f
%c\n\n",suhuSumber,sumber,suhuTujuan,tujuan);

getch();
}

float konversi(char sumber, float suhuSumber, char


tujuan)
{
float
pembandingSumber,pembandingTujuan,suhuAwalSumber,suhuAw
alTujuan,suhuTujuan;

switch(sumber)
{
case 'C': pembandingSumber = 5; suhuAwalSumber =
0; break;
case 'R': pembandingSumber = 4; suhuAwalSumber =
0; break;
case 'F': pembandingSumber = 9; suhuAwalSumber =
32; break;
}

switch(tujuan)
{
case 'C': pembandingTujuan = 5; suhuAwalTujuan =
0; break;
case 'R': pembandingTujuan = 4; suhuAwalTujuan =
0; break;
case 'F': pembandingTujuan = 9; suhuAwalTujuan =
32; break;
}

suhuTujuan = (pembandingTujuan / pembandingSumber) *


(suhuSumber - suhuAwalSumber) + suhuAwalTujuan ;

return suhuTujuan;
}

b) SS Program

c) Kesimpulan
Setiap satuan suhu memiliki karakteristik masing-masing. Misalnya pada nilai
pembanding, titik didih dan titik bekunya. Pertama kita perlu mendefiniskan
masing-masing hal tersebut. Kemudian dengan acuan tersebut kita bisa
melakukan proses perhitungan fisika sesuai rumus yang ada. Salah satu
hal yang perlu diperhatikan disini adalah ketika satuan suhu memiliki
titik beku yang bukan nol. Maka dalam proses konversi perlu
p r o s e s p e n a m b a h a n a t a u pengurangan agar hasil yang direturn fungsi
tersebut benar
6.Apa hasil eksekusi dari program berikut :
#include <stdio.h>
void ubah(int);
main()
{
int x;
printf("Masukkan nilai x : ");
scanf("%d", &x);
ubah(x);
printf("x = %d\n", x);
}
void ubah(int y)
{
y = 85;
}

Penyelesaian:

a) SS Program

b) Analisis Program
Program tersebut akan menampilkan nilai X sesuai yang diinputkan user tanpa ada perubahan
walaupun ada fungsi. Hal tersebut terjadi karena pada fungsi tidak memberikan return value
sama sekali

7. Dengan menggunakan fungsi, buatlah program yang melakukan validasi terhadap


tanggal, bulan dan tahun yang diinputkan. Program juga melakukan pengecekan apakah
sebuah tahun adalah tahun kabisat atau bukan (jika tahun bukan kabisat, bulan yang
diinputkan bulan 2 tanggal di atas 28 maka tanggal tidak valid).
Contoh:
Input tanggal : 29
bulan : 2
tahun : 1999
Output : tanggal tidak valid

Penyelesaian:

a) Source code (listing program)


#include <stdio.h>

int cekTanggal(int,int,int);
main()
{
int tanggal,bulan,tahun,isValid;

printf("\n\t*****************************************
*****************\n");
printf("\t\tPENGECEKAN VALIDASI TANGGAL-BULAN-TAHU");
printf("\n\t*****************************************
*****************\n");

printf("Masukkan tanggal\t= ");


scanf("%d",&tanggal);
printf("Masukkan bulan \t\t= ");
scanf("%d",&bulan);
printf("Masukkan tahun \t\t= ");
scanf("%d",&tahun);
printf("\n");

isValid = cekTanggal(tanggal,bulan,tahun);

if(isValid)
printf("Tanggal tersebut VALID\n\n");
else
printf("Tanggal tersebut TIDAK VALID\n\n");

getch();
}

int cekTanggal(int d,int m,int y)


{
int jumD,isValid = 0;

switch(m)
{
case 1 : case 3 : case 5 : case 7 : case 8 :
case 10 : case 12 :
jumD = 31; break;
case 4 : case 6 : case 9 : case 11 :
jumD = 31; break;
case 2 :
if(y % 4 == 0)
jumD = 29;
else
jumD = 28;
break;
}

if(1 <= m && m >= 12 && 1 <= d && d <= jumD)


{
isValid = 1;
}

return isValid;
}

b) SS Program
c) Analisis Program

KESIMPULAN:

1. Dalam bahasa C, program terdiri dari fungsi-fungsi yang terstruktur.


2. Setiap fungsi dapat memiliki parameter apabila dibutuhkan.
3. Parameter formal adalah variabel yang ada pada daftar parameter
dalam definisi fungsi.
4. Parameter aktual adalah parameter (tidak selalu berupa variabel) yang dipakai
dalam pemanggilan fungsi

Anda mungkin juga menyukai