• Tidak ada hasil yang ditemukan

Inilah Computational Thinking!

Dalam dokumen Modul kelas Memulai Pemrograman Dengan C (Halaman 30-37)

BAB V. KONSTANTA

5.3 Inilah Computational Thinking!

Sekali lagi, pola deklarasi dipakai untuk type char.

23 4.6 Rangkuman Pembelajaran Inisialisasi dan Assignment

4.6.1 Contoh program di Modul Pengisian Nilai dengan Inisialisasi

Gambar IV-6 Rangkuman Contoh Program Pengisian Nilai dengan Inisialisasi.

4.6.2 Contoh program di Modul Pengisian Nilai dengan Assignment.

Gambar IV-7 Contoh Program Pengisian Nilai dengan Assignment

Perhatikanlah kembali pada kedua contoh program di atas. Pada contoh Program inisialisasi, Anda akan mengisi variabel dengan nilai bilangan bulat

24 pada saat nama variabel dideklarasikan, sedangkan pada program assignment Anda mengisinya dengan instruksi assignment.

4.6.3 Contoh program di Modul Inisialisasi dan Assignment Nilai Bilangan Riil

Gambar IV-8 Contoh Program Inisialisasi dan Assignment Nilai Bilangan Riil Tentu saja variabel penyimpannya bertipekan bilangan bulat (integer) yang dalam bahasa C dituliskan sebagai int. Sedangkan pada program di atas Anda mengisi variabel ber-type float yaitu bilangan riil dengan angka riil. Selain itu, Anda belajar bahwa menuliskan suatu nilai membutuhkan pedoman, format bagaimana nilai integer, nilai bilangan riil atau char dituliskan.

4.6.4 Rangkuman Kompetensi

1. Membedakan deklarasi variabel yang langsung diinisialisasi nilainya, dengan instruksi “assignment” yang dinyatakan oleh tanda =.

2. Memahami karakter yang dipakai sebagai kode untuk tampilan yaitu

%d %f %c.

3. Memahami perbedaan type integer, bilangan riil dan karakter, serta memahami bagaimana nilai disimpan dan ditampilkan.

25 4.6.5 Latihan kreativitas

Untuk type karakter, format pencetakan dapat dilakukan dengan %d atau %c.

Bagaimana kalau format-nya tidak sesuai dengan yang diberikan pada contoh?

26 BAB V.

KONSTANTA

Konstanta secara konseptual adalah sebuah nama yang isinya tidak boleh diubah, berbeda dengan variabel yang isinya (nilainya) dapat diubah-ubah. Konstanta dapat dituliskan dalam bentuk literal sesuai dengan nilai yang dimaksud. Kenapa konstanta dituliskan sebagai nama dari pada sebagai literal ? agar sekali sebut nilainya dapat dipakai berkali-kali sesuai makna yang terkandung dalam nama konstanta, dan untuk menghindari literal yang bertebaran dalam sebuah program, yang dapat menimbulkan ke-tidak-konsisten-an dalam penulisan (jika salah ketik, maka konstanta yang maksudnya sama akan berbeda nilainya).

Ada tiga cara mendefinisikan konstanta dalam bahasa C, yaitu:

1. Dengan menuliskan nilainya secara langsung (disebut sebagai "literal" sesuai konvensi penulisan dalam bahasanya). Dengan cara ini, tidak mungkin muncul dalam deklarasi nama (karena tidak bernama), dan juga tidak mungkin ditulis di ruas kiri tanda assignment = karena akan menimbulkan salah sintaks.

2. Dengan memanfaatkan macro berkata kunci #define.

3. Dengan mendeklarasikan sebagai const kemudian menyebutkan type dan nilainya.

Best practices: tuliskan nama konstanta sesuai dengan artinya, dan biasanya dituliskan dalam huruf kapital.

Ketiga cara tersebut dituliskan sekaligus dalam sebuah program contoh sebagai berikut.

27 Gambar V-1 Cara Mendefinisikan Konstanta dalam Bahasa C

5.1 Rangkuman Kompetensi

1. Memahami arti konstanta, dan membedakan antara konstanta dengan variabel.

2. Mengaplikasikan berbagai cara mendefinisikan konstanta, dan menuliskan hasilnya.

5.2 Aktivitas Kreatif

1. Mendefinisikan nama konstanta yang nilainya tidak sesuai maknanya.

Contoh:

28 Gambar V-2 Mendefinisikan nama konstanta yang nilainya tidak sesuai

maknanya

Catatan: kreativitas seperti ini sebaiknya tidak dilakukan karena membingungkan pembaca program dan bisa menimbulkan salah pengertian.

2. Cobalah untuk mengubah nilai konstanta pada badan program dengan melakukan assignment.

5.3 Inilah Computational Thinking!

Konsep Konstanta adalah salah satu construct dalam bahasa pemrograman prosedural/imperatif, termasuk dalam bahasa C, yang harus dipahami bagaimana penulisan dan penggunaannya, serta mekanisme pendefinisian dan penentuan nilai dalam program. Berbeda dengan variabel yang nilainya dapat diganti-ganti, sebuah nama yang dideklarasi sebagai konstanta akan dicegah untuk diubah nilainya.

29 BAB VI.

BACA-TULIS

6.1 Pengantar Baca-Tulis

Suatu program yang nilainya diberikan dengan assigment dan/atau konstanta, tidak akan dapat dijalankan untuk data lain tanpa mengubah programnya. Agar program dapat dijalankan dengan data yang berbeda tanpa mengubah program, data diberikan dari luar program dengan instruksi baca yaitu scanf dalam bahasa C, dengan menggunakan input standar.

Seperti halnya pada printf di mana Anda harus mendefinisikan format output, untuk membaca suatu data diperlukan format input, yang pada umumnya sama dengan format output. Instruksi scanf juga harus disertai dengan %d %f %c sesuai dengan type data yang dibaca.

Perbedaan antara instruksi membaca dan menulis adalah dari cara menuliskan nama variabel yang nilainya dibaca. Berikut ini contohnya:

1. Untuk membaca nilai sebuah variabel integer bernama J, instruksinya adalah scanf (“%d”, &J);.

2. Untuk membaca nilai sebuah variabel bilangan riil bernama X, instruksinya adalah scanf (“%f”, &X);.

3. Untuk membaca nilai sebuah variabel bertype char bernama CX, instruksinya adalah scanf (“%c”, &CX);.

Perhatikan tanda & sebelum nama variabel, yang harus dibaca dengan “address of”, merupakan salah satu operator bahasa C yang akan dijelaskan pada Modul 3.

Address of artinya menunjukkan alamat dari variabelnya, misalnya &J artinya alamat dari variabel bernama J.

Untuk tahap awal ini, kalimat scanf (“%d”, &J); bermakna memberikan perintah kepada komputer, untuk menyimpan nilai yang diketikkan dengan format %d (semuanya angka) ke alamat memori yang oleh program dalam bahasa C dikenal melalui namanya yaitu variabel J. Tanpa menuliskan karakter & nilai yang diketikkan tidak akan disimpan. Hal ini akan dijelaskan lebih detail pada modul III. Untuk sementara ini, bagi pemula, harap diperhatikan pola penulisan instruksi baca yang diberikan, agar nilai yang dibaca dapat disimpan dengan benar pada variabel yang diberikan.

Nilai yang diketikkan harus sesuai dengan "format" dan type data saat nama variabel dideklarasikan:

Untuk type data integer, "%d" artinya adalah bahwa program akan membaca data deretan bilangan saja, misalnya 12 sedangkan untuk "%f" program akan membaca sederetan angka yang boleh mengandung titik desimal 34.5 atau dalam format eksponen 3.5E+2 (artinya 350). Perhatikan batasan nilai yang dapat disimpan dalam type int dan float (baca spesifikasi bahasa C), biasanya integer terbatas dari -32768 s.d. 32767 sedangkan bilangan riil antara 10^-38 s.d 10^38. Beberapa

30 varian dari bilangan bulat adalah short, long sedangkan varian bilangan riil adalah double.

6.2 Pembacaan dan Penulisan Nilai Bilangan Numerik

Bilangan numerik dibaca dengan pola instruksi seperti yang dijelaskan sebelumnya.

Arti dari %d dan %f dari pembacaan adalah bahwa untuk integer, program akan membaca semua deretan angka yang diketikkan sampai pengguna menekan “enter.”

1. /* File: bacaNum.c */

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

3. /* Deskripsi :

*/

4. /* contoh membaca nilai numerik: bilangan bulat, bilangan riil */

5. /* kemudian menuliskan nilai yang dibaca */

6. #include<stdio.h>

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

9. int a;

10. float x;

11. /* Program */

12. printf ("Contoh membaca dan menulis, ketik nilai integer: ");

13. scanf ("%d", &a); /* membaca nilai a yang bertype integer perhatikan bahwa nama variabel ditulis dg &a*/

14. printf ("Nilai yang dibaca : %d \n", a);

15.

16. printf ("ketik nilai sebuah bilangan riil: ");

17. scanf ("%f", &x); /* membaca nilai a yang bertype integer*/

18. printf ("Nilai yang dibaca : %f \n", x);

19.

20. /* coba ketik : scanf ("%d", a);dan tuliskan nilainya.

Apa akibatnya ?*/

21. /* coba ketik : scanf ("%f", x);dan tuliskan nilainya.

Apa akibatnya ?*/

22.

23. return 0;

24. }

31 6.2.1 Rangkuman Kompetensi

1. Mengenal, memahami dan memakai instruksi membaca dan format data input.

2. Data yang telah di-input dapat ditampilkan kembali dengan format yang berbeda, asalkan cocok.

3. Memahami bagaimana data disimpan dan ditampilkan. Data yang sama dapat ditampilkan dengan cara yang berbeda.

4. Mengacu ke program Halo Dunia, simpulkan mengapa untuk Halo Dunia tidak dibutuhkan format %d %f %c.

6.2.2 Aktivitas kreatif

Cobalah untuk mengetikkan nilai numerik yang tidak sesuai dengan type- nya, amatilah apa yang terjadi. Dari berbagai kombinasi input yang Anda coba, simpulkan arti dari %d dan %f dengan lebih formal. Tuliskan aturan yang jelas mengenai data yang diinput dengan menggunakan format

%d dan %f.

6.2.3 Inilah Computational Thinking!

Perintah Baca (scanf) dan Tulis (printf) adalah perintah dasar dalam pemrograman prosedural/imperatif, termasuk dalam bahasa C. Ada beberapa varian perintah ini, yang dapat Anda pelajari kelak. Pada perintah "Baca", program menunggu sampai pengguna mengetikkan nilai yang dibaca dan akan disimpan dalam nama variabel yang diberikan. Sedangkan pada perintah

"Tulis" program akan mencetak nilai variabel sesuai pola yang diberikan dalam format nilai yang akan ditulis. Melalui perintah Baca dan Tulis, program berinteraksi dengan penggunanya.

Urut-urutan membaca, perhitungan, penulisan harus dituliskan dengan benar.

Misalnya Anda tidak boleh menulis sebuah nilai variabel yang belum pernah didefinisikan sebelumnya melalui inisialisasi nilai, assignment atau pembacaan.

6.3 Membaca Nilai Sebuah Karakter

Variabel bertipekan karakter, dapat dibaca dari kode ASCII atau karakter yang diketikkan. Untuk memasukkan nilai karakter, Anda tidak perlu mengetikkan tanda petik, cukup ketikkan nilainya. Misalnya ketikkan Z untuk mengisi nilai variabel bertype char dengan nilai ‘Z’. Format untuk membaca disesuaikan dengan input- nya:

Jika dibaca dari kode ASCII, maka format pembacaannya adalah %d.

Jika dibaca dari huruf/angka atau karakternya, maka format pembacaannya adalah

%c.

32 Gambar VI-1 Membaca Nilai Sebuah Karakter

6.3.1 Rangkuman Kompetensi

Mengenal, memahami, dan mengaplikasi cara memasukkan (input) data bertipekan char.

6.3.2 Aktivitas kreatif

1. Setiap pembacaan selalu diakhiri dengan mengetikkan [enter] yang pada kenyataannya tidak disimpan. Lalu, bagaimana caranya untuk mempunyai sebuah variabel yang isinya [Enter]?

2. Amati dan jelaskan apa yang terjadi jika dituliskan dua buah instruksi sebagai berikut:

scanf ("%c ", &cc); scanf ("%c ", &cc);

3. Apa yang harus diketikkan sebagai input jika dituliskan instruksi sebagai berikut:

scanf ("%c %c", &cc, &c);

6.3.3 Inilah Computational Thinking!

Setelah Anda memahami perintah baca dan tulis untuk bilangan numerik, anda sekarang dapat mengenali pola untuk membaca dan menulis variabel berjenis "karakter" yaitu sebuah huruf yang dikenali kode ASCII nya.

Anda juga akan mengenali pola untuk format masing-masing type, yaitu %d,

%f, dan %c. Anda juga akan mampu membaca spesifikasi type yang lain dalam tutorial di Internet terkait kompiler bahasa C yang anda pakai, untuk membaca dan menuliskan variabel bertype lain yang tersedia dalam bahasa tersebut.

33 BAB VII.

OPERATOR SEDERHANA DENGAN OPERATOR

7.1 Pengantar Operasi Sederhana dengan Komputer

Dengan mempunyai CPU (Central Processing Unit) yang terdiri dari ALU (Arithmetic and Logical Unit), komputer dapat melakukan perhitungan aritmetika (perhitungan kali, bagi, tambah, kurang), operasi logika (aljabar boolean), atau perbandingan (sama, tidak sama, lebih besar, lebih kecil). Dengan operasi dasar ini, Anda dapat melakukan proses komputasi yang Anda butuhkan. Misalnya melakukan kalkulasi berdasarkan suatu rumus. mengurutkan, mencari suatu nilai yang harganya tertentu, atau melakukan operasi bit hitam putih menghasilkan gambar hitam/putih dalam kodifikasi informasi.

7.2 Operasi Aritmatika

Berikut ini adalah contoh program-program yang melakukan perhitungan aritmetika sederhana terhadap type numerik (bilangan integer dan bilangan riil).

Pada pelajaran berhitung, Anda sudah mengenal prioritas perhitungan, yaitu bahwa perkalian dan pembagian akan dilakukan sebelum penjumlahan dan pengurangan jika ditulis a+b*c-d, maka perhitungan yang dilakukan adalah a + (b * c) - d.

Best Practices: Untuk tidak tergantung kepada prioritas bahasa pemrograman, disarankan untuk menulis ekspresi aritmatika dengan tanda kurung, sehingga perhitungan yang dilakukan akan selalu sesuai dengan yang Anda maksudkan.

1. /* File : aritmatika.c */

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

3. /* Operasi aritmatika bilangan integer dan bilangan rii l :

4. Menuliskan jumlah, hasil perkalian, pembagian, modul o

5. dua buah variabel integer*/

6. #include<stdio.h>

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

10. int x=5;

11. int y=8;

12. /* Program */

13. printf ("Ini nilai x + y : %d \n", x+y );

14. printf ("Ini nilai x - y : %d \n", x-y );

15. printf ("Ini nilai x * y : %d \n", x*y );

16. printf ("Ini nilai x / y : %d \n", x/y );

34 17. printf ("Ini nilai y / x : %d \n", y/x );

18. printf ("Ini nilai x mod y : %d \n", x%y );

19.

20. /* bandingkan dengan operasi pembagian bilangan riil */

21. float a=5, b=8;

22. printf ("Ini nilai a / b : %5.2f \n", a/b );

23. printf ("Ini nilai b / a : %5.2f \n", b/a );

24.

25. return 0;

26. }

7.2.1 Rangkuman Kompetensi

Mengenal operasi aritmatika dalam bahasa C, dan operator {+, *, / mod} dan urutan perhitungannya.

7.2.2 Aktivitas kreatif

Lakukanlah perhitungan:

1. x+x+x 2. x*x+x

7.2.3 Inilah Computational Thinking!

Dengan tanda kurung, Anda mengidentifikasi komponen dari sebuah ekspresi. Misalnya, program akan dapat melakukan ”dekomposisi” yang sesuai dengan apa yang Anda pikirkan (dan tuliskan) dengan ekspresi:

(((1+2)/(7*5)*8)-7)+9.

7.3 Operasi Boolean

Perhatikan bahwa dalam bahasa C, tidak dikenal bilangan boolean yang bernilai TRUE atau FALSE. False adalah nilai 0 dalam bahasa C, sedangkan bukan 0 atau 1 adalah True.

1. /* File: boolOP.c */

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

3. /* Deskripsi : */

4. /* Contoh perhitungan aljabar boolen, perhatikan cara penulisan

5. AND dan OR serta NOT */

6. #include<stdio.h>

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

35 9. int TRUE=1;

10. int FALSE=0;

11. /* Algoritma */

12. printf ("Ini nilai TRUE AND TRUE : %d \n", TRUE &&

TRUE );

13. printf ("Ini nilai TRUE OR FALSE : %d \n", TRUE ||

FALSE);

14. printf ("Ini nilai FALSE AND TRUE : %d \n", FALSE

&& TRUE );

15. printf ("Ini nilai FALSE OR FALSE : %d \n", FALSE

|| FALSE );

16. printf ("Ini nilai NOT TRUE : %d \n", !TRUE);

17. printf ("Ini nilai NOT FALSE : %d \n", !FALSE );

18. return 0;

19. }

7.3.1 Rangkuman Kompetensi

Memahami bagaimana operasi boolean dilakukan terhadap variabel boolean yang dalam bahasa C direpresentasi sebagai integer. Nilai “false”

direpresentasi dengan 0, sedangkan “true” adalah bukan 0.

7.3.2 Aktivitas Kreatif

Modifikasilah program di atas sehingga Anda menghasilkan tabulasi operasi boolean seperti yang biasa dituliskan, misalnya sebagai berikut:

--- OR T F T T T F T F ---

--- AND T F

T T F F F F ---

--- NOT T F

F T --- ---

OR T F T 1 1 F 1 0 ---

--- AND T F

T 1 0 F 0 0 ---

--- NOT T F

0 1 --- 7.3.3 Inilah Computational Thinking!

Dengan pola pemahaman operator aritmatika, Anda dapat mengenali pola operasi boolean. Lakukan operasi aritmatika hanya dengan 0 dan 1 (contoh tabel kreatif di mana TRUE ditulis sebagai 1 dan FALSE ditulis sebagai 0), identifikasilah operator aritmatika yang berkesesuaian.

36 7.4 Operasi Perbandingan

Komputer mampu melakukan proses perbandingan, yaitu {lebih besar, lebih kecil, sama dengan, atau tidak sama dengan} untuk nilai numerik.

Operator {sama dengan, tidak sama dengan} dapat dilakukan untuk karakter, yaitu misalnya untuk membandingkan apakah nilai yang diketikkan sama dengan ‘A’.

Hasil dari suatu perbandingan adalah nilai bolean (true atau false).

Daftar operator relasional (perbandingan) dalam bahasa C dan artinya:

Tabel VII-1 Operasi Perbandingan

Operator Arti

< Lebih kecil

> Lebih besar

!= Tidak sama dengan

== Sama dengan

Contoh operasi perbandingan diberikan pada program sebagai berikut, amati hasil perbandingan yang dilakukan.

1. /* File: relasional.c */

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

3. /* Deskripsi : */

4. /* Contoh perbandingan nilai numerik */

5. #include<stdio.h>

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

8. int X=5;

9. int Y=8;

10. /* Program */

11. printf ("Hasil X < Y : %d \n", X < Y);

12. printf ("Hasil X > Y : %d \n", X > Y);

13. printf ("Hasil X <= Y : %d \n", X <= Y );

14. printf ("Hasil X >= Y : %d \n", X >= Y );

15. printf ("Hasil X == Y : %d \n", X == Y ); /*operator kesamaan : ==*/

16. printf ("Hasil X != Y : %d \n", X != Y); /*operator ke-tidak-samaan:!=*/

17.

18. printf ("Hasil X == X : %d \n", X == X ); /*operator kesamaan: ==*/

19. printf ("Hasil X != X : %d \n",X != X); /*operator k e-tidak-samaan:!=*/

37 20.

21. return 0;

22. }

7.4.1 Rangkuman Kompetensi

Mengenal operator relasional yang akan dipakai untuk membandingkan dua buah nilai.

7.4.2 Aktivitas kreatif

Seringkali, pengguna pemula lupa dan salah menuliskan “sama dengan”

dengan “=”. Karena “=” artinya adalah mengisikan nilai, maka bisa berakibat fatal. Cobalah untuk mengganti secara sengaja “==” dengan “=”, amatilah apa yang terjadi. Anda akan mendapat “surprise.”

7.4.3 Inilah Computational Thinking!

Salah satu kemampuan komputer adalah membandingkan dua buah nilai.

Tentu saja, nilai yang dibandingkan seharusnya ber-type sama. Anda hanya bisa membandingkan misalnya dua orang, tidak bisa membandingkan seseorang dengan sebuah jeruk karena “type”-nya tidak sama. Operasi membandingkan akan banyak dipakai dalam problem solving, terutama untuk proses-proses komputasi standar yang akan Anda kenal berikutnya misalnya dalam persoalan search dan sort.

7.5 Gabungan Operasi Boolean dan Relasional

Seringkali Anda perlu untuk menuliskan suatu aturan atau kondisi dalam bentuk misalnya, Anda akan keluar membeli gorengan jika mempunyai uang lebih besar dari 5000 (rupiah) dan hari tidak hujan, yang dapat ditulis sebagai ekspresi:

(uang > 5000) && (!hujan)

1. /* File: gabungan.c */

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

3. /* Deskripsi : *

/ 4. /* Contoh perbandingan nilai numerik */

5. #include<stdio.h>

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

8. int uang= 6000;

9. int hujan=0; /*artinya hujan bernilai FALSE */

10. /* Program */

38 11. printf ("uang>5000 dan tidak hujan: %d \n", (uang>5

000) && (!hujan));

12.

13. uang= 6000;

14. hujan=1; /*artinya hujan bernilai TRUE */

15. printf ("uang>5000 dan tidak hujan: %d \n", (uang>5 000) && (!hujan));

16.

17. return 0;

18. }

7.5.1 Rangkuman Kompetensi

Menggabungkan pemakaian operator.

7.5.2 Aktivitas kreatif

1. Tuliskanlah beberapa kondisi lainnya berdasarkan lebih banyak variabel, dan tuliskanlah ekspresinya dalam bahasa C.

7.5.3 Inilah Computational Thinking!

Dengan memahami operator "campuran" ini, Anda dapat mengkomposisi beberapa ekspresi dan juga melakukan dekomposisi dari sebuah ekspresi yang hasilnya true atau false. Ekspresi terdiri dari beberapa sub-ekspresi yang akan dikomputasi sesuai dengan urutannya. Sebuah ekspresi yang hasil perhitungannya true atau false akan menjadi dasar dari construct berikutnya yang dipelajari pada bagian selanjutnya, sebagai bagian dari instruksi kondisional.

7.6 Operasi Penambahan Satu pada Nilai Integer (Increment)

Operasi untuk menambahkan satu ke suatu nilai integer seringkali diperlukan sehingga bahasa C menyediakan operator ++ yang artinya adalah sebagai berikut:

 i++ artinya setelah dieksekusi, nilainya bertambah dengan 1. Jika nilai i adalah lima, setelah instruksi i++ maka nilai I menjadi 6.

 ++i artinya sebelum dieksekusi, nilainya bertambah dengan 1. Jika nilai i adalah lima, sebelum instruksi ++ maka nilai I menjadi 6.

 /* File: inkremen.c */

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

 /* Deskripsi : *

/

 /* Efek dari operator ++ */

 #include<stdio.h>

39

 int main ()

 {

 /* Kamus */

 int i;

 /* Program */

 i = 3;

 printf ("Nilai i :%d %d\n", i, i++);

 i = 3;

 printf ("%d\n", ++i); /* sebelum dicetak, nilai i dit ambah 1 */

 return 0;

 }

7.6.1 Rangkuman Kompetensi

Memakai operator inkremen untuk maksud yang tepat.

7.6.2 Aktivitas kreatif

Selain inkremen, dikenal operator dekremen yaitu --.

Gantilah notasi ++ dengan -- dan amati eksekusi programnya.

7.6.3 Inilah Computational Thinking!

Dengan melakukan dekomposisi nama variabel dan operator ++ dan mengamati letaknya, Anda dengan mudah memahami urutan operasi inkremen yang dilakukan terhadap nilai yang disimpan.

Dengan pola yang sama, Anda akan memahami operasi dekremen (--) yang mempunyai pola operasi yang sama dengan ++, hanya saja efeknya yang berbeda yaitu bukan menambah satu, melainkan mengurangi dengan satu.

40 BAB VIII.

INSTRUKSI KONDISIONAL

8.1 Pengantar Instruksi Kondisional

Dengan hanya menuliskan instruksi yang diberikan contohnya pada program- program di modul sebelumnya, Anda selalu mendapatkan program yang alur eksekusinya sama, yaitu sesuai dengan urutan penulisan pada program. Program akan dieksekusi mulai dari baris pertama sampai dengan baris terakhir. Construct ini disebut sebagai konstruksi sekuensial.

Pada bagian ini anda akan mengenal bagaimana instruksi dipilih untuk dijalankan, yang disebut sebagai instruksi kondisional.

8.2 Instruksi if

Instruksi kondisional IF dalam bahasa C mempunyai pola kalimat sebagai berikut:

1. if (/*kondisi*/) 2. {

3. /* instruksi atau deretan instruksi */

4. }

Dengan kondisi adalah sebuah ekspresi boolean, dan mengakibatkan program hanya melakukan instruksi yang dituliskan di antara {} jika dan hanya jika evaluasi kondisi benar.

1. /* File: IF1.c */

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

3. /* Deskripsi : */

4. /* contoh pemakaian IF satu kasus */

5. /* membaca nilai integer, menuliskan nilainya jika positif */

6. #include<stdio.h>

7. int 8. main () 9. {

10. /* Kamus */

11. int a;

12. /* Program */

13. printf ("Contoh IF satu kasus \n");

14. printf ("Ketikkan suatu nilai integer ");

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

16. if (a > 0) 17. {

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

41 19. }

20. /* jika nilai a tidak positif maka program tidak melakukan apa-apa */

21. return 0;

22. }

8.2.1 Rangkuman Kompetensi

Mengenal kata kunci if dalam bahasa C dan dampak eksekusinya.

8.2.2 Aktivitas kreatif

Gantilah program yang menulis bilangan positif dengan bilangan lebih besar dari 5.

8.2.3 Inilah Computational Thinking!

Instruksi if adalah salah satu komputasi yang dapat dilakukan dalam algoritma. Pemroses bahasa C dapat melaksanakan instruksi tersebut sesuai dengan penjelasan yang diberikan. Intruksi if akan berguna untuk melakukan problem solving di mana persoalan didekomposisi menjadi bagian yang memenuhi syarat saja yang ditangani. Misalnya sebuah mesin ATM hanya akan mengeluarkan uang jika lembaran uang yang tersedia ada dan cukup sesuai permintaan.

8.3 Instruksi if-else

Instruksi kondisional IF-ELSE dalam bahasa C mempunyai pola kalimat sebagai berikut:

1. if (/*kondisi*/) 2. {

3. /* instruksi atau deretan instruksi yang dijalankan 4. jika evaluasi kondisi TRUE*/

5. } 6. Else 7. {

8. /* instruksi atau deretan instruksi yang dijalankan 9. jika evaluasi kondisi FALSE */

10. }

Pada contoh program berikut, bilangan 0 akan digolongkan sebagai “positif.”

1. /* File: IF_ELSE.c */

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

3. /* Deskripsi : */

4. /* contoh pemakaian IF dua kasus komplementer */

5. /* Membaca sebuah nilai, */

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

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

8. #include<stdio.h>

9. int main () 10. {

11. /* Kamus */

12. int a;

13. /* Program */

14. printf ("Contoh IF dua kasus \n");

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

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

17. if (a >= 0) 18. {

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

20. }

21. else /* a< 0 */

22. {

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

24. } 25. return 0;

26. }

8.3.1 Rangkuman Kompetensi

Mengenal perbedaan Anda instruksi kondisional if (...) {....} yang dijelaskan sebelumnya dengan instruksi kondisional if (...) {....} else { .... } yang dijelaskan pada bagian ini.

Memahami eksekusi "sekuensial" yang akan dilakukan sebuah instruksi if (...) {....} else { .... }.

8.3.2 Aktivitas kreatif

Anda dapat menuliskan eksekusi yang sama dari sebuah instruksi if (...) {....}

else { .... } dengan menuliskannya menjadi dua buah instruksi if yang berurutan sebagai berikut : if ( <kondisi. ) {....}; if (<!kondisi>) { .... } dengan melakukan transformasi kode pada contoh program di atas. Namun, maknanya akan berbeda (lihat penjelasan pada bagian "Inilah Computational Thinking!").

8.3.3 Inilah Computational Thinking!

Instruksi if() { } else { } adalah salah satu “tools” untuk melakukan dekomposisi. Anda melakukan dekomposisi persoalan menjadi dua bagian yang “disjoint”, yaitu bagian yang memenuhi syarat, dan yang tidak memenuhi syarat. Masing-masing bagian ditangani dengan instruksi (solusi)

43 yang berbeda. Pola ini akan sering Anda perlukan, misalnya untuk menuliskan instruksi yang menangani data valid dan data tidak valid (error condition).

Dari segi eksekusi, sebuah instruksi if (...) {....} else { .... } dapat dituliskan menjadi dua buah instruksi if yang berturutan dengan kondisi yang saling menegasi. Dalam hal ini, Anda menuliskan konstruksi program yang salah karena makna dari analisis if ... else .... adalah menentukan dalam satu analisis, dua kondisi yang bertentangan. Program Anda benar dalam eksekusinya, namun salah konstruksinya. Inilah Computational Thinking, di mana dekomposisi suatu program menjadi elemen pemrograman harus sesuai dengan analisis persoalannya. Misalnya saat Anda menganalisis data yang valid dan tidak valid, Anda melakukan peninjauan terhadap data valid, dan menentukan tindakan (dalam bentuk sederetan instruksi) terhadap dua kasus tersebut berdasarkan satu analisis.

Kalimat if (...) {...} mempunyai pola analisis persoalan yang berbeda dengan if (...) {... } else {... }.

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. {

Dalam dokumen Modul kelas Memulai Pemrograman Dengan C (Halaman 30-37)