Hallo sobbb. WKWK… Kembali diwebsite kesayangan kalian semua. Hari ini, kita masih akan melanjutkan pembahasan kita pada materi yang sebelumnya yaitu tentang fungsi. Fungsi seperti yang kita tahu pada materi sebelumnya, opada materi kali ini, kita akan mengembangkannya lagi.
Ehmmmm…. Seperi apa yaa ???
Yuk simak pembahasan singkat materinya pada link dibawah ini :
https://drive.google.com/file/d/13q0L343eokgutiIVCoQBW8CSaL0iDIg_/view?usp=sharing
Nah… gimana teman teman…Apakah sudah memahami materi singkat pada modul diatas ??? Jika sudah, Yukk bersama kita bahas beberapa soal dibawah ini.
Soal 1
- 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
- Tulislah prototipe fungsi untuk fungsi tersebut.
- Membuat function main untuk memanggil function ganjil() yang menerima input sebuah bilangan bulat yang akan ditentukan ganjil/genapnya. Tampilkan pesannya (ganjil/genap) dalam main().
Jawab
Pada soal diatas, kita akan membuat suatu program dengan fungsi fungsi sebagai berikut :
Dari program tersebut apabila kita mencoba untuk menjalankannya maka kita akan memperoleh contoh hasil running sebagai berikut :
Dari program yang telah kita buat, kita dapat mengalasisanya sebagai berikut :
- Ki ta memb uat fungsi lain disamping fungsi utama yaitu ganjil dengan tipe keluaran adalah integer dan memiliki sebuah parameter bertipe integer pula. Didalam fungsi tersebut, kita akan menyisipkan suatu decision if else.
- Decision if..else dalam tubuh fungsi tersebut terdiri dari kerangka if yaitu jika Modulus dari parameter yang telah dideklarasikan sebelumnya terhadap 2 adalah sama dengan 0, maka nilai kembalian yaitu 0 akan di berikan (return value). Namun apabila ternyata fungsi dari if diatas tidak memenuhi maka secara otomatis fungsi else pada baris yang berada dibawahnya akan berlaku yatu akan memberikan atau menghasilkan return value yaitu 1.
- Kemudian kita melangkah kedalam fungsi utama atau fungsi main.
- Pada fungsi main, kita akan medeklarasikan sebuah variabel yang akan kita gunakan nantinya (disini saya menggunakan huruf ‘k’ sebagai nama variabel saya).
- Kemudian kita akan memasukkan nilai dari k yang akan diselidiki apakah ganjil ataukah genap. Kita akan mengisi masukan dari keyboard kedalam variabel k.
- Kemudian kita mem buat lagi suatu decision if..else… untuk mencetak ke layar tentang hasil angka yang telah diselidiki.
- Dalam kondisi if tersebut kita masukkan syarat bahwa if akan dilaksanakan apabila fungsi Ganjil dengan nilai parameter adalah sama dengan k adalah sama dengan 0, maka akan dicetak pemberitahuan kepada client bahwa input yang dimasukkan terse but adalah genap.
- Namun apabila decision if diatas tidak memenuhi syarat kondisi, maka akan dicetak kelayar pemberitahuan bahwa input yang dimasukkan client adalah bilangan ganjil.
Soal 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
Soal diatas, dapat kita buatkan suatu program yang sederhana seperti pada gambar dibawah ini ;
Jika program diata kita jalankan, maka akan diperoleh hasil sebagai berikut :
Yuk !!! Mari kita analisis program yang telah kita buat pada gambar diatas.
- Kita akan membat dua fungsi yaitu fungsi tambahan dan fungsi utama pada program ini. Fungsi tambahan akan kita gunakan sebagai tempat untuk mengkalkulasikan nilai hasil faktorial dari input yang telah kita masukkan pada fungsi main.
- Fungsi tambahan pada soal ini kita beri nama faktorial dengan tipe keluaran adalah int (integer) . Fungsi ini memiliki parameter yaitu dengan nama Angka dan bertipe long integer.
- Didalah fungsi tersebut, selain parameter, Angka, kita juga membutuhkan dua variabel bantu lainnya yaitu i dan j (nama variabel terserah). Namun unt uk salah satu variabel yang telah kita deklarasikan tadi, kita juga akan memberikan harga awal untuk j yaitu 1.
- Kemudian pada baris yang selanjutnya, kita akan membuat perulangan for untuk mengkalkulasikan hasil dari faktorial bilangan yang akan kita inputkan dari keyboard.
- Adapun batasan dalam perulangan for tersebut adalah dengan kondisi awal adalah sama dengan 1 sedangkan untuk kodisi akhir adalah lebih kecil atau sama dengan parameter Angka. Dengan iterasi yaitu penambahan 1 point positif setiap kali terjadi perulangan.
- Dalam tubuh perulangan tersebut, kita akan menghitung nilai dari hasil faktorial dengan mengalikan harga j sebelumnya dengan nilai i yang menjadi variabel pengatur perulangan yang kita gunakan sebelumnya. Jadi setiapkali terjadi perulangan, nilai j akan selalu dikalikan dengan nilai ke berapa perulangan tersebut diulangi.
- Berikutnya, kita akan memberikan nilai kembalian yaitu j dari fungsi tambahan ini.
- Kita melangkan ke fungsi utama. Pada fungsi utama, kita akan mendeklarasikan dua variabel yaitu a dan c (nama variabel terserah) dimana salah satu variabel nantinya akan kita gunakan untuk menampung masukan dari keyboard sedangkan variabel lainnya akan kita gunakan untuk mengatur perulangan looping for.
- Kita akan mengisi nilai dari variabel a dari keyboard client dengan mengggunakan perintah scanf.
- Kemudian kita akan mencetak beberapa bagian dari variabel yang kita faktorialkan.
- Setelah itu, kita membentuk sebuah perulangan for dengan batasan kondisi awal adalah nilai input dikurang 1 dan batasan awal adalah kondisi dimana lebih kecil atau sama dengan 1 dengan nilai iterasi yang bertambah sebanyak positif1 point tiap kali terjadi perulangan.
- Dalam tubuh perulangan for tersebut, kita akan mencetak barisan perkalian faktorial input.
- Selanjutnya pada proses akhir dari fungsi main(utama) akan dicetak hasil dari faktorial input yang diberikan.
Soal 3
Buatlah fungsi prima(), yang memberikan nilai balik 1 bila bilangan yang dimasukkan adalah prima, dan 0 bila bukan bilangan prima.
Jawab
Pada soal diatas, kita akan membuatkan program sederhana seperti pada gambar dibawah ini :
Jika kita menjalankan program diatas, maka kita akan memperoleh hasil sebagai berikut :
Yuk kita analiss program diatas :
- Kita akan membuat suatu fungsi tambahan dengan nama yaitu prima dengan tipe keluaran adalah integer.
- Fungsi tersebut memiliki parameter x dengan tipe integer pula.
- Dalam fungsi tersebut, kita akan mendeklarasikan variabel yang akan kita gunakan sepanjang fungsi ini dijalankan. Disini saya menggunakan varibel a, b dan c agar mudah dituliskan dan dihafalkan.
- Kemudian kita akan memberikan decision if utuk mengantisipasi masukan parameter dari main adalah bilangan lebih kecil atau sama dengan 1 karena tidak a da bilangan prima yang sama atau lebih kecil dari 1.
- Kemudian kita akan memberikan perulangan for dengan batasan awal yaitu a sama dengan 2 dan batasan akhir adalah x dimana kita beri iterasi kenaikan sebanyak 1 point tiap terjadi perulangan.
- Didalam perulangan for tersebut, kita akan menghitung bilai modulus dari x terhadap a tiap kali perulangan dilakukan dan hasilnya akan ditampung pada variabel b.
- Pada baris selanjutnya, didalam kita akan mebuat decision jika b bernilai 0, maka program akan otomatis dikeluarkan dari perulangan for walapun batas akhir perulangan belum memenuhi.
- Pada baris selanjutnya setelah perulangan for, kita akan membuat decision lagi yaitu if…else… dimana kita akan memberikan nilai kebalian / return value jika b sama dengan 0 namun pada else jika kondisi if tidak memenuhi, maka pada tubuh else akan memberikan nilai kembalian yaitu 1.
- Kita melangkah pada fungsi utama (main).
- Pada fungsi main, kita akan mendeklarasikan sebuah variabel dengan nama p (nama variabel sesuai selera) untuk digunakan menampung input dari masukan keyboard client.
- Kemudian, kita akan menampung masukan dari keyboard client dengan perintah scanf dan kan mengisinya pada variabel yang sebelumnya kita deklarasikan.
- Pada langkah selanjutnya, kita akan membuat decision if…else… untuk menentukan kaliamat mana yang akan kita cetak pada layar.
- Kita akan mencetak pernyataan bukan bilangan prima jika nilai kembalian yang diberikan oleh fungsi prima dengan parameter masukan p adalah sama dengan 0.
- Namun apabila kondisi untuk nilai kembalianm fungsi prima dengan parameter p adalah tidak sama dengan 0 maka pilihan else akan berlaku dimana akan dicetak pernyataan bahwa bilangan yang diinputkan adalah bilangan prima.
Soal 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
Masalah pada soal diatas, dapat kita buatkan program sederhana seperti pada gambar dibawah ini.
Jika kita menjalankan program diatas, maka kita kan memperoleh hasil sampel seperti pada gambar dibawah ini.
Sehingga kita dapat menganalisis program yang telah kita buat seperti pada gambar diatas sebagai berikut :
- Setelah pemanggilan library stdio.h, kita akan menetapkan konstanta pada program kita yaitu PI dengan konstanta harga yaitu 3.14159f.
- Setelah itu, kita dapat membuat fungsi radian terlebih dahulu dengan parameter drjt yang bertipe float juga.
- Didalam fungsi radian, kita akan mendeklarasikan juga sebuah variabel baru sebagai wadah untuk menampung hasil operasi konversi drajat ==> radian dengan tipe float.
- Pada baris yang seanjutnya, kita akan mengkalkulasikan hasil dari drajad jika dikonversikan kedalam radian dengan mengalikan dengan PI dan membaginya dengan 180.0f.
- Jika nilai rad telah dikalkuasikan pada saat pemanggilan fungsi ini, maka akan diberikan nilai kembalian dengan variabel rad.
- Selanjutnya kita akan membuat fungsi utama (main).
- Pertama tama dalam variabel main, kita akan mendeklarasikan setau variabel dengan nama drjt
- Berikutnya, kita akan mengisi variabel drjt tersebut dengan sebuah angka dengan menggunakan perintah scanf.
- Selanjutnya kita akan mencetak hasil konversi dengan memanggil fungsi radian dengan memasukkan parameter drjt sebagai acuan.
Soal 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
Jawab
Permasalahan pada soal diatas, dapat dibuatkan program sederhana seperti pada gambar dibawah ini.
Apabila program tersebut dijalankan, maka akan diperoleh data seperti pada gambar dibawah ini :
Untuk asal Celcius :
Untuk asal Reamur :
Untuk Asal Farenheit
Untuk asal Kelvin :
Dari program diatas, dapat dianalisis sebagai berikut :
- Kita akan menggunakan fungsi tambahan konversi disamping penggunaan fungsi utama yaitu main. Fungsi ini memiliki tipe keluaran float dengan parameter yang terdiri dari suhu (tipe float), asal (tipe char), dan tuj (tipe char).
- Disamping paameter, kita juga akan menggunakan sebuah variabel lai yakni hasil yang akan kita gunakan untuk menampung hasil konversi dari suhu tersebut. Yang akan kita deklarasikan sebagai data tipe float.
- Pada tubuh fungsi ini, secara garis besar kita gunakan untuk menghitung nilai konversi dari nilai parameter yang kita gunakan
- Kita penggunakan pemilihan bertingkat if else dimana untuk pemilihan tingkat pertama adalah untuk memilih operator asal yang digunakan dan untuk tingkat kedua atau sekundernya akan digunakan untuk memencocokkan antara rumus yang akan digunakan dan permintaan konversi akhir yang diminta oleh client pada parameter tuj.
- Jika telah melewati decision bertingkat if else dan menemukan rumus yang sesuai, maka Hasil akan dikalkulasikan berdasarkan rumus yang memnuhi dengan syarat kondisi yang digunakan.
- Pada akhir fungsi konversi, akan diberikan perintah untuk memberikan nilai kembalian atau return value yaitu sama dengan nilai Hasil yang telah dipilih menggunakan if..else.. bertingkat sebelumnya.
- Kemudian kita akan melangkah pada fungsi yang selanjutnya, yaitu fungsi utama (main).
- Didalam fungsi ini, kita akan mendeklarasikan sebuah variabel bertipe integer yang akan kita gunakan untuk menampung nilai dari suhu masukan yang akan di konversi. Selain itu, kita juga akan mendeklarasikan sebuah variabel untuk menginputkan karakter kode asal dan tujuan konversi suhu ini.
- Setelah itu kita akan emngisi variabel variabel diatas dengan menggunakan perintah scanf.
- Setelah itu kita akan menanpilkan hasil dari konversi suhu dengan memanggil fungsi konversi dengan nilai parameter parameter yang telah diinputkan oleh client.
Bonusssssss!!!!!
Ayeyyyyy. Sekarang kita akan mengerjakan soal bonus nihh. Siap siap yaa :))
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
Susuan program :
Hasil dari program diatas apabila dilakukan running maka akan menghasilkan output yaitu :
Kita dapat melihat dari hasil running diatas, bahwa tidak terjadi perubahan pada hasil dari nilai x. Nilai x yang di cetak adalah sama dengan nilai x yang diinputkan sekalipun pada program terjadi pemanggilan fungsi ubah.
Mengapa demikian ????
Karena pada fungsi ubah yang memiliki prameter y, nilai y telah langsung sama dengan 85. Jadi program mengalami kendala. Jika seandainya kita menginputkan pada main adalah 6 maka pada fungsi ubah sesuai dengan parameter menjadi :
6 = 85 (kendala)
karena tidak ada proses dan kedua ruas merupakan tetapan yang tidak memiliki ruas variabel.
Disamping itu, fungsi ubah juga tidak menyediakan nilai kembalian (return value) sehingga jika seandainya ada proses kalkulasi tanpa output mencetak, maka program hanya akan mengkalkulasikan tanpa memberikan nilai kembalian keluar fungsi tersebut.
Oleh karena itu, nilai yang tercetak akan sama dengan nilai yang diinputkan pada fungsi utama(main) program tersebut.
Recent Comments