Anda di halaman 1dari 125

Modul Praktikum

Nama :
NRP :
Kelas Praktikum :
Hari / Waktu :

Penyusun:
Tim Dosen
Tim Asisten Tetap

Copyright © 2018, Laboratorium Pemrograman. Diterbitkan dan didistribusikan oleh


Laboratorium Pemrograman - Teknik Informatika, Universitas Kristen Petra Surabaya.

Dilarang memperbanyak, memindahkan sebagian maupun seluruh isi buku ini dalam bentuk
apapun, secara elektronik maupun mekanis, termasuk memfotokopi, merekam, atau dengan
teknik perekaman lainnya di luar keperluan praktikum Teknik Informatika Universitas Kristen
Petra Surabaya tanpa izin tertulis dari penerbit.
Tata Tertib Praktikum

Pakaian
 Memakai pakaian rapi dan bersepatu, minimal sepatu sandal.

Sebelum mengikuti praktikum


 Semua Tes Pendahuluan diberikan secara lisan selama 15 menit dari
jadwal awal praktikum.

 Praktikan wajib membawa modul praktikum.

 Dilarang bekerjasama dalam membuat setiap Tes Pendahuluan,


Materi Praktikum dan Tugas Praktikum, kecuali tugas tersebut
diberikan secara berkelompok.

Selama praktikum
 Keterlambatan yang ditolerir adalah 15 menit. Selebihnya praktikan
tidak diperkenankan mengikuti praktikum.

 Praktikan yang terlambat (kurang dari 15 menit) tidak diperkenankan


mengikuti Tes Pendahuluan.

 Apabila praktikan tidak hadir 3 kali tanpa pemberitahuan dan izin dari
asisten, maka praktikan dianggap gugur dan nilai praktikum yang
bersangkutan diberi nilai 0 (nol).

 Setiap praktikan dilarang membantu praktikan lain selama pelaksanaan


praktikum.

 Dilarang keluar masuk ruang laboratorium sebelum praktikum berakhir


selain dalam kondisi sangat terpaksa (ke kamar kecil) dan dengan
seizin asisten.

 Praktikan HANYA diizinkan untuk membuka dan menjalankan software


yang berhubungan dengan praktikum yang bersangkutan.

 Dilarang mendownload apapun selain untuk kepentingan praktikum


yang bersangkutan.

i
 Dilarang membuka halaman web apapun (termasuk email, forum, dan
sejenisnya) selain untuk kepentingan praktikum yang bersangkutan.

Pengumpulan tugas
 Tugas yang diberikan pada tiap pertemuan, HARUS dikumpulkan pada
pertemuan berikutnya.

 Tugas dikumpulkan dalam bentuk print out dan source code dibawa
pada waktu praktikum kecuali praktikum tertentu dengan kesepakatan
terlebih dahulu.

Apabila praktikan tidak atau terlambat mengumpulkan tugas, maka akan


diberikan nilai 0 untuk tugas praktikum pada hari tersebut.

Sanksi pelanggaran
Apabila praktikan diketahui berbuat curang, maka :

 Akan diberikan nilai 0 untuk semua nilai praktikum pada hari tersebut.

Kriteria kecurangan
 Mencontek tugas, tes pendahuluan, atau materi.

Sistem penilaian praktikum


 Nilai akhir praktikum terdiri dari:

- Rata-rata nilai UTS 20%


- Rata-rata nilai UAS 20%
- Rata-rata nilai harian 60%

 Rata-rata nilai harian terdiri dari:

- Tes Pendahuluan 30%


- Materi 40%
- Tugas 30%

ii
DAFTAR ISI

DAFTAR ISI ............................................................................................................................. i


DAFTAR GAMBAR .............................................................................................................. vi
DAFTAR PROGRAM ............................................................................................................ v
DAFTAR TABEL ................................................................................................................... vi
MODUL 1 - PENDAHULUAN .............................................................................................1
TUJUAN ...............................................................................................................................1
PRASYARAT .......................................................................................................................1
DESKRIPSI ...........................................................................................................................1
RELEVANSI .........................................................................................................................1
URAIAN ...............................................................................................................................1
RINGKASAN.......................................................................................................................3
LATIHAN/TUGAS .............................................................................................................4
MODUL 2 – ALGORITMA ....................................................................................................5
TUJUAN ...............................................................................................................................5
PRASYARAT .......................................................................................................................5
DESKRIPSI ...........................................................................................................................5
RELEVANSI .........................................................................................................................5
URAIAN ...............................................................................................................................5
RINGKASAN.....................................................................................................................13
LATIHAN/TUGAS ...........................................................................................................13
MODUL 3 – DASAR-DASAR PEMROGRAMAN ...........................................................16
TUJUAN .............................................................................................................................16
PRASYARAT .....................................................................................................................16
DESKRIPSI .........................................................................................................................16
RELEVANSI .......................................................................................................................16
URAIAN .............................................................................................................................16
RINGKASAN.....................................................................................................................18
LATIHAN/TUGAS ...........................................................................................................19
MODUL 4 – VARIABEL, KONSTANTA DAN PERINTAH OUPUT/INPUT .......20
TUJUAN .............................................................................................................................20
PRASYARAT .....................................................................................................................20
DESKRIPSI .........................................................................................................................20
RELEVANSI .......................................................................................................................20
URAIAN .............................................................................................................................20
RINGKASAN.....................................................................................................................28
LATIHAN/TUGAS ...........................................................................................................28
MODUL 5 – OPERATOR ARITMATIKA & FUNGSI-FUNGSI MATEMATIKA ........30
TUJUAN .............................................................................................................................30
PRASYARAT .....................................................................................................................30
DESKRIPSI .........................................................................................................................30
RELEVANSI .......................................................................................................................30

iii
URAIAN .............................................................................................................................30
RINGKASAN.....................................................................................................................36
LATIHAN/TUGAS ...........................................................................................................36
MODUL 6 – STRUKTUR KONTROL KONDISI ..............................................................37
TUJUAN .............................................................................................................................37
PRASYARAT .....................................................................................................................37
DESKRIPSI .........................................................................................................................37
RELEVANSI .......................................................................................................................37
URAIAN .............................................................................................................................37
RINGKASAN.....................................................................................................................47
LATIHAN/TUGAS ...........................................................................................................47
MODUL 7 – STRUKTUR KONTROL PERULANGAN...................................................51
TUJUAN .............................................................................................................................51
PRASYARAT .....................................................................................................................51
DESKRIPSI .........................................................................................................................51
RELEVANSI .......................................................................................................................51
URAIAN .............................................................................................................................51
RINGKASAN.....................................................................................................................56
LATIHAN/TUGAS ...........................................................................................................56
MODUL 8 – ARRAY 1 DIMENSI .......................................................................................59
TUJUAN .............................................................................................................................59
PRASYARAT .....................................................................................................................59
DESKRIPSI .........................................................................................................................59
RELEVANSI .......................................................................................................................59
URAIAN .............................................................................................................................59
RINGKASAN.....................................................................................................................63
LATIHAN/TUGAS ...........................................................................................................63
MODUL 9 – ARRAY 2 DIMENSI .......................................................................................65
TUJUAN .............................................................................................................................65
PRASYARAT .....................................................................................................................65
DESKRIPSI .........................................................................................................................65
RELEVANSI .......................................................................................................................65
URAIAN .............................................................................................................................65
RINGKASAN.....................................................................................................................70
LATIHAN/TUGAS ...........................................................................................................70
MODUL 10 – STRING ..........................................................................................................72
TUJUAN .............................................................................................................................72
PRASYARAT .....................................................................................................................72
DESKRIPSI .........................................................................................................................72
RELEVANSI .......................................................................................................................72
URAIAN .............................................................................................................................72
RINGKASAN.....................................................................................................................78
LATIHAN/TUGAS ...........................................................................................................78
MODUL 11 – POINTER .......................................................................................................80
TUJUAN .............................................................................................................................80
PRASYARAT .....................................................................................................................80

iv
DESKRIPSI .........................................................................................................................80
RELEVANSI .......................................................................................................................80
URAIAN .............................................................................................................................80
RINGKASAN.....................................................................................................................85
LATIHAN/TUGAS ...........................................................................................................85
MODUL 12 – FUNGSI ..........................................................................................................87
TUJUAN .............................................................................................................................87
PRASYARAT .....................................................................................................................87
DESKRIPSI .........................................................................................................................87
RELEVANSI .......................................................................................................................87
URAIAN .............................................................................................................................87
RINGKASAN.....................................................................................................................96
LATIHAN/TUGAS ...........................................................................................................96
MODUL 13 – FILE.................................................................................................................97
TUJUAN .............................................................................................................................97
PRASYARAT .....................................................................................................................97
DESKRIPSI .........................................................................................................................97
RELEVANSI .......................................................................................................................97
URAIAN .............................................................................................................................97
RINGKASAN...................................................................................................................102
LATIHAN/TUGAS .........................................................................................................103
APPENDIX – MENGGUNAKAN VISUAL C++ 6..........................................................105
APPENDIX – FUNGSI ANIMASI.....................................................................................110
DAFTAR PUSTAKA ...........................................................................................................111

v
DAFTAR GAMBAR

Gambar 2. 1. Simbol-Simbol Flowchart ................................................................................ 7


Gambar 2. 2. Flowchart – Sekuensial .................................................................................... 8
Gambar 2. 3. Flowchart – Kondisi ......................................................................................... 8
Gambar 2. 4. Flowchart - Single Selection ............................................................................ 9
Gambar 2. 5. Flowchart - Double Selection .......................................................................... 9
Gambar 2. 6. Flowchart - Multiple Selection...................................................................... 10
Gambar 2. 7. Flowchart- Perulangan .................................................................................. 10
Gambar 2. 8. Flowchart – while (Pre-test) ........................................................................... 11
Gambar 2. 9. Flowchart – do while (Post-test).................................................................... 11
Gambar 2. 10. Flowchart - for............................................................................................... 12
Gambar 2. 11. Flowchart – Contoh Soal ............................................................................. 13
Gambar 6. 1. Flowchart - Menentukan Bilangan Genap .................................................. 41
Gambar 6. 2. Flowchart - Menentukan Bilangan Genap atau Ganjil.............................. 42
Gambar 6. 3. Flowchart - Menentukan Bilangan Positif/Negatif/Nol ............................ 44
Gambar 8. 1. Flowchart menghitung rata-rata nilai dengan array 1 D ...........................63
Gambar 9. 1. Flowchart - Mencari Jumlah Bilangan Per Kolom ..................................... 70

vi
DAFTAR PROGRAM

Program 3. 1. Pencetakan kalimat tertentu ke layar monitor ........................................ 17


Program 3. 2. Modifikasi Program 3.1 versi 1 .................................................................. 18
Program 3. 3. Modifikasi Program 3.1 versi 2 .................................................................. 18
Program 4. 1. Menghitung luas lingkaran ........................................................................ 21
Program 4. 2. Contoh menampilkan data integer ........................................................... 26
Program 4. 3. Contoh menampilkan data float ................................................................ 27
Program 4. 4. Contoh menampilkan data string ............................................................. 27
Program 5. 1. Menghitung Operasi Matematika ............................................................. 32
Program 5. 2. Operator-1..................................................................................................... 33
Program 5. 3. Operator-2..................................................................................................... 34
Program 5. 4. Operator-3..................................................................................................... 35
Program 6. 1. Menentukan Bilangan Genap/Ganjil ........................................................ 39
Program 6. 2. Menentukan Bilangan Genap .................................................................... 41
Program 6. 3. Menentukan Bilangan Genap/Ganjil ........................................................ 42
Program 6. 4. Menentukan Bilangan Positif/Negatif/Nol .............................................. 44
Program 6. 5. Menentukan Jenis Operator - switch ........................................................ 48
Program 7. 1. Menghitung Deret Bilangan Ganjil ........................................................... 53
Program 7. 2. Menampilkan Angka 1-10 di Layar Dengan Perintah while ................. 54
Program 7. 3. Menampilkan Angka 1-10 di Layar Dengan Perintah do…while ........ 55
Program 7. 4. Menampilkan Angka 1-10 di Layar Dengan Perintah for ..................... 55
Program 7. 5. Menghitung Rata-Rata Sejumlah Bilangan Positif .................................. 56
Program 7. 6. Menghtung Total Nilai Sejumlah Bilangan Positif ................................. 56
Program 7. 7. Contoh penggunaan perintah continue ................................................... 57
Program 7. 8. Contoh penggunaan perintah exit ............................................................ 57
Program 8. 1. Menghitung rata-rata nilai dengan array 1 D.......................................... 63
Program 9. 1. Mencari Jumlah Bilangan Per Kolom ....................................................... 70
Program 10. 1. Menampilkan Kalimat Secara Terbalik .................................................. 76
Program 10. 2. Mengubah Data String ke Float ................................................................80
Program 13. 1 Hitung Total Panjang Sisi Segitiga Dengan Function ............................91
Program 13. 2 Fungsi Hitung Perkalian.............................................................................92
Program 13. 3 Fungsi Tanpa Return ...................................................................................93
Program 13. 4 Program Variabel Lokal dan Eksternal ....................................................94
Program 13. 5 Call by Value ................................................................................................96
Program 13. 6 Pemahaman Referensi.................................................................................96
Program 13. 7 Contoh Ungkapan .......................................................................................97
Program 13. 8 Call by Reference .........................................................................................97
Program 13. 9 Call by Address............................................................................................98
Program 14. 1.Program Baca File Per Karakter...............................................................102

vii
DAFTAR TABEL

Tabel 3. 1. Escape Sequence ................................................................................................ 18


Tabel 4. 1. Macam-macam tipe data integer ..................................................................... 22
Tabel 4. 2. Macam-macam tipe data float ......................................................................... 22
Tabel 4. 3. Macam-macam tipe data character ................................................................. 22
Tabel 5. 1. Macam-macam operator (berdasarkan hierarki) .......................................... 32
Tabel 5. 2. Pengoperasian Operator pada Dua Operand................................................ 32
Tabel 6. 1. Operator Relasi / Pembanding ........................................................................ 39
Tabel 6. 2. Operator ! (NOT) ............................................................................................... 40
Tabel 6. 3. Operator && (AND) ......................................................................................... 40
Tabel 6. 4. Operator || (OR) ............................................................................................... 40

viii
Modul Ajar Algoritma dan Pemrograman Modul 1- Pendahuluan

MODUL 1 - PENDAHULUAN

TUJUAN
Setelah selesai mempelajari modul ini Anda mampu melakukan hal-hal berikut:
1. Mengerti dan memahami cara kerja komputer
2. Mampu menyesuaikan pola pikir agar serupa dengan pola pikir yang
dimiliki oleh komputer.
3. Mampu menuliskan tahapan-tahapan penyelesaian persoalan secara
terstruktur

PRASYARAT
-

DESKRIPSI
Pada awal bagian dari modul ini akan diberikan contoh bagaimana sebuah robot
dapat menyelesaikan perintah-perintah yang diberikan kepadanya.
Setelah itu akan digambarkan bahwa ada kesamaan antara cara kerja robot
dengan cara pembuatan program komputer.

RELEVANSI
Setelah modul ini berakhir, akan dilanjutkan dengan melakukan analisis
persoalan pemrograman dengan membuat algoritma.

URAIAN
Untuk mendasari pengetahuan kita dalam membuat program, maka hal pertama
yang harus kita ketahui adalah bagaimana sebenarnya sebuah program
komputer bekerja. Dengan mengetahui bagaimana sebenarnya cara program
komputer bekerja, maka kita dapat menyesuaikan pola pikir kita agar serupa
dengan pola pikir yang dimiliki oleh komputer (Budi Hartanto, 2004).

Pertama-tama kita harus mengetahui apa sebenarnya yang dimaksud dengan


program komputer. Program komputer dapat dikatakan sebagai kumpulan
perintah yang diberikan pada komputer untuk dikerjakan olehnya atau suatu
cara untuk menyelesaikan suatu masalah. Perintah-perintah tersebut harus
ditulis dengan bahasa yang dimengerti oleh komputer dan disusun dengan
urutan yang sedemikian rupa, sehingga pada akhirnya kumpulan perintah ini
mampu menyelesaikan suatu tugas tertentu. Komputer, pada umumnya akan
menjalankan perintah-perintah yang diberikan satu-persatu mulai dari yang
paling atas hingga yang paling bawah.

1
Modul Ajar Algoritma dan Pemrograman Modul 1- Pendahuluan

Kelupaan atau kesalahan dalam memberikan perintah akan mengakibatkan hasil


yang dikeluarkan komputer menjadi tidak sesuai dengan harapan kita atau
malah tidak ada hasil apapun yang dikeluarkan.

Untuk memudahkan pengertian ini, kita asumsikan jika sebuah robot


mengerjakan perintah-perintah yang diberikan kepadanya. Misalnya jika sebuah
robot diperintah untuk memasak mie instan jenis mie goreng, maka perintah-
perintah yang harus dilakukan adalah:
1. Ambil sebuah panci
2. Isi panci dengan air sebanyak 200 ml
3. Nyalakan kompor
4. Letakkan panci di atas kompor
5. Tunggu hingga air di panci mendidih
6. Ambil sebungkus mie instan jenis mie goreng
7. Buka bungkus mie instan
8. Masukkan mie ke dalam panci yang berisi air mendidih
9. Tunggu selama 3 menit agar mie menjadi masak
10. Matikan kompor
11. Ambil piring
12. Letakkan piring di atas meja
13. Buang air yang ada di panci (hanya airnya saja)
14. Letakkan mie pada piring
15. Ambil bumbu mie instan yang masih tertutup bungkusnya
16. Buka bungkus bumbu
17. Taburkan bumbu pada mie yang ada di piring
18. Bila masih ada bumbu yang lain ulangi langkah 15 hingga 18
19. Aduk mie hingga bumbu merata pada semua bagian mie
20. Hidangkan piring berisi mie instan di meja makan
Perhatikan bahwa terdapat 20 perintah sederhana yang harus dilakukan robot.
Tentu saja tiap orang bisa mempunyai cara memasak yang berbeda. Sangat
jarang terjadi dua orang yang berbeda mempunyai langkah pengerjaan yang
sama, meskipun secara global langkah-langkahnya mungkin sama.
Hal ini juga terjadi dalam membuat program komputer. Jarang sekali dua orang
atau lebih dapat membuat program komputer yang detilnya sama persis
meskipun tujuannya sama.

Kembali ke perintah-perintah dasar pembuatan mie instan jenis mie goreng di


atas. Proses pemberian perintah pada robot untuk memasak ini sebenarnya
sangat mirip dengan cara pembuatan program komputer, antara lain :

1. Perintah kompleks dapat disusun dari perintah-perintah dasar


Robot dapat menghasilkan mie instan yang telah dimasak karenan perintah
kompleks tergantikan oleh kumpulan perintah dasar yang bisa memberikan
hasil yang sama dengan sebuah perintah kompleks untuk memasak mie
instan. Hal yang sama terjadi dalam dunia pemrograman. Bila komputer

2
Modul Ajar Algoritma dan Pemrograman Modul 1- Pendahuluan

tidak mampu menyelesaikan tugas yang kita inginkan, maka kita dapat
menyusun penyelesaian tugas tersebut dari perintah-perintah lain yang lebih
sederhana dan lebih dimengerti komputer.

2. Adanya aturan yang harus dipatuhi dalam penulisan perintah


Secara logika dapat kita bayangkan robot yang kita minta untuk
menyelesaikan tugas tersebut membutuhkan perintah-perintah yang ditulis
atau diberikan dalam aturan-aturan yang dimengerti oleh robot. Misalnya,
robot hanya mengerti perintah dasar yang disusun dengan aturan “kata
kerja-kata benda” atau “kata benda-kata kerja” atau “kata kerja-kata benda-
kata keterangan”. Bila ada aturan yang tidak ditulis dengan aturan ini, maka
robot tidak akan mengerti.
Dalam membuat program komputer juga terdapat aturan-aturan yang harus
dipenuhi dalam menuliskan perintah-perintah dasar. Untuk itu programmer
harus menghafal aturan-aturan yang berlaku dalam penulisan-penulisan
perintah dasar tersebut.

3. Perintah-perintah harus ditulis dengan urutan yang benar


Dari contoh memasak di atas dapat dilihat bahwa urutan perintah sangat
mempengaruhi hasil yang didapatkan. Bila ada urutan yang ditukar maka
bisa mengakibatkan mie instan tidak pernah tersaji.
Konsep ini harus disadari oleh seorang programmer. Komputer akan benar-
benar mengerjakan perintah yang diberikan kepadanya satu-persatu dari atas
ke bawah. Bila suatu perintah belum selesai dikerjakan, komputer tidak akan
pernah mengerjakan perintah selanjutnya.
Contohnya kita ingin menghitung berapa rupiah diskon yang kita peroleh
dari suatu pembelian barang senilai 1 juta jika diketahui diskon adalah 10%.
Secara matematis, penyelesaian untuk kasus ini biasanya dituliskan sebagai:
Diskon = 1,000,000 x p
Diketahui : p = 10%
Tetapi jika diterapkan pada penulisan program komputer, maka akan
mendapatkan kesalahan dalam perhitungan nilai diskon karena komputer
akan mengerjakan perintah dari atas ke bawah sedang nilai p baru diketahui
setelah nilai diskon dihitung.

Hal inilah yang membedakan cara berpikir seorang manusia dengan


komputer.

RINGKASAN
Perlu adanya kesamaan pola pikir kita dengan cara kerja program komputer.
Sebuah program yang kompleks dapat dibagi menjadi perintah-perintah dasar
yang lebih sederhana. Dalam pembuatan juga ada aturan yang harus dipatuhi
termasuk di antara urutan-urutan perintah harus benar.

3
Modul Ajar Algoritma dan Pemrograman Modul 1- Pendahuluan

LATIHAN/TUGAS
1. Apa itu program komputer?
2. Sebutkan dan jelaskan tiga buah syarat yang harus diperhatikan saat
membuat program komputer?
3. Buatlah langkah-langkah atau perintah-perintah dasar yang harus dilakukan
oleh sebuah robot untuk menyelesaikan pekerjaan berikut :
 Mencuci peralatan makan yang kotor.
 Menyalakan sebuah komputer.

4
Modul Ajar Algoritma dan Pemrograman Modul 2 - Algoritma

MODUL 2 – ALGORITMA

TUJUAN
Setelah selesai mempelajari modul ini Anda mampu melakukan hal-hal berikut:
1. Mengerti dan memahami cara melakukan suatu analisis permasalahan.
2. Mampu menganalisis suatu permasalahan.
3. Mengerti dan memahami simbol-simbol flowchart.
4. Mampu menuliskan algoritma dalam bentuk flowchart.

PRASYARAT
1. Mahasiswa telah mengerti prinsip program komputer bekerja.
2. Telah menyelesaikan semua tugas/latihan pada modul 1

DESKRIPSI
Pada modul ini akan dibahas mengenai cara melakukan analisis dari suatu
permasalahan. Dari permasalahan yang diberikan, Anda diminta untuk
melakukan analisis. Dari analisis tersebut Anda perlu menentukan input, proses
dan output. Kemudian dibuat perancangan dalam bentuk flowchart.

RELEVANSI
Setelah mengetahui cara komputer berpikir, langkah selanjutnya adalah
bagaimana menyusun suatu perintah kompleks menjadi perintah-perintah dasar
dengan pola (bahasa) yang universal (algoritma), agar dapat dipahami oleh
semua orang. Dalam modul ini penulisan algoritma akan menggunakan model
flowchart.
Dengan pembuatan flowchart, akan memudahkan kita menerjemahkan algoritma
tersebut ke dalam bentuk program komputer yang akan dibahas pada modul 3.

URAIAN
Berikut ini adalah contoh sebuah persoalan matematis :
Hitung rata-rata dari sebuah deret nilai.
Maka perintah-perintah untuk menyelesaikan persoalan tersebut adalah:
1. Misalkan jumlah bilangan pada deret adalah n
2. Asumsikan n lebih dari atau sama dengan 1
3. Hitung total (sum) dari n bilangan
4. Sebut total ini s
5. Kemudian rata-rata adalah s/n

5
Modul Ajar Algoritma dan Pemrograman Modul 2 - Algoritma

Perintah-perintah ini dapat diperluas demikian:


1. Misalkan jumlah bilangan pada deret adalah n
2. Asumsikan n lebih dari atau sama dengan 1
3. Ambil bilangan pertama pada deret dan tuliskan pada papan tulis
4. Selama tidak ada lagi bilangan pada deret, ambil bilangan selanjutnya
pada deret dan tambahkan bilangan ini pada papan dan gantilah
bilangan pada papan dengan total penjumlahan ini (ulangilah langkah ini
sampai deret habis)
5. Sebut total ini s
Kemudian rata-rata adalah s/n
Contoh di atas adalah sebuah contoh persoalan matematis. Untuk dapat
menyelesaikan persoalan di atas, Anda pasti harus memahami persolalan apa
yang ingin dipecahkan (output). Setelah itu Anda perlu menentukan masukan
(input) apa yang diperlukan serta proses apa yang diperlukan untuk mengubah
input menjadi output. Pada saat merancang proses ini Anda perlu
menguraikannya dalam bentuk algoritma. Contoh di atas menggunakan
algoritma dalam bentuk pseudocode. Bentuk lain penulisan algoritma adalah
dalam bentuk flowchart yang akan dibahas pada modul ini.

Seringkali seseorang yang menguasai suatu bahasa pemrograman tertentu, jika


diminta bantuannya untuk membuatkan sebuah perangkat lunak bagi
penyelesaian suatu masalah langsung mengerjakannya di depan komputer
sambil mencari jalan keluarnya. Pada saat awal kelihatannya lancar-lancar saja
tetapi begitu sudah sampai di tengah-tengah, mereka mengalami kemacetan.
Untuk menghindari terjadinya kemacetan ini ada beberapa tahapan yang harus
diikuti dalam mengembangkan sebuah perangkat lunak. Adapun tahapan-
tahapan tersebut adalah sebagai berikut :
1. Baca Masalah
Mendefinisikan masalah dengan jelas, tidak membingungkan dan memahami
apa yang diperlukan untuk memecahkan masalah. Semua aspek yang tidak
diperlukan dibuang.
2. Analisis
 Menentukan input, output dan batasan atau informasi tambahan.
 Menentukan format output yang diminta.
3. Perancangan
 Merancang langkah-langkah untuk menyelesaikan masalah(algoritma).
Tahapan ini seringkali digambarkan dalam bentuk flowchart.
 Langkah ini merupakan langkah yang cukup sulit, karena itu jangan
menyelesaikan masalah secara detail di tahap awal, tetapi gunakan
metode top down design (devide & conquer), yaitu dengan memecah
problem dalam beberapa subproblem. Penyelesaian problem diperoleh
dengan menyelesaikan sub-sub problem.
4. Implementasi
 Menterjemahkan tiap-tiap langkah yang ada pada algoritma ke dalam
perintah bahasa pemrograman.

6
Modul Ajar Algoritma dan Pemrograman Modul 2 - Algoritma

5. Testing
 Mencoba berkali-kali dengan data yang berlainan untuk menyimpulkan
apakah perangkat lunak yang dibuat masih mengandung error atau tidak.
6. Maintenance
 Melakukan modifikasi perangkat lunak untuk menghilangkan error yang
sebelumnya tidak terdeteksi dan untuk menjaga agar tetap up to date.

Simbol-simbol Flowchart

Inisialisasi

Proses

Konektor

Pemilihan antara 2 alternatif (decision)

Input / Output

Start / Stop (terminator)

Gambar 2. 1. Simbol-Simbol Flowchart

o Terminator menunjukkan bahwa sebuah algoritma sedang dimulai atau telah


berakhir
o Proses adalah aktivitas dasar pada data
o Decision adalah pemilihan antara dua alternatif (ya/tidak)

7
Modul Ajar Algoritma dan Pemrograman Modul 2 - Algoritma

Ada tiga struktur kontrol :


1. Sekuensial

Gambar 2. 2. Flowchart – Sekuensial

Pada struktur kontrol sekuensial, proses dilakukan secara berurutan dari


awal sampai akhir
2. Kondisi

True

False

Gambar 2. 3. Flowchart – Kondisi

Pada struktur kontrol kondisi (pilihan), terjadi pemilihan alternatif. Jika kondisi
terpenuhi maka masuk ke alur TRUE (T) dan jika kondisi tidak terpenuhi maka
masuk ke alur proses FALSE (F).

8
Modul Ajar Algoritma dan Pemrograman Modul 2 - Algoritma

If you’ve won the lottery


raise your hand

Won lottery ? True

Raise hand
False

Gambar 2. 4. Flowchart - Single Selection

Pada gambar di atas tampak struktur kontrol Pilihan dengan satu pilihan (single
selection).

if you’re happy
smile
else
frown
Happy ? True

False

Frown Smile

Gambar 2. 5. Flowchart - Double Selection

Pada gambar di atas tampak struktur kontrol Pilihan dengan dua pilihan (double
selection).

9
Modul Ajar Algoritma dan Pemrograman Modul 2 - Algoritma

Light red ? True Stop

False

Light green ? True Go


if the light is ...
red -> stop
green -> go
yellow -> slow down False

Light yellow ? True Slow down

False

Gambar 2. 6. Flowchart - Multiple Selection

Pada gambar di atas tampak struktur kontrol Pilihan dengan banyak pilihan
(multiple selection-switch).

3. Perulangan

True

False

Gambar 2. 7. Flowchart- Perulangan

Gambar di atas menunjukkan ada bagian-bagian proses yang diulang.

10
Modul Ajar Algoritma dan Pemrograman Modul 2 - Algoritma

while it’s still clumpy


Stir the mixture
Mixture clumpy
True stir
?

False

Gambar 2. 8. Flowchart – while (Pre-test)

Gambar di atas menunjukkan struktur kontrol perulangan dengan pengecekan


kondisi di awal proses iterasi (pre-test)

True
Ask “Must I eat veggie ?”

ask parents if must eat


vegetables
while parents say “Yes”
Parents say
“Yes”

False

Gambar 2. 9. Flowchart – do while (Post-test)

Gambar di atas menunjukkan struktur kontrol perulangan dengan pengecekan


kondisi di akhir proses iterasi (post-test)

11
Modul Ajar Algoritma dan Pemrograman Modul 2 - Algoritma

Counter = 1

Add 1 to Counter
Teaching a baby to count from 1
to 10:
counter = 1
if counter <= 10:
Counter <= 10 Print
print counter number ?
True
Counter
increment counter

False

Gambar 2. 10. Flowchart-for

Gambar di atas menunjukkan struktur kontrol perulangan dengan pengecekan


kondisi di awal proses iterasi (pre-test) dengan menggunakan bentuk for.
Contoh :

Arnie sangat menyukai jogging pagi. Selama ia jogging, ia menghitung berapa


langkah yang ditempuh selama menit pertama dan menit terakhir. Kemudian
Arnie menghitung rata-rata dari menit pertama dan terakhir kemudian
menganggap bahwa rata-rata ini dapat mewakili rata-rata langkah setiap
menitnya. Buat program yang menerima rata-rata langkah yang dibuat setiap
menitnya dan total waktu yang ditempuh Arnie untuk jogging dalam jam dan
menit, lalu menampilkan jarak yang ditempuh Arnie dalam mil. Asumsi 1
langkah yang dibuat Arnie adalah 2,5 feet. (1 mil sama dengan 5280 feet).
Jawab :

1. Baca problem

Buat program untuk menghitung jarak yang ditempuh Arnie (dalam mil)
sewaktu ia lari pagi, jika rata-rata banyaknya langkah yang dibuat dalam tiap
menit dan waktu yang diperlukan untuk joging (dalam jam dan menit)
diinput. Asumsi 1 langkah = 2.5 feet dan 1 mil = 5280 feet.
2. Analisis

Input : rata-rata langkah yang dibuat dalam 1 menit,


waktu joging dalam jam dan menit.
Output : Jarak yang ditempuh sewaktu joging (mil)
Informasi tambahan : 1 mil = 5280 feet, 1 langkah = 2.5 feet
Format output : -

12
Modul Ajar Algoritma dan Pemrograman Modul 2 - Algoritma

Perancangan
Baca Rata, Jam, menit
Hitung Jarak
Jarak = (Rata (60 * jam + menit) 2.5)/5280
Cetak Jarak
Flowchart
Start

Baca Jam,
menit, Rata

Jarak = (Rata *(60 * jam + menit) * 2.5)/5280

Cetak Jarak

Stop

Gambar 2. 11. Flowchart – Contoh Soal

RINGKASAN
Dalam menyelesaikan suatu persoalan pemrograman ada beberapa tahapan
yang perlu dilakukan di antaranya adalah analisis permasalahan. Dari hasil
analisis tersebut dibuatlah rancangan algoritma, dimana algoritma ini bisa
dituliskan dalam bentuk flowchart. Ada tiga macam struktur kontrol dalam
pemrograman, 1) sekuensial, 2) kondisi dan 3)Perulangan/iterasi.

LATIHAN/TUGAS
1. Buatlah flowchart program untuk menghitung dan menampilkan hasil dari
selisih antara 2 waktu.
Contoh:
Waktu 1: 1 jam 23 menit 10 detik
Waktu 2: 0 jam 50 menit 30 detik
Hasil : 0 jam 32 menit 40 detik
Asumsikan waktu 1 selalu lebih besar dari waktu 2.

13
Modul Ajar Algoritma dan Pemrograman Modul 2 - Algoritma

2. Tampilkan suku – suku dari deret berikut ini selama jumlahnya masih kurang
dari n (diinputkan):
1 + 3 + 7 + 13 + 21 + …
3. Menampilkan deret fibonnaci selama bilangan ke n masih kurang dari x
(diinputkan):
1, 1, 2, 3, 5, 8, …, (suku ke-(n-1) + suku ke-(n-2))
4. Buatlah flowchart untuk mengkonversi suatu bilangan (dari 1 – 100) yang diinputkan
menjadi bilangan romawi!
5. Buatlah program untuk menkonversikan celcius ke Fahrenheit, Kelvin, dan Reamur.
6. Buatlah flowchart program untuk menghitung dan menampilkan volume bola dengan
rumus:
(4 x π x jari-jari3)/3
7. Buatlah flowchart untuk mengubah satuan waktu dengan format detik menjadi
format jam – menit – detik. Input yang dimasukkan berupa jumlah detik dengan
jarak mulai dari 1 sampai 86399, selain itu outputkan “Data error”.
Contoh:
Input => 3663
86468
-2
Output => 1 : 1 : 3
Data error
Data error
8. Buatlah flowchart untuk membalik angka dari depan ke belakang. Input yang
diterima berupa sebuah angka.
Contoh:
Input => 147
71
569
Output => 741
17
965

9. Buatlah flowchart untuk menentukan apakah habis dibagi 3, habis dibagi 5, atau
habis dibagi 11. Input yang dimasukkan berupa angka dengan jarak yang tidak
terbatas. Outputkan “habis dibagi 3”, “habis dibagi 5”, “habis dibagi 11”.
Contoh:
Input => 33
90
330
Output => Habis dibagi 11
Habis dibagi 3 dan 5
Habis dibagi 3, 5, dan 11

14
Modul Ajar Algoritma dan Pemrograman Modul 2 - Algoritma

10. Buatlah flowchart untuk menentukan nilai A – E yang didapatkan, dan juga apakah
lulus atau tidak lulus. Input yang dimasukkan berupa nilai 0 – 100, kemudian nilai
tersebut akan dikonversikan menjadi nilai A – E.
Daftar konversi nilai :
Prosentase nilai Nilai huruf
86 – 100 A
76 – 85 B+
69 – 75 B
61 – 68 C+
56 – 60 C
41 – 55 D
0 – 40 E
Contoh:
Input => 90
68
55
Output => A, Lulus
C+, Lulus
D, Tidak lulus

11. Menentukan apakah sebuah bilangan yang diinputkan merupakan bilangan bulat atau
tidak.
Contoh:
Input: 3,14  Output: Bilangan tidak bulat
Input: 4  Output: Bilangan bulat
Panjang jari-jari bola diinputkan pada saat program dieksekusi.
12. Filbert menabung di Bank Bunga. Saldo awal Filbert adalah Rp X. Setiap bulannya
Bank Bunga memberikan bunga sebesar 7% kepada nasabah yang saldonya di
bawah Rp 10.000.000,00 dan 5% kepada nasabah yang saldonya di atas Rp
10.000.000,00. Hitung total saldo Filbert di Bank Bunga setelah N bulan! (X dan N
diinputkan)
13. Ali, Budi, dan Cecep merupakan mahasiswa pemalas yang suka tidur. Sebelum
mereka tidur mereka selalu mengset alarm untuk membangunkan mereka. Namun
pada kenyataannya ketika alarm berbunyi, ketiganya selalu memencet tombol
“snooze” untuk mematikan alarm sementara. Pada pukul N.00 alarm Ali, Budi dan
Cecep bunyi secara bersamaan. Saat tombol “snooze” ditekan, alarm Ali akan
berhenti selama 8 menit, alarm Budi akan berhenti selama 6 menit, dan alarm Cecep
akan berhenti selama 3 menit. Buatlah flowchart untuk menentukan pukul berapa
pertama kali alarm mereka berbunyi secara bersamaan lagi! (N diinputkan)
14. Buatlah flowchart untuk sebuah game tebak angka di mana pada awal permainan
komputer merandom angka tersebut (dari 0 – 10). Pemain memiliki kesempatan 3x
untuk menginputkan angka. Bila pemain salah menebak maka komputer akan
memberikan notifikasi bahwa angka tebakan tersebut terlalu besar atau terlalu kecil.
Apabila selama 3x pemain tidak berhasil menebak angka tersebut maka pemain
kalah. Tetapi bila pemain berhasil menebak angka tersebut maka pemain menang.

15
Modul Ajar Algoritma dan Pemrograman Modul 3 – Dasar-Dasar Pemrograman

MODUL 3 – DASAR-DASAR PEMROGRAMAN

TUJUAN
Setelah selesai mempelajari modul ini Anda mampu melakukan hal-hal berikut:
1. Mengerti dan memahami struktur program C
2. Mengerti dan memahami perintah output C.

PRASYARAT
1. Mahasiswa sudah mampu menganalisis persoalan pemrograman dengan
membuat algoritma-flowchart.
2. Telah menyelesaikan semua tugas/latihan pada modul 2.

DESKRIPSI
Pada bagian ini akan dibahas mengenai struktur program dalam C serta akan
dibahas pula mengenai perintah output dalam C.

RELEVANSI
Setelah pada modul sebelumnya Anda telah memahami cara melakukan analisis
persoalan permrograman dan membuat algoritma, pada modul ini dan modul-
modul selanjutnya, hasil analisis tersebut akan diterjemahkan dalam bentuk
program dengan menggunakan bahasa C.

URAIAN
Jika Anda diminta untuk membuat program yang dapat menampilkan kalimat
tertentu ke layar monitor, apa saja yang harus Anda ketahui?
Misalnya, Anda diminta untuk menampilkan tulisan berikut ini di layar monitor:
Saya kuliah di Jurusan Teknik Informatika UK Petra.
Saat ini saya sedang kuliah Algoritma dan Pemrograman. Mata
kuliah ini asyik dan menyenangkan.
Untuk dapat membuat program yang mampu menampilkan kalimat tersebut,
maka kita harus mengetahui:
1. Perintah apa yang dapat dipakai untuk menampilkan kalimat tersebut ke
layar monitor.
2. Bagaimana struktur program dalam C.
3. Aturan tambahan (bila ada) yang harus diberikan agar perintah tersebut
dapat dimengerti dan dijalankan oleh komputer.
Untuk dapat menjawab pertanyaan nomor 1, perintah yang digunakan untuk
menampilkan suatu kalimat ke layar monitor adalah perintah printf (singkatan
dari print formated, yang berarti pencetakan dengan menggunakan format
tertentu). Secara sederhana perintah printf dapat ditulis dengan bentuk:
printf (“kata atau kalimat yang ingin dicetak”);
Jadi program yang harus dibuat untuk menampilkan kalimat di atas adalah:

16
Modul Ajar Algoritma dan Pemrograman Modul 3 – Dasar-Dasar Pemrograman

printf (“Saya kuliah di Jurusan Teknik Informatika UK Petra.”);


printf (“Saat ini saya sedang kuliah Algoritma dan Pemrograman”);
printf (“Mata kuliah ini asyik dan menyenangkan.”);
Setelah kita mengetahui dan menyusun perintah-perintah yang harus kita berikan
ke komputer, ada beberapa perintah tambahan agar program dapat berjalan
(jawabah nomor 2). Beberapa aturan tambahan tersebut dapat dilihat pada
program 3.1. (ditandai dengan cetak tebal)
Untuk menjawab pertanyaan nomor 2, berikut ini struktur program dari C:
Bahasa pemrograman C tersusun atas modul-modul berupa fungsi-fungsi. Modul
utama dan paling sederhana adalah fungsi main().

Struktur Program C :

1. Kepala program
Berisi unit-unit yang diperlukan dalam program yang dibuat yang diambil dari
pustaka bahasa C.
2. Tubuh Program
 Terdiri dari deklarasi dan kumpulan perintah yang harus dijalankan.
Antara deklarasi dan perintah letaknya adalah bebas, asal sebuah identifier
sebelum digunakan sudah dideklarasikan terlebih dahulu di atas perintah
yang akan menggunakannya.
 Diwakili oleh fungsi main().
#include <.....>
type main( )
{
/* deklarasi dan perintah yang harus dijalankan ; */
}

Program 3. 1. Pencetakan kalimat tertentu ke layar monitor


#include<stdio.h>
void main()
{
printf (“Saya kuliah di Jurusan Teknik Informatika UK Petra.”);
printf (“Saat ini saya sedang kuliah Algoritma dan
Pemrograman”);
printf (“Mata kuliah ini asyik dan menyenangkan.”);
}
Kedua tambahan tersebut adalah:
 Pemberian directive #include<stdio.h>
Directive adalah perintah khusus dalam C yang penulisannya diawali dengan
tanda #. Agar fungsi C dapat dijalankan, perlu beberapa informasi tentang
fungsi tersebut. Informasi-informasi ini terdapat pada file library.
 Penulisan semua perintah harus terletak di dalam void main()
void main() adalah sebuah fungsi utama yang harus ada dalam pembuatan
program C.
Apabila program 3.1 tersebut dijalankan, ternyata hasilnya tidak sesuai dengan
yang kita harapkan. Semua kalimat akan dicetak bersambungan satu dengan yang
lain dan baru turun satu baris pada layar monitor jika tidak cukup lagi untuk
menampung kalimat yang ingin ditampilkan.

17
Modul Ajar Algoritma dan Pemrograman Modul 3 – Dasar-Dasar Pemrograman

Jadi, apa yang salah? Bagaimana caranya untuk mencetak kalimat pada baris yang
baru? Untuk itu C menyediakan perintah tertentu yang disusun dari kombinasi
beberapa karakter. Sebagai contoh perintah untuk ganti baris adalah perintah ‘\n’.
Sehingga program 3.1 di atas harus diubah menjadi:
Program 3. 2. Modifikasi Program 3.1 versi 1
#include<stdio.h>
void main()
{
printf (“Saya kuliah di Jurusan Teknik Informatika UK Petra.”);
printf (“\nSaat ini saya sedang kuliah Algoritma dan
Pemrograman”);
printf (“\nMata kuliah ini asyik dan menyenangkan.”);
}
atau
Program 3. 3. Modifikasi Program 3.1 versi 2
#include<stdio.h>
void main()
{
printf (“Saya kuliah di Jurusan Teknik Informatika UK Petra. \n”);
printf (“Saat ini saya sedang kuliah Algoritma dan
Pemrograman\n”);
printf (“Mata kuliah ini asyik dan menyenangkan.”);
}
Beberapa escape sequence lain dapat dilihat pada tabel 3.1.
Tabel 3. 1. Escape Sequence

Karakter Keterangan
‘\0’ Karakter ber-ASCII nol (NULL)
‘\a’ Karakter bel
‘\b’ Karakter backspace
‘\f’ Karakter formfeed (ganti halaman)
‘\n’ Karakter newline (pindah baris)
‘\r’ Karakter carriage return (ke awal baris) tanpa linefeed
‘\t’ Karakter tab horizontal. Default 8 karakter
‘\v’ Karakter tab vertikal
‘\\’ Karakter \
‘\’’ Karakter ’
‘\”’ Karakter ’’
‘\?’ Karakter ?
‘\000’ Karakter yang nilai oktalnya 000 (3 digit oktal)
‘\xhh’ Karakter yang nilai hexadesimalnya hh (2 digit hexadesimal)

RINGKASAN
Untuk dapat membuat program terlebih dahulu kita harus mengetahui hal-hal apa
yang diperlukan agar tujuan program tercapai serta aturan-aturan tambahan apa
yang diperlukan. Untuk dapat mencetak di layar digunakan perintah printf,
sedang penulisan program harus berada di dalam sebuah fungsi utama (main).

18
Modul Ajar Algoritma dan Pemrograman Modul 3 – Dasar-Dasar Pemrograman

LATIHAN/TUGAS

1. Buat program untuk mencetak kalimat-kalimat seperti yang terlihat pada


contoh-contoh output di layar monitor berikut ini:

a.

b.

2. Apakah fungsi dari #include?


3. Fungsi apakah yang akan selalu dijalankan ketika program dijalankan
pertama kali?

19
Modul Ajar Algoritma dan Pemrograman Modul 4 – Variabel, Konstanta, dan...

MODUL 4 – VARIABEL, KONSTANTA DAN


PERINTAH OUPUT/INPUT

TUJUAN
Setelah selesai mempelajari modul ini Anda mampu melakukan hal-hal berikut:
1. Mengerti dan memahami perintah input/output, variabel dan konstanta serta
tipe-tipe data.
2. Mampu membuat program sederhana yang menggunakan perintah output
dan input, variabel dan konstanta.

PRASYARAT
1. Mahasiswa sudah mengerti struktur program C.
2. Telah menyelesaikan semua tugas/latihan pada modul 3.

DESKRIPSI
Pada bagian ini akan dibahas mengenai apa saja perintah-perintah output dan input
yang ada dalam C, kemudian bagaimana dan dimana data disimpan.

RELEVANSI
Pada bagian sebelumnya telah dijelaskan bagaimana suatu program komputer
bekerja beserta contoh-contoh program untuk menampilkan kalimat ke layar
monitor. Sebuah program yang lebih berdaya guna tentu saja harus dapat
melakukan proses-proses perhitungan dari input yang diberikan pemakai hingga
menampilkan hasil yang dapat dilihat pada layar monitor. Modul ini akan menjadi
dasar bagi modul-modul berikutnya dalam pembuatan sebuah program, karena data
merupakan sesuatu yang sangat penting dalam program.

URAIAN
Misalnya terdapat suatu persoalan dimana Anda diminta untuk dapat menampilkan
hasil perhitungan dari luas sebuah lingkaran dengan rumus:  .R 2 .
Apa saja yang Anda butuhkan untuk menyelesaikan hal ini?
1. Input data untuk jari-jari
Kita tidak akan bisa menyelesaikan persoalan ini jika nilai jari-jari (R) tidak
diketahui.
2. Nilai phi (  )
Demikian pula kita harus tahu nilai phi untuk bisa menyelesaikan persoalan
ini.
3. Perintah dan aturan (format, tipe data) apa yang dapat dipakai untuk
memasukkan data R ke dalam program.
4. Bagaimana menampilkan isi suatu variabel di layar monitor

20
Modul Ajar Algoritma dan Pemrograman Modul 4 – Variabel, Konstanta, dan...

5. Aturan tambahan (bila ada) yang harus diberikan agar perintah tersebut
dapat dimengerti dan dijalankan oleh komputer.
Dari empat kebutuhan di atas dapat dilihat bahwa nilai R dapat bervariasi
tergantung masukan dari pemakai sedang nilai phi bersifat tetap (konstan).

Untuk dapat melakukan perhitungan, dibutuhkan suatu tempat untuk menyimpan


angka-angka yang terlibat dalam proses perhitungan itu. Tempat ini yang disebut
dengan variabel (untuk data yang bervariasi) dan konstanta (untuk data yang
bersifat konstan). Sedangkan agar seorang pemakai dapat memasukkan data
masukan dari keyboard dibutuhkan perintah input scanf. Dan untuk
menampilkan hasil proses dibutuhkan perintah output.
Agar suatu data bisa disimpan, perlu suatu tempat di memori komputer. Agar suatu
tempat di memori dapat dipakai, perlu melakukan pemesanan terlebih dahulu yang
dikenal dengan istilah deklarasi variabel. Perlu dipikirkan pula besarnya tempat
yang perlu dipesan untuk dapat menyimpan variabel (tipe data).
Berikut ini adalah program untuk menyelesaikan persoalan di atas.
Program 4. 1. Menghitung luas lingkaran
#include<stdio.h>
const float PHI=3.14;
void main()
{
int R;
float Luas;
printf (“Masukkan nilai jari-jari = ”);
scanf(“%d”,&R);
Luas= PHI * R * R;
printf (“Luas Lingkaran = %f”,Luas);
}
Dari jawaban program 4.1. di atas dapat dilihat bahwa terdapat sebuah konstanta
PHI dengan tipe float karena PHI mempunyai nilai pecahan. Juga terdapat variabel
R bertipe integer (bilangan bulat) dan variabel Luas bertipa float (pecahan). Nilai
jari-jari(R) dimasukkan oleh pemakai menggunakan perintah scanf . Setelah nilai R
diketahui baru dihitung Luas lingkaran kemudian dicetak di layar dengan perintah
printf.
Macam data :
1. Konstanta
2. Variabel
Baik konstanta maupun variabel masing-masing mempunyai tipe data sendiri-
sendiri. Perbedaan antara konstanta dan variabel adalah nilai pada konstanta tidak
dapat berubah pada saat program dijalankan, sedangkan nilai pada variabel
dimungkinkan untuk berubah pada saat program dijalankan sesuai dengan
kebutuhan.

Tipe Data
Terbagi Atas :
1. Integer
2. Float
3. Char

21
Modul Ajar Algoritma dan Pemrograman Modul 4 – Variabel, Konstanta, dan...

4. String
5. Void

Tipe data Integer


Digunakan untuk menyimpan nilai yang tidak mempunyai bagian desimal.
Tabel 4. 1. Macam-macam tipe data integer

Jenis Besar Range


Signed int 4 –2147483648 ..
2147483647
Unsigned int 4 0 .. 4294967295
Signed short int 2 –32768 .. 32767
Unsigned short int 2 0 .. 65535
Signed long int 4 –2147483648 ..
2147483647
Unsigned long int 4 0 .. 4294967295
Contoh : -10500 435 15 -25

Tipe Data Float


Digunakan untuk menyimpan nilai yang mempunyai bagian desimal. Variabel tipe
float bisa menampung data integer. Variabel tipe integer bila diisi dengan data float,
maka yang dibelakang koma akan dibuang.
Tabel 4. 2. Macam-macam tipe data float

Jenis Besar Range Keterangan


Float 4 3.4 * 10-38 .. 3.4 * 1038
Dalam bentuk desimal dapat
menampung hingga 6 angka
dibelakang koma
Double 8 1.7 * 10-308 .. 1.7 * 10308 Dalam bentuk desimal dapat
menampung hingga 15 angka
dibelakang koma
Contoh : 3.14159 0.0005 12345.0 15.0E-04 2.345E2 12E+5

Tipe Data Character


Digunakan untuk menyimpan satu data character (huruf, angka, simbol khusus,
spasi dan escape sequences).
Tabel 4. 3. Macam-macam tipe data character

Jenis Besar Range Keterangan


Signed char 1 -128 .. 127 Bila dikaitkan dengan tabel ASCII
adalah sbb :
ASCII Integer character
0 0
1 1
...
127 127

22
Modul Ajar Algoritma dan Pemrograman Modul 4 – Variabel, Konstanta, dan...

128 -128
129 -127
...
255 -1
Unsigned char 1 0 .. 255
Spesifikasi :
 Hanya dapat berisi 1 character,
 Diapit oleh tanda petik tunggal,
 Case sensitive,
 Escape sequences
Contoh : ‘A’ ‘a’ ‘7’ ‘:’

Tipe Data String


Digunakan untuk menyimpan data yang berupa kumpulan character. Tetapi yang
perlu diingat, antara karakter dengan string 1 karakter di dalam bahasa
pemrograman C sangat berbeda. Sebagai contoh karakter ‘j’ dengan string “j”
mempunyai arti yang berbeda.
Spesifikasi :
 Diapit oleh tanda petik ganda,
 Dapat mengandung escape sequences,
 Case sensitive.
Contoh : “ABCDE” “1234” “True”
“\xDB” merupakan karakter ASCII DBh (h = hexadesimal) atau 219 desimal.

Tipe Data Void


 Merupakan tipe data tak bertipe. Total byte yang dibutuhkan adalah 0.

Latihan
Tentukan tipe data dari nilai-nilai berikut ini :
‘F’ F” 420000112
-37000 True” 200
“13000” 12.56 12.56”

KONSTANTA
Data yang nilainya bersifat tetap (tidak berubah) selama program dijalankan.
Contoh :  = 3.14159
1 kilogram = 1000 gram
Cara penulisan konstanta :
1. Langsung
Luas = 3.14159 * jari²
2. Melalui Identifier
Jika ditulis dengan menggunakan identifier, maka harus dideklarasikan
terlebih dahulu. Nilai dari konstanta identifier ini tidak dapat diubah dalam
program kecuali melalui proses input (scanf).
Deklarasi konstanta
Format :

23
Modul Ajar Algoritma dan Pemrograman Modul 4 – Variabel, Konstanta, dan...

const tipe_data konstanta_identifier = nilai ;


Contoh : const float phi = 3.141592;
3. Macro
Pendefinisian perintah/fungsi sederhana, misalnya : mendefinisikan
konstanta.
Apa yang sudah dideklarasikan pada #define, akan di-copy-kan ke semua
statement program yang menggunakan apa yang sudah didefinisikan pada
#define pada saat sebelum proses kompilasi dimulai. Apa yang sudah
didefinisikan pada #define tidak dapat diubah lagi dalam program.
Format : #define konstanta_identifier nilai
Contoh :
#define pi 3.14 (semua statement dalam program yang menggunakan pi akan
diubah menjadi 3.14 sebelum proses kompilasi dimulai).

Identifier
Nama simbolis yang digunakan dalam sebuah bahasa pemrograman. Biasanya
digunakan untuk nama variabel, konstanta, fungsi atau objek lain yang didefinisikan
oleh pemrogram.
Syarat :
o Terdiri dari huruf (a..z, A.. Z), angka (0..9), dan underscore ( _ )
o Diawali dengan huruf/Underscore
o Panjang maksimal 33 karakter
o Tidak mengandung spasi
o Case sensitive
o Bukan reserved word / standart identifier
Contoh:
1. Identifier
Letter1, Hello, Variable, _Bilangan
2. Bukan Identifier
1Letter, Const, two*four, joe’s
Reserved Word
Sebuah kata yang mempunyai arti khusus dalam sebuah bahasa
pemrograman.
Contoh : asm, auto, break, case, cdecl, char, const, class, continue, default, do,
double, else, enum, extern, far, float, for, goto, huge, if, int, interrupt, long,
near, pascal, register, return, short, signed, sixeof, static, struct, switch,
typedef, union, unsigned, void, volatile, while, _cs, _ds, _es, _ss.
Standart Identifier
Merupakan identifier yang sudah digunakan sebagai nama fungsi, konstanta,
variabel, ataupun objek lain dalam pustaka bahasa pemrograman tersebut.
Contoh : printf, scanf, dll

VARIABEL
Data yang nilainya bisa mengalami beberapa kali perubahan (mungkin berulang
kali) selama program dijalankan.
Nilai yang tersimpan dalam variabel secara simbolis selalu ditandai dengan
identifier. Sebelum variabel digunakan, harus dideklarasikan terlebih dahulu.

24
Modul Ajar Algoritma dan Pemrograman Modul 4 – Variabel, Konstanta, dan...

Deklarasi variabel
Format : Tipe_data variable_identifiers ;
Contoh : int jumlah ;
float nilai_mak ;
double gaji, bil ;
Variabel dengan nama sama tidak boleh dideklarasikan ulang.

Cara pemberian nilai pada variabel :


1. Input dari keyboard
Akan dibahas kemudian.
2. Assignment statement
Sebuah perintah untuk menyimpan sebuah nilai atau sebuah hasil
perhitungan ke dalam sebuah variabel.
Format : Variabel_identifier = expression;
Contoh : jari = 30;
SqYards = MetersToYards * SqMeters ;
X = y + z + 2.0 ;
A = b = c = 10 ;
sum = sum + item ; temp = sum + item ;
sum = temp ;
 Tipe data dari variabel_identifier harus sama dengan expression.
 Pemberian nilai secara bersamaan dimulai dari kanan ke kiri.
Contoh : a = b = c =10 c = 10
b=c
a=b
3. Dilakukan bersama-sama dengan deklarasi.
Format : Tipe_data Variabel_identifier = expression;
Contoh : int jari = 30;

Perintah Output
1. printf
= digunakan untuk menampilkan data ke layar monitor
Unit : stdio.h

Format : printf(“string_kontrol”, expression_list);


String_kontrol
= berupa teks, penentu format atau karakter khusus.
Penentu format
= berkaitan dengan tipe data dari identifier yang akan ditampilkan. Satu hal
yang perlu diperhatikan adalah urutan dari letak penentu format harus
sesuai dengan urutan data yang akan mengisi penentu format tersebut.
Format : %[flags][width][.precision] tipe
Flags : - + blank
Tipe Penentu format
Integer d atau i
Unsigned integer u

25
Modul Ajar Algoritma dan Pemrograman Modul 4 – Variabel, Konstanta, dan...

Long integer ld
Long unsigned integer lu
Unsigned hexadesimal integer X untuk A, ..., F
x untuk a, ..., f
Unsigned okatal integer o
Float
Bentuk desimal f (format
Bentuk pangkat dddd.dddddd)
Bentuk yang lebih pendek antara desimal dan pangkat e
g
Double lf
Char c
String s
 Untuk mencetak tanda %, maka tanda % dituliskan 2 kali.
Contoh : printf(“Komisi 10%%”);
Output : Komisi 10%
 Untuk mencetak alamat dari suatu variabel digunakan penentu format %u
dan menggunakan tanda &.
Contoh : printf(“Alamat variabel a = %u”,&a);
Output : Alamat variabel a = 1245052
 Data tipe int bila ditampilkan dengan format %f atau data tipe float bila
ditampilkan dengan format %d akan memberikan hasil nol.

Format tampilan :
1. Data Tipe Integer
Format : %Nd
N = Jumlah tempat yang disediakan
b = blank
Contoh :
Program 4. 2. Contoh menampilkan data integer
#include <stdio.h>
void main()
{
int Bil = 123;
printf(“Bil = %d\n”, bil) ;
printf(“Bil = %5d”, bil) ;
}
Output : 123
bb123

2. Data Tipe float


Format : %N.Mf
N = Jumlah tempat yang disediakan
M = Jumlah tempat yang disediakan untuk bagian desimal
b = blank

26
Modul Ajar Algoritma dan Pemrograman Modul 4 – Variabel, Konstanta, dan...

Contoh :
Program 4. 3. Contoh menampilkan data float
#include <stdio.h>
void main()
{
float Bil = 123.25;
printf(“Bil = %f\n”, bil) ;
printf(“Bil = %7.4f\n”, bil) ;
printf(“Bil = %9.4f”, bil) ;
}
Output : 123.250000
123.2500
b123.2500

3. Data Tipe String


Format : %Ns
N = Jumlah tempat yang disediakan
b = blank
Contoh :
Program 4. 4. Contoh menampilkan data string
#include <stdio.h>
void main()
{
printf(“%7s”, “Radio”) ;
}
Output : bbRadio
 Jika diinginkan rata kiri, maka hanya ditambahkan -.
Contoh : printf(“Jari-jari = %-5.2f”, 5.3);
Output : 5.30bb

Expression_list
= konstanta, variabel, ekspresi
Contoh : printf(“Jari-jari = %d”, jari);
printf(“%c merupakan abjad ke %d”,’b’, 2);
Output : Jari-jari = 20 -> dengan asumsi nilai jari adalah 20
B merupakan abjad ke 2
2. puts()
= Digunakan khusus untuk menampilkan data string ke layar monitor. String
yang ditampilkan secara otomatis akan diakhiri dengan /n (pindah baris).
Unit : stdio.h
Format : puts(string);
Contoh : puts(“Algoritma dan Pemrograman”);
Output : Algoritma dan Pemrograman
3. putchar()
= Digunakan khusus untuk menampilkan sebuah karakter ke layar monitor
tanpa diakhiri dengan perpindahan baris.

27
Modul Ajar Algoritma dan Pemrograman Modul 4 – Variabel, Konstanta, dan...

Unit : stdio.h
Format : putchar(‘karakter’);
Contoh : putchar(‘A’);
Output :A

Perintah Input
1. scanf
= digunakan untuk menerima input dari keyboard.
Unit : stdio.h

Format : scanf(“string_kontrol”, variabel_identifier_list);


String_kontrol
= Penentu format.
Variabel_identifier harus merupakan alamat (untuk menunjuk pada alamat
variabel, gunakan &).
Contoh : scanf(“%d”,&a);
2. getche( )
= Digunakan untuk menerima input dari keyboard sebanyak 1 karakter saja dan
tidak membutuhkan tombol enter untuk mengakhiri proses input. Hasil input
akan ditampilkan ke layar.
Unit : conio.h
Format : getche();
Contoh : char x = getche();
3. getch( )
= Digunakan untuk menerima input dari keyboard sebanyak 1 karakter saja dan
tidak membutuhkan tombol enter untuk mengakhiri proses input. Hasil input
tidak akan ditampilkan ke layar.
Unit : conio.h
Format : getch();
Contoh : char x = getch();

RINGKASAN
Agar suatu program lebih berdaya guna dan fleksibel, perlu adanya perintah input
dan output. Perintah output digunakan untuk menampilkan tulisan maupun isi data
ke layar sedang perintah input digunakan untuk memasukkan data ke dalam
memori. Data bisa disimpan dalam bentuk variabel (untuk data yang nilainya bisa
berubah) dan dalam bentuk konstanta (untuk data yang nilainya tetap).

LATIHAN/TUGAS
1. Buatlah program untuk menghitung sisi miring dari segitiga siku – siku jika
diinputkan 2 sisi segitiga yang lainnya. Inputan berupa 2 bilangan yang
merupakan 2 sisi segitiga yang lain, output dari program adalah sisi miring
dari segitiga siku – siku.
Contoh:
INPUT:

28
Modul Ajar Algoritma dan Pemrograman Modul 4 – Variabel, Konstanta, dan...

49
78
OUTPUT:
9.8488
10.6301
2. Buatlah sebuah program untuk menghitung bilangan X, di mana bilangan X =
Luas Lingkaran + Luas Persegi + Keliling Lingkaran + Keliling Persegi.
Program akan menerima inputan sebuah angka N. N akan digunakan sebagai
jari – jari untuk menghitung Luas dan Keliling lingkaran, N juga akan
digunakan sebagai sisi dari persegi. Output yang dihasilkan dari program
adalah bilangan X
Contoh:
INPUT:
5
8
OUTPUT:
154.9 [NOTE: 154.9 dihasilkan dari 78.5+31.4+25+20]
347.2 [NOTE: 347.2 dihasilkan dari 200.96+50.24+64+32]

3. Seorang petugas money changer membutuhkan program untuk


mengkonversi rupiah menjadi Euro(1 Euro = 14858.31 Rupiah), USDollar(1
USDollar = 13470.83 Rupiah), Chinese Yuan(1 Chinese Yuan = 2168.45
Rupiah). Input dari program adalah sebuah nominal rupiah, output dari
program adalah 3 angka yang merupakan hasil konversi dari rupiah.
Contoh:
INPUT:
18000000
144480

OUTPUT:
Euro = 1212.058260
USDollar = 1336.221000
Chinese Yuan = 8300.87

Euro = 9.728788
USDollar = 10.73
Chinese Yuan = 66.63155

4. Buatlah program yang menerima inputan berupa character. Outputkan kode


ASCII nya!
Contoh :
Input : A
Output : 65

29
Modul Ajar Algoritma dan Pemrograman Modul 4 – Variabel, Konstanta, dan...

5. Buatlah program untuk menghitung volume kerucut apabila diinputkan jari


– jari alas dan tinggi kerucut!
6. Buatlah program penghitungan gaji karyawan selama 1 tahun apabila
diinputkan gaji/jam!
(Asumsi : 1 hari bekerja 8 jam, 1 minggu bekerja 5 hari, dan 1 tahun bekerja 48
minggu).
7. Buatlah program yang menerima inputan berupa 2 buah string. Inputan
pertama berupa nama. Inputan kedua berupa alamat. Outputkan dalam
bentuk “<nama> bertempat tinggal di <alamat>”.
Contoh :
Input :
Andy
Mangga 10
Output :
Andy bertempat tinggal di Mangga 10.

8. Buatlah sebuah program untuk menghitung jumlah digit sebuah angka(N)


yang diinputkan, input program adalah sebuah angka dan output adalah
jumlah digit dari N
Contoh:
INPUT:
1000
454448

OUTPUT:
4
6
9. Buatlah sebuah program untuk menghitung rata – rata dari 4 angka yang
diinputkan, input program adalah 4 buah angka dan output dari program
adalah rata – rata dari 4 buah angka yang diinputkan
Contoh:
INPUT:
7456
454 464 474 484

OUTPUT:
5.5
469

30
Modul Ajar Algoritma dan Pemrograman Modul 5 – Operator Aritmatika & ......

MODUL 5 – OPERATOR ARITMATIKA & FUNGSI-


FUNGSI MATEMATIKA

TUJUAN
Setelah selesai mempelajari modul ini Anda mampu melakukan hal-hal berikut:
1. Mengerti dan memahami macam-macam operator aritmatika
2. Mampu menggunakan operator-operator aritmatika untuk
menyelesaikan persoalan pemrograman.
3. Mengenal dan dapat menggunakan fungsi-fungsi matematika yang telah
disediakan oleh C.

PRASYARAT
1. Mahasiswa telah mengerti struktur program C, perintah I/O, variabel dan
konstanta
2. Telah menyelesaikan semua tugas/latihan pada modul 4

DESKRIPSI
Pada modul ini akan dibahas mengenai macam-macam operator pada C,
hierarkinya, fungsi-fungsi matematika serta penggunaannya.

RELEVANSI
Setelah mengetahui bagaimana membuat suatu program dengan struktur
sekuensial pada modul sebelumnya, sekarang dibahas mengenai persoalan-
persoalan pemrograman yang menggunakan operator.

URAIAN
Misalnya ada persoalan matematis sebagai berikut :
b h
Hitung nilai X = a  f * ( ) dimana a = 5, f = 4, b = 12 dan h =36.
3
Hal-hal apa yang perlu diperhatikan dalam menghitung nilai X?
1. Jenis-jenis operator aritmatika
2. Hierarki operator
3. Fungsi dalam C untuk menghasilkan akar kuadrat.
Pada persoalan di atas kita melihat ada tiga jenis operator yang digunakan ( +, * ,
- ). Urutan pengerjaan dimulai dari depan ke belakang tetapi harus
memperhatikan hierarki (derajat) operator. Pada persoalan di atas, meskipun
operator + ada di depan *, tetapi karena hierarki + lebih rendah daripada * maka *
dikerjakan terlebih dahulu. Juga tampak adanya tanda ( ) menunjukkan bahwa
apa yang ada di dalam tanda kurung harus dikerjakan terlebih dahulu. Fungsi

31
Modul Ajar Algoritma dan Pemrograman Modul 5 – Operator Aritmatika & ......

matematis yang digunakan untuk menghitung akar kuadat adalah sqrt. Jadi
proses perhitungannya adalah sebagai berikut:
b h 12  6
1. ( )( ) =2
3 3
b h
2. f * ( )  4*2  8
3
3. 5 + 8 = 13
Berikut ini adalah program untuk menyelesaikan persoalan di atas.
Program 5. 1. Menghitung Operasi Matematika
#include<stdio.h>
#include<math.h>
void main()
{
int a = 5, f = 4, b = 12 , h =36;
float X;
X= a+f*((b-sqrt(h)/3);
printf (“Nilai X = %f”,X);
}

Ada beberapa macam operator aritmatika yang bisa kita gunakan di


dalam bahasa pemrograman Turbo C, yaitu unary minus, pengurangan,
penjumlahan, perkalian, pembagian, sisa pembagian bulat.
Tabel 5. 1. Macam-macam operator (berdasarkan hierarki)

Simbol Keterangan
- Unary minus
* Perkalian
/ Pembagian
% Sisa pembagian bulat
+ Penjumlahan
- Pengurangan

Tabel 5. 2. Pengoperasian Operator pada Dua Operand

Operator : + - * /
integer op integer = integer
integer op float = float
float op integer = float
float op float = float
Operator : %
Integer op Integer = integer

Tata cara pengerjaan ekspresi matematika :


Operasi aritmatika normalnya dikerjakan dari kiri ke kanan.
Contoh :2+3–4

32
Modul Ajar Algoritma dan Pemrograman Modul 5 – Operator Aritmatika & ......

Penjelasan : 2 ditambahkan dulu dengan 3 baru hasilnya dikurangi dengan 4.


Jika di dalam sebuah ekspresi matematika terdapat beberapa macam operator
aritmatika, maka urutan pengerjaannya adalah sebagai berikut :
Unary minus, perkalian, pembagian, sisa pembagian bulat, penjumlahan dan
pengurangan.
Jika didalam suatu operasi aritmatika mengandung lebih dari satu operator yang
mempunyai derajat sama, maka yang dikerjakan dari kiri ke kanan.
Contoh :2+3*4
Penjelasan : 2 ditambah dengan hasil perkalian antara 3 dengan 4.
Bila dalam operasi aritmatika terdapat tanda kurung, maka yang di dalam tanda
kurung dikerjakan terlebih dahulu.
Contoh : (2 + 3) * 4
Penjelasan : 2 ditambahkan dulu dengan 3, hasilnya baru dikalikan dengan 4.

Contoh :
Program 5. 2. Operator-1
#include<stdio.h>
void main()
{ int a1 = 10, a2, a3, a4;
float b1 = 1.5, b2, b3, b4;
a2 = a1 / b1 + 2.75;
a3 = 45 / a1 + 3;
a4 = 45.0 / a1 + 3 ;
b2 = a1 / b1 + 2.75;
b3 = 45 / a1 + 3;
b4 = 45.0 / a1 + 3;
printf(“\n %d “, a2);
printf(“ %d “, a3);
printf(“ %d “, a4);
printf(“\n %f “, b2);
printf(“ %f “, b3);
printf(“ %f “, b4);
}
Output : 9 7 7
9.416667 7.000000 7.500000

Operator Pemberi Nilai Aritmetika


Var_identifier += ekspresi ;  Var_identifier = Var_identifier + ekspresi
Var_identifier -= ekspresi ;  Var_identifier = Var_identifier - ekspresi
Var_identifier *= ekspresi ;  Var_identifier = Var_identifier * ekspresi
Var_identifier /= ekspresi ;  Var_identifier = Var_identifier / ekspresi
Var_identifier%=ekspresi ;  Var_identifier = Var_identifier % ekspresi

33
Modul Ajar Algoritma dan Pemrograman Modul 5 – Operator Aritmatika & ......

Operator Increment dan Decrement


Untuk variabel yang nilainya selalu bertambah atau berkurang satu dikenal
operator increment dan decrement, yaitu ++ dan --.
Contoh : a = a + 1 ditulis a++ atau ++a
a = a – 1 ditulis a-- atau --a
Bila ++ atau – diletakkan didepan variabel maka proses penambahan atau
pengurangan akan dilakukan sesaat sebelum atau langsung pada saat
menjumpai ekspresi ini. Bila ++ atau -- diletakkan dibelakang variabel maka
proses penambahan atau pengurangan akan dilakukan setelah ekspresi tersebut
dijalankan.
Contoh :
Program 5. 3. Operator-2
#include<stdio.h>
void main()
{
int bil = 10;
printf(“%d\n”, bil);
printf(“%d\n”, ++bil);
printf(“%d\n”, bil++);
printf(“%d\n”, bil);
}
Output : 10
11
11
12

Konversi Tipe data


Tipe data dapat langsung diatur di dalam ekspresi aritmetika yang dituliskan,
dengan demikian konversi tipe data akan langsung dilakukan pada setiap
langkah perhitungannya. Pengaturan tipe data ini dituliskan sebagai :
(tipe_data) variabel_atau_konstanta
Spesifikasi :
1. Pengatur tipe hanya mengatur sebuah variabel atau konstanta yang tepat
berada di belakang pengatur tipe data. Untuk tipe data float bila di-integer-
kan, maka yang di belakang koma akan dibuang.
Contoh : (int) 45.75 / 1.5  45 / 1.5
2. Bila setiap konstanta atau variabel hendak diubah tipenya, maka konstanta-
konstanta atau variabel-variabel tersebut membutuhkan pengatur tipenya
masing-masing.
Contoh : (int) 45.75 / (int) 1.5  45 / 1
3. Kita dapat menggunakan tanda kurung untuk mengatur dijalankannya
proses aritmatika lebih dahulu, baru kemudian hasilnya dikonversikan ke
dalam tipe yang diinginkan.
Contoh : (int) (45.75 / 1.5)  (int) 30.500000

34
Modul Ajar Algoritma dan Pemrograman Modul 5 – Operator Aritmatika & ......

Contoh :
Program 5. 4. Operator-3
#include<stdio.h>
void main()
{ int a1 = 10, a2, a3, a4, a5, a6, a7;
float b1, b2;
a2 = 45.5 / a1 + 2.75;
a3 = (int) 45.5 / a1 + 2.75;
a4 = (int) 45.5 / a1 + (int) (2.75) ;
a5 = (int) 45.75 / 0.5 ;
a6 = (int) (45.75 / 0.5);
a7 = (int) 45.75 / (int) 1.5 ;
b1 = 45 / a1 + 2.75;
b2 = (float) 45 / a1 + 2.75;
printf(“\n %d “, a2);
printf(“ %d “, a3);
printf(“ %d “, a4);
printf(“%d “, a5);
printf(“ %d “, a6);
printf(“ %d “, a7);
printf(“\n %f “, b1);
printf(“ %f “, b2);
}
Output : 7 6 6 90 91 45
6.750000 7.250000

Fungsi-Fungsi Matematika
1. abs()
Format : abs(Ekspresi_Integer)
Fungsi : Untuk menentukan harga mutlak bilangan bulat.
Unit : math.h
Hasil : Bertipe integer.
Contoh : abs(-5) = 5
abs(5) = 5
2. fabs()
Format : fabs(Ekspresi_Float)
Fungsi : Untuk menentukan harga mutlak bilangan desimal.
Unit : math.h
Hasil : Bertipe float.
Contoh : fabs(-5.3) = 5.3
fabs(5.3) = 5.3
3. sqrt()
Format : sqrt(Ekspresi_Double_Positif);
Fungsi : Untuk menghitung akar pangkat dua dari suatu bilangan positif.
Unit : math.h
Hasil : Bertipe double.
Contoh : sqrt(4.0) = 2.000000
4. exp()
Format : exp(Ekspresi_Double);

35
Modul Ajar Algoritma dan Pemrograman Modul 5 – Operator Aritmatika & ......

Fungsi : Untuk menghitung nilai e Ekspresi_Double.


Unit : math.h
Hasil : Bertipe double.
Contoh : exp(4.0) = 54.598150
5. log()
Format : log(Ekspresi_Double_positif);
Fungsi : Untuk menghitung logaritma naturalis dari argumen.
Unit : math.h
Hasil : Bertipe double.
Contoh : log(4.0) = 1.386294
6. log10()
Format : log10(Ekspresi_Double);
Fungsi : Untuk menghitung nilai logaritma berbasis 10 dari argumen.
Unit : math.h
Hasil : Bertipe double.
Contoh : log10(100.0) = 2.000000
7. pow()
Format : pow(Ekspresi_Double1, Ekspresi_Double2);
Fungsi : Untuk menghitung nilai Ekspresi_Double1 Ekspresi_Double2. Jika
Ekspresi_Double1 & Ekspresi_Double2 0, maka akan
mengembalikan nilai 1.
Unit : math.h
Hasil : Bertipe double.
Contoh : pow(2.0, 3.0) = 8.000000
8. cos()
Format : cos(Ekspresi_Double);
Fungsi : Untuk menghitung nilai cosinus dari suatu sudut.
Ekspresi_Double ditulis dalam radian.
Unit : math.h
Hasil : Bertipe double.
Contoh : cos(0.5) = 0.877583
9. sin()
Format : sin(Ekspresi_Double);
Fungsi : Untuk menghitung nilai sinus dari suatu sudut. Ekspresi_Double
ditulis dalam radian.
Unit : math.h
Hasil : Bertipe double.
Contoh : sin(0.5) = 0.479426
10. tan()
Format : tan(Ekspresi_Double);
Fungsi : Untuk menghitung nilai tangent dari suatu sudut.
Ekspresi_Double ditulis dalam radian.
Unit : math.h
Hasil : Bertipe double.
Contoh : tan(0.5) = 0.546302

36
Modul Ajar Algoritma dan Pemrograman Modul 5 – Operator Aritmatika & ......

11. ceil()
Format : ceil(Ekspresi_Double);
Fungsi : Untuk membulatkan argumen ke bilangan terdekat di atasnya.
Unit : math.h
Hasil : Bertipe double.
Contoh : ceil(123.54) = 124.00
12. floor ()
Format : floor(Ekspresi_Double);
Fungsi : Untuk membulatkan argumen ke bilangan terdekat di bawahnya.
Unit : math.h
Hasil : Bertipe double.
Contoh : floor(123.54) = 123.00

RINGKASAN
Operator aritmatika digunakan untuk melakukan pengoperasian pada operand.
Ada operator yang hanya membutuhkan 1 operand (unary operator) dan ada
operator yang membutuhkan 2 operand (binary operator). Ada urutan
pengerjaan (hierarki) pada penggunaan operator-operator.

LATIHAN/TUGAS
1. Buatlah program untuk menghitung determinan dari ax2 + bx + c. Inputan
yang diterima adalah a, b, dan c (dapat positif maupun negatif).
Rumus : b2 – (4 * a * c)
Contoh:
Input  a = 1, b = 3, c = 5
Output  -11
2. Buatlah program untuk menghitung radiasi benda hitam dengan rumus I =
e σ T4 ! (dimana σ = 5.67 x 10-4 )
3. Buatlah program untuk konversi waktu dalam format detik menjadi format
jam, menit, dan detik. (Contoh : 3661 detik = 1 jam 1 menit 1 detik)
4. Buatlah program untuk menampilkan koordinat suatu titik yang berada
pada kurva :

y = x3 + 2log (x2) + +

dengan inputan x.
5. Buat program untuk menghitung hasil Z dibawah ini.
a. Z = (sin(x3))2 + cos( )

b. Z = + (β harus bernilai dalam derajat)


c. Z =

37
Modul Ajar Algoritma dan Pemrograman Modul 6 – Struktur Kontrol Kondisi

MODUL 6 – STRUKTUR KONTROL KONDISI

TUJUAN
Setelah selesai mempelajari modul ini Anda mampu melakukan hal-hal berikut:
1. Mengerti dan memahami jenis struktur kontrol kondisi/pilihan/percabangan
2. Mampu menyelesaikan persoalan program komputer yang memiliki struktur
kontrol kondisi

PRASYARAT
1. Mahasiswa telah mengerti prinsip struktur kontrol sekuensial.
2. Telah menyelesaikan semua tugas/latihan pada modul 5

DESKRIPSI
Pada modul ini akan dibahas mengenai struktur kontrol yang kedua yaitu
kondisi/pilihan. Pada struktur kontrol ini ada bagian-bagian yang dikerjakan dan
ada yang tidak, tergantung dari pengecekan kondisi.

RELEVANSI
Setelah mengetahui struktur kontrol sekuensial dimana program berjalan dari awal
sampai akhir, berikut ini akan dibahas mengenai struktur kontrol pilihan, dimana
ada pemilihan alternatif di antara beberapa alternatif. Jadi bagian program mana
yang dikerjakan akan ditentukan oleh pengecekan alternatif pilihan.

URAIAN
Berikut ini adalah contoh sebuah persoalan:
Tentukan apakah sebuah bilangan termasuk genap/ganjil.
Dari persoalan di atas hal-hal yang perlu diperhatikan adalah:
1. Apa yang dimaksud dengan bilangan genap dan bilangan ganjil? Bagaimana
cara menentukan suatu bilangan itu genap/ganjil?
2. Apa yang menjadi output/permintaan dari persoalan?
3. Untuk menghasilkan output tersebut memerlukan input apa?
4. Apa proses yang dilakukan? Memerlukan syntax apa?
Untuk menjawab pertanyaan no 1 : bilangan genap adalah bilangan yang habis
dibagi 2 dan bilangan ganjil adalah bilangan yang tidak habis dibagi 2.
Untuk menjawab pertanyaan no 2 : bilangan termasuk genap/ganjil
Untuk menjawab pertanyaan no 3 : inputnya adalah sebuah bilangan
Untuk menjawab pertanyaan no 4: terdapat suatu proses untuk menentukan
bilangan yang diinputkan termasuk genap/ganjil. Di sini dapat kita lihat bahwa ada
proses pemilihan alternatif, apakah termasuk genap/ganjil. Proses pemilihan
alternatif ini pada C menggunakan perintah if.
Berikut ini adalah jawaban dari persoalan di atas

38
Modul Ajar Algoritma dan Pemrograman Modul 6 – Struktur Kontrol Kondisi

Program 6. 1. Menentukan Bilangan Genap/Ganjil


#include<stdio.h>
void main()
{
int bilangan;
printf(“Masukkan sebuah bilangan : “);
scanf(“%d”,&bilangan);
if (bilangan%2==0)
printf (“%d termasuk bilangan genap”,bilangan);
else
printf (“%d termasuk bilangan ganjil”,bilangan);
}

Ekspresi Logika
Ekspresi yang mempunyai 2 kemungkinan nilai, yaitu benar atau salah.
Pada C, kondisi benar dapat diwakili oleh bilangan bukan nol sedangkan kondisi
salah selalu diwakili dengan nol.
1. Ekspresi logika dengan menggunakan operator relasi
Operator relasi adalah operator yang digunakan untuk membandingkan nilai dari

2 ekspresi. Hasil pembandingannya bisa benar atau salah.

Untuk tipe data character maka yang dibandingkan adalah nilai ASCII-nya.
Tabel 6. 1. Operator Relasi / Pembanding

< Lebih Kecil


<= Lebih kecil sama dengan
> Lebih besar
>= Lebih besar sama dengan
== Sama dengan
!= Tidak sama dengan
Contoh :
Variabel Nilai Ekspresi Valid
X -5 X <= 0
Power 1024 Power < MaxPow
MaxPow 1024 X >= Y
Y 7 Item > MinItem
Item 1.5 NomorDad = = ‘M’
MinItem -999.0 Num != Sentinel
NomorDad ‘M’
Num 999
Sentinel 999

39
Modul Ajar Algoritma dan Pemrograman Modul 6 – Struktur Kontrol Kondisi

2. Ekspresi logika dengan menggunakan operator logika


Operator logika adalah operator yang digunakan untuk menghubungkan
ekspresi logika.
Tiga operator logika yang sering digunakan :
Tabel 6. 2. Operator ! (NOT)

Operand ! Operand
True False
False True

Tabel 6. 3. Operator && (AND)

Operand1 Operand2 Operand1 && operand2


True True True
True False False
False True False
False False False
Tabel 6. 4. Operator || (OR)

Operand1 Operand2 Operand1 || operand2


True True True
True False True
False True True
False False False

Contoh : (Min <= X) && (X <= max)


(x = = 1) || (x = = 3)
Hirarki Operator
Nomor Prioritas
1 ()
2 ++ -- ! unary minus unary plus sizeof (type)
3 * / %
4 - +
5 < <= > >=
6 = = !=
7 &&
8 ||
9 ?: (operator kondisi trinari)
10 = += -= *= /= %=

Ada tiga macam perintah untuk struktur kontrol pilihan :


1. IF ELSE
2. OPERATOR KONDISI TRINARI
3. SWITCH

40
Modul Ajar Algoritma dan Pemrograman Modul 6 – Struktur Kontrol Kondisi

Perintah if...else
1. Satu alternatif
Format : if ( <kondisi> )
{ <statements T>; }
Keterangan : Bila kondisi bernilai true maka <statements T> dijalankan. Bila
kondisi bernilai false maka <statements T>tidak dijalankan.
Contoh :
Baca problem :
Menentukan apakah sebuah bilangan yang diinput merupakan bilangan
genap.
Analisis :
Input : Bilangan
Output : Tampilkan pesan genap bila bilangan yang diinput bilangan genap
Informasi tambahan : Sebuah bilangan dikatakan bilangan genap apabila
bilangan tersebut bila dibagi dengan 2 mempunyai sisa nol.
Algoritma :
Start

Baca
bilangan

Cetak
bilangan mod 2 pesan
T
=0? “Bilangan
Genap”

Stop F

Gambar 6. 1. Flowchart - Menentukan Bilangan Genap

Implementasi :
Program 6. 2. Menentukan Bilangan Genap

#include<stdio.h>
void main()
{
int bilangan ;
scanf(“%d”,&bilangan);
if (bilangan % 2 == 0)
printf(“Bilangan Genap”);
}

41
Modul Ajar Algoritma dan Pemrograman Modul 6 – Struktur Kontrol Kondisi

2. Dua alternatif
Format : if (<kondisi>)
{ <statements T> ; }
else
{ <statements F> ; }

Keterangan : Bila kondisi bernilai true maka <statements T> dijalankan. Bila
kondisi bernilai false maka <statements F > yang dijalankan.
Contoh :
Baca problem :
Menentukan apakah sebuah bilangan yang diinput merupakan bilangan
genap atau bilangan ganjil.
Analisis :
Input : Bilangan
Output : Tampilkan pesan genap bila bilangan yang diinput bilangan
genap.
Tampilkan pesan ganjil bila bilangan yang diinput bilangan ganjil
Informasi tambahan : Sebuah bilangan dikatakan bilangan genap apabila
bilangan tersebut bila dibagi dengan 2 mempunyai sisa nol dan
merupakan bilangan ganjil bila dibagi dengan 2 mempunyai sisa 1.
Algoritma :
Start

Baca
bilangan

Cetak Cetak
pesan bilangan mod 2 pesan
F T
“Bilangan =0? “Bilangan
Ganjil” Genap”

Stop

Gambar 6. 2. Flowchart - Menentukan Bilangan Genap atau Ganjil

Implementasi :
Program 6. 3. Menentukan Bilangan Genap/Ganjil
#include<stdio.h>
void main()
{
int bilangan;
scanf(“%d”, &bilangan);
if (bilangan%2==0)
printf(“Bilangan genap”);
else
printf(“Bilangan ganjil”);
}

42
Modul Ajar Algoritma dan Pemrograman Modul 6 – Struktur Kontrol Kondisi

3. Multi alternatif
Format : if (<kondisi_1>)
{ <statements_1T >;}
else if (<kondisi_2>)
{ <statements_2T >;}
else if (<kondisi_3>)
{ <statements_3T >;}
……
else if( <kondisi_n> )
{<statements_nT> ;}
else
{<statements_nF >;}
Keterangan : Bila <kondisi_1> bernilai true maka <statements_1T> dijalankan.
Bila <kondisi_1> bernilai false maka dilakukan pengecekan lagi
terhadap <kondisi_2>. Bila <kondisi_2> bernilai true maka
<statements_2T> dijalankan. Bila <kondisi_2> bernilai false maka
dilakukan pengecekan lagi terhadap <kondisi_3>. Demikian
seterusnya sampai yang terakhir bila <kondisi_n> benar maka
<statements_nT> dijalankan, tetapi bila <kondisi_n> bernilai false
<statements_nF> yang dijalankan.
Pada multiple if, perintah else akan dihubungkan dengan if
sebelumnya yang terdekat. (lihat contoh 2)
Contoh 1:
Baca problem :
Menentukan apakah sebuah bilangan yang diinput adalah bilangan positif
atau bilangan negatif atau nol.
Analisis :
Input : Bilangan
Output : Pesan ‘Bilangan positif / negatif / nol’ sesuai dengan yang diinput.
Informasi tambahan : Sebuah bilangan dikatakan positif bila bilangan
tersebut lebih besar dari nol dan dikatakan negatif bila bilangan
tersebut kurang dari nol.
Algoritma :

43
Modul Ajar Algoritma dan Pemrograman Modul 6 – Struktur Kontrol Kondisi

Start

Baca
bilangan

Cetak
pesan
bilangan > 0 ? T
“Bilangan
Positif”

Cetak
pesan
bilangan < 0 ? T
“Bilangan
Negatif”

Cetak
pesan
“Bilangan
Nol”

Stop

Gambar 6. 3. Flowchart - Menentukan Bilangan Positif/Negatif/Nol

Implementasi :
Program 6. 4. Menentukan Bilangan Positif/Negatif/Nol
include <stdio.h>
void main()
{
int bilangan;
scanf(“%d”,&bilangan);
if (bilangan > 0)
printf(“Bilangan positif”);
else if (bilangan < 0)
printf(“Bilangan negatif”);
else
printf(“Bilangan nol”);
}

44
Modul Ajar Algoritma dan Pemrograman Modul 6 – Struktur Kontrol Kondisi

Perintah OPERATOR KONDISI TRINARI


Format : Variabel = <ekspresi_logika> ? <ekspresi_1> : <ekspresi_2>
Keterangan : Jika <ekspresi_logika> benar, maka yang dikerjakan adalah
<ekspresi_1> sedangkan jika salah, maka yang dikerjakan adalah
<ekspresi_2>.
Contoh : if (nilai >= 60)
Status = ‘L’ ;
else
Status = ‘G’;
Bisa diubah menjadi : Status = nilai >= 60 ? ‘L’ : ‘G’ ;

Perintah SWITCH
Perintah khusus di dalam C yang digunakan untuk mengimplementasikan struktur
multi alternatif.
Format :
switch (<ekspresi>)
{
case nilai_1 :
<statement_11>;
.....
<statement_1n>;
break ;
case nilai_2 :
<statement_21>;
.....
<statement_2n>;
break ;
……
case nilai_n :
<statement_n1>;
.....
<statement_nn>;
break ;
default :
<statements_n+1> ;
}
Keterangan :
 Ekspresi di atas berupa ekspresi tunggal (bertipe integer atau karakter) yang
nilainya digunakan untuk memilih kondisi (ditunjukkan oleh nilai_1 sampai
nilai_n) yang sesuai.
 Pertama kali ekspresi dicocokkan dengan nilai_1, jika memenuhi, maka
<statement_11> dikerjakan hingga ketemu break atau akhir dari switch. Jika
ekspresi tidak sesuai dengan nilai_1, maka ekspresi dicocokkan dengan
nilai_2, jika memenuhi, maka <statement_21> dikerjakan sampai ketemu
break atau akhir perintah switch. Demikian seterusnya sampai kemudian, jika
ekspresi tidak sesuai dengan nilai_n, maka <statements_n+1> yang
dikerjakan.

45
Modul Ajar Algoritma dan Pemrograman Modul 6 – Struktur Kontrol Kondisi

Contoh : switch (operator)


{
case ‘+’ : printf(“plus”); break;
case ‘-’ : printf(“kurang”);
case ‘*’ : printf(“kali”);
}
jika operator isinya adalah : -, maka outputnya : kurang kali;
Karena tidak perintah break.
 Perintah default boleh dihilangkan jika memang tidak diperlukan.
 Jenis-jenis case_list
 Berupa suatu konstanta yang bertipe integer / char
Contoh : switch (grade)
{ case ‘A’ : Bobot = 4;
break;
case ‘B’ : Bobot = 3;
break;
case ‘C’ : Bobot = 2;
break;
case ‘D’ : Bobot = 1;
break;
default : Bobot = 0;
}
Penjelasan : Jika grade berisi nilai ‘A’, maka variabel bobot diisi dengan
nilai 4. Jika grade berisi nilai ‘B’, maka variabel bobot diisi
dengan nilai 3. Jika grade berisi nilai ‘C’, maka variabel
bobot diisi dengan nilai 2. Jika grade berisi nilai ‘D’, maka
variabel bobot diisi dengan nilai 1. Dan jika grade berisi
nilai ‘E’, maka variabel bobot diisi dengan nilai 0.

Contoh penggunaan perintah switch.


Baca problem :
Menentukan jenis-jenis operator aritmatika (+, -, /, *).
Analisis :
Input : Operator.
Output : Pesan jenis operator.
Batasan : Operator yang dipakai + - / *

46
Modul Ajar Algoritma dan Pemrograman Modul 6 – Struktur Kontrol Kondisi

Algoritma :

Start

Baca
operator

Cetak pesan
operator = ‘+’ ? T
“Penjumlahan”

Cetak pesan
operator = ‘-’ ? T
“Pengurangan”

Cetak pesan
operator = ‘/’ ? T
“Pembagian”

Cetak pesan
operator = ‘*’ ? T
“Perkalian”

Stop

Gambar 6. 4. Flowchart - Menentukan Jenis Operator

47
Modul Ajar Algoritma dan Pemrograman Modul 6 – Struktur Kontrol Kondisi

Implementasi :
Program 6. 5. Menentukan Jenis Operator - switch
#include <stdio.h>
void main()
{
char operator;
scanf(“%c”,&operator);
switch (operator)
{
case ‘+’ : printf(“Penjumlahan”);
break;
case ‘-’ : printf(“Pengurangan”);
break;
case ‘/’ : printf(“Pembagian”);
break;
case ‘*’ : printf(“Perkalian”);
break;
}
}

RINGKASAN
Terdapat 3 jenis pemilihan alternatif yaitu 1) satu (single) alternatif 2 )dua (double)
alternatif dan 3) multiple alternatif. Pada C pemilihan kondisi ini menggunakan
perintah if….else serta switch.

LATIHAN/TUGAS
1. Buatlah sebuah program untuk menentukan jenis suatu segitiga yang sisi-
sisinya di inputkan, apakah segitiga itu sama kaki, sama sisi, atau segitiga
sembarang.
2. Buatlah program untuk mengkonversi nilai rata-rata menjadi huruf. Input
berupa 3 nilai: nilai tes, nilai uts, nilai uas. Output berupa rata-rata ,huruf,
serta predikat.
Nilai Huruf Predikat
86 – 100 A Istimewa
76 – 85 B+ Baik sekali
69 – 75 B Baik
61 – 68 C+ Cukup Baik
56 – 60 C Cukup
41 – 55 D Kurang
0 – 40 E Buruk
3. Buatlah menu untuk melakukan perhitungan 2 bilangan yang diinputkan
oleh user
Menu:
1. Penjumlahan
2. Pengurangan

48
Modul Ajar Algoritma dan Pemrograman Modul 6 – Struktur Kontrol Kondisi

3. Perkalian
4. Pembagian
Program juga akan merandom sebuah bilangan (bilangan X) dimana
mengikuti operasi yang dipilih
Contoh:
Input angka pertama dan kedua (bil1 bil2)=
10 5

Menu:
1. Penjumlahan
2. Pengurangan
3. Perkalian
4. Pembagian
Input operasi= _ //angkanya

Output:
Bilangan random = 5
Bilangan 1 = 10
Bilangan 2 = 5
Hasil=
5+10+5=20

4. Buatlah sebuah program untuk menentukan apakah angka yang diinputkan


adalah ribuan, ratusan, puluhan, atau satuan.
Contoh 1:
Input:
1234

Output:
Bilangan ribuan
1234 = 1000+200+30+4

Contoh 2:
Input:
12345
Output:
Bilangan melebihi range

5. Sebuah toko souvenir memberikan paket penawaran sebagai berikut kepada


para customernya :

49
Modul Ajar Algoritma dan Pemrograman Modul 6 – Struktur Kontrol Kondisi

Jenis Pelanggan Diskon total


Member 10%
Non-member -
Untuk setiap pembelian produk tertentu, mereka memiliki potongan khusus,
yaitu:
No. Nama Produk Harga Diskon
1 Boneka Shoun 35000 5%
The Sheep
2 Boneka Lilo 45000 10%
and Stitch
3 Pajangan 100000 10%
Rumah dari
keramik

Input:
Masukkan status [m/n]: m
Masukkan nomor produk [1/2/3]: 1
Masukkan jumlah: 10

Output:
Status: Member
Nama Produk : Boneka Shoun The Sheep
Harga: 35000
Jumlah: 10 buah
Diskon: 5%
Sub Total: 350000
Total: 332500,00

6. Buatlah sebuah program untuk mengkonversi bilangan bulat menjadi


bilangan romawinya! (bilangan maksimal adalah 100)
Input
Masukkan Angka yang ingin di ubah: <input, misal 10>
Output:
Bilangan romawi dari angka 10 adalah X

7. Buatlah sebuah program untuk membantu kasir swalayan untuk


Memberikan uang kembalian pada pembeli. Di dalam mesin cashier terdapat
uang 50.000, 20.000, 10.000, 5.000, 2000, 1.000, 500, 200,100. (lembaran yang
tidak diperlukan tidak ditampilkan).
Input : Total Belanja = 63.500
Uang yang dibayarkan = 70.000

50
Modul Ajar Algoritma dan Pemrograman Modul 6 – Struktur Kontrol Kondisi

Output : 1 lembar 5.000


1 lembar 1.000
1 lembar 500

8. Buatlah sebuah program untuk membuat angka menjadi tulisan ! (0 – 1000)


Contoh :
Input : 912
15
98
Output : sembilan ratus dua belas
lima belas
sembilan puluh delapan

9. Buatlah sebuah program untuk menghitung selisih waktu yang meliputi


tahun, bulan, hari, jam,menit, detik.
Contoh:
Waktu pertama:
Tahun = 2010
Bulan = 2
Tanggal = 15
Pukul = 14.45.20
Waktu kedua:
Tahun = 2013
Bulan = 5
Tanggal = 8
Pukul = 10.12.05
NB: Dalam hal ini perihal tahun kabisat diabaikan (bulan febuari selalu
terhitung 28 hari)

10. Buatlah program untuk mengkonversi sebuah notasi angka desimal menjadi
kata (Contoh : 1 menjadi “satu”, 32122 menjadi “tiga puluh dua ribu seratus
dua puluh dua”, angka maksimal adalah 1000000).

51
Modul Ajar Algoritma dan Pemrograman Modul 8 – Array 1 Dimensi

MODUL 7 – STRUKTUR KONTROL PERULANGAN

TUJUAN
Setelah selesai mempelajari modul ini Anda mampu melakukan hal-hal berikut:
1. Mengerti dan memahami jenis struktur kontrol perulangan/iteratif
2. Mampu menyelesaikan persoalan program komputer yang memiliki struktur
kontrol perulangan

PRASYARAT
1. Mahasiswa telah mengerti prinsip struktur kontrol sekuensial dan kondisi
2. Telah menyelesaikan semua tugas/latihan pada modul 6

DESKRIPSI
Pada modul ini akan dibahas mengenai struktur kontrol yang ketiga yaitu
perulangan. Pada struktur kontrol ini ada bagian-bagian pada program yang
diulang (dikerjakan lebih dari satu kali).

RELEVANSI
Dengan mempelajari struktur kontrol perulangan, maka dapat dibuat bagian
program yang memerlukan eksekusi berulang kali tanpa harus menuliskan source
code program tersebut secara berulang.

URAIAN
Berikut ini adalah contoh sebuah persoalan:
Hitunglah total nilai dari deret berikut ini:
1+3+5+7+9+……sebanyak n …..
Dari persoalan di atas hal-hal yang perlu diperhatikan adalah:
1. Apa yang menjadi output/permintaan dari persoalan?
2. Untuk menghasilkan output tersebut butuh input apa?
3. Apa pola dari deret tersebut?
4. Apa proses yang dilakukan? Butuh syntax apa?
Untuk menjawab pertanyaan 1, yang menjadi permintaan adalah menghitung total
nilai dari deret.
Untuk menjawab pertanyaan no 2, input yang dibutuhkan adalah n (dimana n
adalah jumlah elemen pada deret)
Untuk menjawab pertanyaan no 3, pola dari deret tersebut adalah bilangan ganjil
atau (2*i -1). Dimana i menunjukkan urutan/ posisi elemen.
Untuk menjawab pertanyaan no 4, tampak pada deret di atas terjadi proses
penjumlahan bilangan ganjil dari 1 dan sebanyak n bilangan. Proses penjumlahan
bilangan ganjil tersebut dilakukan secara berulang-ulang, sehingga membutuhkan
proses perulangan (looping). Proses perulangan pada C dapat menggunakan 3 jenis
syntax yaitu : 1)while, 2)do…while dan 3)for
Berikut ini adalah jawaban dari persoalan di atas

52
Modul Ajar Algoritma dan Pemrograman Modul 8 – Array 1 Dimensi

Program 7. 1. Menghitung Deret Bilangan Ganjil


#include<stdio.h>
void main()
{
int n, total=0, i=1;
printf(“Masukkan jumlah deret : “);
scanf(“%d”,&n);
while (i<=n)
{
total = total + (2*i)-1;
i=i+1;
}
printf (“Total nilai dari deret adalah : %d”, total);
}

Pada program di atas terdapat sebuah variabel i sebagai pengontrol jalannya proses
perulangan. Variabel i mula-mula diinisialisasi = 1, kemudian sebelum masuk loop,
variabel i diperiksa apakah masih lebih kecil atau sama dengan n. Jika hal ini
terpenuhi maka loop bisa dijalankan. Di dalam loop, variabel i selalu di-update
nilainya. Di sini variabel i dikenal sebagai loop control variable.
Jumlah total penjumlahan nilai deret disimpan di variabel total. Mula-mula total
diinisialisasi = 0. Setelah loop selesai dijalankan, barulah nilai total ditampilkan.

Beberapa istilah yang nantinya dipergunakan antara lain:


Loop : sekumpulan perintah yang dilakukan secara berulang
Loop control variable : Variabel yang nilainya dipakai untuk mengontrol perulangan.

Ada dua macam loop control variable:


1. Counter
Digunakan jika jumlah perulangan menjadi syarat perulangan
Contoh : Mencari suku ke-n dari deret : 1 + 3 + 5 + …
2. Event
Jika kejadian tertentu menjadi syarat dihentikannya perulangan.
Contoh : Menampilkan suku-suku deret 1 + 3 + 5 + … sampai jumlah deret
yang ditampilkan lebih besar dari 15.

Syarat loop control variable :


 Diinisialisasi.
Dilakukan di luar loop, dalam arti sebelum masuk loop.
 Selalu di test.
Setiap kali loop dijalankan, nilai loop control variable dicek apakah memenuhi
syarat perulangan. Jika ya, maka diulang, jika tidak berhenti.
 Di update.
Nilai dari loop control variable harus di update agar proses perulangan dapat
berhenti. Letaknya di dalam loop.

Test untuk kondisi terbagi menjadi 2 berdasarkan letak kondisi tersebut, yaitu:
1. Pre-test

53
Modul Ajar Algoritma dan Pemrograman Modul 8 – Array 1 Dimensi

Kondisi berada di awal loop (sebelum semua perintah yang ada dalam loop
dijalankan).
Loop minimal dijalankan Nol kali.
Perintah C :
For
While
2. Post test
Kondisi berada di akhir loop (setelah semua perintah yang ada dalam loop
dijalankan).
Loop minimal dijalankan satu kali.
Perintah C : Do …. while …

Perintah While
Format : While (<kondisi>) {<statements> ;}
Fungsi : Mengulang <statements> selama kondisi benar.
Perhatian : Loop harus mengandung perintah yang mempengaruhi kondisi.
Contoh :
Baca problem :
Menampilkan angka 1 sampai 10 ke layar monitor.
Analisis :
Input :-
Output : Angka 1 sampai 10.
Informasi tambahan : -
Implementasi :
Program 7. 2. Menampilkan Angka 1-10 di Layar Dengan Perintah while
#include <stdio.h>
void main()
{
int counter = 1;
while (counter <=10)
{
printf(“%d”,counter);
counter ++;
}
}

Perintah do…while
Format :
do
{<statements>;}
while (<kondisi>) ;
Fungsi : Mengulang <statements> selama kondisi benar.
Perhatian : Loop harus mengandung perintah yang mempengaruhi kondisi.
Contoh :
Baca problem :
Menampilkan angka 1 sampai 10 ke layar monitor.
Analisis :
Input :-

54
Modul Ajar Algoritma dan Pemrograman Modul 8 – Array 1 Dimensi

Output : Angka 1 sampai 10.


Informasi tambahan : -
Algoritma :
Implementasi :
Program 7. 3. Menampilkan Angka 1-10 di Layar Dengan Perintah do…while
#include <stdio.h>
void main()
{
int counter = 1;
do
{
printf(“%d”,counter);
counter ++;
}
while (counter <=10) ;
}

Perintah For
Format :
for (<variabel>:=<nilai_awal>; <syarat_pengulangan>;
perubah_nilai)
{ <statements> ; }
Fungsi : Menjalankan <statements> selama nilai dari variabel masih memenuhi
syarat_pengulangan.
Ketentuan :
Variabel, nilai_awal harus bertipe data sama (integer, char).
Argumen dari perintah for boleh tidak lengkap (misal : inisialisasi tidak ada /
inisialisasi dan perubah_nilai tidak ada / dll). Tetapi bila ketiganya tidak ada,
bisa menyebabkan loop abadi.
Argumen pertama dan ketiga dari perintah for boleh lebih dari 1.
Contoh : for (int i=0, jum = 0; jum < 10; jum += i, i++)
printf(“%d”,jum);
Output :0 2 4 6 8

Contoh 1:
Baca problem :
Menampilkan angka 1 sampai 10 ke layar monitor.
Analisis :
Input :-
Output : Angka 1 sampai 10.
Informasi tambahan : -
Implementasi :
Program 7. 4. Menampilkan Angka 1-10 di Layar Dengan Perintah for
#include <stdio.h>
void main()
{
int bilangan ;
for (bilangan = 1; bilangan <=10; bilangan++)
printf(“%d”,bilangan);
}

55
Modul Ajar Algoritma dan Pemrograman Modul 8 – Array 1 Dimensi

Penjelasan : Bilangan++ pada contoh di atas bila diganti dengan ++bilangan,


hasilnya akan sama.
Contoh 2:
Baca problem :
Mencari rata-rata dari sejumlah bilangan positif. Proses input dihentikan bila
yang diinput adalah nol.
Analisis :
Input : Bilangan-bilangan
Output : Rata-rata sejumlah bilangan positif.
Informasi tambahan : Proses input dihentikan bila yang diinput adalah nol.
Implementasi :
Program 7. 5. Menghitung Rata-Rata Sejumlah Bilangan Positif
#include <stdio.h>
void main()
{
int counter ;
float bilangan = 1, rata, total = 0;
for (counter = 1; bilangan != 0; counter ++)
{
scanf(“%f”,&bilangan);
total += bilangan;
}
rata = total / (counter – 2);
printf(“%f”,rata);
}

Contoh 3:
Baca problem :
Mencari total nilai dari sejumlah bilangan positif. Proses input dihentikan bila
yang diinput adalah nol.
Analisis :
Input : Bilangan-bilangan
Output : Total nilai sejumlah bilangan positif.
Informasi tambahan : Proses input dihentikan bila yang diinput adalah nol.
Implementasi :
Program 7. 6. Menghtung Total Nilai Sejumlah Bilangan Positif
#include <stdio.h>
void main()
{
int bilangan =1, total = 0;
for (; bilangan != 0 ;)
{
scanf(“%f”,&bilangan);
total += bilangan;
}
printf(“%d”,total);
}

Break
Fungsi : Untuk menghentikan loop dan melanjutkan ke perintah berikutnya.

56
Modul Ajar Algoritma dan Pemrograman Modul 8 – Array 1 Dimensi

Continue
Fungsi : Untuk menggambarkan proses yang sedang dilaksanakan ke awal loop,
tanpa menjalankan sisa perintah dalam loop tersebut. Tetapi perintah ini tidak
dianjurkan.

Contoh :
Program 7. 7. Contoh penggunaan perintah continue
#include <stdio.h>
void main()
{
int i;
for (i = 1; i <= 10 ;i++)
{
if (i == 6)
continue;
printf(“%d ”,i);
}
}
Output : 1 2 3 4 5 7 8 9 10

Exit
Fungsi : Untuk keluar dari program.
Keterangan : Menurut kebiasaan, nilai 0 diberikan pada argumen exit() untuk
menunjukkan penghentian program yang normal.
Contoh : Keluar program jika tombol ESC ditekan.
Program 7. 8. Contoh penggunaan perintah exit
#include <stdio.h>
void main()
{
for (; ;)
if (getch() == 27)
exit(0);
}

RINGKASAN
Struktur kontrol perulangan digunakan untuk mengulang sekumpulan perintah
sesuai dengan kondisi (diwakili oleh loop control variable) yang diberikan.
Ada tiga jenis perulangan pada C, yaitu while, do…while dan for.
Pada sebuah perulangan (loop) dikenal istilah loop control variable yaitu variabel
untuk mengontrol jalannya perulangan. Ada 3 syarat yang harus dipenuhi untuk
sebuah loop control variable, yaitu 1) diinisialisasi, 2) dicek nilainya dan 3) di-update
nilainya.

LATIHAN/TUGAS
1. Buatlah program untuk menghitung deret sebagai berikut: (diinputkan n)
a. 1 + 2 - 3 + 4 - 5 + 6 = ....
Contoh : Input n = 5
Output : 1 + 2 - 3 + 4 - 5 = -1

57
Modul Ajar Algoritma dan Pemrograman Modul 8 – Array 1 Dimensi

b. 1/1 + 1/2 + 1/3 + 1/4 + 1/5 = ...


Contoh : Input n = 3
Output : 1/1 + 1/2 + 1/3 = 11/6
c. (1*2) + (2*3) + (3*4) + (4*5) = ....
Contoh : Input n = 4
Output : (1*2) + (2*3) + (3*4) + (4*5) = 40
d. (1*2) + (2*3) - (3*4) + (4*5) = ....
Contoh : Input n = 4
Output : (1*2) + (2*3) - (3*4) + (4*5) = 16
2. Buatlah program untuk :
 Menentukan apakah suatu bilangan yang diinputkan prima atau tidak.
 Menampilkan N bilangan prima pertama.
 Menampilkan bilangan prima yang berada di antara X dan Y.
3. Deret bilangan Fibonacci adalah deret bilangan yang merupakan hasil
penjumlahan dari 2 bilangan sebelumnya. Deret bilangan Tribonacci merupakan
hasil penjumlahan dari 3 bilangan sebelumnya dan Deret Tetranacci adalah hasil
penjumlahan dari 4 bilangan sebelumnya.
Deret Fibonacci : 1 1 2 3 5 8 13 … dst
Deret Tribonacci : 1 1 2 4 7 13 24 … dst
Deret Tetranacci : 1 1 2 4 8 15 29 … dst
Buatlah program untuk menampilkan N bilangan deret Fibonacci, Tribonacci,
atau Tetranacci pertama!
3. Buatlah program untuk menghitung FPB dan KPK dari 3 buah bilangan!
4. Buatlah program untuk menghitung faktor dari sebuah bilangan!
Contoh : Input : 10 Output : 1x2x5
5. Buatlah program untuk menampilkan kelipatan bilangan x sebanyak n kali !
Contoh :
Input : x=3
n=5
Output : 3 6 9 12 15
6. Buatlah program untuk menginputkan bilangan antara 1 – 9999 lalu tentukan
angka ribuan, ratusan, puluhan, dan satuannya.
Contoh :
Input : 1034
Output :
Ribuan : 1
Ratusan : 0
Puluhan : 3
Satuan : 4

58
Modul Ajar Algoritma dan Pemrograman Modul 8 – Array 1 Dimensi

7. Buatlah program untuk membuat animasi karakter yang bergerak ke kiri dan ke
kanan. Karakter mula-mula adalah A dan bergerak ke kanan, jika karakter
tersebut mengenai salah satu dinding console maka ia akan berubah arah, setiap
kali berubah arah karakter maju 1. Contoh A berubah menjadi B kemudian B
berubah menjadi C. Jika karakter mencapai huruf Z maka akan kembali ke A.
8. Buatlah program untuk menentukan suatu bilangan yang diinputkan tersebut
merupakan bilangan palindrom atau bukan !
Contoh :
Input : 121
1355431
7845487
Output : Palindrom
Bukan palindrom
Palindrom
9. Buatlah program bintang pantul, dengan fitur sebagai berikut :
 Bintang merupakan angka dengan nilai awal = 5 yang memantul di dalam
layar console. Batas nilai maksimum bintang = 9 dan minimal nilai bintang = 0.
 Setiap kali bintang megenai batas atas atau bawah console, nilai angka pada
bintang akan bertambah sebanyak 1. (Misal nilai awal bintang = 0, mengenai
batas atas console maka nilai bintang = 1)
 Setiap kali bintang megenai batas kiri atau kanan console, nilai angka pada
bintang akan berkurang sebanyak 1. (Misal nilai awal bintang = 0, mengenai
batas atas console maka nilai bintang = 1)
 Program akan berhenti apabila ditekan tombol ESC (ASCII 27).
10. Buatlah program untuk menampilkan pola-pola berikut :

Pola 1

Input : 3 Input : 5
Output : Output :
* *
** **
*** ***
****
*****
Pola 2

Input : 3 Input : 5

Output : Output :

59
Modul Ajar Algoritma dan Pemrograman Modul 8 – Array 1 Dimensi

OOO OOOOO
OOO OOOOO
OOO OOOOO

OOOOO

OOOOO

Pola 3

Input : 3 Input : 5

Output : Output :

__1 ____1
_21 ___21
321 __321

_4321

54321

Buatlah Menu untuk menampilkan pola mana (1, 2, atau 3) yang akan

ditampilkan!

11. Buatlah program untuk menampilkan pola berikut:

Input : 4 Input : 5
Output : Output :
1 1 1 1
12 21 12 21
123 321 123 321
12344321 1234 4321
123 321 123454321
12 21 123 321
1 1 12 21
1 1
12. Buatlah program untuk menampilkan pola berikut:

60
Modul Ajar Algoritma dan Pemrograman Modul 8 – Array 1 Dimensi

MODUL 8 – ARRAY 1 DIMENSI

TUJUAN
Setelah selesai mempelajari modul ini Anda mampu melakukan hal-hal:
1. Mengerti dan memahami jenis tipe data array 1 dimensi
2. Mampu menyelesaikan persoalan program komputer yang membutuhkan
array 1 dimensi

PRASYARAT
1. Mahasiswa telah mengerti prinsip struktur kontrol sekuensial, kondisi dan
perulangan
2. Mahasiswa telah mengerti macam-macam tipe data ordinal
3. Telah menyelesaikan semua tugas/latihan pada modul 7

DESKRIPSI
Pada modul ini akan dibahas mengenai suatu varibel yang dapat menyimpan lebih
dari satu data dengan tipe data yang sama. Variabel ini mempunyai tipe data array.
Array mempunyai beberapa dimensi. Pada modul ini akan dibahas untuk jenis array
1 dimensi.

RELEVANSI
Setelah mengetahui beberapa tipe data seperti integer, char, float, berikut ini akan
dibahas sebuah tipe data yakni array dimana tipe data ini dapat menyimpan banyak
data dengan tipe yang sama. Tipe array yang akan dibahas pada modul ini adalah 1
dimensi, sedang pada modul berikutnya akan dibahas array 2 dimensi.

URAIAN
Berikut ini adalah contoh sebuah persoalan:
Anda diminta untuk menyimpan data nilai tes1 untuk keseluruhan anak di
kelas algoritma dan pemrograman (AP). Kemudian carilah nilai rata-rata dari
tes1 tersebut.
Dari persoalan di atas hal-hal yang perlu diperhatikan adalah:
1. Apa yang menjadi output/permintaan dari persoalan?
2. Untuk menghasilkan output tersebut butuh input apa?
3. Ada berapa anak peserta kelas AP tersebut?
4. Variabel apa yang diperlukan untuk menyimpan data-data tersebut?
5. Bagaimana cara menghitung nilai rata-rata?
Untuk menjawab pertanyaan 1, output dari program adalah nilai rata-rata.
Untuk menjawab pertanyaan 2, input yang diperlukan adalah jumlah anak peserta
kuliah AP.

61
Modul Ajar Algoritma dan Pemrograman Modul 8 – Array 1 Dimensi

Untuk menjawab pertanyaan 3, jumlah peserta bervariasi tergantung inputan dari


user/pemakai.
Untuk menjawab pertanyaan 4, karena jumlah peserta tidak diketahui pada saat
membuat program, tetapi baru diketahui saat program dijalankan (karena sesuai
dengan inputan user), maka kita tidak dapat mengetahui berapa banyak variabel
yang dibutuhkan untuk menyimpan data nilai-nilai tersebut. Semua nilai pastilah
mempunyai tipe yang sama. Misalkan saja semua nilai dalam bentuk bilangan bulat,
maka kita dapat menggunakan tipe data integer. Tapi, berapa banyak yang harus
dideklarasikan? Jika memang jumlah maksimum dalam 1 kelas adalah 50 siswa,
apakah kita harus membuat 50 variabel? Hal ini tentu saja sangat merepotkan.
Akan tetapi hal ini tidak perlu. Kita bisa menggunakan tipe data ARRAY, dimana
sebuah variabel dengan tipe data array dapat menyimpan banyak data dengan tipe
yang sama.
Untuk menjawab pertanyaan 5, rata-rata bisa didapatkan dari nilai jumlah
keseluruhan kelas dibagi dengan jumlah siswa.
Analisis :
Input : banyak mahasiswa dalam kelas, nilai tes
Output : Rata-rata nilai tes.
n

Informasi tambahan : rata-rata = (  nilai tesi ) / n


I=1

62
Modul Ajar Algoritma dan Pemrograman Modul 8 – Array 1 Dimensi

Start

Baca n

Counter = 1

false
Counter = 1
Counter <=n
Jumlah = 0

true
false
Baca A[Counter]
Counter <=n

true

Counter = Counter =
Counter + 1 Counter + 1

jumlah = jumlah +
A[counter]

Cetak
Jumlah / n

Stop

Gambar 8. 1. Flowchart menghitung rata-rata nilai dengan array 1 D

Berikut ini adalah jawaban dari persoalan di atas.


Program 8. 1. Menghitung rata-rata nilai dengan array 1 D
#include<stdio.h>
const int MAX=50;
void main()
{
int n, jumlah=0, A[MAX];
prinf(“Masukkan jumlah mahasiswa : “);scanf(“%d”,&n);
for(int counter=0; counter<=n; counter++)
{
printf (“Masukkan nilai mahasiswa ke-%d”,counter+1);
scanf(“%d”,&A[counter]);
}

63
Modul Ajar Algoritma dan Pemrograman Modul 8 – Array 1 Dimensi

for(counter=0; counter<=n; counter++)


jumlah=jumlah+A[counter];
printf Rata-rata nilai adalah = %f”, jumlah/n);
}

Pada program di atas tampak bahwa array untuk menyimpan nilai dimulai dari
array ke-0, hal ini dikarenakan indeks array selalu dimulai dari nol (0).

Array berfungsi untuk menyimpan sejumlah data yang bertipe sama dalam satu
variabel sehingga dapat menghemat jumlah variabel yang digunakan.

Deklarasi Array 1 Dimensi


Format : tipe Variabel_Array[<Panjang>] ;
Contoh : float nilai[3];
char nama[15];
Pada C, nilai dari array akan disimpan dalam memori pada lokasi yang berurutan.
Elemen pertama mempunyai indeks 0.
Ilustrasi :

Indeks  0 1 2 3 4 5

Satu elemen
VariabelArray

Keterangan :
Tiap-tiap elemen array dapat diakses dengan menggunakan indeks.
Format : VariabelArray [ < indeks > ]
Contoh : VariabelArray[1]
Pada ilustrasi adalah yang diblok warna abu-abu.
Tipe data yang diperbolehkan untuk indeks adalah tipe data integer dan character.
Manipulasi terhadap isi array dilakukan per elemen.
Contoh : float nilai[3];
0 1 2 Indeks

nilai

Inisialisasi
1. Automatic array
Format : tipe Variabel_Array[Panjang] = {Nilai_1, Nilai_2, ..., Nilai_Panjang};
Contoh : float nilai[3] = {0.0, 0.0, 0.0};
Keterangan : Tidak semua kompiler C dapat menginisialisasi automatic array.
hanya kompiler yang mengikuti standart baru ANSI C saja yang dapat
melakukannya, termasuk di dalamnya adalah turbo C.
Pada automatic array yang tidak diinisialisasi, elemen-elemen array tersebut akan
memiliki nilai yang tidak beraturan.

64
Modul Ajar Algoritma dan Pemrograman Modul 8 – Array 1 Dimensi

2. Static array
Static array adalah array yang dideklarasikan di dalam fungsi dan bersifat lokal.
Format : static tipe Variabel_Array[Panjang] = {Nilai_1, ..., Nilai_Panjang};
Contoh : static float nilai[3] = {0.0, 0.0, 0.0};
Keterangan : Nilai yang dimiliki static array masih tetap akan tersimpan di dalam
memori meskipun telah keluar dari function sehingga masih bisa digunakan lagi saat
masuk function itu kembali.
Pada static array yang tidak diinisialisasi, elemen-elemen array tersebut akan diberi
nilai 0 secara otomatis.

RINGKASAN
Array berfungsi untuk menyimpan sejumlah data yang bertipe sama dalam satu
variabel sehingga dapat menghemat jumlah variabel yang digunakan. Manipulasi
array harus melalui indeksnya. Indeks pada array dimulai dari nol(0).

LATIHAN/TUGAS
1. Buatlah program untuk menginputkan n bilangan dan dimasukkan ke dalam
sebuah array kemudian cari standar deviasi, modus, mean, median, dan varians
dari n data tersebut.
2. Buatlah konversi bilangan decimal ke biner dan sebaliknya (hint: gunakan
array!).
3. Buatlah program untuk mensorting huruf secara ascending dan descending
dengan inputan N buah huruf dan huruf yang akan disort.
4. Ada sebuah fashion show , kamu di minta untuk memilih pasangan terbaik
yang akan di tampilkan , semua cowok dan cewek infor yang akan fashion show
memiliki tingkat hotness yang bisa di lambangkan dengan sebuah int N dimana
1 <= N <= 10 , 10 tertinggi atau paling hot. Buatlah team pasangan terbaik dari
input hotness yang akan di masukan
Input:
T untuk menunjukan testcase
M banyaknya pasangan , kemudian di ikuti M angka untuk cowok hot ,
dengan M angka untuk cewek hot
Output:
Tampilkan hasil total perkalian dari pasangan , contoh pasangan 2 dan 1
dengan pasangan 5 dan 3 maka total hotnya = 2*1 + 5 *3 = 17(2 & 5 adalah
cowok , 1 dan 3 adalah cewek)

65
Modul Ajar Algoritma dan Pemrograman Modul 8 – Array 1 Dimensi

5. Tentukan median dari suatu array


Input : n banyak angka dalam array , tidak lebih dari 100 , di ikuti n angka isi
array
Output : median
Input:
3
729
6
2728
Output:
7
4.5

6. Buatlah game snake dimana terdapat makanan secara acak tersebar diseluruh
area dan setiap kali makan 1 makanan maka ekor akan bertambah panjang (jika
makanan berupa ‘+’) dan bertambah pendek (jika makanan berupa ‘-‘). Panjang
minimal ekor adalah 2 dan maksimal hingga area penuh.

7. Modifikasilah game snake pada no 3, menjadi


Awal mula permainan hanya terdapat kepala.
Makananberupa huruf A, B, C, D, E yang bermunculan secara random pada
peta.
Setiap kali makan maka ekor snake akan bertambah sesuai dengan huruf yang
dimakan.
Jika dalam ekor terdapat huruf yang sama berjumlah 3 maka semua bagian sub
ekor yang sama akanhilang.
Contoh:
Ket: @ adalah kepala
BCABDEA@ makan A maka snake menjadi BCBDE@
Kemudian snake BCBDE@ makanB maka snake menjadi CDE@

8. Buatlah sebuah program untuk mengacak isi suatu Array 1D .


Input:

66
Modul Ajar Algoritma dan Pemrograman Modul 8 – Array 1 Dimensi

Input berupa angka n yang mengindikasikan banyak angka yang ingin di


inputkan ke array , kemudian di ikuti n angka isi array.
Output :
Output berupa array hasil acakan dimana banyak angka tidak berubah ketika
terjadi pengacakan
Contoh :
Input:
5
12345
3
717
Output:
52413
177

67
Modul Ajar Algoritma dan Pemrograman Modul 9 – Array 2 Dimensi

MODUL 9 – ARRAY 2 DIMENSI

TUJUAN
Setelah selesai mempelajari modul ini Anda mampu melakukan hal-hal:
1. Mengerti dan memahami jenis tipe data array 2 dimensi
2. Mampu menyelesaikan persoalan program komputer yang membutuhkan
array 2 dimensi

PRASYARAT
1. Mahasiswa telah mengerti prinsip dan penggunaan tipe data array 1 dimensi
2. Telah menyelesaikan semua tugas/latihan pada modul 8

DESKRIPSI
Pada modul ini akan dibahas mengenai struktur array yang lain yaitu array 2
dimensi. Pada array ini data secara logika tersusun atas baris dan kolom.

RELEVANSI
Setelah mengetahui tipe array 1 dimensi berikut ini dibahas array 2 dimensi guna
mengakomodasi kebutuhan data yang mempunyai format baris dan kolom,
misalnya matriks.

URAIAN
Berikut ini adalah contoh sebuah persoalan:
Mencari jumlah bilangan dari tiap-tiap kolom yang ada pada matriks. Jika
diketahui maksimum jumlah baris dan kolom adalah 10.
Dari persoalan di atas hal-hal yang perlu diperhatikan adalah:
1. Apa yang menjadi output/permintaan dari persoalan?
2. Butuh variabel seperti apa untuk menyimpan data tersebut?
3. Untuk menghasilkan output tersebut memerlukan input apa?
4. Bagaimana cara mencari jumlah bilangan per-kolom?
Untuk menjawab pertanyaan 1, output dari program adalah menampilkan jumlah
bilangan dari tiap-tiap kolom yang ada pada sebuah matriks.
Untuk menjawab pertanyaan 2, variabel untuk menyimpan data-data tersebut
adalah array 2 dimensi.
Untuk menjawab pertanyaan 3, input yang dibutuhkan adalah banyaknya baris dan
kolom serta data-data matriks.
Untuk menjawab pertanyaan 4, untuk setiap kolom yang sama dicari total-nya.
Berikut ini adalah jawaban dari persoalan di atas.
Analisis :
Input : jumlah baris, jumlah kolom, isi array 2 dimensi
Output : Jumlah bilangan pada tiap-tiap kolom.

68
Modul Ajar Algoritma dan Pemrograman Modul 9 – Array 2 Dimensi

Informasi tambahan : -
Algoritma :
Start

Baca Baris, kolom

CounterB = 0

false CounterB
<Baris

true

CounterK = 0

CounterK false CounterB =


<Kolom CounterB + 1

true

Baca
A[CounterB, CounterK]

CounterK =
CounterK + 1

CounterK = 0

69
Modul Ajar Algoritma dan Pemrograman Modul 9 – Array 2 Dimensi

false CounterK <


Kolom

true

CounterB =
0 CounterK =
Jumlah = 0 CounterK + 1

CounterB < false Cetak


Baris Jumlah

true

Jumlah = jumlah +
A[CounterB, CounterK]

CounterB =
CounterB + 1

Stop

Gambar 9. 1. Flowchart - Mencari Jumlah Bilangan Per Kolom

Implementasi :
Program 9. 1. Mencari Jumlah Bilangan Per Kolom
#include<stdio.h>
void main()
{
int a[10][10];
int counterB, counterK, Kolom, Baris, jumlah;
printf(“Jumlah baris = “);
scanf(“%d”, &Baris);
printf(“Jumlah kolom = “);
scanf(“%d”, &Kolom);
for(counterB=0; counterB<Baris; counterB++)
for(counterK=0; counterK<Kolom; counterK++)

70
Modul Ajar Algoritma dan Pemrograman Modul 9 – Array 2 Dimensi

scanf(“%d”,&a[counterB][counterK] ) ;
for(counterK=0; counterK<Kolom; counterK++)
{
jumlah = 0;
for(counterB=0; counterB<Baris; counterB++)
jumlah += a[counterB][counterK];
printf(“Jumlah kolom ke-%d adalah = %d“, counterK,
jumlah);
}
}

Deklarasi :
Format : tipe Variabel_Array[Jumlah_Baris][Jumlah_kolom] ;
Contoh : int nilai[3][2];
Ilustrasi :
Indeks_Kolom 0 1 2 3 4 5

Keterangan :
 Untuk mengakses tiap-tiap elemen array digunakan indeks.
Format : Variabel_Array[<Indeks_Baris>][<Indeks_Kolom>] ;
Contoh : VariabelArray[0][2]
Pada ilustrasi adalah yang diblok warna abu-abu.
 Metode pengaksesan array 2 dimensi :
1. Akses secara random
Urutan bebas tergantung dari data yang dimasukkan pada program.
2. Pengaksesan per baris
Semua elemen pada baris pertama di proses, kemudian semua elemen pada
baris kedua dan seterusnya.
3. Pengaksesan per kolom
Semua elemen pada kolom pertama di proses, kemudian semua elemen pada
kolom kedua dan seterusnya.
 Seperti pada array 1 dimensi, nilai dari array 2 dimensi juga akan disimpan
dalam lokasi memori yang berurutan.

71
Modul Ajar Algoritma dan Pemrograman Modul 9 – Array 2 Dimensi

Contoh : int nilai[3][2];

Indeks baris

0 1 indeks kolom
0 nilai[0, 0] nilai[0, 1]
nilai 1 nilai[1, 0] nilai[1, 1]
2 nilai[2, 0] nilai[2, 1]

penyimpanan di memori :
nilai[0, 0] Nilai[0, 1] nilai[1, 0] nilai[1, 1] nilai[2, 0] nilai[2, 1]
Inisialisasi
1. Automatic array
Format : tipe Variabel_Array[Jumlah_Baris][Jumlah_Kolom] = {{Nilai00,
Nilai01, ..., Nilai0Jumlah_Kolom}, { Nilai10, Nilai11, ...,
Nilai1Jumlah_Kolom }, ..., { NilaiJumlah_Baris0, NilaiJumlah_Baris1,
.., NilaiJumlah_BarisJumlah_Kolom}};
Contoh : int nilai[3][2] = {{0, 0}, {0, 0}, {0, 0}};
atau bisa ditulis
int nilai[3][2] = {0, 0, 0, 0, 0, 0};
2. Static array
Format : static tipe Variabel_Array[Jumlah_Baris][Jumlah_Kolom] = {{Nilai00,
Nilai01, ..., Nilai0Jumlah_Kolom}, { Nilai10, Nilai11, ...,
Nilai1Jumlah_Kolom }, ..., { NilaiJumlah_Baris0, NilaiJumlah_Baris1,
..., NilaiJumlah_BarisJumlah_Kolom}};
Contoh : static int nilai[3][2] = {{0, 0}, {0, 0}, {0, 0}};
atau bisa ditulis
static int nilai[3][2] = {0, 0, 0, 0, 0, 0};
INISIALISASI ARRAY TAK BERATURAN
Jika ukuran array 1 dimensi yang akan dideklarasikan tidak dapat diketahui
dengan pasti, maka pada saat deklarasi ukuran array 1 dimensi tidak perlu
disebutkan. Untuk array dimensi banyak, yang boleh tak beraturan hanyalah indeks
yang paling kiri.
Contoh : 1. int skala[] = {1, 2, 4, 6};
2. int nilai[][2] = {1, 2, 3, 4, 5, 6};
OPERATOR SIZEOF
Merupakan operator yang menghasilkan ukuran dari suatu variabel atau suatu tipe
pada saat kompilasi.
Format : sizeof(<Tipe_atau_Variabel>)
Contoh : sizeof(char) ---> 1 byte
sizeof(int) ---> 2 byte
sizeof(skala) ---> 8 byte

72
Modul Ajar Algoritma dan Pemrograman Modul 9 – Array 2 Dimensi

RINGKASAN
Array berfungsi untuk menyimpan sejumlah data yang bertipe sama dalam satu
variabel sehingga dapat menghemat jumlah variabel yang digunakan. Manipulasi
array harus melalui indeksnya. Indeks pada array dimulai dari nol(0).

LATIHAN/TUGAS
1. Buatlah sliding puzzle dengan luasan dan range angka bawah berupa inputan.
Contoh:
Luas area = 4
Range angka bawah = 51
51 52 53 54
65 61 63 56
60 64 55 62
59 57 58

Setelah range angka diinputkan maka program akan mengenerate secara


random angka-angka pada papan magic square. Untuk 1 kotak yang kosong
digunakan untuk menukar sesuai inputan player (wkeatas, skebawah,
akekiri, dkekanan).
Misalkan player menekan W maka
51 52 53 54
65 61 63 56
60 64 62
59 57 55 58
Player menang jika semua angka sudah terurut dari kiri ke kanan dan atas ke
bawah.
51 52 53 54
55 56 57 58
59 60 61 62
63 64 65

2. Buatlah program untuk menghitung (perkalian, penjumlahan, pengurangan)


dari 2 buah matriks serta buatlah transpose untuk masing-masing matriks.
Pertama kali, user diminta menginputkan ukuran matriks pertama dan kedua
berupa kolom dan baris. Kemudian, inputkan tiap-tiap elemen dari masing-
masing matriks tersebut. Setelah itu munculkan menu untuk operasi hitung
matriks (perkalian, penjumlahan, pengurangan, dan transpose). Jika matriks
tidak mungkin untuk dilakukan operasi aritmatika maka berikan peringatan
kepada user apa masalahnya, misal kolom matriks A tidak sama denganbaris
matriks B.
3. Buatlah segitiga pascal dengan inputan N
Contoh:

73
Modul Ajar Algoritma dan Pemrograman Modul 9 – Array 2 Dimensi

Input N: 4
1
11
121
1331
4. Buatlah program untuk mencetak soal Sudoku dengan ukuran 9x9. Sudoku
adalah permainan dimana ada angka dari 1-9, kemudian tiap baris tidak boleh
ada angka yang kembar begitu juga dengan tiap kolom.
5. Buatlah game sederhana yaitu tic-tac-toe atau O X, dimana user diminta
menginputkan ukuran papan permainan. Misal:

Board size: 5
X X
O O X
X X O
X O O
X O
Kondisi diatas menunjukkan X menang.
Cara menginputkan petak mana yang akan diisi dengan meminta inputan
berupa baris dan kolom.
6. Buatlah program untuk mencari jawaban dari word puzzle secara diagonal dan
vertical. Pertama, input mxn word puzzle, kemudian input x kata yang ingin
dicari.
Contoh :
Input : 5 5
LAZCF
EWXSG
PMTCH
AJJIG
LDAUN
2
Apel
Daun
Output :
3,0 ke atas
4,1 ke kanan

74
Modul Ajar Algoritma dan Pemrograman Modul 10 – String

MODUL 10 – STRING

TUJUAN
Setelah selesai mempelajari modul ini Anda mampu melakukan hal-hal berikut:
1. Mengerti dan memahami jenis tipe data string
2. Mampu menyelesaikan persoalan program komputer yang menggunakan
string.

PRASYARAT
1. Mahasiswa telah mengerti konsep array 1 D dan mampu menggunakan array
1 D dalam menyelesaikan persoalan pemrograman.
2. Telah menyelesaikan semua tugas/latihan pada modul 9

DESKRIPSI
Pada modul ini akan dibahas mengenai suatu jenis tipe data yang dapat menyimpan
kumpulan data karakter.

RELEVANSI
Setelah mengetahui tipe data array 1 dimensi untuk menyimpan banyak data dalam
satu variabel, berikut ini akan dibahas mengenai array 1 dimensi dimana data yang
disimpan adalah bertipe karakter.

URAIAN
Berikut ini adalah contoh sebuah persoalan:
Menginputkan sebuah kalimat kemudian menampilkan ke layar monitor
secara terbalik.
Dari persoalan di atas hal-hal yang perlu diperhatikan adalah:
1. Apa yang menjadi output/permintaan dari persoalan?
2. Butuh variabel seperti apa untuk menyimpan kalimat tersebut?
3. Untuk menghasilkan output tersebut memerlukan input apa? Bagaimana
perintah/format inputan?
4. Bagaimana cara menampilkan kalimat dari karakter paling akhir ke paling
awal?
Untuk menjawab pertanyaan 1, output dari program adalah menampilkan kalimat
dari karakter paling akhir ke paling awal.
Untuk menjawab pertanyaan 2, variabel untuk menyimpan kalimat (kumpulan
karakter) adalah string. Untuk memasukkan string menggunakan perintah gets.
Untuk menjawab pertanyaan 3, input yang dibutuhkan adalah sebuah kalimat
(string).

75
Modul Ajar Algoritma dan Pemrograman Modul 10 – String

Untuk menjawab pertanyaan 4, karakter dimunculkan dari karakter terakhir ke


karakter paling depan. Posisi karakter terakhir adalah sama dengan panjang kalimat
– 1 (strlen(kalimat) - 1). Sedang posisi karakter paling awal adalah nol (0).
Berikut ini adalah jawaban dari permasalahan di atas.
Analisis :
Input : kalimat
Output : kalimat yang terbalik.
Informasi tambahan : -
Algoritma :
Start

Baca
kalimat

Counter =
length(kalimat)

Counter >= 1 ? false

true

Cetak
kalimat[Counter]

Counter = Stop
Counter - 1

Gambar 10. 1. Flowchart – Menampilkan Kalimat Secara Terbalik

Implementasi :
Program 10. 1. Menampilkan Kalimat Secara Terbalik
#include<stdio.h>
#include<string.h>
void main()
{
int i;
char s [15];
printf(“String = “);
gets(s);
for(i = strlen(s); i >=0; i--)
printf(“%c”,s[i]);
}

76
Modul Ajar Algoritma dan Pemrograman Modul 10 – String

STRING adalah suatu tipe data yang digunakan untuk menangani data
teks/karakter.

Deklarasi string
char VariabelString [ <panjang> ] ;
Contoh : char Alamat [15] ;

Spesifikasi
Setiap data string harus diapit oleh tanda petik ganda.
Contoh : “Amanda”
Setiap data string selalu diakhiri dengan karakter NULL (‘\0’) yang mempunyai
kode ASCII 0.

Inisialisasi String
char nama[7] = {‘A’, ‘m’, ‘a’, ‘n’, ‘d’, ‘a’,’\0’};
char nama[7] = “Amanda” ;
Keterangan : Variabel string tidak bisa diberi nilai lewat assignment statement.

Penyajian String
Contoh : char Nama[7] = “Amanda”;

0 1 2 3 4 5 6
‘A’ ‘m’ ‘a’ ‘n’ ‘d’ ‘a’ ‘\0’

Tiap-tiap karakter yang membentuk string dapat dimanipulasi dengan indeks.


Format : VariabelString [ <posisi / indeks> ]
Contoh : char Nama = “Amanda” ;
Nama [0] = ‘A’
Nama [3] = ‘n’

Perintah Untuk Manipulasi String


1. scanf
Fungsi : Untuk menerima input data dari keyboard.
Format : scanf(“%s”,<Variabel_String>);
Unit : stdio.h
Keterangan : Data string yang diinput tidak boleh mengandung spasi.
Contoh : scanf(“%s”,nama);
2. gets
Fungsi : Untuk menerima input data string dari keyboard.
Format : gets(<Variabel_String>);
Unit : stdio.h
Keterangan : Data string yang diinput boleh mengandung spasi.
Contoh : gets(nama);
3. printf
Fungsi : Untuk menampilkan data ke layar monitor.
Format : printf(“%s”, <Variabel_String>); atau printf(“<string>”);

77
Modul Ajar Algoritma dan Pemrograman Modul 10 – String

Unit : stdio.h
Contoh : printf(“%s”,nama);
4. puts
Fungsi : Untuk mencetak string ke layar monitor.
Format : puts(<VariabelString_atau_KonstantaString>);
Unit : stdio.h
Keterangan : String yang dicetak secara otomatis selalu diakhiri dengan ‘\n’.
Contoh : puts(“Nama = “);
puts(“Amanda”);
Output : Nama =
Amanda
5. cputs
Fungsi : Untuk menampilkan string ke layar monitor tanpa mengakhirinya dg
‘\n’.
Format : cputs(<string>);
Unit : string.h
Contoh : cputs(“Nama = “);
cputs(“Amanda”):
Output : Nama = Amanda
6. strcpy
Fungsi : Untuk menyalin string ke variabel string yang lain.
Format : strcpy(<StringTujuan>, <StringAsal>);
Unit : string.h
Contoh : strcpy(Tujuan, “Amanda”);
7. strlen
Fungsi : Untuk menghitung banyaknya karakter yang menyusun string.
Format : strlen(<String>);
Unit : string.h
Keterangan : Karakter NULL tidak ikut dihitung.
Contoh : strlen(“Amanda”);
Hasil :6
8. strcat
Fungsi : Untuk menggabungkan 2 buah string menjadi satu.
Format : strcat(<StringTujuan>, <StringSumber>);
Unit : string.h
Keterangan : StringSumber digabungkan di bagian belakang StringTujuan
Contoh : char tujuan[9] = “Aman”;
strcat(Tujuan, “da”);
Output : Tujuan berisi “Amanda”
9. strcmp
Fungsi : Untuk membandingkan string yang satu dengan string yang lainnya.
Keterangan : Pembandingan dilakukan sesuai dengan urutan abjad (menurut
urutan ASCII).
Pembandingan dilakukan dari kiri ke kanan. Jika ketemu satu
karakter yang tidak sama, maka hasil langsung diberikan.
String yang jumlah karakternya lebih sedikit, dinyatakan sebagai
string yang lebih kecil.

78
Modul Ajar Algoritma dan Pemrograman Modul 10 – String

Format : strcmp(<String1>, <String2>);


Hasil pembandingan =
negatif, jika string1 < string2
Nol, jika string1 = string2
Positif, jika string1 > string2
Unit : string.h
Keterangan : Hasil pembandingan adalah selisih nilai ASCII dari karakter yang
menyebabkan string1 berbeda dengan string2 (string1-string2).
Contoh : x = strcmp(“amanda”, “Amanda”);
Hasil : x berisi 32.
Contoh : “AB” < “ABC”
“ AB“ < “ABC”
“abc” > “ABC”
“AB” < “AB “
“D” > “ABCD”
“2” > “13”
10. strlwr
Fungsi : Untuk mengubah setiap huruf kapital string menjadi huruf kecil.
Format : strlwr(<String>);
Unit : string.h
Contoh1 : printf(“%s”,strlwr(“JaZz”));
Output : jazz
Contoh2 : char s[10] = “Aman”;
strlwr(s);
printf(“%s”, s);
Output : “aman”
11. strupr
Fungsi : Untuk mengubah setiap huruf kecil string menjadi huruf kapital.
Format : strupr(<String>);
Unit : string.h
Contoh1 : printf(“%s”,strupr(“JaZz”));
Output : JAZZ
Contoh2 : char s[10] = “Aman”;
strupr(s);
printf(“%s”, s);
Output : “AMAN”
12. atoi (ASCII to integer)
Fungsi : Untuk mengubah data string menjadi data integer.
Format : atoi(<String>);
Unit : stdlib.h
Keterangan : Jika terjadi error, maka yang dikembalikan adalah yang pertama
kali berhasil dikonversikan. Jika tidak dapat dikonversikan maka
akan mengembalikan nilai 0.
Contoh1 : printf(“%d”,atoi(“15”));
Output : 15 (integer)
Contoh2 : printf(“%d”,atoi(“123a12”));
Output : 123 (integer)

79
Modul Ajar Algoritma dan Pemrograman Modul 10 – String

13. atof (ASCII to float)


Fungsi : Untuk mengubah data string menjadi data float.
Format : atof(<String>);
Unit : stdlib.h, math.h
Keterangan : Bila string tersebut tidak dapat dikonversikan, maka akan
mengembalikan nilai 0.
Contoh :
Program 10. 2. Mengubah Data String ke Float
#include <stdlib.h>
#include <math.h>
void main()
{
char x[10]=”20.3”;
float bil;
bil = atof(x);
printf(“%f”,bil);
}
output : 20.3000

Perintah untuk Manipulasi Karakter


1. islower
Fungsi : Mengembalikan nilai true bila karakter adalah huruf kecil.
Format : islower(<Karakter>);
Unit : ctype.h
Contoh : islower(‘a’);
Output : true
2. isupper
Fungsi : Mengembalikan nilai true bila karakter adalah huruf kapital.
Format : isupper(<Karakter>);
Unit : ctype.h
Contoh : isupper(‘a’);
Output : false
3. tolower
Fungsi : Untuk mengubah 1 karakter menjadi huruf kecil.
Format : tolower(<karakter>);
Unit : ctype.h
Contoh : tolower(‘A’);
Output : a
4. toupper
Fungsi : Untuk mengubah 1 karakter menjadi huruf kapital
Format : toupper(<Karakter>);
Unit : ctype.h
Contoh : toupper(‘a’);
Output : A

80
Modul Ajar Algoritma dan Pemrograman Modul 10 – String

RINGKASAN
String adalah suatu tipe data array of char yang digunakan untuk menangani data
teks. String selalu diapit dengan tanda petik ganda. Tiap-tiap karakter yang
membentuk string dapat dimanipulasi melalui indeks-nya.

LATIHAN/TUGAS
1. Buatlah program untuk menghitung jumlah karakter pada sebuah string
Contoh :
Input = Makan Pensil
Hasil =
a=2
e=1
i=1
k=1
l=1
m=1
n=2
p=1
s=2
2. Buatlah program untuk memeriksa apakah sebuah kalimat yang diinputkan
merupakan kalimat Palindrom. Kalimat palindrom merupakan kalimat yang
dapat dibaca dengan sama baik dari depan maupun dari belakang. (Tidak
Case Sensitive).
3. Buatlah program untuk menampilkan index dimana terdapat huruf capital
pada sebuah string.
Input : MeLi mAKan piSAnG
Hasil : 0 2 6 7 13 14 16
4. Buatlah program untuk memotong string menjadi string baru. Contoh :
Input = Algoritma dan Pemrograman
Cut = gram
Hasil = Algoritma dan Pemroan
5. *) Case Sensitive Buatlah sebuah program yang mampu mengcopy sebuah
string ke dalam string yang lain! (dilarang menggunakan fungsi)
6. Buatlah program yang mampu mengubah case tiap kalimat sesusai dengan
title case
Input : AlgoRITmA PemRogRAMan
Output : Algoritma Pemrograman

7. Buatlah program untuk mereverse string yang diinput user


Contoh: Input : aku makan nasi
Output : ayas nakam isan
8. Buatlah program untuk mencari substring dari suatu kalimat, lalu tampilkan
ada berapa substring tersebut
Contoh: Input : Algoritma Pemrograman

81
Modul Ajar Algoritma dan Pemrograman Modul 10 – String

Ma
Output : 2
9. Buatlah sebuah program untuk mengurutkan kata dalam kalimat mulai dari
yang terbesar atau terkecil (user dapat memilih)
Contoh :
Input = saya makan nasi
Pilih : 1. Asc 2. Desc

Pilih = 1
Hasil : makan nasi saya

Pilih = 2
Hasil = saya nasi makan

10. Buatlah program untuk menambah kata ke kalimat yang terbentuk dari kata-
kata yang diinputkan sebelumnya. User dapat memilih posisi penambahan
(depan, tengah, belakang)
Misal :
Input 1 = sayap
Hasil = sayap

Input 2 = makan
Pilih posisi = 1. Awal 2. Tengah 3. Akhir
Pilih = 2
Hasil = say makan ap

Input 3 = butiran
Pilih posisi = 1. Awal 2. Tengah 3. Akhir
Pilih = 1
Hasil = butiran say makan ap

11. Buatlah program untuk menampilkan bentuk obat nyamuk dari sebuah
string
Input : budi cari ayam
Hasil :

82
Modul Ajar Algoritma dan Pemrograman Modul 11 - Pointer

MODUL 11 – POINTER

TUJUAN
Setelah selesai mempelajari modul ini Anda mampu melakukan hal-hal berikut:
1. Mahasiswa mengerti tipe data dinamis
2. Mahasiswa mampu mendeklarasikan dan menggunakan sebuah variabel
dinamis

PRASYARAT
1. Mahasiswa telah mengerti konsep array dan mampu menggunakan array
dalam menyelesaikan persoalan pemrograman.
2. Telah menyelesaikan semua tugas/latihan pada modul 10

DESKRIPSI
Pada modul ini akan dibahas mengenai penerapan pointer, penggunaan pointer
dalam pointer, hingga pengalokasian pointer terhadap array.

RELEVANSI
Setelah pernah mempelajari pembentukan array dimodul sebelumnya, dengan
penggunaan pointer yang dipelajari dimodul ini, dapat dibentuk suatu tipe data
baru yang lebih fleksibel dalam penggunaannya.

URAIAN

Apakah Anda pernah bertanya dimana seseorang tinggal? Jika rumah orang tersebut
dekat Anda dapat menunjuk rumah tersebut. Tetapi jika rumah tersebut tidak cukup
dekat untuk dilihat, maka Anda akan mengingat alamatnya. Pointer juga melakukan
hal yang sama. Pointer menyimpan alamat dari suatu variabel yang ditunjuk[2].
Seringkali pointer dianggap sebagai sesuatu yang sulit. Sesungguhnya pointer
bukanlah sesuatu yang sulit jika Anda meluangkan waktu untuk memahaminya.
Pada suatu saat, sulit atau tidak, merupakan sesuatu yang penting untuk
mempelajari pointer. Beberapa tugas dapat lebih mudah jika menggunakan pointer
seperti dynamic memory allocation, yang tidak dapat dilakukan tanpa
menggunakan pointer. Untuk itu, marilah kita belajar tentang pointer.

Deklarasi Pointer
Dalam membuat program, data akan disimpan dalam memori. Ukuran setiap data
berbeda-beda dan dapat berukuran lebih dari satu byte. Walaupun data yang
disimpan ukurannya lebih dari satu byte, data tersebut tetap hanya mempunyai satu
alamat, yaitu nomor yang lebih kecil. Sama seperti rumah dengan dua nomor, maka
nomor rumah tersebut akan dikatakan bernomor sesuai nomor yang lebih kecil.

83
Modul Ajar Algoritma dan Pemrograman Modul 11 - Pointer

Pointer adalah suatu type variable yang didesain untuk memanipulasi alamat-
alamat memori[3]. Manipulasi yang dilakukan antara lain mengganti data yang ada
di dalam alamat tersebut, mengambil data yang ada ataupun mengisikan data ke
suatu alamat tertentu.
Dalam bahasa pemrograman, ada dua cara untuk mengakses variable yaitu:
1. mengakses dengan memanggil namanya. Dalam hal ini nama variable yang
diakses harus sudah dideklarasikan sebelumnya.
Cth: int x ;  variable x dideklarasikan terlebih dahulu
int x + = 100 ;  variable x diakses untuk kemudian
menambahkan 100 pada variable x
2. mengakses suatu variable dengan menggunakan variable kedua (variable
lain). Variable kedua ini adalah variable yang menyimpan alamat dari
variable “pertama” yang akan diakses. Variable kedua ini yang disebut
pointer.
Cth: int x = 0 ;
int * ptr ;  variable pointer
ptr = &x ;  menyimpan alamat x pada ptr.
Pada contoh di atas, pointer bertipe int * dengan variable ptr.
Pointer pada contoh ini dapat digambarkan sebagai berikut:

X ptr
9640 100
0 9640
cara mengakses nilai yang ada pada alamat yang disimpan dalam suatu
variable pointer dengan *ptr . Proses ini disebut dereference.
Cth: ptr = & x ;  ptr diisi dengan alamat dari x
* ptr = 3 ;  cell pada alamat yang disimpan di ptr diisi
dengan 3. Ini sama artinya dengan x = 3 ;

perlu diperhatikan: operator * hanya dapat dipakai untuk var yang bertipe
pointer, sedangkan operator & hanya dapat digunakan untuk mengakses
alamat suatu variable, bukan suatu nilai.
Penulisan deklarasi variable dalam C:
model 1 : int *ptr ; sama dengan
model 2 : int* ptr ; sama dengan
model 3 : int * ptr;
Kesalahan terjadi jika pointer dideklarasikan dengan tipe int* tetapi
kemudian digunakan untuk menyimpan alamat dari suatu var yang bertipe
selain int (misalnya:float). Supaya kesalahan tersebut menjadi legal, ada dua
cara:
1. Cast operation
Cth: char * g;
int * ptr;
ptr = (int *) g;

84
Modul Ajar Algoritma dan Pemrograman Modul 11 - Pointer

Cast operation ini akan memaksa compiler untuk menyimpan alamat dari
data yang berbeda tipenya, yaitu dengan cara menuliskan tipe dari
variable yang akan disimpannya.
2. Pointer to void
Dapat disebut sebagai tipe data pointer yang generik. Pointer to void
dapat dikonversikan ke tipe apapun tanpa cast operation. Demikian juga
sebaliknya, pointer dengan tipe apapun dapat dikonversikan menjadi
pointer to void tanpa cast operation.
Cth: void * f ;
int * ptr ;
ptr = f ;
Dalam hal ini pointer tidak ditentukan terlebih dahulu akan menyimpan
data yang bertipe apa.
kasus 1:
1 char char1 = ‘A’;
2 char char2 = ‘Z’ ;
3 char temp ;
4 char* char_ptr ;
5 char_ptr = &char1 ;
6 temp = *char_ptr ;
7 *char_ptr = char2;
8 char2 = temp ;

- Dari kasus di atas, telitilah perubahan data yang terjadi untuk setiap
variable yang dideklarasikan.
- Jelaskan apa yang dilakukan di setiap baris perintah di atas.
kasus 2:
#include <stdio.h>
#include <stdlib.h>
main()
{ char c = ‘O’ , d = ‘H’ ;
char *p1 , *p2 , *temp ;
p1 = &c;
p2 = &d;
temp = p1;
p1 = p2 ;
p2 = temp ;
printf(“%c%c”, *p1, *p2) ;
}
- Jelaskan apa yang ditampilkan pada layer.

Level of Indirection
Ada kemungkinan pendeklarasian pointer to pointer. Banyaknya penunjuk yang
harus diikuti untuk dapat mengakses data yang direferensikan disebut level of
indirection. Atau dapat juga dikatakan banyaknya dereference yang harus dilakukan
untuk mengakses data.
Dalam bahasa yang sederhana, jika suatu pointer menyimpan alamat maka harus
mencari ke alamat tersebut baru dapat melihat data yang disimpan di alamat
tersebut. Tetapi jika pada suatu pointer menyimpan alamat 1, dan setelah dicari di
alamat 1 ternyata berisi alamat 2 (bukan data), maka perlu dilakukan pencarian lagi
ke alamat 2 baru dapat mendapatkan data yang tersimpan di alamat 2. Begitu
seterusnya.

85
Modul Ajar Algoritma dan Pemrograman Modul 11 - Pointer

Cth: char c1;


char *ptr_c;
char **ptr;
ptr_c = & c1;
ptr = & ptr_c ;
level indirectionnya 2. Karena jika mengakses ptr maka pertama-tama akan didapati
alamat dari ptr_c dan setelah ditelusuri ke alamat tersebut ternyata ptr_c berisi
alamat c1. baru setelah ditelusuri ke alamat c1 baru mendapat data.

Pertanyaan:
1. Apa yang terjadi jika suatu variable biasa berisi sebuah alamat dari variable
lainnya?
Cth: int bilangan= 0xFF00;
Apa yang terjadi saat bilangan di cetak ke layar?
2. Apa yang terjadi jika suatu variable pointer berisi data yang bukan alamat?
Cth: char *bilangan;
bilangan = ’a’;

Pointer dan Array


Pointer dan array berhubungan dekat. Dapat dikatakan array merupakan pointer.
Pada saat mendeklarasikan suatu array, maka yang disimpan adalah alamat dari
element pertama array tersebut. Hal ini menyebabkan array tidak dapat diset/diisi
dengan value/nilai secara langsung, hanya dapat diisi langsung dengan alamat.
Contoh:
char nama[10];
nama = “nina”;  salah

float number[100];
float * ptr ;
ptr = number; atau ptr = & number[0];

Variable “nama” tidak boleh langsung diisi dengan data”nina” karena “nama”
hanya dapat menyimpan alamat. Untuk menyimpan nina ke dalam nama maka
harus menggunakan fungsi khusus yang sudah disediakan oleh C, yaitu strcpy().

Pointer to char vs array of char


Dapat ditulis: char * s1 = “kalimat” ;  pointer to char
char s2[10];  array of char
Assignment suatu array tidak boleh berupa value,
s2 = “kalimat1” ;  salah
Tetapi untuk pointer tidak masalah
s1= “kalimat2”

Mengapa?
Perbedaan prinsip antara pointer to char dan array of char adalah:
S1 dapat diubah nilainya karena berupa pointer variable, sedangkan
S2 tidak dapat diubah begitu saja karena berupa pointer constant. Pointer variable
artinya pointer yang dapat menyimpan data dengan ukuran bebas tergantung data
yang diisikan. Sedangkan pointer constant adalah suatu pointer yang sejak

86
Modul Ajar Algoritma dan Pemrograman Modul 11 - Pointer

dideklarasikan sudah ditentukan besar maksimum data yang dapat diisikan. Misal
S2, maksimal dapat menyimpan 10 char.

Array dan Pointer Arithmetic


Perbedaan cara mengakses / menginput data pada array dan pointer
Array:
for ( i=0; i< 5; i++)
printf(“%d”, data[i]);
Untuk mengisikan data ke dalam array dengan memasukkan satu persatu dengan
mengikutsertakan index nya.
Pointer:
for ( i=0; i< 5; i++)
{
printf(“%d”, * ptr);
ptr ++;
}
Untuk pointer, perlu operator * untuk mengisikan nilai. Kalau tanpa operator * maka
yang disimpan harus berupa alamat.

Operasi-operasi pada pointer


 ++ dan --
 penambahan dengan integer (ptr + 2)
 hasilnya adalah 2 blok data berikutnya sesuai tipe datanya.
 pengurangan dengan integer (ptr – 2)
 hasilnya adalah 2 blok data sebelumnya sesuai tipe datanya.
 pengurangan antar pointer ( ptr1 – ptr2 )
 hasilnya adalah jarak antara dua alamat sesuai dengan tipe datanya.
 pembandingan dua pointer ( ptr1>= ptr2 )
 artinya membandingkan 2 alamat, yaitu alamat ptr1 dengan alamat ptr2.

operator dibaca dari kiri ke kanan, artinya dikerjakan mulai dari operator paling kiri.
Penggunaan pointer arithmetic akan otomatis menyesuaikan ukuran fisik (byte) dari
elemen yang diakses sesuai dengan tipe datanya.

Pointer untuk mengakses array.


int Array [10] , *ptr ;
ptr = Array ;
Array [0]  *ptr
Array [1]  *(ptr + 1)

Dynamic Allocation
Jika menggunakan array kita harus menentukan jumlah tempat di memory yang
diperlukan pada saat deklarasi.
Dengan menggunakan pointer kita dapat menentukan besar memory yang
diperlukan sesuai dengan yang diperlukan (lebih fleksibel)
Contoh:

87
Modul Ajar Algoritma dan Pemrograman Modul 11 - Pointer

1 Dimensi:
void main()
{
int *data;
int n;
cout<<”Jumlah data : “;
cin>>n;
data = new int[n];//alokasi tempat di memory sebanyak n
}
2 Dimensi:
#include<iostream.h>
void main()
{
int **data;
int b,k;
cout<<"Jumlah baris : ";
cin>>b;
cout<<"Jumlah kolom : ";
cin>>k;
data = new int*[b];//alokasi tempat di memory sebanyak baris
for (int i=0;i<b;i++)
data[i]=new int[k]; //alokasi tempat per-baris sebanyak
kolom
}

RINGKASAN
Pointer adalah varibel yang menyimpan alamat variabel lain. Penggunaan pointer
membantu dalam pembentukan variabel yang memorinya bersifat dinamis dan
lebih fleksibel.

LATIHAN/TUGAS
1. Buatlah program yang melakukan sorting pada array of string (array 2D)
dengan basis pointer.
2. Buatlah program untuk find dan replace suatu substring pada string yang
diinputkan. String dibuat dengan menggunakan pointer!
.: MENU :.
1. Input string
2. Tampilkan string.
3. Find and replace substring.
Contoh :
String = “saya makan bersama ayah dan ibu.”
Substring “ya” diganti dengan “nta”, maka :
String = “santa makan bersama antah dan ibu.”
3. Buatlah program untuk mengurutkan list bilangan (array 1 dimensi), dengan
panjang array yang selalu dapat ditambah! Buat dalam bentuk menu.
.: MENU :.
1. Tambahkan data kedalam Array.
2. Tampilkan data Array (tidak urut).
3. Tampilkan data Array (urut).

88
Modul Ajar Algoritma dan Pemrograman Modul 11 - Pointer

4. Buatlah program untuk melakukan transpose dan rotasi matriks 2D. Matriks
dibuat dengan menggunakan pointer, sehingga jumlah baris dan kolom
selalu mengikuti jumlah baris dan kolom sesungguhnya pada matriks!
M= 1 2 3
4 5 6

SETELAH
DIROTASI
M= 4 1
5 2
6 3

SETELAH
DITRANSPOSE
M= 4 5 6
1 2 3

5. Buatlah program untuk menyimpan bilangan yang diinputkan user ke dalam


array 1D berbasis pointer dengan menu sebagai berikut:
.:Menu:.
1. Input data
2. Edit index ke-n
3. Delete index ke-n
4. Urutkan secara ascending
5. Urutkan secara descending
6. Display
7. Keluar
Contoh : Input : 1 2
13
14
19
237
31
6
7
Output : 2 4 7

89
Modul Ajar Algoritma dan Pemrograman Modul 12 – Fungsi

MODUL 12 – FUNGSI

TUJUAN
Setelah selesai mempelajari modul ini Anda mampu melakukan hal-hal berikut:
1. Mengerti dan memahami kegunaan dari fungsi
2. Mampu menggunakan fungsi untuk menyelesaikan persoalan program
komputer

PRASYARAT
1. Mahasiswa telah mengerti konsep dan penggunaan fungsi
2. Telah menyelesaikan semua tugas/latihan pada modul 11

DESKRIPSI
Pada modul ini akan dibahas mengenai fungsi (function), apa manfaatnya dan
bagaimana penggunaannya.

RELEVANSI
C merupakan program yang tersusun atas fungsi-fungsi. Minimum fungsi yang
harus ada adalah fungsi main. Pada modul ini akan dibahas mengenai membuat
fungsi-fungsi yang didefinisikan sendiri.

URAIAN
Berikut ini adalah contoh sebuah persoalan:
Buat program untuk menghitung total panjang semua sisi segitiga jika
diketahui koordinat 3 titik pada segitiga.
Dari persoalan di atas hal-hal yang perlu diperhatikan adalah:
1. Apa yang menjadi output/permintaan dari persoalan?
2. Variabel apa yang diperlukan untuk menyimpan data titik-titik pada segitiga
tersebut?
3. Untuk menghasilkan output tersebut memerlukan input apa?
4. Bagaimana cara menghitung panjang 1 sisi segitiga dan total ketiga sisinya?
Untuk menjawab pertanyaan 1, outputnya adalah total panjang semua sisi.
Untuk menjawab pertanyaan 2, variabel untuk menyimpan data titik (x,y) adalah
struct dengan 2 data member yaitu titik x dan titik y.
Untuk menjawab pertanyaan 3, yang menjadi input adalah 3 titik.
Untuk menjawab pertanyaan 4, dicari jarak antara 2 titik, ini akan menjadi panjang 1
sisi segitiga. Rumus jarak 2 titik adalah : ( x1  x2) 2  ( y1  y 2) 2
Proses perhitungan panjang sisi segitiga ini akan dilakukan 3 kali (karena jumlah
sisinya ada 3).
Berikut ini adalah jawaban dari permasalahan di atas:

90
Modul Ajar Algoritma dan Pemrograman Modul 12 – Fungsi

Program 13. 1 Hitung Total Panjang Sisi Segitiga Dengan Function


#include<stdio.h>
#include<math.h>

float hitungPanjangSisi(int x1,int y1,int x2,int y2);


void main()
{
int x1,y1,x2,y2,x3,y3;
int kar;
float sisi1,sisi2,sisi3,total;
printf(“Masukkan nilai x dan y untuk titik 1 (format : x,y): \n“);
scanf(“%d,%d”,&x1,&y1);
printf(“Masukkan nilai x dan y untuk titik 2 (format : x,y): \n“);
scanf(“%d,%d”,&x2,&y2);
printf(“Masukkan nilai x dan y untuk titik 3 (format : x,y): \n“);
scanf(“%d,%d”,&x3,&y3);
sisi1=hitungPanjangSisi(x1,y1,x2,y2);
sisi2=hitungPanjangSisi(x1,y1,x3,y3);
sisi3=hitungPanjangSisi(x2,y2,x3,y3);
total=sisi1+sisi2+sisi3;
printf(“Total panjang sisi segitiga = %f”,total);
}
float hitungPanjangSisi(int x1,int y1,int x2,int y2)
{
return(sqrt((x1-x2)* (x1-x2) + (y1-y2)* (y1-y2)));
}

Di atas tampak bahwa proses menghitung panjang sisi diletakkan pada fungsi yang
berbeda (bukan di dalam main). Sehingga proses menghitung panjang sisi yang
dilakukan 3 kali tidak lagi ditulis 3 kali, tetapi tinggal memanggil fungsi
hitungPanjangSisi sebanyak 3 kali. Hal ini akan memperpendek penulisan program.

Fungsi adalah sekumpulan perintah operasi program yang dapat menerima


argumen input dan dapat memberikan hasil output yang dapat berupa nilai ataupun
sebuah hasil operasi. Hasil akhir fungsi akan berupa sebuah nilai balik (return).
Manfaat :
• Modul yang sama cukup ditulis sekali.
• Mudah untuk dimanajemeni.
• Kesalahan mudah dideteksi.

Nama fungsi yang didefinisikan sendiri oleh pemrogram tidak boleh sama dengan
nama build-in function pada compiler C++.
Fungsi digunakan agar pemrogram dapat menghindari penulisan bagian program
(kode) berulang-ulang, dapat menyusun kode program agar terlihat lebih rapi dan
kemudahan dalam debugging program. Parameter adalah nama-nama peubah yang
dideklarasikan pada bagian header fungsi. Pemrogram dapat membuat fungsi yang
didefinisikan sendiri olehnya.
Bentuk umumnya :
TypeNilaiYgDikembalikan NamaFunction (DeklarasiFormalParameter)
{
......
return (<ekspresi>) ;
}

91
Modul Ajar Algoritma dan Pemrograman Modul 12 – Fungsi

Contoh Pendefinisian Function


float jumlah(float a, float b)
{ .....
return(a+b);
}
Pemanggilan Function
Format : NamaFunction(ActualParameter);
Contoh : jumlah(a, b);
Keterangan
• Kalau TypeNilaiYgDikembalikan tidak dituliskan dianggap nilai
yang dikembalikan bertipe integer.
• Parameter boleh ada atau tidak.
• Eksekusi terhadap function akan berakhir bila ditemui perintah
return atau ‘}’ tanda akhir function(return tidak ada).
• Setiap function berdiri sendiri sehingga tidak boleh ada
function yang terletak dalam function yang lain.

Prototipe Fungsi
Sebuah fungsi tidak dapat dipanggil kecuali sudah dideklarasikan, deklarasi fungsi
dikenal dengan sebutan prototipe fungsi. Prototipe fungsi berupa :
1. Nama Fungsi
2. Tipe nilai fungsi
3. Jumlah dan tipe argumen
Dan diakhiri dengan titik koma, sebagaimana pada pendeklarasian variabel. Sebagai
contoh:
1. long kuadrat (long l) ;
Pada contoh pertama, fungsi kuadrat ( ) mempunyai argumen bertipe long dan nilai
balik bertipe long.
2. void garis ( );
Pada contoh kedua, fungsi garis ( ) tidakmemiliki argumen dan nilai baliknya tidak
ada
(void).
3. double maks (double x, double y)
Pada contoh ketiga, fungsi maks( ) mempunyai dua buah argumen, dengan masing-
masing argumen bertipe double.
Program 13. 2 Fungsi Hitung Perkalian
#include<stdio.h>
int hasil(int A,int B);
void main()
{
int x,y,z;
printf(“Masukkan nilai x = “); scanf(“%d”,&x);
printf(“Masukkan nilai y = “); scanf(“%d”,&y);
z=hasil(x,y);
printf(”Hasil perkaliannya = %d”, hasil(x,y));
}
int hasil(int A, int B)
{
return(A*B);
}

92
Modul Ajar Algoritma dan Pemrograman Modul 12 – Fungsi

Penjelasan :
// Fungsi Perkalian
// tipe_return nama_fungsi (tipe_argument argumen)
int hasil(int A, int B)
{
return(A*B);
}
Fungsi yang didefinisikan oleh pemrogram terdiri atas dua bagian, yaitu judul
(header) dan isi (body). Judul dari sebuah fungsi terdiri dari tipe return (int), nama
fungsi (hasil) dan list parameter ( int A, int B).
Jadi, judul untuk fungsi hasil adalah
int hasil (int A, int B)
Isi dari sebuah fungsi adalah blok kode yang mengikuti judulnya. Berisi kode yang
menjalankan aksi dari fungsi, termasuk pernyataan return yang memuat nilai fungsi
yang akan dikembalikan ke yang memanggilnya, Isi dari fungsi hasil ( ) adalah
{
return A * B;
}
Biasanya isi dari fungsi cukup besar. Meskipun demikian, judulnya tetap hanya
berada dalam satu baris. Isi dari sebuah fungsi dapat memanggil fungsi itu sendiri
(disebut rekursif) atau memanggil fungsi lainnya. Pernyataan return dari sebuah
fungsi mempunyai dua manfaat, yaitu akan mengakhiri fungsi dan mengembalikan
nilainya ke program pemanggil.
Bentuk umum pernyataan return adalah :
return ekspresi;
Dengan ekspresi adalah sebuah ekspresi yang nilainya dinyatakan untuk sebuah
variable yang tipenya sama seperti tipe return. Terdapat juga fungsi yang tidak
memberikan nilai balik atau tipe return-nya void.
Program 13. 3 Fungsi Tanpa Return
#include<stdio.h>
void tampilkanIdentitas();
void main()
{
tampilkanIdentitas() ;
}
void tampilkanIdentitas();
{
printf(“Jurusan Teknik Informatika\n”);
printf(“Universitas Kristen Petra\n”);
printf(“Surabaya”);
}

VARIABEL LOKAL DAN VARIABEL EKSTERNAL


Variabel lokal adalah variabel yang didefinisikan dalam suatu fungsi tertentu,
sehingga hanya dikenal dalam fungsi tersebut. Dalam hal ini artinya suatu fungsi
tidak akan mengenal variabel lokal dan fungsi lain. Suatu fungsi hanya akan
mengenal variabel yang didefinisikan dalam fungsi yang bersangkutan.

93
Modul Ajar Algoritma dan Pemrograman Modul 12 – Fungsi

Variabel eksternal adalah variabel yang bersifat global yang dapat dikenali oleh
seluruh fungsi yang terdapat dalam program tersebut. Seluruh fungsi akan
mengenal variabel yang bersifat eksternal ini. Variabel eksternal dideklarasikan di
luar fungsi dan sejajar dengan prototipe fungsi serta pengarah kompiler.
Program 13. 4 Program Variabel Lokal dan Eksternal
#include<stdio.h>
int data=100; //variabel eksternal
void fungsiSatu(); //prototipe fungsi
void fungsiDua();
void main();
{
int data=200; //variabel lokal main
fungsiSatu();
fungsiDua();
printf(“Nilai data lokal main = %d\n“,data);
};
void fungsiSatu();
{
int data=300; //variabel lokal fungsiSatu
printf(“Nilai data lokal satu = %d\n“,data);

}
void fungsiDua();
{
printf(“Nilai data eksternal = %d\n“,data);
}
outputnya :
Nilai data lokal satu = 300
Nilai data eksternal = 100
Nilai data lokal main = 200
Penjelasan :
Dalam pemograman tersebut terdapat variabel lokal dan variabel eksternal yang
namanya sama yaitu data. Dalam fungsi main ( ) dan fungsi_satu ( ) terdapat
variabel lokal dengan nama sama tetapi sebetulnya lokasi penyimpanannya dalam
memori berbeda, sehingga dua variabel itu berbeda dan tidak saling mengenal.
Fungsi_satu ( ) sebetulnya mengenal variabel eksternal data yang nilainya 100, tetapi
karena dalam fungsi terdapat variabel lokal data yang bernilai 300, maka yang
diprioritaskan untuk diproses dalam fungsi tersebut adalah variabel lokalnya. Jadi
jika dalam fungsi terdapat variabel lokal dan variabel eksternal yang sama, maka
yang diprioritaskan untuk diproses adalah variabel lokal. Dalam fungsi_dua( ) tidak
terdapat variabel lokal sehingga yang diproses pada fungsi tersebut adalah variabel
eksternalnya.

PARAMETER
Parameter adalah sarana komunikasi antar fungsi. Pengertian antar fungsi adalah
antara fungsi yang satu dengan fungsi lain termasuk antara fungsi yang dipanggil
dengan fungsi utama. Dalam pemograman yang melibatkan fungsi, diusahakan agar
fungsi bersifat independen artinya tidak tergantung pada fungsi lain. Setiap fungsi
hanya mengerjakan satu tugas tertentu.
Antar fungsi saling berkomunikasi menggunakan parameter.
Terdapat dua macam bentuk parameter dalam hubungannya dengan penggunan
fungsi dalam program yaitu :

94
Modul Ajar Algoritma dan Pemrograman Modul 12 – Fungsi

 Parameter Formal : parameter yang diberi nilai.


Parameter formal merupakan parameter yang terdapat dalam daftar
parameter fungsi.
 Parameter Aktual : parameter yang memberi nilai pada parameter formal.

Dalam contoh program perkalian di atas parameter formal terdapat pada


pendefinisan
fungsi :
int hasil(int A, int B) // parameter formal
{
return (A * B);
}
Sedangkan parameter aktual terdapat pada pemanggilan fungsi :
void main()
{ ……………
…………..
z = hasil(x,y); // parameter aktual
…………..
}

Cara Melewatkan Parameter


Cara melewatkan suatu parameter dalam Bahasa C++ ada dua cara yaitu :
1. Pemanggilan Secara Nilai (Call by Value)
 Call by value akan menyalin nilai dari parameter aktual ke parameter formal
 Yang dikirimkan ke fungsi adalah nilai dari datanya, bukan alamat memori
letak dari datanya
 Fungsi yang menerima kiriman nilai akan menyimpannya di alamat terpisah
dari nilai aslinya yang digunakan oleh bagian program yang memanggil
fungsi
 Perubahan nilai di fungsi (parameter formal) tidak akan merubah nilai asli di
bagian program yang memanggilnya
 Pengiriman parameter secara nilai adalah pengiriman searah, yaitu dari
bagian program yang memanggil fungsi ke fungsi yang dipanggil.
 Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan, tidak hanya
untuk sebuah variabel, elemen array atau konstanta saja.
Contoh :

95
Modul Ajar Algoritma dan Pemrograman Modul 12 – Fungsi

Program 13. 5 Call by Value


#include<stdio.h>
int tambah(int x);
void main()
{
int a,hasil;
printf(“Masukkan bilangan : “); scanf(“%d”,&a);
printf(“a awal = %d\n”,a);
hasil=tambah(a);
printf(“a akhir= %d\n”,a);
printf(“Hasil = %d”,hasil);
}
int tambah(int x)
{
printf(“x awal = %d\n”,x);
x=x-2;
printf(“x akhir = %d\n”,x);
return x;
}
Outputnya :
Masukkan bilangan : 8
a awal = 8
x awal = 8
x akhir = 6
a akhir = 8
Hasil = 6

2. Pemanggilan Secara Referensi (Call by Reference)


 Call by reference akan mereferensikan parameter aktual ke parameter formal.
Ketika suatu variabel direferensikan oleh variabel lain, kedua variabel
tersebut akan memiliki alamat memori yang sama, sehingga perubahan nilai
pada satu variabel akan mengubah nilai pada variabel yang lain. Contoh :
Program 13. 6 Pemahaman Referensi

#include <stdio.h>
void main()
{
int var1 = 5; // misal alamat var1 adalah 12ff7c
int &var2 = var1; // var2 mereferensikan variabel var1
// sehingga isi maupun alamat var2
// sama dengan variabel var1
printf(“alamat var1 = %x”,&var1);
printf(“isi var1 = %d”,var1);
printf(“alamat var2 = %x”,&var2);
printf(“isi var2 = %d”,var2);
}

Output program diatas adalah sebagai berikut :


alamat var1 = 12ff7c
isi var1 = 5
alamat var2 = 12ff7c
isi var2 = 5

96
Modul Ajar Algoritma dan Pemrograman Modul 12 – Fungsi

Jika ditambahkan coding berikut :


var2 = 100;
printf(“alamat var1 = %x”,&var1);
printf(“isi var1 = %d”,var1);
printf(“alamat var2 = %x”,&var2);
printf(“isi var2 = %d”,var2);

Output program diatas adalah sebagai berikut :


alamat var1 = 12ff7c
isi var1 = 100
alamat var2 = 12ff7c
isi var2 = 100

 Perubahan nilai parameter formal di dalam fungsi akan mengubah nilai asli
di bagian program yang memanggilnya karena parameter di fungsi
merupakan referensi dari variabel yang dikirimkan ke dalam fungsi.
 Call by reference tidak dapat menerima data berupa ungkapan.
Program 13. 7 Contoh Ungkapan

#include <stdio.h>
int tambah(int a,int b)
{
return (a+b);
}
void main()
{
tambah(7,2);
//ungkapan
//saat pemanggilan fungsi isi dari
//parameter berupa suatu nilai pasti.
}

Untuk menggunakan pemanggilan fungsi by reference, tambahkan simbol ‘&’


didepan nama parameter yang akan direferensikan.
Contoh penerapan:
Program 13. 8 Call by Reference

#include<stdio.h>
void swap(int &x, int &y); //Call by Reference
void main()
{
int bil1,bil2;
printf(“Masukkan bil1: “); scanf(“%d”,&bil1);
printf(“Masukkan bil2: “); scanf(“%d”,&bil2);

printf(“bil1 awal = %d\n”,bil1);


printf(“bil2 awal = %d\n”,bil2);

swap(bil1,bil2);

printf(“bil1 akhir = %d\n”,bil1);


printf(“bil2 akhir = %d\n”,bil2);
}

void swap(int &x, int &y); //Call by Reference


{
int temp=x;
x=y;
y=temp;
} 97
Modul Ajar Algoritma dan Pemrograman Modul 12 – Fungsi

3. Pemanggilan secara alamat/pointer (Call by address)


 Call by address akan menyalin alamat dari parameter aktual ke parameter
formal.
 Yang dikirimkan ke fungsi adalah alamat memori letak dari datanya. Karena
fungsi menerima alamat memori, maka jika nilai data dari alamat memori
tersebut diubah didalam fungsi, variabel yang ada di parameter aktual,
nilainya juga akan berubah.
 Call by address sering digunakan untuk mengirimkan parameter berupa array.

Untuk menggunakan pemanggilan fungsi by address, gunakan simbol ‘*’ didepan


nama parameter yang ingin.
Contoh penerapan:
Program 13. 9 Call by Address

#include<stdio.h>
void clearData(int *Array); //Call by Address
void main()
{
int data[5];
for(int i=0;i<5;i++)
{
data[i]=i+1;
printf(“Data ke %d = %d\n”,i+1,data[i]);
}

clearData(data);

for(i=0;i<5;i++)
{
printf(“Data ke %d = %d\n”,i+1,data[i]);
}

void clearData(int *Array)


{
for(int i=0;i<5;i++)
{
Array[i]=0;
}
}

Output program:
Data ke 1 = 1
Data ke 2 = 2
Data ke 3 = 3
Data ke 4 = 4
Data ke 5 = 5
Data ke 1 = 0
Data ke 2 = 0
Data ke 3 = 0
Data ke 4 = 0
Data ke 5 = 0

98
Modul Ajar Algoritma dan Pemrograman Modul 12 – Fungsi

RINGKASAN
Fungsi adalah sekumpulan perintah operasi program yang dapat menerima
argumen input dan dapat memberikan hasil output yang dapat berupa nilai ataupun
sebuah hasil operasi. Hasil akhir fungsi akan berupa sebuah nilai balik (return).
Manfaat dari fungsi antara lain modul yang sama cukup ditulis sekali, mudah untuk
dimanajemeni dan mudah untuk mendeteksi kesalahan

LATIHAN/TUGAS
1. Buatlah sebuah fungsi untuk mengetahui apakah dua buah string merupakan
anagram atau tidak (cth: siap merupakan anagram dari sapi). Parameternya
adalah dua buah string.
2. Buatlah sebuah fungsi untuk mengecek apakah string yang diinputkan oleh user
pada sebuah web valid tidak.
3. Buatlah 2 fungsi untuk mengurutkan array 1D secara ascending dan descending.
4. Buatlah sebuah fungsi untuk menampilkan semua index dari bilangan yang
dicari.
5. Buatlah fungsi untuk menghitung luas permukaan sebuah prisma segi empat
dan kubus. Parameter fungsi kubus adalah sisi, serta sisi dan tinggi sebagai
parameter fungsi prisma.
6. Dari soal nomor 5, Apabila prisma segi empat dan kubus diletakkan berimpitan.
Dan kubus ditempatkan di bawah prisma. Buatlah fungsi untuk menghitung luas
permukaan bangun gabungan tersebut.
7. Buat fungsi untuk menghitung KPK dan FPB dari 2 bilangan.
8. Buat fungsi untuk menghitung penjumlahan 2 pecahan (hasilnya harus tetap
pecahan dengan nilai yang paling sederhana)
a c pembilang
 
b d penyebut
9. Buatlah fungsi untuk mengetahui apakah sebuah string merupakan palindrom
atau tidak.
10. Buatlah fungsi untuk mencari nilai permutasi dan kombinasi dari dua buah
bilangan.
11. Buatlah fungsi unuk melakukan pengecekan apakah suatu bilangan merupakan
bilangan prima atau tidak. Parameternya adalah bilangan itu sendiri dan
hasilnya adalah boolean.
12. Buatlah fungsi untuk melakukan pembulatan sebuah string yang berisi angka
bertipe float, parameternya adalah angka itu sendiri dan jumlah digit di belakang
koma. Tanpa menggunakan fungsi ROUND( ) dan FLOOR( ).
13. Buatlah fungsi konversi dari bilangan desimal ke biner, oktal, dan hexa.
14. Buatlah fungsi yang mampu melakukan strcat, strcpy, strlen, strupr, strlwr,
strrev dan strcmp buatan anda sendiri, tidak boleh ada include lain selain
<stdio.h>
15. Buatlah fungsi untuk menghitung jumlah kata yang terdapat pada inputan.
Parameternya adalah string itu sendiri.

99
Modul Ajar Algoritma dan Pemrograman Modul 13 - File

MODUL 13 – FILE

TUJUAN
Setelah selesai mempelajari modul ini Anda mampu melakukan hal-hal berikut:
1. Mahasiswa mampu membedakan file biner dan file teks
2. Mahasiswa memahami macam-macam operasi file dalam file teks dan file
biner
3. Mahasiswa dapat membuat program untuk operasi file

PRASYARAT
1. Mahasiswa telah mengerti konsep dan penggunaan fungsi
2. Telah menyelesaikan semua tugas/latihan pada modul 12

DESKRIPSI
Pada modul ini akan dibahas mengenai file atau kumpulan data-data yang disimpan
dalam disk dalam bentuk suatu kesatuan. Ada dua jenis file yaitu file teks dan file
biner.

RELEVANSI
Pada modul 12 telah dibahas mengenai jenis-jenis fungsi serta penggunaannya.

URAIAN
File adalah kumpulan data-data yang disimpan dalam disk dalam bentuk suatu
kesatuan.
Suatu file merupakan organisasi dari sejumlah record.
Masing-masing record dapat terdiri dari satu atau beberapa field dan setiap field
terdiri dari satu atau beberapa byte.
Operasi file pada dasarnya meliputi 3 tahapan :
1. Membuka / mengaktifkan file
2. Melaksanakan operasi file
3. Menutup file

Membuka File
Untuk membuka / mengaktifkan file sebelum dapat diakses, digunakan fungsi fopen(
)
Syntax : FILE *fopen ( char *namafile, char *mode );
ket :
 namafile berupa nama dari file yang akan diaktifkan
 mode berupa jenis operasi yang dilakukan terhadap file
 prototype ada pada file stdio.h

100
Modul Ajar Algoritma dan Pemrograman Modul 13 - File

Keluaran fungsi fopen ( ) berupa pointer yang menunjuk ke tipe FILE, yaitu tipe
struktur yang definisinya ada pada file stdio.h
Berhasil-tidaknya operasi pengaktifan file dapat dilihat pada keluaran fungsi fopen ().
Jika keluaran berupa NULL berarti operasi pengaktifan gagal.

Jenis Operasi/Mode File


 r menyatakan bahwa file hanya akan dibaca
 w menyatakan bahwa file baru dibuat
 a untuk membuka file yang sudah ada pada disk dan operasi yang dilakukan
adalah operasi penambahan data pada file
 r+ untuk membuka file yang sudah ada, dan operasinya berupa pembacaan
dan penulisan
 w+ untuk membuka file dengan tujuan pembacaan atau penulisan. Jika
sudah ada isinya akan dihapus.
 a+ untuk membuka file dengan tujuan perekaman atau pembacaan. Jika file
berisi maka isinya tidak akan dihapus.
Contoh pemakaian fopen()
pf = fopen (“COBA. TXT”, “w”);
Maksud dari pernyataan tersebut adalah :
• Menciptakan dan mengaktifkan file bernama “COBA.TXT”
• Dengan mode yaitu “w” (mode penulisan file)
• Menempatkan pointer-ke-FILE ke variable pointer pf
Bentuk yang biasa dipakai untuk mengaktifkan file adalah :
if ( pf = fopen (“COBA. TXT”, ”w” ) == NULL )
{ cputs (“File tidak dapat diciptakan !”);
exit ( 1 ); } /*Keluar dari program*/
Mula-mula pf diisi dengan keluaran fungsi fopen ( ). Seandainya nilainya adalah
NULL (berarti operasi pengaktifan file gagal)
maka :
 Pada layar ditampilkan tulisan “File tidak dapat dibuka!”
 Program dihentikan / selesai

Menutup File
• Untuk menutup file, fungsi yang digunakan adalah fclose ( ). Bentuk
deklarasinya adalah :
int fclose ( FILE *pf );
• Fungsi fclose( ) menghasilkan keluaran berupa nol jika operasi penutupan file
berhasil dilakukan.
• Disamping fclose ( ) terdapat fungsi fcloseall ( ) yang kegunaannya adalah
untuk menutup semua file yang sedang terbuka. Bentuk deklarasinya :
int fcloseall (void);
• Fungsi fcloseall ( ) menghasilkan nilai EOF (EOF didefinisikan pada file
stdio.h, yaitu bernilai -1) jika terjadi kegagalan. Sedangkan jika berhasil,
keluaran fungsi berupa jumlah file yang ditutup.

Operasi Penyimpanan dan Pembacaan File per Karakter


Sebuah karakter dapat disimpan dalam file dengan menggunakan fungsi fputc ( ).

101
Modul Ajar Algoritma dan Pemrograman Modul 13 - File

Bentuk deklarasinya :
int fputc ( int kar, FILE *ptr_file );
keterangan:
 ptr_file adalah pointer-ke-FILE yang berisi keluaran dari fopen ( )
 kar berupa karakter yang akan disimpan dalam file.
Contoh Pembacaan File per Karakter
Contoh program yang digunakan untuk membaca suatu isi file (misal COBA.TXT,)
dengan langkah sebagai berikut :
• Buka file COBA. TXT dengan mode “r”. Jika tak berhasil dibuka beri
keterangan bahwa file tidak ada, selesai.
• Baca sebuah karakter dari file. Jika karakter sama dengan EOF (tanda akhir
file) maka langkah ke 4
• Tampilkan karakter ke layar dan kembali ke langkah kedua
• Tutup file
• Selesai
Program 14. 1.Program Baca File Per Karakter
#include <stdio.h>
#include <conio.h>
main( )
{
FILE*pf;
char kar;
clrscr( );
if ((pf = fopen (“COB. TXT”, “r”)) = = NULL )
{
cputs (“File tak dapat dibuka !\r\n”);
exit;
}
while ( (kar = getc (pf) ) !=EOF )
putch (kar);

fclose (pf);
}

Ada 2 jenis file :


1. File teks merupakan file yang pola penyimpanan datanya dalam bentuk
karakter. Misalnya bilangan bertipe int bisa saja menempati ruang 1 byte, 2
byte atau lebih, tergantung oleh panjang dari bilangan. Satu karakter akan
menempati ruang 1 byte.
2. File biner adalah file yang pola penyimpanan di dalam disk adalah dalam
bentuk biner, yaitu seperti bentuk pada memory (RAM) komputer. Misalnya
data bertipe int akan selalu menempati ruang 2 byte berapapun nilainya.
Perbedaan file teks dan file biner:
File teks dipakai untuk menyimpan data bertipe karakter atau string
sedangkan file biner dipakai untuk menyimpan data bilangan atau data
kompleks, seperti struktur (tipe struct).
Pada file teks , karakter ‘\n’ pada program akan diperlakukan sebagai CR/LF
bagi MS-DOS dan CR/LF ( artinya CR atau ber-ASCII 13 diikuti dengan LF
atau ber-ASCII 10) pada MS-DOS akan diterjemahkan sebagai ‘\n’ bagi
program. Sedangkan pada file biner, karakter ‘\n’ pada program akan

102
Modul Ajar Algoritma dan Pemrograman Modul 13 - File

diperlakukan sebagai LF saja bagi MS-DOS dan karakter LF bagi MS-DOS


dianggap sebagai ‘\n’ bagi program.
Mode pada file Teks dan File Biner
• Penambahan yang perlu dilakukan untuk menentukan mode teks atau mode
biner berupa : “t” untuk mode teks dan “b” untuk mode biner.
Contoh :
• “ rt ” berarti mode file adalah teks dan file akan dibaca
• “ rt+ “ berarti mode file adalah teks dan file bisa dibaca atau ditulisi
• “ rb “ berarti mode file adalah biner dan hendak dibaca
• Jika pada mode file tidak terdapat karakter t atau b, mode file akan
ditentukan oleh variable global bernama _fmode ( deklarasinya ada pada file
fcntl.h).
• Jika _fmode tidak dilibatkan dalam program, maka mode file yang tidak
mengandung t atau b akan dianggap sebagai file teks.
• Variable _fmode bisa diisi dengan O_BINARY untuk menyatakan file biner,
atau O_TEXT untuk menyatakan file text.
Contoh :
_fmode = O_BINER;
pf = fopen (“TEST1”, “r”);
berarti bahwa “TEST1” adalah file biner dan hendak dibaca.

Operasi Penyimpanan dan Pembacaan File per Int


• Untuk menyimpan sebuah data bertipe int digunakan fungsi putw( )
• Sedangkan untuk membaca sebuah data bertipe int digunakan fungsi getw()
• Bentuk deklarasinya :
int getw (FILE *ptr_file);
int putw (FILE *ptr_file);

Operasi Pembacaan dan Penyimpanan File per Blok


• Fungsi untuk menyimpan file dalam bentuk kesatuan blok (sejumlah byte)
adalah fwrite( )
Bentuk deklarasi
int fwrite (void *buffer, int jum_byte, int n, FILE *ptr_file);
• Fungsi untuk membaca data file dalam bentuk kesatuan blok (sejumlah byte)
adalah fread( )
Bentuk deklarasi :
int fread (void*buffer, int jum_byte, int n, FILE *ptr_file);
Ket :
o Buffer adalah pointer yang menunjuk ke daerah memory yang akan
ditempati data dari file disk (untuk fread( )), atau pointer yang menunjuk
ke daerah memory yang berisi data yang akan disimpan ke file disk
(fwrite( )).
o jum_byte menyatakan jumlah byte yang akan dibaca atau disimpan
o n menentukan banyaknya blok data berukuran jum_byte yang akan
ditulis atau dibaca
o ptr_file berupa pointer-ke-FILE yang berisi nilai keluaran dari fopen( )

103
Modul Ajar Algoritma dan Pemrograman Modul 13 - File

Menyimpan dan Membaca Data String pada File


• Fungsi yang digunakan untuk membaca data string pada file sampai
ditemukannya karakter baris baru ‘\n’ atau setelah ( n-1 ) karakter, dengan n
adalah panjang maksimal string yang dibaca per waktu-baca adalah fgets( )
Bentuk deklarasinya :
char *fgets (char *str, int n, FILE *ptr_file);
• Fungsi yang digunakan untuk menyimpan data string ke dalam file yaitu
fputs().
Bentuk deklarasinya :
int fputs (char *str, FILE *ptr_file);

Menyimpan dan Membaca File yang mempunyai format


• Fungsi yang digunakan untuk menyimpan data yang mempunyai format ke
dalam file yaitu fprintf( ), dengan bentuk :
fprintf (ptr_file, “string kontrol”, daftar argumen);
• Sedangkan untuk membaca kembali, fungsi yang digunakan berupa fscanf( ),
dengan bentuk :
fscanf (ptr_file, “string kontrol”, daftar argumen);

Kedua fungsi di atas berlaku seperti fungsi printf( ) dan scanf( ), hanya saja
operasinya pada file.

Pengaksesan File Biner Secara Acak


• Fungsi yang digunakan untuk mengakses file biner secara acak adalah fseek( ).
Bentuk deklarasinya :
int fseek (FILE *ptr_file, long int offset, int posisi);
dengan :
- ptr_file adalah pointer yang keluar berasal dari keluaran fopen( )
- offset menyatakan jumlah byte terhadap posisi
Kegunaan fungsi fseek( ) yaitu untuk menempatkan penunjuk file ke suatu lokasi
dalam file, berdasarkan offset dan posisi.
Contoh:
o fseek (pf, 3, SEEK_SET);
Pernyataan tersebut menempatkan penunjuk file ke posisi 3 byte sesudah
awal file (SEEK_SET).
o fseek (pf, 3, SEEK_END);
Pernyataan ini akan menempatkan penunjuk file ke posisi 3 byte sebelum
akhir file
o fseek (pf, 3, SEEK_CUR);
Pernyataan ini dipakai untuk menempatkan penunjuk file ke posisi 3 byte
sesudah posisi penunjuk file berada.

Operasi File Tak Berpenampung


• Operasi File tak berpenampung sering disebut dengan system level I/O
(masukan-keluaran) beraras system atau low-level (masukan-keluaran beraras
rendah).
• Keuntungannya adalah dalam hal kecepatan pengaksesan (baca-tulis).

104
Modul Ajar Algoritma dan Pemrograman Modul 13 - File

Fungsi-fungsi dalam Operasi File Tak Berpenampung


• Fungsi open( ): untuk membuka file (terdapat pada file io.h)
Bentuk deklarasi :
int _open (char *filename, int mode);
dengan mode dapat diisi dengan konstanta O_RDONLY, O_WRONLY atau
O_RDWR, yang didefinisikan pada file fcntl.h
• Fungsi create( ): untuk menciptakan file baru atau untuk mengosongkan file
yang berisi
Bentuk deklarasi :
int _create (char *namafile, int atrib);
dengan atrib untuk menentukan atribut file
• Fungsi fclose( ) : untuk menutup file dengan bentuk deklarasi :
int _close (int handle);
dengan handle menyatakan kode penanganan file yang diperoleh dari _open(
) atau _create( ).
• Fungsi _read( ) : untuk membaca isi file.
Bentuk deklarasinya :
int _read (int handle, void*buffer, unsigned panjang);
• Fungsi _write( ) : untuk menulis ke file
Bentuk deklarasinya:
int _write (int handle, void *bufer, unsigned panjang);
• fungsi lseek( ) : untuk memindah penunjuk file (yang memungkinkan
pengaksesan file secara acak)
Bentuk deklarasinya :
long lseek (int handle, long ofset, int posisi);

Menghapus File
• Fungsi unlink( ) digunakan untuk menghapus File.
• Bentuk deklarasinya :
int unlink (char *namafile);
ket:
– namafile adalah pointer yang menunjuk ke nama file yang akan
dihapus.

Mengganti Nama File


• Fungsi rename( ) digunakan untuk mengganti nama file.
Bentuk deklarasinya :
int rename (char *nmafilelama, char *namafilebaru);

RINGKASAN
File adalah kumpulan data-data yang disimpan dalam disk dalam bentuk suatu
kesatuan. Suatu file merupakan organisasi dari sejumlah record. Ada dua jenis file
yaitu file teks dan file biner.

105
Modul Ajar Algoritma dan Pemrograman Modul 13 - File

LATIHAN/TUGAS
File Text
1. Buatlah kalkulator sederhana yang bisa menyimpan jumlah terakhir walaupun
program telah ditutup.
Misal:
Input : 3
Output : 3
Input : + 7
Output : 10
Input : + 8
Output : 18
Input : c (clear untuk mengembalikan ke 0)
Output : 0
Input : 4
Output : 4
Input : * 4
Output : 16
dan seterusnya
2. Buatlah sebuah pola segitiga sama sisi yang tersimpan pada sebuah file! Input
berupa ukuran, dan output terdapat dalam file.
Contoh :
Input : 4
Output : (dalam file)
*
***
*****
*******
3. Buatlah sebuah program untuk membaca teks dari sebuah file dan menghitung
jumlah kata yang terdapat dalam file tersebut.
4. Buatlah sebuah program untuk menulis input ke file dan mengeprint pola dari
file dengan menu sebagai berikut:
.:Menu:.
1. Input to file
2. Print pola
3. Exit
CONTOH isi file :
12
22
33
43
NOTE:
1 2 - diamond sebanyak 2 ke 2 2 - diamond sebanyak 2 ke
samping bawah
* * *
****** ***
* * *

106
Modul Ajar Algoritma dan Pemrograman Modul 13 - File

*** ***
* **
3 3 - frame sebanyak 3 ke samping ***
******* **
**** ***
******* **
4 3 - frame sebanyak 3 ke bawah ***

5. Buatlah program untuk mengecek apakah suatu string PALINDROM atau


bukan. String diambil dari file teks.
Contoh :
input.txt hasil output dilayar
kasur rusak PALINDROM
kecoak BUKAN
katak PALINDROM
ibukukumbang BUKAN

6. Tampilkan hasil perhitungan dari operasi yang ada dalam file teks pada layar
console, setiap contoh kasus dibatasi dengan ‘enter’. Bulatkan hasil 2 angka
dibelakang koma, abaikan hirarki operator.
Contoh:
input.txt
5*8/7+6
10/8*100+52*6-7
125/5*9+65-92
Output pada layar console:
11.71
430
198
7. Buatlah program untuk melakukan fungsi FIND and REPLACE didalam suatu
file teks (paragraph). Pada fungsi FIND, output berupa angka pada kata ke
berapa substring ditemukan. Sedangkan fungsi REPLACE dilakukan pada
semua substring yang ditemukan (REPLACE ALL).
Contoh:
Pada file teks:
Sejumlah buruh dan ibu rumah tangga di Kabupaten Kudus, Jawa Tengah,
terpaksa membeli tahu dan tempe dengan harga tinggi. Pasalnya, tahu dan
tempe merupakan menu termurah harian yang bisa mereka jangkau.
FIND : tempe
Output : kata “tempe” berada di kata ke 16, 23
REPLACE : tahu
WITH : kedelai
Output : (nama file selalu sama) isi pada file teks berubah menjadi:
Sejumlah buruh dan ibu rumah tangga di Kabupaten Kudus, Jawa
Tengah, terpaksa membeli kedelai dan tempe dengan harga tinggi.
Pasalnya, kedelai dan tempe merupakan menu termurah harian yang
bisa mereka jangkau.

107
Modul Ajar Algoritma dan Pemrograman Modul 13 - File

File Biner
1. Buatlah game Space Impact sederhana, lalu berikan Menu “Top 5 Score” yang
menyimpan 5 score tertinggi selama beberapa kali permainan. Data disimpan
dalam bentuk file biner dan data yang disimpan adalah score dan nama player.
Data tersebut di-load jika program dijalankan.
2. Buatlah sebuah program untuk memecah sebuah file menjadi beberapa file,
sejumlah inputan user.
Contoh tampilan program :
Masukkan nama file : “Test.bin”
Pecah menjadi (bagian) : 3
Ukuran file asal : 1,400,000 bytes
Hasil proses :
Test1.bin : 500,000 bytes
Test2.bin : 500,000 bytes
Test3.bin : 400,000 bytes
3. Sekumpulan data pegawai akan disimpan dalam file biner. Buatlah program
dengan spesifikasi berikut:
a. Program bisa menulis (input) data ke file tanpa menghapus data
sebelumnya.
b. Program bisa melakukan pencarian, edit, dan penghapusan data,
gunakan nama sebagai pengenal.
c. Format data pegawai berbentuk struktur dengan anggota sbb:
i. Nama pegawai
ii. No Induk
iii. Usia
iv. Divisi

108
Modul Ajar Algoritma dan Pemrograman Appendix – Menggunakan Visual C++

APPENDIX – MENGGUNAKAN VISUAL C++ 6

Membuat Project dengan Visual C++ 6


Bahasa pemrograman yang digunakan pada kuliah dan praktikum Algoritma

Pemrograman ini adalah Microsoft Visual C++ (bagian dari Microsoft Visual Studio

6.0). Mungkin pada saat pertama kali menggunakan Visual C++, terasa hal yang agak

berbeda dengan bahasa pemrograman yang setipe dengan ini. Yang menjadi

perbedaan utama adalah bahwa pada Visual C++ kita diharuskan untuk membuat

suatu workspace untuk dapat menjalankan program yang kita buat. Workspace ini

berfungsi untuk menampung semua file yang digunakan dalam mem-build program

yang telah dibuat. Untuk itu perlu diperhatikan workspace yang sedang digunakan.

Seperti yang dikatakan sebelumnya, untuk mulai membuat suatu program,

kita perlu untuk membuat suatu workspace dalam Visual C++. Pilih File  New pada

menu yang terdapat di toolbar atas.

109
Modul Ajar Algoritma dan Pemrograman Appendix – Menggunakan Visual C++

Setelah memilih menu New, akan muncul window baru yang berisi beberapa

tab. Pilih tab Projects, lalu pilih Win32 Console Application. Jangan lupa untuk

mengisikan nama workspace yang akan dibuat pada edit box sebelah kanan atas.

Tentukan juga lokasi untuk menyimpan workspace tersebut.

Setelah itu, pilih An Empty Project untuk memulai program yang baru.

Setelah melakukan ini, kita akan mendapatkan sebuah workspace yang masih

kosong. Workspace ini masih belum dapat dijalankan karena masih belum ada data

110
Modul Ajar Algoritma dan Pemrograman Appendix – Menggunakan Visual C++

yang di-compile. Untuk itu, kita perlu menambahkan file source yang kita inginkan

untuk program yang akan kita buat.

Untuk menambahkan source baru, pada menu Project pilih Add to Projects

 New. Pada window yang muncul akan terdapat beberapa pilihan. Untuk

menambahkan source baru, pilih C++ Source File. Sedangkan untuk membuat header

baru, pilih C++ Header File. Untuk kali ini pilih C++ Source File. Jangan lupa untuk

mengisi File Name pada edit box yang telah disediakan.

Selanjutnya pada window yang muncul, dapat diketikkan perintah –

perintah source yang akan dibuat. Untuk meng-compile program digunakan tombol

Ctrl + F7. Setelah itu program akan ter-compile. Untuk menjalankan (run) program

digunakan tombol Ctrl + F5. Nantinya akan muncul window yang merupakan

program yang telah dijalankan. Program tidak dapat didebug jika menggunakan

tombol Ctrl + F5.

111
Modul Ajar Algoritma dan Pemrograman Appendix – Menggunakan Visual C++

Yang perlu diperhatikan adalah jika kita akan mengganti workspace yang kita

buat, kita harus menutup workspace yang sebelumnya. Untuk menutup, pilih menu

File  Close Workspace. Jika kita tidak menutup workspace yang ada dan langsung

menggunakan workspace lain, maka sebagian data pada workspace lama akan tetap

ikut dalam workspace yang baru.

Melakukan Debugging pada Visual C++ 6


Untuk melakukan debugging pada program, ada beberapa cara. Pertama

dengan cara memberi breakpoint pada baris di mana kita ingin program tersebut

berhenti, dengan cara menekan tombol F9 pada baris tersebut pada saat kita

mengetikkan kode (program tidak sedang berjalan). Fungsi breakpoint adalah untuk

memberitahu compiler agar menghentikan program sementara jika menemukan

breakpoint.

Setelah menekan tombol F9, akan muncul sebuah bulatan di samping kiri

baris yang kita beri breakpoint. Artinya, ketika program di-run dengan menekan

tombol F5, program akan berjalan mulai dari main dan akan berhenti ketika

mencapai baris yang diberi breakpoint, dan akan menunggu respon dari user untuk

dapat berjalan lagi.

Ketika ditekan F5, akan muncul sebuah layar console dan pada layar Visual

C++ akan muncul sebuah window baru pada bagian bawah. Window di atas adalah

window baru yang terbentuk ketika program yang dibuat di atas dijalankan.

112
Modul Ajar Algoritma dan Pemrograman Appendix – Menggunakan Visual C++

Window tersebut akan memuat informasi berupa nama variabel yang akan

dioperasikan pada baris tersebut. Di atas, pada baris yang diberi breakpoint,

dilakukan operasi penjumlahan a dengan b dan hasilnya disimpan di c. Di window

tersebut akan ditampilkan nama variabel (a dan b) beserta nilai dari variabel

tersebut. Nilai c di atas adalah nilai c sebelum dilakukan perhitungan, dan setelah

dilakukan perhitungan, nilai c akan berubah menjadi 8. Untuk melanjutkan

program, bisa digunakan tombol F10 untuk ”Step Over” yang akan menjalankan

baris selanjutnya dan akan menunggu respon dari user untuk melanjutkan program

lagi. Jika kita ingin men-debug sebuah perintah yang berupa fungsi, dapat

digunakan tombol F11 (Step Into). Jika user ingin program dijalankan tanpa meminta

respon dari user lagi, gunakan tombol F5. Program akan berjalan sampai selesai atau

berhenti jika ada baris yang juga diberi breakpoint.

Jikalau kita ingin melihat isi sebuah variabel yang tidak dioperasikan pada

baris di mana kita memberi breakpoint, kita dapat melihat isi variabel tersebut

dengan cara menulis variabel tersebut di window ”Watch” yang juga muncul ketika

program di-debug.

Kita tinggal menuliskan nama variabel yang ingin kita lihat pada kolom

”Name” dan isinya dapat dilihat pada kolom ”Value”.

Cara yang kedua dalam mendebug program adalah dengan menggunakan

tombol Ctrl + F10. Program akan berhenti tepat pada baris di mana kita menekan

tombol tersebut. Pada saat kita menekan tombol ini, pastikan bahwa program tidak

sedang berjalan. Untuk cara kerjanya sama persis dengan breakpoint, namun jika

ditekan F5, program akan berjalan terus sampai selesai, berbeda dengan metode

pertama di mana program akan tetap berhenti jika masih ada breakpoint yang lain.

113
Modul Ajar Algoritma dan Pemrograman Appendix – Fungsi Animasi

APPENDIX – FUNGSI ANIMASI

Untuk menampilkan sebuah console application yang di dalamnya terdapat


animasi pergerakan karakter, ada beberapa fungsi yang perlu diketahui :

 gotoxy(int x, int y)
Fungsi gotoxy adalah sebuah fungsi yang digunakan untuk memindahkan
kursor pada koordinat tertentu, agar dapat menuliskan karakter pada koordinat
tersebut.
Fungsi gotoxy harus dituliskan terlebih dahulu pada awal program (tidak
tersedia pada header/library). Koordinat pada Console Application adalah antara
(0,0) sampai dengan (79,24).

void gotoxy(int x, int y)


{
COORD p;
p.X = x;
p.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p);
}

Contoh pemanggilan fungsi :


gotoxy(30,10); //kursor dipindahkan ke koordinat 30,10

 Sleep(int ms)
Fungsi Sleep digunakan untuk memberikan delay pada program. Parameter
yang diberikan menentukan berapa lama delay dilakukan (dalam satuan
milliseconds). Header yang digunakan : windows.h

Contoh pemanggilan fungsi :


Sleep(1000); //memberikan delay 1 detik

 system(“cls”)
Fungsi system(“cls”) digunakan untuk membersihkan layar console.
Header yang digunakan : windows.h

Contoh pemanggilan fungsi :


system(“cls”);

114
Modul Ajar Algoritma dan Pemrograman Daftar Pustaka

DAFTAR PUSTAKA

Hartanto, B. (2004).Memahami logika Pembuatan Program C Secara Mudah.


Penerbit Andi

Aaron M. Tenenbaum, Data Stuctures Using C and C++

http://is.its-sby.edu/subjects/comp_prog/

Cover icon made by: Freepik from http://www.flaticon.com

115

Anda mungkin juga menyukai