• Tidak ada hasil yang ditemukan

Instruksi if-elseif

Dalam dokumen Modul kelas Memulai Pemrograman Dengan C (Halaman 51-54)

BAB VIII. INSTRUKSI KONDISIONAL

8.4 Instruksi if-elseif

Blok instruksi else dapat dituliskan lebih dari satu. Jika ada lebih dari satu tentunya harus disertai kondisi.

1. /* File: IF_ELSE_IF.c */

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

3. /* Deskripsi : */

4. /* contoh pemakaian IF tiga kasus */

5. /* Membaca sebuah nilai, */

6. /* menuliskan 'Nilai a positif , nilai a', jika a >0 */

7. /* 'Nilai Nol , nilai a', jika a = 0 */

8. /* 'Nilai a negatif , nilai a', jika a <0 */

9. #include<stdio.h>

10. int main () 11. {

12. /* Kamus */

13. int a;

14. /* Program */

15. printf ("Contoh IF tiga kasus \n");

16. printf ("Ketikkan suatu nilai integer :");

17. scanf ("%d", &a);

18. if (a > 0) 19. {

20. printf ("Nilai a positif %d \n", a);

21. }

22. else if (a == 0) 23. {

44 24. printf ("Nilai Nol %d \n", a);

25. }

26. else /* a < 0 */

27. {

28. printf ("Nilai a negatif %d \n", a);

29. } 30. return 0;

31. }

8.4.1 Rangkuman Kompetensi

Mengenal perbedaan sintaktikal (bentuk/pola kalimat) if (...) {...} dengan if (...) {...} else {....} dan dibandingkan dengan if (...) {...} else if (...) {....} else {...}.

Memahami eksekusi dari satu kalimat banyak if sebagai sederetan instruksi sekuensial mulai dari atas sampai terakhir, dengan "else" terakhir yang merupakan kondisi "tersisa" dari sebelumnya.

8.4.2 Aktivitas kreatif

Cobalah membuat latihan dengan lebih dari 3 kasus, misalnya:

Berdasarkan kode hari dalam minggu, Anda akan menuliskan (0=Minggu;

1=Senin; 2=Selasa; 3=Rabu; 4=Kamis; 5=Jumat; 6=Sabtu).

Berdasarkan kode bulan, Anda menuliskan nama bulan mulai Januari s.d.

Desember.

Apa perbedaan program di atas dengan program sebagai berikut:

1. /* File: IF_ELSE_IF1.c */

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

3. /* Deskripsi : */

4. /* contoh pemakaian IF tiga kasus */

5. /* Membaca sebuah nilai, */

6. /* menuliskan 'Nilai a positif , nilai a', jika a >0 */

7. /* 'Nilai Nol , nilai a', jika a = 0 */

8. /* 'Nilai a negatif , nilai a', jika a <0 */

9. #include<stdio.h>

10. int main () 11. {

12. /* Kamus */

13. int a;

14. /* Program */

15. printf ("Contoh IF tiga kasus dengan tiga kalimat IF \n");

16. printf ("Ketikkan suatu nilai integer :");

17. scanf ("%d", &a);

18. if (a > 0)

45 19. {

20. printf ("Nilai a positif %d \n", a);

21. }

22. if (a == 0) 23. {

24. printf ("Nilai Nol %d \n", a);

25. } 26. if (a < 0) 27. {

28. printf ("Nilai a negatif %d \n", a);

29. } 30. return 0;

31. }

Untuk contoh ini (tanpa adanya "else" ) akan memberikan dampak eksekusi yang berbeda, yang menjadikan program tidak efisien dan jika analisis sub- persoalan salah, dapat "berbahaya" (kondisi yang sama ditangani dengan sekumpulan instruksi yang berbeda).

8.4.3 Inilah Computational Thinking!

Dibandingkan dengan dekomposisi yang dapat dilakukan dengan instruksi if sebelumnya, dengan instruksi if () { } else if () { } else if () {} else {} Anda dapat melakukan dekomposisi persoalan menjadi berapapun bagian yang Anda tentukan; masing-masing bagian memenuhi syarat yang ditentukan yang melekat pada if sehingga setiap bagian ditangani sesuai dengan syarat terkait. Pola if () { } else {} diaplikasikan untuk membentuk struktur yang lebih kompleks, namun berpola sama.

Perlu dicatat bahwa analisis persoalan yang benar dan "sehat" adalah jika setiap kondisi untuk kelompok instruksi harus berbeda dan tidak beririsan karena merupakan dekomposisi untuk solusi yang diakibatkan oleh kondisi yang berbeda. Penulisan tanpa "else" akan mengakibatkan evaluasi ulang yang tidak mengeliminasi kasus yang sudah ditangani.

46 BAB IX.

INSTRUKSI PENGULANGAN

9.1 Pengantar Instruksi Pengulangan

Pengulangan adalah construct yang terakhir dalam pemrograman prosedural, setelah sekuensial dan kondisional.

Instruksi pengulangan sangat penting dalam pemrograman, karena memungkinkan komputer untuk mengulangi instruksi yang kita berikan dalam program secara konsisten (dibandingkan manusia yang jika mengulang akan cenderung melakukan kesalahan). Setiap bahasa pemrograman menyediakan instruksi pengulangan dengan sintaks (aturan penulisan)-nya masing-masing.

Bahasa C menyediakan tiga “construct” utama untuk pengulangan yaitu bentuk:

1. for (...) { ...};

2. while (....) {.... };

3. do {....} while(...);

9.2 Pengulangan for

Pengulangan for mempunyai pola instruksi sebagai berikut:

1. for (<kondisi-awal>; <kondisi-pengulangan>; <perubah-ko ndisi> ) {

2. /* Badan loop */

3. /* instruksi atau deretan instruksi yang diulang * /

4. }

Program akan mengulang instruksi atau deretan instruksi dalam badan loop for, sampai suatu saat kondisi-pengulangan bernilai FALSE.

Kondisi awal, kondisi-pengulangan dievaluasi dari ekspresi, dan perubah-kondisi harus dipastikan bahwa suatu saat kondisi pengulangan tidak dipenuhi, yang mengakibatkan instruksi for berhenti.

Pemakaian instruksi for yang paling sederhana adalah untuk mengulang sebanyak N kali, dengan mendefinisikan pencacah (counter) adalah sebuah variabel bernama i, dengan nilai I =0,1,2,3…… N, yang diberikan melalui contoh sebuah program yang dibuat untuk menuliskan 3 baris teks sebagai berikut, bukan dengan menuliskan 3 baris instruksi printf tetapi dengan menggunakan for. Output dari program adalah 3 baris teks sebagai berikut:

"Saya senang belajar bahasa C"

"Saya senang belajar bahasa C"

"Saya senang belajar bahasa C"

47 Berikut ini adalah pola penggunaan pengulangan bentuk FOR yang didasari pencacah. Dengan menulis instruksi for, perintah printf hanya perlu dituliskan satu kali saja, karena merupakan instruksi yang akan diulang dengan dikontrol oleh instruksi for.

1. /* File: for.c */

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

3. /* Deskripsi

: 4. /* print “Saya senang” sebanyak 3 kali */

5. #include<stdio.h>

6. int main () 7. {

8. /* Kamus : */

9. int i;

10. /* Algoritma */

11. for (i=0; i<3; i++) {

12. printf ("Saya senang belajar bahasa C \n");

13. }

14. return 0;

15. }

Pada program di atas, pada awal eksekusi instruksi for, i bernilai 0 dan i akan dievaluasi setiap kali pengulangan untuk nilai i=0,1,2, dengan hasil:

1. Pada saat I bernilai 0 atau 1 atau 2, ekspresi i < 3 akan menghasilkan TRUE.

2. Pada saat nilai i=3 maka ekspresi i < 3 akan menghasilkan FALSE (salah), loop berhenti.

Nilai i bisa berubah dari 0 ke 1; 1 ke 2; 2 ke 3 karena setiap kali pelaksanaan, berkat instruksi pengubah yaitu i++.

Instruksi for dapat digunakan untuk membuat pengulangan yang lebih umum, yang akan dijelaskan kemudian.

9.2.1 Rangkuman Kompetensi

1. Mengenal pola kalimat for dalam bahasa C, khususnya untuk melakukan iterasi i=0,1,2,3….

2. Mengaplikasikan pola pengulangan berdasarkan pencacah untuk mengulang menulis teks.

48 9.2.2 Aktivitas Kreatif

1. Ubahlah teks program di atas sehingga mengulang untuk menuliskan teks “Saya senang belajar bahasa C” sebanyak 1000 kali.

2. Tuliskan sebuah program yang dapat mengulang menuliskan “Saya seang belajar bahasa C” sebanyak N kali, dengan nilai N yang akan ditentukan dari deklarasinya.

3. Tuliskan sebuah program yang dapat mengulang menuliskan “Saya seang belajar bahasa C” sebanyak N kali, dengan nilai N yang akan dibaca dengan scanf.

9.2.3 Inilah Computational Thinking!

Loop adalah abstraksi dari proses pengulangan. Dengan hanya menuliskan satu baris saja, program dapat mengulang melakukan sejumlah instruksi.

Anda dapat menuliskan ribuan baris hanya dengan menulis 3 baris instruksi program!

9.3 Pengulangan while-do

Pola kalimat while-do dalam bahasa C adalah sebagai berikut:

1. while (<kondisi-pengulangan>) { 2. /* Badan loop */

3. /* deretan instruksi yang diulang */

4.

5. }

Urutan instruksi yang dikerjakan dengan pola instruksi while tersebut adalah sebagai berikut:

[1] Program melakukan evaluasi kondisi-pengulangan.

[2] Jika hasil evaluasinya benar, maka deretan instruksi dilaksanakan.

[1] Program melakukan evaluasi kondisi- pengulangan.

[2] Jika hasil evaluasinya benar, maka deretan instruksi dilaksanakan.

Diulang sampai suatu saat hasil evaluasi salah . . . [1] Program melakukan evaluasi kondisi-pengulangan.

[2] Jika hasil evaluasinya salah, maka pengulangan dihentikan.

Deretan eksekusi di atas dapat diringkas penulisannya menjadi:

Selama kondisi-pengulangan benar, Kerjakan deretan instruksi

49 Dengan demikian, ada kemungkinan bahwa deretan instruksi tidak pernah dikerjakan, yaitu jika pada evaluasi pertama kali, hasil evaluasi kondisi pengulangan bernilai salah (FALSE).

1. /* File: WHILEdo.c */

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

3. /* Deskripsi : */

4. /* print “Saya senang” sebanyak 3 kali */

5. #include<stdio.h>

6. int main () 7. {

8. /* Kamus : */

9. int i=0;

10. /* Algoritma */

11. while (i<3) { /* program diulang selama nilai i < 3 */

12. printf ("Saya senang belajar bahasa C \n");

13. i++;

14. }

15. return 0;

16. }

9.3.1 Rangkuman Kompetensi

1. Mengenal, memahami pola kalimat while () { } dan mengaplikasikan untuk program contoh.

2. Mengenal pola eksekusi dan abstraksi dari while () { }.

9.3.2 Aktivitas kreatif

1. Analisis bentuk pengulangan bagian ini, dan diskusikan mengenai kesamaan dan perbedaannya dengan bentuk for dengan pencacah yang dijelaskan sebelumnya.

2. Berikan contoh program yang mengandung instruksi pengulangan WHILE yang tidak pernah dieksekusi instruksi dalam badan loop-nya.

3. Ubahlah contoh program dalam bentuk for pada contoh sebelumnya menjadi pengulangan dengan pola kalimat while () {}.

9.3.3 Inilah Computational Thinking!

Pada bagian ini, Anda diharapkan memahami abstraksi dari pengulangan, yang dituliskan dengan bentuk pola kalimat yang lain. Untuk hasil eksekusi program yang sama persis dengan contoh sebelumnya, program dapat dituliskan instruksi yang berbeda.

50 9.4 Pengulangan do-while

Pola kalimat while-do dalam bahasa C adalah sebagai berikut:

1. do {

2. /* Badan loop */

3. /* deretan instruksi yang diulang */

4.

5. } while (<kondisi-pengulangan>) ;

Eksekusi dari pengulangan bentuk ini dapat diuraikan sebagai berikut:

[1] Program mengeksekusi deretan instruksi yang diulang.

[2] Program melakukan evaluasi kondisi-pengulangan.

[3] Jika hasil evaluasinya benar, maka deretan instruksi dilaksanakan.

[1] Program megeksekusi deretan instruksi yang diulang.

[2] Program melakukan evaluasi kondisi-pengulangan.

[3] Jika hasil evaluasinya benar, maka deretan instruksi dilaksanakan.

Diulang sampai evaluasi kondisi pengulangan hasilnya salah . . . [1] Program megeksekusi deretan instruksi yang diulang.

[2] Program melakukan evaluasi kondisi- pengulangan.

[3] Jika hasil evaluasinya salah, maka pengulangan dihentikan.

Deretan eksekusi diatas dapat diringkas penulisannya menjadi:

Kerjakan deretan instruksi

Selama kondisi-pengulangan benar

Dengan demikian, dapat disimpulkan bahwa deretan instruksi dalam badan loop pasti dikerjakan minimal satu kali.

1. /* File: doWHILE.c */

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

3. /* Deskripsi : *

/ 4. /* print “Saya senang” sebanyak 3 kali */

5. #include<stdio.h>

6. int main () 7. {

8. /* Kamus : */

9. int i=0;

10. /* Algoritma */

51 11. do {

12. printf ("Saya senang belajar bahasa C \n");

13. i++;

14. } while (i<5);

15. return 0;

16. }

9.4.1 Rangkuman Kompetensi

1. Mengenal, dan memahami pola kalimat do{ } while (); dan mengaplikasikan untuk program contoh.

2. Mengenal pola eksekusi dan abstraksi dari do { } while ();.

3. Karena deretan instruksi dalam badan loop pasti dilaksanakan minimal satu kali, Anda perlu melakukan analisis yang cermat yaitu yakin bahwa instruksi dalam "badan loop" pasti dilaksanakan minimal satu kali tanpa perlu diperiksa sebelumnya

9.4.2 Aktivitas kreatif

1. Ubahlah program contoh yang diberikan dalam bagian for menjadi bentuk pengulangan yang dijelaskan pada bagian ini.

2. Ubahlah program contoh yang diberikan dalam bentuk while (..) {...}

menjadi bentuk pengulangan yang dijelaskan dalam bagian ini.

9.4.3 Inilah Computational Thinking!

Anda lakukan dekomposisi suatu construct pengulangan, dan Anda akan menemukan bagian-bagian yang sama : kondisi pengulangan atau kondisi berhenti, dan kumpulan instruksi yang diulang, Anda akan memahami eksekusinya dari kata kunci yang diberikan.

Dengan melakukan dekonstruksi (dekomposisi program menjadi elemen- elemen pembangunnya), Anda dapat mengkonstruksi ulang suatu program menjadi bentuk yang lainnya, yang menghasilkan eksekusi yang sama. Anda mengenali elemen pembangun program dari kata kunci yang dipakai untuk menuliskan instruksi tersebut (aspek tekstual dan sintaktikal), dan juga memahami aspek eksekusi programnya. Sebuah program yang tampaknya berbeda akan sama efeknya (hasilnya) jika dieksekusi. Konstruksi program yang baik dan benar adalah yang dekat dengan maknanya.

Melalui berbagai bentuk loop, Anda mengenal bagaimana komputasi dijalankan oleh komputer untuk dipakai memecahkan persoalan anda.

52 9.5 Forever

Program berikut ini adalah contoh program yang akan dijalankan terus menerus, yang kelak akan berguna. Misalnya, program sistem operasi, akan berjalan terus menerus menunggu sampai pengguna menekan suatu tanda “exit”. sebuah "screen saver" juga akan menggambarkan sesuatu di layar secara terus menerus.

Untuk saat ini, cara menghentikan program adalah dengan menginterupsi eksekusi yaitu dengan menekan tombol [Ctrl] dan tombol "c" secara bersamaan.

1. /* File: forever.c */

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

3. /* Deskripsi : *

/ 4. /* Loop terus menerus, akan sering dipakai untuk progr

am menunggu event */

5. #include<stdio.h>

6. int main () 7. {/* Kamus : */

8.

9. /* Program */

10. printf("Program akan looping, akhiri dengan Ctrl-c

");

11. while (1) /* atau for (;;) */

12. { printf ("Tunggu ^c....\n");

13. /* program akan terus menerus dijalankan, sampai diinterupsi*/

14. /* cara interupsi adalah dengan menekan t ombol [Ctrl] dan tombol "c" bersamaan*/

15. }

16. return 0;

17. }

Instruksi while (1) akan selalu menghasilkan benar sehingga instruksi dalam badan loop while tersebut akan dieksekusi terus menerus.

Sedangkan for (;;) biasa dibaca sebagai forever artinya tidak ada yang dilakukan pada awal, tidak ada definisi kondisi berhenti, dan tidak ada instruksi pengubah.

Artinya adalah badan loop akan dijalankan terus menerus karena tidak ada awal dan tidak ada akhir.

JIka dalam badan loop tidak ada instruksi menulis, maka Anda tidak akan tahu bahwa program sedang aktif menjalankan instruksi dalam badan loop.

53 9.5.1 Rangkuman Kompetensi

1. Mengenal kerangka program yang akan berjalan tanpa henti, yaitu program yang hidup terus menerus yang terkadang justru dibutuhkan kelak.

9.5.2 Aktivitas kreatif

1. Anda dapat menambahkan instruksi untuk menangani ketukan tombol/kunci yang lain (bukan interupsi) dalam badan loop.

9.5.3 Inilah Computational Thinking!

Pada contoh ini, Anda mempelajari pola sebuah program yang hidup terus menerus (infinite loop), yang memang sengaja diprogram seperti contoh di atas. Sebuah loop yang terus menerus akibat kesalahan program tidak boleh terjadi. Misalnya program sebagai berikut:

1. #include <stdio.h>

2.

3. int main(void) 4. {

5. int a = 0;

6. while (a < 10) { 7. printf("%d\n", a);

8. if (a = 5)

9. printf("a equals 5!\n");

10. a++;

11. }

12. return 0;

13. }

Program di atas akan mengakibatkan program tidak pernah berhenti karena instruksi if (a=5) akan mengakibatkan evaluasi kondisi pada if selalu true dan a bernilai 5. Setelah instruksi if, a akan bernilai 6.

54 BAB X.

ARRAY – TABEL

10.1 Pengantar Array – Tabel

Satu nama variabel yang pernah Anda deklarasikan, hanya berisi satu nilai saja.

Ada kasus di mana kita membutuhkan untuk menyimpan sekumpulan nilai yang merupakan himpunan nilai yang maknanya sejenis. Misalnya ada 5 anak, dan kita ingin menyimpan data umur masing-masing anak yang ber-type integer.

Untuk menyimpan data umur kelima anak tersebut, kita dapat menuliskan 5 baris instruksi seperti berikut:

int umur1;

int umur2;

int umur3;

int umur4;

int umur5;

Cara tersebut tidak praktis, bayangkan jika nilai yang disimpan untuk 1000 anak atau bahkan lebih. Program Anda akan sangat panjang hanya untuk mendeklarasikan variabel saja.

Untuk mendefinisikan tabel umur yang dapat menampung 1000 nilai integer, Anda cukup membuat deklarasi.

int umur[1000];

Dan Anda akan dapat mengakses elemennya dengan indeks yang dimulai dari 0:

umur[0], umur[1], … umur[999].

Tabel dikenal dengan istilah lain : array, vektor, larik,…

10.2 Inisialisasi Isi Tabel

Berikut ini adalah contoh cara inisialisasi nilai tabel sesuai type elemen yang disimpannya, pada deklarasi tabel.

1. /* File: tabel1.c */

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

3. /* Deskripsi : */

4. /* Mendefinisikan array dan mengisi nilainya */

5. #include<stdio.h>

6. int main () 7. {/* Kamus : */

8. /* Kamus */

55 9. int Tab [5] = {1, 2, 3, 4, 5};/* Tab[0]=1; Tab[1]=2;

. .. Tab[4]=5 */

10. float TabX[3]= {1.5, 3.5E2, 9.99};

11. char Tabchar[4]= {'1', '2', '@', 'Z'};

12.

13. int i; /* untuk iterasi indeks tabel */

14. /* menuliskan isi Tab berderet ke kanan*/

15. for (i=0; i<5; i++) {

16. printf ("Tab[%d]= %d ;", i, Tab[i]);

17. }

18. printf ("\n");

19.

20. /* Latihan : tuliskan nilai TabX dan TabChar */

21.

22. return 0;

23. }

10.2.1 Rangkuman Kompetensi

1. Mengenal definisi tabel, kegunaannya secara sederhana untuk menyimpan banyak nilai.

2. Mengenal cara deklarasi dan inisialisasi tabel, dan menuliskannya.

10.2.2 Aktivitas kreatif

1. Modifikasi program untuk menuliskan nilai berderet ke bawah.

2. Modifikasi program di atas, jika diinginkan outputnya adalah indeks tabel, dan tabelnya sebagai berikut:

0 1 1 2 2 3 3 4 4 5

3. Ubah program sehingga hasil outputnya menjadi:

Tab[0] = 1 Tab[1] = 2 Tab[2] = 3 Tab[3] = 4 Tab[4] = 5

10.2.3 Inilah Computational Thinking!

Tabel merupakan salah satu cara untuk mengorganisasi sekumpulan data yang penting dalam informatika. Tabel juga mengabstraksi sekumpulan data ber-

56 type sama, yang akan diolah sebagai sekumpulan nilai. Menganalisis dan mengorganisasi data secara logis adalah penjabaran operasional dari pilar algoritma dalam Computational Thinking.

10.3 Baca Tulis Isi Tabel

Seperti halnya dengan type primitif lainnya, selain menentukan nilai variabel dengan melakukan inisialisasi pada saat deklarasi, proses penentuan nilai dapat dilakukan dengan assignment, atau dari pembacaan input. Berikut ini contoh program mendeklarasikan tabel dan mengisi nilainya dari hasil pembacaan dari apa yang diketikkan pengguna dengan instruksi scanf.

1. /* File: tabel1.c */

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

3. /* Deskripsi : *

/

4. /* Mendefinisikan array dan mengisi nilainya dari inpu t yang dibaca */

5. #include<stdio.h>

6. int main () 7. {

8. /* Kamus */

9. int Tab [5];

10. int i;

11. /* baca isi Tab */

12. for (i=0; i<5; i++) { 13. scanf ("%d", &Tab[i]);

14. } 15.

16. /* menuliskan isi Tab berderet ke kanan*/

17. for (i=0; i<5; i++) {

18. printf ("Tab[%d]= %d ;", i, Tab[i]);

19. }

20. printf ("\n");

21.

22. return 0;

23. }

10.3.1 Rangkuman Kompetensi

Mengenal cara mengisi nilai elemen tabel dengan instruksi pembacaan.

Selanjutnya, Anda dapat melakukan proses lain dari hasil pembacaan.

Misalnya menghitung rata-rata, nilai tengah, atau lainnya.

57 10.3.2 Aktivitas kreatif

Ubahlah program di atas sehingga pengisian tabel dilakukan dengan instruksi assignment. Diskusikan perbedaan, limitasi & kelebihan cara dari berbagai cara pengisian tabel (inisialisasi, assignment, atau pembacaan input) dan akibatnya. Memilih cara yang paling tepat untuk mendapatkan hasil yang sama adalah mengolah kemampuan problem solving.

10.3.3 Inilah Computational Thinking!

Sekumpulan data yang akan diproses terkadang harus disimpan dalam tabel, dan berasal dari data yang diinput oleh pengguna. Melalui contoh program di atas, Anda akan menggunakannya untuk membaca dan menyimpan data dari dunia nyata, seperti yang dicontohkan. Misalnya saat Anda perlu memecahkan persoalan terkait sekumpulan objek (buku, orang, barang,…).

Hal ini akan dilatih pada modul latihan problem solving.

10.4 Maximum-Minimum

Diketahui sekumpulan nilai, proses yang paling sering diperlukan adalah mengetahui nilai maksimum. Misalnya, Anda ingin mengetahui umur yang paling tua, anak yang paling berat, nilai yang paling tinggi.

Selain nilai maksimum, diperlukan juga nilai minimum: anak yang paling muda, dan berat badannya paling ringan (artinya paling kurus), atau siswa yang nilainya paling rendah (untuk dapat diberi tutorial khusus).

Pada contoh berikut, diberikan ilustrasi tentang menentukan nilai maksimum dari sekumpulan nilai yang disimpan pada tabel integer. Karena proses yang perlu ditunjukkan adalah menentukan maksimum, maka pengisian tabel dilakukan dengan inisialisasi untuk mempersingkat program dan ketermudahan baca.

Penentuan nilai maksimum dilakukan dengan memeriksa elemen tabel satu per satu, mulai dari elemen ke-1 sampai dengan elemen yang terakhir, yaitu dengan membandingkan setiap elemen dengan nilai maksimum sementara yang disimpan.

Kenapa dimulai dari elemen ke-1? Karena nilai maksimum sementara harus dipunyai saat proses mengulang dimulai, sehingga secara umum, algoritma untuk menentukan nilai maksimum yang disimpan pada Tabel bernama Tab dengan 10 elemen adalah:

Tentukan Tab[0] sebagai nilai maksimum sementara yang diberi nama max

!

Untuk setiap elemen Tab[1] s.d. Tab[9] yang diakses dengan nama Tab[i]

Jika nilai Tab[i] > max maka max=Tab[i]

/* selesai pemeriksaan Tab[1] s.d. Tab[9]: max adalah nilai paling besar */

58 Program lengkap dalam bahasa C diberikan sebagai berikut:

1. /* File: max.c */

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

3. /* Deskripsi : */

4. /* Mencari nilai maksimum dari sebuah tabel yang berisi 10 nilai integer */

5. #include<stdio.h>

6. int main () 7. {/* Kamus : */

8. int i;

9. int Tab[10]= { 1, 50 , 6 , 200, 3, 100, 30, 8, 99, 10 0 };

10. int max;

11. /* Algoritma */

12. max = Tab[0];

13. for (i=1;i< 10; i++) { 14. if (Tab[i]>max) { 15. max=Tab[i];

16. } 17. }

18. printf ("Nilai Max= %d", max); return 0;

19. }

10.4.1 Rangkuman Kompetensi

1. Memahami algoritma untuk menentukan nilai maksimum dari sekumpulan nilai yang disimpan dalam sebuah tabel.

2. Koding algoritma yang diberikan menjadi program dalam bahasa C.

10.4.2 Aktivitas kreatif

1. Bangun algoritma lain dengan menggunakan pola algoritma penentuan maksimum menjadi:

 Menentukan nilai minimum, dengan hanya mengubah variabel max menjadi min dan mengubah satu karakter saja.

 Menentukan nilai rata-rata dari isi Tabel.

 Menentukan “median” dari isi tabel. Median adalah nilai tengah.

Anda bisa mengurutkannya kemudian mengambil item yang berada di tengahnya (total array / 2).

 Jika ada kemungkinan bahwa nilai yang maksimum muncul lebih dari satu kali (misalnya anak yang paling tua umurnya sama), menentukan nilai maksimum dan sekaligus banyaknya elemen tabel yang nilainya maksimum tersebut.

59 2. Karena Anda sudah mengenal berbagai bentuk loop, ubahlah program

contoh di atas menggunakan bentuk loop yang lain.

10.4.3 Inilah Computational Thinking!

Memakai pola program maksimum untuk menentukan minimum dengan memodifikasi sesedikit mungkin, adalah Computational Thinking! Anda tidak memulai solusi dari "nol", tetapi memanfaatkan pola program yang sudah ada.

10.5 Sorting-Maximum Sort

Selain menentukan nilai maksimum/minimum, atau menyimpulkan sesuatu dari sekumpulan nilai, proses mengurutkan adalah salah satu proses yang penting dalam informatika.

Ada berbagai cara untuk melakukan pengurutan (sorting). Tentang sorting dan berbagai metoda sorting dapat Anda pelajari di website berikut.

1. https://en.wikipedia.org/wiki/Sort

2. https://en.wikipedia.org/wiki/Sorting_algorithm 3. https://en.wikipedia.org/wiki/Comparison_sort

Salah seorang ahli dalam bidang informatika, yaitu Donald Knuth, pada tahun 1970-an sudah menuliskan satu buku yang layak Anda baca hanya tentang sorting & searching, yang berjudul : "The Art of Computer Programming:

Volume 3: Sorting and Searching."

Proses sorting adalah proses yang paling menarik di dunia informatika, karena ada banyak sekali algoritma yang sudah ditemukan, untuk mendapatkan hasil yang sama yaitu data terurut. Dasar dari proses sorting sangat beragam, antara lain dengan penyisipan (insertion), pertukaran (exchange), seleksi/pemilihan (selection), penggabungan (merging), perbandingan (comparison), atau lainnya.

Algoritma sorting menjadi dasar untuk mempelajari kinerja dan kompleksitas algoritma.

Pada tutorial ini, hanya akan disajikan satu metoda sorting yaitu dengan menentukan nilai maksimum untuk mengurutkan nilai tabel terurut mengecil, yaitu untuk suatu tabel Tab[N] dengan nilai sembarang, setelah proses pengurutan, diperoleh properti: Tab[0] >= Tab[1] >= . . . Tab[N-1]

Algoritma secara umum untuk tabel dengan 10 elemen adalah:

Ulangi untuk Tab[0] s.d. Tab[9], Sebut indeks saat ini adalah i

Tentukan indeks pada Tab[k] s.d. Tab [9] yang nilainya maksimum Tukar isi Tab[i] dengan Tab[max]

60 Proses hanya perlu dilakukan s.d Tab[8] sebab yang terakhir yaitu Tab[9] tidak perlu diurutkan lagi.

Program dalam bahasa C untuk algoritma di atas adalah sebagai berikut 1. /* File: maxsort.c */

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

3. /* Deskripsi : */

4. /* Mengurutkan elemen tabel dengan metoda makimum sort

*/

5. #include<stdio.h>

6. int main () 7. {

8. /* Kamus : */

9. int i;

10. int Tab[10]= { 1, 50 , 6 , 200, 3, 100, 30, 8, 99, 10 0 };

11. int max; /* indek di mana Tab[max] bernilai maksimum

*/

12. int k, temp; /* variabel kerja */

13. /* Algoritma maximum sort menurun, indeks paling keci l berisi nilai paling besar*/

14. for (i=0; i<9; i++ ){

15. /* tentukan indeks max, di mana Tab[max] bernilai mak simum */

16. /* untuk index tabel i..10 */

17. max = i;

18. for (k= i+1 ;k< 10; k++) { 19. if (Tab[k]> Tab[max]) { 20. max=k;

21. } 22. } 23.

24. /* Tukar nilai Tab[max] dengan tab[i] */

25. temp= Tab[i];

26. Tab[i]= Tab[max];

27. Tab[max] = temp;

28. }

29. for (i=0;i<10;i++) {

30. printf (" %d ; ", Tab[i]);

31. }

32. return 0;

Dalam dokumen Modul kelas Memulai Pemrograman Dengan C (Halaman 51-54)