Konsep Pemrograman | Praktikum 14 || Fungsi : Parameter Fromal & Aktual ULFA OCTA PRISNANDA 2103157029
A.
Percobaan 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(). Jawab : #include <stdio.h> main(){ int x; printf("\nULFA OCTA P | 2103157029 \n"); printf("\n------------------------------------\n"); printf("\nMenentukan bilangan Ganjil & Genap\n"); printf("\n------------------------------------\n"); printf("Masukkan bilangan : "); scanf("%d",&x); if(x%2==0){ printf("%d adalah bilangan genap\n\n",x); }else{ printf("%d adalah bilangan ganjil\n\n",x); }
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA | D3 PJJ
1
return 0; }
Output :
Analisa : Bilangan genap adalah bilangan yang habis di bagi 2 (%2), bil ganjil adalah tidak habis di bagi 2. Dengan program tsb kita dapat menentukan bilangan ganjil atau genap. Jika
bilangan yang dimasukkan ke parameter adalah bilangan ganjil maka memberikan return value 1 bila tidak maka 0.
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA | D3 PJJ
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(). Jawab : Koding : #include <stdio.h> long faktorial(long bil); main() { long jumFaktorial,bil; printf("PRAKTIKUM 14 \nULFA OCTA PRISNANDA | 2103157029\n"); printf("\n======================================== \n"); printf("FUNGSI MENAMPILKAN JUMLAH BILANGAN FAKTORIAL"); printf("\n========================================\n"); printf("\nMasukkan bilangan \t= "); scanf("%ld",&bil); jumFaktorial = faktorial(bil); printf("\nJumlah faktorial %ld\n\n",bil,jumFaktorial);
dari
%ld
} long faktorial(long bil) { int i,jum = 1; for(i=bil;i>0;i--) {
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA | D3 PJJ
adalah
jum = jum * i; } return jum; }
Output :
Analisa : Dalam program ini menggunakan data long untuk menghitung factorial dari angka yang diinputkan user. Menggunakan looping untuk prosesnya, dan ditampilkan ke layar.
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA | D3 PJJ
3. Buatlah fungsi prima(), yang memberikan nilai balik 1 bila bilangan yang dimasukkan adalah prima, dan 0 bila bukan bilangan prima. Jawab : Koding : #include <stdio.h> int prima(int bil); main() { int bil,isPrima; printf("PRAKTIKUM 14\nULFA OCTA P | 2103157029\n"); printf("\n======================================== \n\n"); printf("FUNGSI MENGECEK BILANGAN PRIMA \n"); printf("\n======================================== \n"); printf("\nMasukkan bilangan \t= "); scanf("%d",&bil); isPrima = prima(bil); if(isPrima) printf("\nBilangan %d adalah bilangan PRIMA\n\n",bil); else printf("\nBilangan %d bukan bilangan PRIMA\n\n",bil); getchar(); } int prima(int bil)
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA | D3 PJJ
{ int pembagi,faktornya = 0; for(pembagi = 1;pembagi <= bil;pembagi++) { if(bil % pembagi == 0) faktornya++; } if(faktornya <= 2) return 1; else return 0; }
Output :
Analisa : Dengan program ini, user dapat menentukan bilangan prima yang diinputkan. Bilangan prima adalah bilangan yang habis dibagi 1 dan dirinya sendiri. POLITEKNIK ELEKTRONIKA NEGERI SURABAYA | D3 PJJ
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
Jawab : Koding : #include <stdio.h> #define PHI 3.14159f; float radian(float); main() { float derajad,hslRad; printf("PRAKTIKUM 14\nULFA OCTA P | 2103157029\n"); printf("\n======================================== \n\n"); printf("FUNGSI KONVERSI BESARAN DERAJAD KE RADIAN \n"); printf("\n======================================== \n");
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA | D3 PJJ
printf("\nMasukkan besaran sudut \t= "); scanf("%f",&derajad); hslRad = radian(derajad); printf("Hasil konversi ke dalam radian adalah %f\n\n",hslRad); getchar(); } float radian(float derajad) { return (derajad / 180.0f) * PHI; }
Output :
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA | D3 PJJ
Analisa : Untuk mengkonversi sudut yang diinputkan, dalam program ini sudah dilengkapi PHI yang benilai tetap atau konstanta untuk menghitung sudut.
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. Jawab : Koding : #include <stdio.h> float konversi(char,float,char); main() { char sumber,tujuan; float suhuSumber,suhuTujuan; printf("\n======================================== \n");
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA | D3 PJJ
printf("FUNGSI UNTUK MENGKONVERSI SUHU"); printf("\n======================================== \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 %c\n\n",suhuSumber,sumber,suhuTujuan,tujuan);
=
%.2f
getchar(); } float konversi(char sumber, float suhuSumber, char tujuan) { float pembandingSumber,pembandingTujuan,suhuAwalSumber,suhuAwalTujuan,suhuT ujuan; 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)
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA | D3 PJJ
{ 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;
Output :
Analisa : Setiap satuan memiliki perhitungan masing-masing, kita dapat mengkonversikan pada program ini dengan rumus fisika yang sudah diinputkan di dalam program. POLITEKNIK ELEKTRONIKA NEGERI SURABAYA | D3 PJJ
*
B. Tugas Tambahan a. 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; }
Jawab : Program tersebut akan menampilkan nilai x sesuai yang diinputkan tanpa ada perubahan walaupun ada fungsi karena tidak ada return value. b. 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 POLITEKNIK ELEKTRONIKA NEGERI SURABAYA | D3 PJJ
(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 Jawab : Koding : #include <stdio.h> int cekTanggal(int,int,int); main() { int tanggal,bulan,tahun,isValid; printf("\n========================================\n"); printf("MENGECEK VALIDASI TANGGAL"); printf("\n========================================\n\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");
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA | D3 PJJ
isValid = cekTanggal(tanggal,bulan,tahun); if(isValid) printf("Tanggal tersebut valid\n\n"); else printf("Tanggal tersebut tidak valid\n\n"); getchar(); } 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) {
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA | D3 PJJ
isValid = 1; } return isValid; } Output :
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA | D3 PJJ
C. Kesimpulan 1. 2. 3.
Dalam bahasa C, program terdiri dari fungsi-fungsi yang terstruktur. Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi. Parameter aktual adalah parameter (tidak selalu berupa variabel) yang dipakai dalam pemanggilan fungsi.
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA | D3 PJJ