• Tidak ada hasil yang ditemukan

Searching-Sequential Search

Dalam dokumen Modul kelas Memulai Pemrograman Dengan C (Halaman 70-73)

BAB X. ARRAY – TABEL

10.6 Searching-Sequential Search

62 pengurutan, misalnya proses pencarian atau proses kalkulasi statistik -->

Inilah Computational Thinking!

63 22. printf("Nilai tidak diketemukan");

23. } return 0;

24. }

Pola program di atas adalah pola program untuk mencari sebuah nilai yang indeksnya paling kecil, dengan aman.

10.6.1 Rangkuman Kompetensi

Mengenal salah satu versi sequential search.

10.6.2 Aktivitas kreatif

1. Ubahlah program di atas, jika yang dikehendaki sebagai output adalah posisi dengan indeks paling besar.

2. Ubahlah program di atas sehingga akan mencetak semua posisi indeks yang nilainya X, jika ternyata ada lebih dari satu nilai X yang muncul.

3. Program di atas selalu mencari nilai yang sudah ditentukan. Ubahlah program sehingga nilai yang disimpan pada tabel dan juga nilai yang dicari (X) bukan diisi dengan inisialisasi, tetapi dengan instruksi pembacaan (scanf).

4. Lakukan riset untuk mencari metoda-metoda pencarian lain dan bandingkan apakah lebih efisien dan lebih "aman" dari yang sudah dibahas di atas. Banyak buku tentang searching dalam bahasa C yang ditulis.

5. Search dapat menjadi optimal jika data sudah terurut. Misalnya kalau data tabel terurut membesar, tidak ada gunanya untuk melanjutkan memeriksa yang berikutnya saat suatu nilai sudah lebih besar dari nilai yang sedang diperiksa. Ubahlah program di atas sehingga lebih efisien.

6. Jika data terurut seperti pada buku telpon, Anda tidak akan mencari berurutan mulai dari yang pertama, tetapi bisa mulai dengan menebak di tengah, dan menentukan apakah harus mencari pada bagian separuh di belakang atau di depan. Ini adalah ide dari binary search, yang dapat Anda pelajari prinsip dan algoritmanya di laman berikut.

https://en.wikipedia.org/wiki/Binary_search_algorithm

Coba implementasi algoritma yang dituliskan pada laman tersebut.

10.6.3 Inilah Computational Thinking!

Search adalah salah satu algoritma yang akan sering digunakan dalam problem solving, maka salah satu modal yang diperlukan adalah searching.

Pada hakekatnya komputer adalah tempat menyimpan, dan kita membutuhkan untuk mencari apa yang sudah disimpan. Nilai-nilai yang disimpan dapat diorganisasi dalam struktur data yang lebih rumit dari tabel,

64 dan algoritma yang diimplementasi juga lebih optimal. Untuk mendapatkan gambaran algoritma yang menggunakan struktur data dan teknik yang lebih sulit, Anda dapat mulai membaca Search Algorithm.

Saat Anda dekomposisi masalah kompleks, dan menyimpulkan bahwa diperlukan search, Anda dapat memakai salah satu algoritma search yang ada.

Donald Knuth bahkan menulis sebuah buku yang isinya Searching dan Sorting : "The Art of Computer Programming: Volume 3: Sorting and Searching ".

65 BAB XI.

SUBPROGRAM

11.1 Pengantar Subprogram

Subprogram adalah modul program yang dapat dipanggil oleh sebuah program, sehingga program pemakai (yang memanggil) dapat memanfaatkan tanpa mengetahui detail dari instruksi dalam modul tersebut. Jadi, modul program merupakan abstraksi dari suatu proses komputasi yang dijelaskan spesifikasinya.

Dalam pemrograman, subprogram direalisasi menjadi fungsi atau prosedur. Dalam bahasa C, hanya dikenal fungsi. Konsep prosedur diterjemahkan menjadi fungsi, yang tidak mengembalikan nilai apapun. Hal ini akan dibahas lebih dalam di bagian pemrograman, karena secara semantik, fungsi berbeda dengan prosedur:

Fungsi melakukan komputasi dan mengirimkan hasil komputasi.

Komputasinya ditulis sebagai “algoritma” pada badan fungsi, dan dilakukan dengan memakai nilai paramater yang disalin sebelum komputasi, sehingga fungsi tidak akan pernah mengubah nilai parameter.

Prosedur melakukan komputasi dengan mengubah “state”, yaitu state dari variabel (nilai), maupun state dari parameter. Akibatnya, prosedur dapat mengubah nilai parameter.

Sebuah program utama dalam bahasa C juga merupakan sebuah fungsi, yang namanya khusus yaitu main. Contoh program halo.c adalah program utama dalam bentuk "fungsi" yang mengirimkan sebuah nilai integer dengan instruksi return 0; sedangkan halo1.c adalah program utama dalam bentuk “prosedur” karena tidak mengembalikan/mengirimkan nilai, sehingga nilai yang dikirimkan oleh main diberi kode void.

11.2 Fungsi

Sebuah fungsi terdiri dari komponen-komponen sebagai berikut:

1. Nama fungsi, akan dipakai untuk “memanggil” fungsi tersebut jika diperlukan.

2. Type kembalian, yang akan dipakai sebagai “kontrak” antara pemanggil dan fungsi.

3. Parameter (tidak harus ada), yang menjadi “modal” dari fungsi untuk melakukan komputasi.

4. Badan fungsi, yaitu deretan instruksi yang akan dieksekusi saat fungsi dipakai.

Nama fungsi, parameter dan type kembalian mencerminkan konsep fungsi dalam matematika, yaitu suatu pemetaan dari suatu nilai menjadi nilai lain. Misalnya Inverse(X) yang menghasilkan -X. Nama fungsi, parameter dan type kembalian

66 disebut sebagai spesifikasi dari fungsi, harus dijelaskan dengan baik dalam bentuk komentar.

Dari komponen-komponen tersebut, fungsi akan mempunyai pola penulisan sebagai berikut:

1. <type-kembalian> Nama-fungsi (list parameter dipisahkan tanda koma) {

2. /* Spesifikasi: penjelasan ringkas tentang apa yang dil akukan fungsi */

3.

4. return <nilai>;

5. }

Sebuah fungsi akan mengirimkan nilai hasil komputasi dengan instruksi return. Nilai ini akan dapat dimanfaatkan oleh pemanggilnya, yaitu dengan: dipakai pada suatu ekspresi, atau disimpan dalam sebuah variabel, atau dituliskan.

Berikut ini adalah contoh sebuah program utama dalam bahasa C (main) yang memanfaatkan sebuah fungsi yang melakukan penjumlahan dua buah integer, dan sebuah fungsi yang mengirimkan hasil inkremen dari nilai yang diberikan padanya.

Pada program di bawah ini ada dua buah fungsi, yaitu:

1. Fungsi bernama add yang akan menerima dua buah integer sebagai parameter, dan mengirimkan hasil penjumlahannya.

2. Fungsi bernama inkremen, yang akan mengirimkan hasil penambahan 1 dari parameter yang diberikan.

1. /* File: fadd.c */

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

3. /* Deskripsi : */

4. /* Fungsi yang menjumlahkan a+b */

5. #include<stdio.h>

6.

7. int add (int a, int b) {

8. /* fungsi bernama add yang menerima dua integer yaitu a dan b */

9. /* dan mengirimkan hasil penjumlahan a+b */

10. return(a+b);

11. } 12.

13. int inkremen (int a) {

14. /* Mengirimkan nilai a yang sudah ditambah dengan 1;

perhatikan bahwa nilai a TIDAK DIUBAH*/

15. return (a+1);

67 16. }

17. /************************/

18. int main() { 19. int x=10;

20. int y=25;

21. /* pemakaian/pemanggilan fungsi add */

22. printf("Hasil penjumlahan x+y = %d", add(x,y));

23. printf("Hasil penjumlahan 3+2 = %d", add(3,2));

24.

25. /* pemakaian/pemanggilan fungsi inkremen */

26. printf("nilai x : %d\n", x);

27. printf("nilai x setelah ditambah 1 : %d\n", inkremen (x));

28. printf("nilai 5 setelah ditambah 1 : %d\n", inkremen (5));

29.

30. return 0;

31. }

Contoh di atas mungkin belum terasa manfaatnya bagi Anda karena komputasi yang dilakukan oleh fungsi sangat sederhana dan hanya 1 baris saja. Bayangkan jika instruksi yang dikerjakan sangat banyak, seperti halnya teks lampiran, maka akan mengganggu pembacaan program utama. Dengan membungkus menjadi fungsi, teks program utama akan lebih mudah dibaca yaitu hanya dengan memanggil (menyebutkan) nama fungsi berikut parameternya.

Selain fungsi yang Anda tuliskan sendiri, bahasa C menyediakan fungsi yang siap pakai (Anda tidak perlu menuliskan body fungsi), yang dikelompokkan dan siap dipakai dengan menuliskan "header file" yang sesuai.

https://en.wikipedia.org/wiki/C_standard_library.

Fungsi yang sering dibutuhkan pemrogram adalah fungsi untuk membangkitkan bilangan random. Dalam library standar bahasa C, fungsi int rand(void) mengirimkan bilangan pseudo-random dengan rentang nilai 0 s.d RAND_MAX.

RAND_MAX adalah sebuah konstanta yang mungkin bervariasi nilainya tergantung implementasi, tetapi setidaknya 32767. Berikut ini contoh program untuk membangkitkan bilangan random dengan rentang nilai MIN sampai MAX melalui operator modulo (sisa pembagian) yaitu %.

1. /* File: random.c */

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

3. /* Deskripsi : */

4. /* Pemakaian standard library untuk membangkitkan bilan gan random */

68 5. #include<stdio.h>

6. #include <stdlib.h>

7. /************************/

8. int main() {

9. const int MIN=1;

10. const int MAX=100;

11. /* Program akan membangkitkan 5 bilangan random anta r MIN sampai MAX */

12. for(int i = 0; i<5; i++)

13. printf(" %d ", rand()%MAX + MIN);

14. return 0;

15. }

11.2.1 Rangkuman Kompetensi

1. Mengenal komponen pembangun fungsi (spesifikasi, body/badan fungsi), dan memahami bagaimana mendefinisikan fungsi dalam bahasa C.

2. Mengenal, mendefinisikan dan memakai fungsi dalam bahasa C.

3. Memahami fungsi sebagai perwujudan konsep fungsi dalam matematika, dan memahami makna parameter yang dituliskan pada definisi fungsi, dan pemakaian parameter saat fungsi dipanggil. Fungsi melakukan komputasi dan mengirimkan hasilnya. Walaupun dalam bahasa C dimungkinkan untuk mengubah parameter (akan dibahas pada prosedur), fungsi sebaiknya tidak mengubah nilai parameter.

Kelak, akan dikenal sebagai passing parameter by value. Khusus tentang parameter, Anda perlu mulai membaca bacaan pada

https://en.wikipedia.org/wiki/Parameter_(computer_programming)

11.2.2 Aktivitas kreatif

1. Cobalah beberapa fungsi yang disediakan dalam library C, misalnya fungsi untuk melakukan perhitungan matematika yang tersedia dalam

<math.h> dan beberapa terkait komputasi terhadap waktu yang tersedia pada <time.h>

11.2.3 Inilah Computational Thinking!

Fungsi menunjukkan suatu abstraksi, di mana spesifikasi fungsi akan mewakili sekumpulan proses komputasi yang dilakukan. Oleh karena itu, pemilihan nama fungsi menjadi sangat penting, karena harus mencerminkan apa yang dilakukan oleh fungsi itu. Parameter fungsi memungkinkan fungsi dapat melakukan komputasi sesuai dengan nilai parameter yang diberikan. Ini akan sangat berguna saat Anda melakukan pemodelan dan simulasi, salah satu

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.

11.3 Prosedur

Konsep prosedur adalah konsep yang ada pada paradigma pemrograman prosedural. Berbeda dengan fungsi yang melakukan komputasi dan mengirimkan nilai sesuai type kembalian, sebuah prosedur akan "dipanggil" dan dijalankan sebagai potongan program yang tidak akan mengganggu state program [state program dinyatakan sebagai nilai dari variabel pada program pemanggil].

Karena bahasa C hanya mengenal fungsi sebagai bentuk sintaktikal, prosedur dalam bahasa C diimplementasi sebagai fungsi, dengan type kembalian void.

Spesifikasi prosedur dapat mengandung atau tidak mengandung parameter.

Perbedaan antara fungsi dengan prosedur secara konseptual adalah bahwa parameter prosedur dapat diubah nilainya. Parameter yang diubah nilainya akan di-passing sebagai “pointer” dengan tanda *. Parameter yang tidak diubah nilainya dituliskan seperti pada fungsi. Parameter yang diubah nilainya yang pada spesifikasi prosedur dituliskan dengan *, pada saat pemanggilan prosedur ditandai dengan &.

Untuk tahap awal ini, belum dijelaskan lebih detail mengenai arti * dan &.

Penjelasannya akan diberikan pada Modul selanjutnya, yaitu pada bagian Pointer.

Berikut ini adalah contoh prosedur yang mengubah nilai parameter, yaitu:

1. Prosedur plus1 (int * a) akan menambah satu pada nilai paramater a yang diberikan, sehingga nilai a akan bertambah 1 setelah prosedur dijalankan.

2. Prosedur plusd (int*a, int d) akan menambahkan d pada a sehingga nilai a akan berubah setelah prosedur plusd dijalankan.

3. Prosedur swap (int *a, int *b) akan melakukan penukaran nilai dua buah variabel a dan b yang merupakan dua buah parameter prosedur tersebut.

1. /* File: proc.c */

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

3. /* Deskripsi : */

4. /* Contoh program utama dan prosedur untuk menukar 2 b uah nilai */

5. #include<stdio.h>

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:

Dalam dokumen Modul kelas Memulai Pemrograman Dengan C (Halaman 70-73)