Pengenalan Kelas
Belajar bahasa pemrograman sama halnya dengan belajar bahasa apa
pun, dimulai dengan secara intuitif mengenal dan langsung memakai
bahasa tersebut untuk keperluan sehari-hari yang penting sesuai
kebutuhan, bukan dari teori bahasa. Seseorang dengan bahasa ibu
bahasa Indonesia, saat belajar bahasa Inggris, akan mulai mengenal
bahasa Inggris melalui “membaca” contoh-contoh kalimat sederhana,
yang sangat diperlukan dalam kehidupan sehari-hari, seperti mulai
menyapa “Selamat pagi”, “Jam berapa?”. Melalui contoh tersebut, ia akan
belajar kosakata penting dan pola kalimat misalnya kalimat pernyataan
SPOK (Subyek, Predikat, Obyek, Keterangan); struktur kalimat tanya,
kalimat aklamasi, dan lain-lain. Selanjutnya baru beranjak ke konsep yang
lebih kompleks yang ada pada bahasa asing tersebut, dan mengenal tata
bahasa secara lebih formal dan mulai menulis. Belajar pemrograman
pada hakekatnya sama dengan belajar bahasa natural: seseorang belajar
dari “membaca” program terlebih dulu, dari pada “menulis” kode
program. Proses menulis kode dapat dimulai setelah Anda membaca
contoh-contoh program yang menjadi pola pembangun program
kompleks. Bedanya dengan belajar bahasa natural, teks dalam bahasa
pemrograman yang ditulis bukan dilafalkan dan dipahami sebagai teks
“statik”, melainkan juga dapat dipahami maknanya saat dieksekusi oleh
mesin.
Tutorial ini disusun dengan pendekatan “3N” yaitu Niteni – Niru –
Nambahi yang diterapkan pada pembelajaran pertama bahasa
pemrograman. Seperti halnya belajar bahasa lain, belajar pemrograman
dalam bahasa C diawali dengan belajar membaca program kecil dalam
bahasa C bukan hanya memahami maknanya sebagai teks “statik”, tetapi
juga eksekusinya dengan mencoba mengeksekusi. Setelah itu,
mempelajari lebih dalam mengenai “tata bahasa” (grammar) dari
bahasanya untuk menyusun kalimat, paragraf dan wacana yang lebih
kompleks; yang dalam pemrograman adalah untuk melakukan problem
solving dengan menuliskan program dalam bahasa C. Contoh diberikan
untuk mengarahkan siswa belajar fokus ke semantik, dan bukan sintaks
dari bahasa. Penulisan program dalam sintaks bahasa tertentu (dalam hal
ini bahasa C) diharapkan mengalir secara natural.
Materi Pembelajaran
Materi yang ada dalam kelas ini mayoritas berupa teks atau tulisan. Mengapa
Forum Diskusi
Setiap kelas memiliki sebuah forum diskusi yang dapat Anda gunakan untuk
bertanya (dan menjawab) mengenai materi kelas. Instruktur kami yang terdiri
Tak hanya kami, Anda pun dapat berpartisipasi. Untuk meningkatkan retensi
ilmu yang Anda punya, berbagi adalah salah satu kuncinya. Jadi, silakan aktif
tanyakan kepada kami melalui tombol chat di kanan bawah layar Anda ketika
membuka situs Dicoding. Jangan gunakan forum diskusi ya karena itu salah
alamat.
Evaluasi Pembelajaran
Terdapat berbagai jenis ujian di kelas guna mengecek pemahaman Anda pada
materi pembelajaran. Ketersediaan ujian beserta jenis ujian yang tersedia pada
mencakup materi yang telah dibahas. Sehingga jika ada pertanyaan yang tidak
Ekspektasi
Dengan banyaknya jumlah siswa Dicoding Academy, kami tidak
mengharapkan siswa untuk membaca semua diskusi atau komentar pada
forum diskusi. Sebaliknya, bacalah hal-hal yang menurut Anda menarik
dan dapat membantu Anda dalam menyelesaikan kelas. Lebih baik lagi,
jika Anda dapat membantu siswa lainnya dengan memberikan jawaban di
bidang yang Anda pahami. Berbagi dalam forum diskusi ini dapat pula
membantu meningkatkan retensi ilmu Anda.
2. Namun jika tidak menemukan diskusi lama dengan topik yang sama
dengan masalah Anda, silakan membuat diskusi baru. Simak cara
dan langkah berikut ini: https://help.dicoding.com/academy-
dicoding/aturan-membuat-pertanyaan-di-forum-diskusi-kelas/ .
Fitur Bermanfaat
Mencari Posting
Anda dapat mencari topik atau diskusi menggunakan tiga cara yang
tersedia pada halaman utama forum diskusi.
1. Gunakan fitur “Cari Judul Diskusi” untuk mencari topik
berdasarkan judul atau pertanyaannya.
2. Gunakan fitur “Pilih Berdasarkan Modul” untuk melihat diskusi
berdasarkan modul kelasnya.
3. Gunakan fitur “Keyword Populer” untuk melihat diskusi
berdasarkan Keyword yang paling sering ditanyakan.
Upvote dan Downvote Komentar pada Diskusi
Saat membuka sebuah diskusi, Anda akan menemukan komentar
beserta jawaban dari siswa dan instruktur di bagian bawah. Pada
setiap komentar terdapat tombol panah atas (˄) dan panah bawah
(˅). Klik tombol panah atas (˄) jika Anda merasa komentar atau
jawaban tersebut bijaksana, menarik, dan bermanfaat. Gunakan
tombol panah bawah (˅) jika Anda merasa komentar atau jawaban
tersebut tidak sopan, tidak membantu, atau bahkan tidak tepat.
Approved Answer
Jika terdapat komentar/tanggapan berupa solusi terbaik dari
permasalahan yang Anda tanyakan, maka tandai komentar tersebut
sebagai jawaban terpilih. Caranya dengan menekan tombol
“Jawaban Terpilih” di sisi kanan atas komentar.
Oleh karena itu, kami ingin Anda meluangkan waktu untuk mencairkan
suasana dan saling mengenal. Membangun interaksi dengan siswa lain
akan membuat pengalaman belajar Anda jauh lebih menyenangkan dan
menarik.
Hal tersebut terjadi karena otak Anda berasosiasi sesuai dengan konteks
di mana Anda sedang mempelajari sesuatu. Dalam proses belajar,
tempat atau suasana sangat penting supaya informasi yang kita pelajari
bisa cepat kita serap. Pastikan tempat yang Anda gunakan sesuai dengan
Anda karena tingkat kenyamanan setiap orang berbeda-beda. Selain itu
usahakan mencari tempat yang jauh dari distraksi atau gangguan misal
seperti suara bising kendaraan bermotor atau lalu lalang orang lewat.
Mulai dari yang Sederhana
B
Blok
Sekumpulan kalimat C yang ditulis di antara { dan }.
Body
Realisasi dari sebuah fungsi.
Bug
Galat atau error yang dapat membuat aplikasi kita tidak dapat berjalan
seperti keinginan.
C
C
Bahasa prosedural yang didesain untuk di-compile secara sederhana agar
mendukung akses ke low-level memory, pendukung bahasa dalam
instruksi mesin. Meskipun didesain secara minimal, C bisa digunakan
sebagai bahasa multi-platform.
D
Debug
Proses mencari dan menghilangkan galat atau error di dalam aplikasi
untuk kemudian memperbaikinya.
Definisi
Memberitahukan sifat (property) objek dan sekaligus mengalokasikan
memori untuk objek.
Deklarasi
Memberitahukan sifat (property) objek (terutama berkaitan dengan tipe).
Deklarasi Global
Deklarasi yang berlaku dalam satu unit translasi (file).
Deklarasi Lokal
Deklarasi yang hanya berlaku dalam blok tempat deklarasi.
Developer
Seseorang yang bertugas membangun atau mengembangkan sebuah
sistem.
Dokumentasi
Kumpulan informasi tentang cara penggunaan tools atau komponen,
serta informasi terkait.
H
Hardware
Perangkat fisik berupa komputer beserta segala instrumen
pendukungnya.
I
IDE
Sebuah tools membantu tak hanya dalam proses developing, bahkan
hingga optimasinya.
Inisialisasi
Memberikan nilai objek.
L
Lvalue
Ekspresi yang me-referensi suatu objek. Secara mudah, lvalue adalah nilai
di sebelah kiri ekspresi assignment. Contoh: identifier dengan tipe dan
kelas penyimpanan tertentu atau hasil indireksi dari pointer.
K
Konstanta
Sebuah nama yang isinya tidak boleh diubah, berbeda dengan variabel
yang isinya (nilainya) dapat diubah-ubah
O
Objek
Daerah memori bernama (sama dengan variabel).
P
Programmer
Seseorang yang menuliskan kode untuk menyusun sebuah program.
Prototipe
Deklarasi fungsi, menyatakan nama, tipe return value, nama dan tipe
parameter formal (argumen).
S
Scope
Daerah program tempat suatu nama dikenal.
Skill
Sebuah keahlian khusus yang dimiliki seseorang. Contohnya menguasai
bahasa pemrograman tertentu, mampu membuat arsitektur dengan
sempurna, dapat menulis kode dengan baik, dll.
Software
Kumpulan perintah agar komputer dapat berfungsi secara optimal sesuai
dengan kemauan.
V
Variabel
Nama yang dapat menampung nilai yang dapat diubah.
Daftar Referensi
[1] Praveen Shrestha. “Ebbinghaus Forgetting Curve”.
Psychestudy.com. https://www.psychestudy.com/cognitive/memory/ebbi
nghaus-forgetting-curve (diakses pada 27 Januari 2021).
Mengenal Bahasa C
Sejarah Singkat dan Versi
Bahasa C dikembangkan oleh Dennis M. Ritchie dan Brian W. Kernighan
pada awal tahun 1970. Bahasa C berkembang di lingkungan UNIX (±90%
sistem operasi UNIX ditulis dalam bahasa C).
Lattice C,
Microsoft C/Microsoft QuickC, dan
Turbo C/Borland C++.
IDE Online
Kami sangat merekomendasikan Anda untuk menuliskan kembali kode
yang dicontohkan di kelas ini. Menuliskan kembali masuk ke pendekatan
"Niru" dari 3N (Niteni-Niru-Nambahi) yaitu metode pembelajaran yang
dipakai di kelas C ini.
Developer yang baik adalah yang mampu mencari solusi terhadap suatu
masalah dan juga mampu menuliskan solusi tersebut ke dalam source
code. Oleh karena itu menuliskan code adalah sebagian besar tugas dari
menjadi seorang developer.
Compiler Online
Untuk mengikuti kelas ini cobalah salah satu dari compiler online yang
kami rekomendasikan. Tiap compiler online memiliki plus-minusnya
masing-masing, jadi pilihlah yang menurut Anda paling gampang dan
nyaman untuk digunakan.
1. Jdoodle : https://www.jdoodle.com/c-online-compiler
2. Glot : https://glot.io/new/c
3. Onlinegdb : https://www.onlinegdb.com
4. Repl : https://repl.it/languages/c
5. TutorialsPoint
: https://www.tutorialspoint.com/compile_c_online.php
Badan program hanya terdiri dari satu instruksi menulis yaitu printf.
Karena menulis, maka memerlukan library standar untuk baca/tulis, yang
dalam program sebagai berikut ditulis dengan #include<stdio.h>.
1. /* File : halo.c */
4. #include<stdio.h>
5. int
6. main(void)
7. { /* Badan Program */
9. }
Rangkuman Kompetensi
Program kecil ini akan menjadi pola program apapun yang akan Anda
tulis, dengan mengenali kerangka program utama yang tidak
mengembalikan nilai, dan isinya. Anda juga belajar bekerja efisien dengan
melakukan modifikasi terhadap program yang pernah Anda buat, untuk
menghasilkan program lain yang mirip.
Pesan Penting yang perlu diingat bukan hanya untuk contoh pertama ini,
tetapi juga sepanjang Anda belajar pemrograman:
1. /* File : halo1.c */
4. #include<stdio.h>
5. int
6. main ()
7. {
8. /* KAMUS */
9.
10. /* ALGORITMA */
12. return 0;
13. }
Rangkuman Kompetensi
Program kecil ini akan menjadi pola program apapun yang akan Anda
tulis, dengan mengenali kerangka program utama, dan isinya. Setelah
selesai dieksekusi, program akan mengembalikan 0 jika semua baik-baik
saja. Beberapa kompilator akan menuliskan pesan bahwa program
berakhir dengan “exit code” 0.
1. #include<stdio.h>
2. int main()
3. {
4. int i = 5;
5. }
4. #include<stdio.h>
5. int main ()
6. {/* Kamus */
8. /* Algoritma */
10. return 0;
11. }
Rangkuman Kompetensi
Aktivitas kreatif
Ada 3 tahapan yang dilakukan kompiler melalui instruksi int i=5; yaitu
tahapan pendefinisian nama (i), alokasi memori untuk menyimpan nilai,
dan inisialisasi nilai variabel tersebut dengan nilai yang ada di ruas kiri.
Nilai tersebut dapat berupa hasil perhitungan, misalnya anda dapat
menuliskan:
int nilaiku=3*5; artinya komputer akan menghitung 3x5 (hasilnya 15) dan
akan menyimpan nilai 15 dalam variabel nilaiku.
Pada satu barus intruksi yang singkat ini, anda belajar melakukan
dekomposisi sebuah instruksi, mengenali bagian-bagiannya, dan
memahami maknanya untuk memahami urut-urutan instruksi yang akan
dilakukan mesin. Sekali anda paham makna dari satu kalimat, anda akan
memakainya sebagai pola pemahaman. Setiap pola instruksi program,
akan mempunyai pemaknaan eksekusi yang spesifik.
1. /* File : assigni.c */
4. #include<stdio.h>
5.
6. int main ()
7. {/* Kamus */
8. int i;
9.
10. /* Algoritma */
13.
16.
17. return 0;
18. }
Rangkuman Kompetensi
Aktivitas kreatif
Berbeda dengan deklarasi yang hanya dapat dilakukan satu kali, sebuah
instruksi dapat diulang dan dilakukan lebih dari satu kali.
Nilai yang dapat disimpan pada bilangan ber-type float adalah antara
1.175494351 E – 38 sampai dengan 3.402823466 E + 38.
1. /* File : assignf.c */
4. #include<stdio.h>
5. int main()
6. { /* Kamus */
7. float f = 0.555;
8. float x= 1.5E3;
9. /* Algoritma */
13. return 0;
14. }
Rangkuman Kompetensi
Aktivitas kreatif:
1. /* File: assignKar.c */
3. /* Deskripsi : */
6. #include<stdio.h>
7. int main ()
8. {
9. /* KAMUS */
12. /* Algoritma */
17.
23.
24. return 0;
25. }
Rangkuman Kompetensi
Aktivitas kreatif
1. int main ()
2. {/* Kamus */
4. /* Algoritma */
6. return 0;
7. }
1. int main ()
2. {/* Kamus */
3. int i;
4.
5. /* Algoritma */
8.
11.
12. return 0;
13. }
1. int main()
2. { /* Kamus */
3. float f = 0.555;
4. float x= 1.5E3;
5. /* Algoritma */
9. return 0;
10. }
Rangkuman Kompetensi
Latihan kreativitas
1. /* File: konstanta.c */
3. /* Deskripsi : */
5. #include<stdio.h>
6. #define FALSE 0
7. #define NOL 0
8. #define SATU 1
9. #define pi 3.1415
16. /* Algoritma */
26. return 0;
27. }
Rangkuman Kompetensi
Aktivitas kreatif
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.
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 varian
dari bilangan bulat adalah short, long sedangkan varian bilangan riil
adalah double.
1. /* File: bacaNum.c */
3. /* Deskripsi : */
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: ");
15.
19.
akibatnya ?*/
akibatnya ?*/
22.
23. return 0;
24. }
Rangkuman Kompetensi
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.
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.
Jika dibaca dari kode ASCII, maka format pembacaannya adalah %d.
1. /* File: bacakar.c */
3. /* Deskripsi : */
4. #include<stdio.h>
5. int main()
6. {/* Kamus */
7. char cc;
8. char c;
9.
10. /* Algoritma */
65 */
16. return 0;
17. }
Rangkuman Kompetensi
Aktivitas kreatif
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.
Operasi Aritmatika
Berikut ini adalah contoh program-program yang melakukan perhitungan
aritmetika sederhana terhadap type numerik (bilangan integer dan
bilangan riil).
1. /* File : aritmatika.c */
6. #include<stdio.h>
7. int
8. main ()
9. {/* Kamus */
12. /* Program */
19.
24.
25. return 0;
26. }
Rangkuman Kompetensi
Aktivitas kreatif
Lakukanlah perhitungan:
1. x+x+x
2. x*x+x
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 adalah True.
1. /* File: boolOP.c */
3. /* Deskripsi : */
7. int main ()
8. {/* Kamus */
9. int TRUE=1;
11. /* Algoritma */
12. printf ("Ini nilai TRUE AND TRUE : %d \n", TRUE && TRUE );
14. printf ("Ini nilai FALSE AND TRUE : %d \n", FALSE && TRUE );
18. return 0;
19. }
Rangkuman Kompetensi
Aktivitas kreatif
Operasi Perbandingan
Komputer mampu melakukan proses perbandingan, yaitu {lebih besar,
lebih kecil, sama dengan, atau tidak sama dengan} untuk nilai numerik.
Hasil dari suatu perbandingan adalah nilai bolean (true atau false).
Operator Arti
< Lebih kecil
> Lebih besar
! Tidak sama
== Sama dengan
3. /* Deskripsi : */
5. #include<stdio.h>
6. int main ()
7. {/* Kamus */
8. int X=5;
9. int Y=8;
10. /* Program */
==*/
samaan:!=*/
17.
==*/
samaan:!=*/
20.
21. return 0;
22. }
Rangkuman Kompetensi
Aktivitas kreatif
1. /* File: gabungan.c */
3. /* Deskripsi : */
5. #include<stdio.h>
6. int main ()
7. {/* Kamus */
10. /* Program */
hujan));
12.
hujan));
16.
17. return 0;
18. }
Rangkuman Kompetensi
1. /* File: inkremen.c */
5. #include<stdio.h>
6. int main ()
7. {
8. /* Kamus */
9. int i;
10. /* Program */
11. i = 3;
13. i = 3;
15.
16. return 0;
17. }
Rangkuman Kompetensi
Memakai operator inkremen untuk maksud yang tepat.
Aktivitas kreatif
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.
Pada bagian ini anda akan mengenal bagaimana instruksi dipilih untuk
dijalankan, yang disebut sebagai instruksi kondisional.
Instruksi if
Instruksi kondisional IF dalam bahasa C mempunyai pola kalimat sebagai
berikut:
1. if (/*kondisi*/)
2. {
4. }
1. /* File: IF1.c */
3. /* Deskripsi : */
6. #include<stdio.h>
7. int
8. main ()
9. {
10. /* Kamus */
11. int a;
12. /* Program */
16. if (a >= 0)
17. {
19. }
20. /* jika nilai a tidak positif maka program tidak melakukan apa-apa
*/
21. return 0;
22. }
Rangkuman Kompetensi
Instruksi if-else
Instruksi kondisional IF-ELSE dalam bahasa C mempunyai pola kalimat
sebagai berikut:
1. if (/*kondisi*/)
2. {
5. }
6. else
7. {
1. /* File: IF_ELSE.c */
3. /* Deskripsi : */
8. #include<stdio.h>
9. int main ()
10. {
11. /* Kamus */
12. int a;
13. /* Program */
17. if (a >= 0)
18. {
20. }
21. else /* a< 0 */
22. {
24. }
25. return 0;
26. }
Rangkuman Kompetensi
Aktivitas kreatif
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.
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 */
3. /* Deskripsi : */
9. #include<stdio.h>
11. {
12. /* Kamus */
13. int a;
14. /* Program */
18. if (a > 0)
19. {
21. }
22. else if (a == 0)
23. {
25. }
27. {
29. }
30. return 0;
31. }
Rangkuman Kompetensi
Aktivitas kreatif
3. /* Deskripsi : */
9. #include<stdio.h>
12. /* Kamus */
13. int a;
14. /* Program */
18. if (a > 0)
19. {
21. }
22. if (a == 0)
23. {
25. }
26. if (a < 0)
27. {
29. }
30. return 0;
31. }
Per 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.
2. /* Badan loop */
4. }
Program akan mengulang instruksi atau deretan instruksi dalam badan loop for,
harus dipastikan bahwa suatu saat kondisi pengulangan tidak dipenuhi, yang
Pemakaian instruksi for yang paling sederhana adalah untuk mengulang sebanyak N
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
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 */
3. /* Deskripsi :
5. #include<stdio.h>
6. int main ()
7. {
8. /* Kamus : */
9. int i;
10. /* Algoritma */
13. }
14. return 0;
15. }
Pada program di atas, pada awal eksekusi instruksi for, i bernilai 0 dan i akan
2. Pada saat nilai i=3 maka ekspresi i < 3 akan menghasilkan FALSE (salah),
loop berhenti.
Instruksi for dapat digunakan untuk membuat pengulangan yang lebih umum, yang
Rangkuman Kompetensi
i=0,1,2,3….
menulis teks.
Aktivitas kreatif :
belajar bahasa C” sebanyak N kali, dengan nilai N yang akan ditentukan dari
deklarasinya.
belajar bahasa C” sebanyak N kali, dengan nilai N yang akan dibaca dengan
scanf.
Loop adalah abstraksi dari proses pengulangan. Dengan hanya menuliskan satu baris
Pengulangan while-do
Pola kalimat while-do dalam bahasa C adalah sebagai berikut:
1. while (<kondisi-pengulangan>) {
2. /* Badan loop */
4.
5. }
1. /* File: WHILEdo.c */
3. /* Deskripsi : */
5. #include<stdio.h>
6. int main ()
7. {
8. /* Kamus : */
9. int i=0;
10. /* Algoritma */
13. i++;
14. }
15. return 0;
16. }
Rangkuman Kompetensi
Aktivitas kreatif
Pengulangan do-while
Pola kalimat while-do dalam bahasa C adalah sebagai berikut:
1. do {
2. /* Badan loop */
4.
5. } while (<kondisi-pengulangan>) ;
1. /* File: doWHILE.c */
3. /* Deskripsi : */
5. #include<stdio.h>
6. int main ()
7. {
8. /* Kamus : */
9. int i=0;
10. /* Algoritma */
11. do {
12. printf ("Saya senang belajar bahasa C \n");
13. i++;
15. return 0;
16. }
Rangkuman Kompetensi
Aktivitas kreatif
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.
1. /* File: forever.c */
3. /* Deskripsi : */
event */
5. #include<stdio.h>
6. int main ()
7. {/* Kamus : */
8.
9. /* Program */
diinterupsi*/
15. }
16. return 0;
17. }
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.
Rangkuman Kompetensi
1. Mengenal kerangka program yang akan berjalan tanpa henti, yaitu
program yang hidup terus menerus yang terkadang justru
dibutuhkan kelak.
Aktivitas kreatif
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;
7. printf("%d\n", a);
8. if (a = 5)
10. a++;
11. }
12. return 0;
13. }
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.
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,…
1. /* File: tabel1.c */
3. /* Deskripsi : */
5. #include<stdio.h>
6. int main ()
7. {/* Kamus : */
8. /* Kamus */
*/
12.
17. }
19.
20. /* Latihan : tuliskan nilai TabX dan TabChar */
21.
22. return 0;
23. }
Rangkuman Kompetensi
Aktivitas kreatif
1. /* File: tabel1.c */
3. /* Deskripsi : */
5. #include<stdio.h>
6. int main ()
7. {
8. /* Kamus */
14. }
15.
19. }
21.
22. return 0;
23. }
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.
Aktivitas kreatif
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).
Untuk setiap elemen Tab[1] s.d. Tab[9] yang diakses dengan nama
Tab[i]
1. /* File: max.c */
3. /* Deskripsi : */
integer */
5. #include<stdio.h>
6. int main ()
7. {/* Kamus : */
8. int i;
11. /* Algoritma */
14. if (Tab[i]>max) {
15. max=Tab[i];
16. }
17. }
19. }
Rangkuman Kompetensi
Aktivitas kreatif
Sorting-Maximum Sort
Selain menentukan nilai maksimum/minimum, atau menyimpulkan
sesuatu dari sekumpulan nilai, proses mengurutkan adalah salah satu
proses yang penting dalam informatika.
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."
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]
Tentukan indeks pada Tab[k] s.d. Tab [9] yang nilainya maksimum
Proses hanya perlu dilakukan s.d Tab[8] sebab yang terakhir yaitu Tab[9]
tidak perlu diurutkan lagi.
1. /* File: maxsort.c */
3. /* Deskripsi : */
5. #include<stdio.h>
6. int main ()
7. {
8. /* Kamus : */
9. int i;
13. /* Algoritma maximum sort menurun, indeks paling kecil berisi nilai
paling besar*/
17. max = i;
20. max=k;
21. }
22. }
23.
28. }
31. }
32. return 0;
33. }
Rangkuman Kompetensi
Aktivitas kreatif
Mengurutkan (sorting) nilai dari yang paling besar ke yang paling kecil
atau sebaliknya, adalah salah satu kecakapan yang diperlukan
dalam problem solving karena dengan data yang terurut, Anda dapat
menganalisis banyak hal. Misalnya dalam analisis trend Anda akan
mengurutkan data sesuai waktu, untuk menentukan ranking prestasi
atau kejuaraan, Anda mengurutkan sesuai capaian nilai.
Untuk saat ini, nilainya hanya nilai numerik. Suatu hari, Anda akan perlu
menentukan urutan bukan hanya dari nilai numerik, misalnya urutan
leksikografis seperti urutan dalam kamus. Data yang sudah terurut akan
memudahkan seseorang menganalisis, menyimpulkan dan memecahkan
persoalan.
Pada latihan butir 3, saat Anda mengubah-ubah teks program yang berisi
algritma sorting, seharusnya bagian program anda yang berubah
hanyalah bagian pengurutan saja, bagian membaca dan menulis akan
sama. Dekomposisi program menjadi 3 bagian yaitu : (1) baca data, (2)
proses pengurutan data, (3) menulis hasil --> inilah Computational
Thinking! Selanjutnya, Anda dapat memakai pola ini untuk proses apa
saja, selain pengurutan, misalnya proses pencarian atau proses kalkulasi
statistik --> Inilah Computational Thinking!
Searching-Sequential Search
Searching (mencari suatu nilai tertentu) adalah salah satu
elemen problem solving yang sama pentingnya dengan sorting. Misalnya,
Anda sering mencari informasi dengan mesin pencari, atau mencari
sebuah nomor telpon dalam buku alamat, mencari sebuah kata dalam
sebuah kamus.
Pada bagian ini, diberikan contoh pencarian paling sederhana yaitu
mencari apakah paling tidak ada sebuah elemen tabel yang bernilai X.
Jadi, program akan memeriksa satu per satu elemen tabel mulai dari
indeks paling kecil, dan akan berhenti jika nilai X yang dicari ditemukan,
atau posisi yang diperiksa sudah ada pada elemen terakhir. Elemen
terakhir akan diperiksa terpisah karena dalam badan loop ada instruksi
untuk maju (i++; ), sehingga mencegah untuk “kebablasan” memeriksa
elemen tabel yang indeksnya di luar batas.
1. /* File: seqsearch.c */
3. /* Deskripsi : */
5. #include<stdio.h>
6. int main ()
7. {
8. /* Kamus : */
9. int i;
12.
15. i=0;
17. i++;
21. } else {
23. } return 0;
24. }
Pola program di atas adalah pola program untuk mencari sebuah nilai
yang indeksnya paling kecil, dengan aman.
Rangkuman Kompetensi
Aktivitas kreatif
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.
Fungsi
Sebuah fungsi terdiri dari komponen-komponen sebagai berikut:
*/
3.
4. return <nilai>;
5. }
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 */
3. /* Deskripsi : */
5. #include<stdio.h>
6.
10. return(a+b);
11. }
12.
16. }
17. /************************/
24.
25. /* pemakaian/pemanggilan fungsi inkremen */
29.
30. return 0;
31. }
1. /* File: random.c */
2. /* Penulis : Bu Dengklek, email inge@bebras.or.id */
3. /* Deskripsi : */
5. #include<stdio.h>
6. #include <stdlib.h>
7. /************************/
8. int main() {
MAX */
14. return 0;
15. }
Rangkuman Kompetensi
Aktivitas kreatif
Untuk tahap awal ini, belum dijelaskan lebih detail mengenai arti * dan &.
Penjelasannya akan diberikan pada Modul selanjutnya, yaitu pada bagian
Pointer.
3. /* Deskripsi : */
5. #include<stdio.h>
6.
11. *a= *a + 1;
12. }
13.
18. *a= *a + d;
19. }
20.
23. /* "*a" artinya isi dari lokasi yang ditunjuk oleh a*/
25.
26. /* algoritma */
28. }
29.
35.
38.
39. i=8;
42.
45.
49. return 0;
50. }
Rangkuman Kompetensi
Aktivitas kreatif
1. /* File: luaslink.c */
3. /* Deskripsi : */
4. /* Membaca jari-jari, menghitung luas lingkaran */
6. #include<stdio.h>
7. int main ()
8. {/* Kamus */
10. float r;
11. /* program */
18. return 0;
19. }
Latihan soal kreatif
* * * *
** ** **
*** ***
****
* ** *** ****
* ** ***
* **
*
3.
4. Tuliskanlah sebuah program yang akan mencetak berbagai output
sebagai berikut, tergantung nilai N yang dibaca. N dapat berharga
antara 1 s.d. 1000.
o oo ooo oooo
oo o*o o**o
ooo o**o
oooo
5.
6. Dengan mengambil pola program dari contoh-contoh loop, tuliskan
program yang akan menuliskan lagu anak ayam, dimulai dari:
...
8.
9. 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.