• Tidak ada hasil yang ditemukan

BAB XI. SUBPROGRAM

11.3 Prosedur

69 aspek penting dari Computational Thinking. Anda dapat membangun model komputasi yang sama, yang akan dieksekusi dengan berbagai nilai parameter.

Perubahan parameter dan hasil komputasi akan memungkinkan Anda melakukan simulasi dengan berbagai nilai parameter, untuk menghasilkan suatu konklusi atau memilih yang paling optimal.

Dengan menuliskan sebuah program menjadi beberapa Fungsi, Anda melakukan dekomposisi sebuah program menjadi modul program yang lebih kecil, di mana setiap fungsi akan melakukan komputasi dengan spesifikasi tertentu yang jelas.

70 6.

7. void plus1 (int* a) {

8. /* prosedur menambahkan 1 ke parameter a */

9. /* "*a" artinya isi dari lokasi yang ditunjuk oleh a

*/

10. int temp;

11. *a= *a + 1;

12. } 13.

14. void plusd (int* a, int d) {

15. /* prosedur menambahkan d ke parameter a */

16. /* nilai a akan diubah, sedangkan nilai d tidak diu bah */

17. int temp;

18. *a= *a + d;

19. } 20.

21. void swap (int* a, int* b) {

22. /* prosedur menukar nilai dua buah variabel a dan b

*/

23. /* "*a" artinya isi dari lokasi yang ditunjuk oleh a*/

24. int temp; /* variabel lokal */

25.

26. /* algoritma */

27. temp= (*a); *a= (*b); *b=temp;

28. } 29.

30. int main() { 31. int i=9;

32. int x=10;

33. int y=25;

34. int d=7;

35.

36. plus1(&i); /* perhatikan saat pemanggilan &i */

37. printf("nilai i+1: %d\n", i);

38.

39. i=8;

40. plusd(&i,d ); /* perhatikan saat pemanggilan &i dan d */

41. printf("nilai i+7: %d\n", i);

71 42.

43. plusd(&d,3 ); /* perhatikan saat pemanggilan &i */

44. printf("nilai d+3: %d\n", d);

45.

46. printf("nilai x dan y : %d, %d\n", x,y);

47. swap (&x, &y);

48. printf("nilai x dan y setelah swap : %d, %d\n", x,y );

49. return 0;

50. }

11.3.1 Rangkuman Kompetensi

1. Mengenal “prosedur” dan parameter dalam penulisan prosedur, yang diartikan dapat berubah, atau tidak diubah:

A. Nilai parameter yang diubah pada definisi prosedur diberi tanda

*.

B. Nilai parameter yang tidak diubah, dituliskan namanya saja.

2. Memahami cara pemanggilan/pemakaian prosedur, dan memerhatikan penulisan parameter saat pemanggilan/pemakaian prosedur.

Catatan: Apa yang dijelaskan pada bagian ini adalah penyederhanaan dan

“pendangkalan” dari arti * dan & yang akan dijelaskan pada Modul selanjutnya, setelah Anda mengenal pointer dan address dari variabel.

Bagian prosedur dapat di-skip.

11.3.2 Aktivitas kreatif

Untuk bermain-main dengan kode program yang diberikan, Anda boleh mencoba untuk tidak peduli dengan pernak-pernik * dan & dan melakukan sama seperti fungsi, pada contoh program di atas. Eksplorasilah, diskusikan dengan teman, dan tariklah kesimpulan jika tata cara penulisan dengan * dan

& Anda abaikan.

11.3.3 Inilah Computational Thinking!

Prosedur adalah abstraksi dan dekomposisi program, seperti yang dijelaskan pada fungsi.

72 BAB XII.

PENUTUP

12.1 Latihan Problem Solving dengan Membuat Program-program Sederhana

Sebelum Anda menuliskan sebuah program, Anda perlu membuat Spesifikasi.

Spesifikasi program adalah kalimat ringkas yang menyatakan:

1. Input yang diberikan pengguna program.

2. Komputasi yang dilakukan (sekuensial, kondisional, pengulangan). jika terdiri dari beberapa tahap, maka dijelaskan dalam urutan instruksi berdasarkan construct program yang sudah djelaskan.

3. Output yang dihasilkan program.

Anda dapat (dan sangat dianjurkan) untuk mengambil salah satu program yang pernah dibahas sebagai pola solusi, dan menjelaskan perbedaannya dengan program yang Anda hasilkan. Inilah Computational Thinking!

Pada bagian ini diberikan sebuah contoh-contoh program sederhana, yang dapat Anda pakai sebagai bahan belajar untuk membangun solusi mulai dari sederhana sampai dengan yang lebih kompleks. Jika ada menghadapi permintaan sebuah program kompleks, Anda perlu untuk memahami abstraksinya, dan mendekomposisi menjadi persoalan-persoalan yang lebih "melakukan satu hal", dan mengimplementasi berdasarkan pola solusi yang Anda punyai.

12.1.1 Komputasi berdasarkan Rumus

Contoh berikut adalah contoh program perhitungan sederhana:

1. /* File: luaslink.c */

2. /* Penulis : Bu Dengklek, email inge@bebras.or.id */

3. /* Deskripsi : */

4. /* Membaca jari-jari, menghitung luas lingkaran */

5. /* latihan pemakaian konstanta */

6. #include<stdio.h>

7. int main () 8. {/* Kamus */

9. const float pi = 3.1415;

10. float r;

11. /* program */

12. /* baca data */

13. printf ("Jari-jari lingkaran =");

14. scanf ("%f", &r);

15. /* Hitung dan tulis hasil */

16. printf ("Luas lingkaran = %f\n", pi * r * r);

73 17. printf ("Akhir program \n");

18. return 0;

19. }

Latihan soal kreatif

Berdasarkan contoh program komputasi sederhana untuk menghitung luas lingkaran, Anda dapat menuliskan spesifikasi lebih jelas untuk menyelesaikan persoalan berikut, mulai dari yang paling sederhana dan mirip, kemudian mengembangkan menjadi program yang lebih kompleks karena tidak hanya menyelesaikan satu persoalan saja, tetapi menyelesaikan beberapa persoalan sekaligus.

1. JARAK. Tuliskanlah program yang:

A. Membaca nilai v (kecepatan), dan t (waktu tempuh) sebuah mobil yang bergerak lurus beraturan dari kota A ke kota B.Menghitung dan menuliskan jarak kota A ke kota B, yang ditempuh mobil tersebut.

B. LUASPERSEGI. Tuliskanlah program yang membaca panjang dan lebar sebuah lantai ruangan yang berbentuk persegi (dalam m), kemudian menghitung luas lantai tersebut dalam m2.

2. KUBUS. Tuliskanlah sebuah program dalam bahasa C yang membaca sisi kubus (dalam cm), dan menghitung serta menuliskan volumenya.

3. Anda dapat menuliskan program kalkulasi apa pun berdasarkan rumus yang sudah ditentukan [buatlah latihan mandiri, minimal dari 50 rumus geometri, fisika, kimia, pertumbuhan mahluk secara eksponensial dalam biologi, rumus bunga berbunga dalam bidang ekonomi].

4. Untuk perhitungan berdasarkan rumus, Anda dapat melakukan generalisasi, dan menuliskan sebuah program yang akan memberikan pilihan kepada pengguna, untuk:

A. Memilih bentuk geometris segitiga, persegi, bujur sangkar, belah ketupat, jajaran genjang, segi N-beraturan, elipse, lingkaran.

B. Menentukan ciri dari bentuk geometris yang sudah dipilih, dan meminta pengguna memasukkan data besaran untuk menghitung luas dan kelilingnya (misalnya untuk segitiga, alas dan tingginya sebab luas ditentukan oleh tinggi segitiga, sedangkan keliling ditentukan oleh panjang ketiga sisinya).

C. Melakukan perhitungan sesuai rumus.

D. Mencetak ciri bentuk geometris yang dibaca dan menuliskan hasil perhitungan luas dan kelilingnya.

5. Untuk sebuah bentuk geometris tiga dimensi, Anda dapat menulis sebuah program untuk membaca cirinya dan menghitung luas permukaan dan, volumenya.

74 6. Setelah program pada (5) dan (6) berjalan dengan baik, Anda dapat menambahkan pengulangan sehingga program dapat dipakai berulang (tidak hanya satu kali komputasi langsung berhenti).

A. Program berhenti setelan N kali dipakai pengguna.

B. Program berhenti setelah pengguna mengetikkan pilihan tertentu, yang bukan merupakan pilihan bentuk geometris yang diberikan.

12.1.2 Latihan Kondisional

Berdasarkan contoh program kecil untuk menentukan bilangan negatif, nol dan positif, tuliskan spesifikasi program sebagai berikut, dan kodelah programnya dalam bahasa C:

1. AIR - Sebuah program akan membaca T, yaitu temperatur air pada tekanan atmosfir, dan menentukan apakah air tersebut dalam keadaan beku, padat atau uap. Tentukan angka-angka yang diperlukan untuk mengetes program ini.

2. BERATBADAN - Program yang akan membaca berat badan seseorang, dan menentukan apakah termasuk Kurus, Ideal, atau Gemuk, Kegemukan.

A. Buatlah aturan yang masuk akal, untuk menentukan berat badan yang dikategorikan Kurus, Ideal, atau Gemuk, Kegemukan.

B. Kriteria kategori tersebut ternyata berbeda untuk anak- anak/dewasa; pria/wanita. Buatlah untuk masing-masing, aturannya dan modifikasi programnya dengan membaca umur orang, jenis kelaminnya, baru menentukan berdasarkan aturan yang Anda buat.

3. BAJU - Sebuah program yang akan membaca ukuran panjang baju, lebar bahu, dan akan menentukan apakah pemilik ukuran tersebut harus diberi baju S (small), M (medium), atau L (large). Buatlah aturannya yang masuk akal, dan Anda harus menjamin bahwa setiap data akan diasosiasikan ke salah satu ukuran baju walaupun tidak sama persis.

12.1.3 Latihan Loop – Pengulangan

1. Tuliskanlah sebuah program yang akan mencetak berbagai output sebagai berikut, tergantung nilai N yang dibaca. N dapat berharga antara 1 s.d. 1000.

N=1 N=2 N=3 N=4

* *

**

*

**

***

*

**

***

****

75 2. Tuliskanlah sebuah program yang akan mencetak berbagai output sebagai berikut, tergantung nilai N yang dibaca. N dapat berharga antara 1 s.d. 1000.

N=1 N=2 N=3 N=4

* **

*

***

**

*

****

***

**

*

3. Tuliskanlah sebuah program yang akan mencetak berbagai output sebagai berikut, tergantung nilai N yang dibaca. N dapat berharga antara 1 s.d. 1000.

N=1 N=2 N=3 N=4

o oo

oo

ooo o*o ooo

oooo o**o o**o oooo

4. Dengan mengambil pola program dari contoh-contoh loop, tuliskan program yang akan menuliskan lagu anak ayam, dimulai dari:

Anak ayam turun 10; Mati 1 tinggal 9.

Anak ayam turun 9; Mati 1 tinggal 8.

. . .

Anak ayam turun 1; Mati 1 tinggal induknya.

5. Tuliskanlah sebuah program yang membaca sebuah nilai N, kemudian menuliskan hasil penjumlahan deret tambah 1+2+3+4+5+6+ . . . +N=

XXXX.

Contoh untuk berbagai nilai N:

N=1 N=2 N=3 N=4

1=1 1+2=3 1+2+3=6 1+2+3+4=10

6. Tuliskanlah sebuah program yang membaca sebuah nilai N, kemudian menuliskan hasil penjumlahan deret tambah dengan suku bilangan ganjil saja 1+3+5+7+ . . . +N= XXXX.

Program harus dapat diulang untuk berbagai nilai N, sampai pengguna mengetikkan N=0 tanda berhenti.

N=1 N=2 N=3 N=4

1=1 1+3=4 1+3+5=8 1+3+5+7=16

76 7. Tuliskan sebuah program yang membaca sebuah nilai N, kemudian

menuliskan hasil penjumlahan.

A. Deret : 1 +1/2 + 1/3 + ... +1/N

B. Deret : 1 - 1/20 + 1/30 - 1/40 ... 1/(N*10)

8. Tuliskan sebuah program yang melakukan pengulangan untuk menghitung faktorial (N) : 1x2x3x... N dan cetaklah N terbesar yang hasilnya masih lebih kecil dari 3267 (nilai maksimal yang dapat disimpan dalam sebuah variabel integer).

9. Tuliskanlah sebuah program yang melakukan pengulangan untuk menghitung deret fibonacci. Carilah rumus fibonacci misalnya dari https://en.wikipedia.org/wiki/Fibonacci_number.

10. Tuliskan sebuah program untuk mencetak berbagai deret yang ada di https://en.wikipedia.org/wiki/Sequence atau

pada https://www.mathsisfun.com/algebra/sequences-series.html atau sumber lainnya.

Untuk membuat latihan lebih seru, setiap program yang mengandung pengulangan di atas dapat Anda ubah sehingga dapat diulang sesuai kriteria yang Anda tentukan. Ini Computational Thinking!

12.1.4 Latihan Tabel

Untuk sekumpulan nilai numerik yang sudah dibaca dan disimpan dalam tabel:

1. Tuliskan minimal 8 macam algoritma sorting dan 8 algoritma searching, dengan melakukan eksplorasi contohnya di Internet.

Bandingkanlah algoritmanya, dan jelaskan mana yang lebih efisien.

2. Anggaplah sebuah tabel menyimpan satu kolom data pada sebuah spreadsheet, misalnya excel. pelajari beberapa fungsi excel, dan tuliskan fungsi/prosedur untuk mengimplementasi beberapa fungsi yang ada di Excel (eksplorasi), seperti:

A. Untuk mengalolah data bertype integer count, countif, sum, sumif, max, min, average, standar deviasi, dll.

B. Untuk menampilkan data dalam berbegai format, misalnya data angka menjadi berbagai format akunting, currency, tanggal.

12.1.5 Latihan Fungsi dan Prosedur

1. Tuliskan ulang program-program yang telah Anda implementasikan, dengan mengelompokkan instruksi menjadi fungsi dan/atau prosedur yang sesuai dengan konteksnya.

77 2. Untuk beberapa fungsi dan prosedur yang "mirip", tuliskan ulang menjadi fungsi/prosedur yang diparameterisasi sesuai dengan konteks dan penggunaannya.

12.2 Ujian Akhir Aturan

Ujian Akhir bertujuan untuk menguji pengetahuan Anda tentang semua materi yang telah dipelajari di kelas ini.

Terdapat 20 pertanyaan yang harus dikerjakan dalam Ujian Akhir ini. Beberapa ketentuannya sebagai berikut:

Syarat nilai kelulusan : 75%

Durasi ujian : 25 menit

Apabila tidak memenuhi syarat kelulusan, maka Anda harus menunggu selama 30 menit untuk mengulang pengerjaan Ujian Akhir kembali. Manfaatkan waktu tunggu tersebut untuk mempelajari kembali materi sebelumnya, ya.

Selamat Mengerjakan!

Mulai

1. Apakah nama pendeketan yang digunakan dalam kelas C ini?

A. ATM (Amati-Tiru-Modifikasi) B. 3N (Niteni-Niru-Nambahi) C. IAM (Inspired-Adopt-Magnify) Jawab: B. 3N (Niteni-Niru-Nambahi)

2. Agar teks tidak diproses oleh compiler, teks harus dituliskan di antara...

A. /* dan */

B. & dan &

C. < dan >

D. [ dan ] Jawab: A. /* dan */

3. Apakah kalimat yang muncul saat sebuah program bahasa C dibuat pertama kali?

A. Halo

B. Halo, Dunia!

C. Hello

D. Hello, World!

Jawab: D. Hello, World!

4. Perhatikan kode berikut:

78

#include <stdio.h>

int main() {

int x; x = 5;

x = x + 3;

printf("Hasil dari x * y + y adalah: %d\n", x);

return 0;

}

Dari kode di atas, dengan apa cara pengisian nilai variabelnya?

A. Deklarasi

B. Instruksi "assignment"

Jawab: B. Instruksi "assignment"

5. Tipe dari variabel yang dapat menyimpan sebuah nilai riil adalah...

A. float B. double C. int D. char Jawab: A.

6. Berikut adalah cara mendefinisikan konstanta dalam bahasa C, kecuali...

A. Literal B. Menggunakan #define C. Deklarasi dengan const D. Dengan instruksi "assignment"

Jawab: D.

7. Apakah benar jika scanf tidak bisa dimasukan input char?

A. Benar B. Salah Jawab: salah

8. Apakah nama perintah yang digunakan untuk memasukan nilai dari luar program dalam bahasa C? A. cin B. input C. scanf D. scan

c

9. Operasi modulo dapat diinisialisasi dalam kode dengan lambang... A $ B &

C @ D % Jawab:

10. Dalam bahasa C, bilangan boolean False bernilai... A 0 B 1 C 2 D 3 0

11. Dalam bahasa C, bilangan boolean False bernilai... A 0 B 1 C 2 D Sebutkan beberapa operator dari operasi perbandingan!

A. <, >, !, = B. |, <, >, ? C. <, >, !, ==

D. [, ], +, - Jawab:

79 12. Skip

13. Skip

14. Bagaimana cara untuk menghentikan program dengan forever? A ctrl + c B ctrl + b C ctrl + a D ctrl + d

Control C 15. Skip

Dalam dokumen Modul kelas Memulai Pemrograman Dengan C (Halaman 77-80)