0% menganggap dokumen ini bermanfaat (0 suara)
72 tayangan

Algoritma

Algoritma adalah urutan langkah logis untuk menyelesaikan masalah secara sistematis. Materi ini memperkenalkan algoritma dan pemrograman, termasuk definisi algoritma, langkah pengembangan algoritma, pseudocode, diagram alir, dan sejarah bahasa C.

Diunggah oleh

Lucky Ardana
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
72 tayangan

Algoritma

Algoritma adalah urutan langkah logis untuk menyelesaikan masalah secara sistematis. Materi ini memperkenalkan algoritma dan pemrograman, termasuk definisi algoritma, langkah pengembangan algoritma, pseudocode, diagram alir, dan sejarah bahasa C.

Diunggah oleh

Lucky Ardana
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 135

LECTURE NOTES

COMP6599 – Algorithm and


Programming

Minggu 1
Sesi 2
Pengenalan Algoritma dan
Pemrograman

COMP6599 – Algorithm and Programming


LEARNING OUTCOMES

Learning Outcomes (Hasil Pembelajaran) :

Setelah menyelesaikan pembelajaran ini mahasiswa akan mampu :


1. LO 1: Menjelaskan permasalahan algoritma dan membuat pemecahan masalahnya.
2. LO 2 : Menerapkan sintaks dan fungsi bahasa pemrograman C dalam pemecahan
masalah.

OUTLINE MATERI(Sub-Topic): Pengenalan Algoritma dan Pemrograman

1. Definisi Algoritma (Algorithm Definition)

2. Langkah-langkah dalam membuat algoritma (Algorithm Development Steps)

3. Pseudo-code (Pseudo-code)

4. Flow Chart teorema terstruktur (Flow Chart Structured Theorem)

5. Sejarah bahasa C (History of C)

COMP6599 – Algorithm and Programming


Pengenalan Algoritma dan Pemrograman

1. Definisi Algoritma (Algorithm Definition)

Secara etimologis, Algoritma berasal dari kata Al Khwarizmi / algorism. Dimana kata
algorism digunakan untuk proses perhitungan aritmatika dengan menggunakan
bahasa Arab. Tetapi, dalam pengertian lain, algoritma adalah urutan langkah demi
langkah yang logis untuk menyelesaikan masalah yang disusun secara sistematis.

2. Langkah-langkah dalam membuat algoritma (Algorithm Development Steps)


Dalam menyelesaikan suatu permasalahan dengan menggunakan algoritma tertentu
hingga menjadi suatu program. Berikut gambaran tahapan algoritma hingga menjadi
program :

Terdapat langkah-langkah tahapan yang dapat diterapkan.


1. Mendefinisikan masalah
Mendefinisikan masalah yang ingin dipecahkan sehingga jelas lingkup proses dari
permasalahan yang ada.

COMP6599 – Algorithm and Programming


2. Membuat model
Membuat model / bentuk matematis yang dapat digunakan dalam memecahkan
masalah, misalnya apakah diperlukan pengurutan terhadap data, atau memerlukan
perhitungan khusus yang diperlukan.
3. Merancang Algoritma
Merancang algoritma adalah hal-hal yang perlu dipertimbangkan seperti
masukkan (input), cara jalan proses dalam menyelesaikan permasalahan (process),
dan hasil keluaran yang diharapkan (output).
4. Menulis program
Menulis program adalah mengubah hasil algoritma yang telah dibentuk menjadi
program (source code) sesuai dengan bahasa pemrograman tertentu.
5. Executablecode
Melakukan compilesource code menjadi executable code. Kemudian memeriksa
hasil compile, jika terjadi kesalahan maka kembali ke tahap sebelumnya (tahap 4
– menulis program).
6. Menjalankan program (run)
Menjalankan program dilakukan untuk menguji kebenaran dengan menggunakan
data input yang telah ditentukan untuk menghasilkan output yang diharapkan.
7. Memperbaiki kesalahan (fix error)
Jika dalam menjalankan program hasil keluaran (output) yang diharapkan tidak
sesuai maka, kemungkinan kesalahan terjadi saat merancang algoritma, atau
konversi algoritma menjadi source code, atau salah dalam menentukan model,
kesalahan juga dapat terjadi pada saat mendefinisikan masalah. Hal ini dapat
diselesaikan dengan mengulangi langkah yang sesuai dengan permasalahan yang
dihadapi.
8. Dokumentasi
Melakukan dokumentasi dari program yang sudah benar.

COMP6599 – Algorithm and Programming


3. Pseudo-code
Pseudo-code adalah kode-kode yang dibuat agar dapat dimengerti yang selanjutnya
diolah kembali dan diubah ke dalam suatu bahasa pemrograman. Selain itu pseudo-
code dapat diartikan juga sebagai cara untuk menuliskan sebuah algoritma secara
high-level (level tingkat tinggi).

Dalam penulisan pseudo-code biasanya dituliskan dengan kombinasi bahasa yang


mudah dimengerti (bahasa manusia) dan notasi matematika dan biasanya sebuah
pseudo-code tidak terlalu detail jika dibandingkan dengan kode pemrograman (source
code).
Berikut contoh dari pseudo-code :

Contoh pseudo-code untuk meminta inputan nama dan mencetaknya :

1. Read nama
2. Print nama
Dalam bahasa C pseudo-code tersebut dapat diubah menjadi :
char nama[100];
scanf(“%s”, nama); //read nama
printf(“nama : %s”, nama); //print nama

4. Flow Chart teorema terstruktur (Flow Chart Structured Theorem)

Flow chart merupakan penggambaran secara grafik mengenai langkah-langkah dalam


menyelesaikan suatu masalah suatu program.Flow chart juga biasa disebut sebagai
diagram alir yang terdiri dari lambang-lambang fungsi tertentu.

COMP6599 – Algorithm and Programming


Flow chart selalu diawali dan diakhiri dengan lambang terminator. Aliran yang ada
pada flow chart selalu mulai dari atas ke bawah dan dari kiri ke kanan, langkah demi
langkah. Dalam flow chart tidak ada proses yang dikerjakan secara bersamaan secara
sekaligus, sehingga flow chart ini selalu dikerjakan satu persatu.

Flow chart ini merupakan penggambaran yang dibuat untuk mengidentifikasi proses
dari permasalahan yang akan diselesaikan. Terdapat 3 proses yang dibuat untuk
menyelesaikan permasalahan : input, process, dan output.

Sebagai contoh : langkah-langkah dalam menentukan bahwa suatu bilangan tersebut


adalah bilangan ganjil atau genap?

Input : bilangan bulat.

Proses : menentukan berdasarkan inputan apakah bilangan yang dimasukkan


merupakan bilangan ganjil atau genap. Hal ini dilakukan dengan mendapatkan hasil
sisa bagi dari input bilangan yang dibagi dengan 2. Jika hasil sisa bagi 0 maka
bilangan tersebut merupakan bilangan genap, jika hasil sisa bagi adalah 1 maka
bilangan tersebut merupakan bilangan ganjil.

Output : Mencetak bilangan Ganjil atau bilangan Genap.

COMP6599 – Algorithm and Programming


Berikut gambaran dari flow chart berdasarkan soal tersebut :

Start

Input Angka
Input Hitung

Hitung = Angka%2

YA
Hitung = “GENAP”
0?

Tidak

“GANJIL”

End

Dari penggambaran flow chart tersebut dapat terlihat bagaimana penggambaran cara
jalan dari code pemrograman yang akan dirancang nantinya.

Terdapat juga langkah-langkah yang dapat digunakan untuk membuat pemrograman


komputer, dapat dibagi menjadi 3 kelompok proses :

a. Sequence process
Pada sequence proses seluruh instruksi dikerjakan sesuai dengan satu demi satu
sesuai dengan susunan dari instruksi pertama hingga instruksi terakhir. Instruksi
kedua akan dikerjakan setelah instruksi pertama selesai dikerjakan.

COMP6599 – Algorithm and Programming


b. Selection process
Para selection proses adakalanya suatu instruksi akan boleh dikerjakan jika
memenuhi persyaratan yang telah ditentukan sebelumnya. Misal jika terdapat
suatu transaksi pembayaran dengan dua metode. Metode pertama secara tunai
yang diberikan diskon 15%, dan metode kedua secara kredit dan tidak diberikan
diskon. Dalam hal ini transaksi pembayaran hanya boleh melakukan 1 metode
namun memiliki 2 alternatif pembayaran (diskon = 15% atau diskon =0).
c. Iteration process
Pada iteration proses adakalanya suatu instruksi dapat dikerjakan berulang-ulang
selama suatu kondisi terpenuhi. Misalnya jika suatu instruksi meminta inputan
dari pengguna program. Dimana diberikan nilai awal 0 dan nilai akhir 50 (0-50
adalah batasan nilai). Instruksi ini akan dikerjakan berulang selama nilai yang
dimasukkan belum mencapai nilai akhir (50).

5. Sejarah bahasa C (History of C)

Bahasa C dirancang oleh Dennis M. Ritchie di Bell Laboratories pada tahun 1972.
Bahasa C dikembangkan dari bahasa BCPL dan bahasa B. Bahasa BCPL
dikembangkan oleh Martin Richards pada tahun 1967 sebagai bahasa untuk menulis
sistem operasi dan compiler. Pada tahun 1970 Ken Thompson merancang bahasa B
dengan memasukkan feature BCPL. Bahasa B dirancang dengan tujuan untuk
digunakan membuat sistem operasi UNIX untuk komputer DEC PDP-7 pada

COMP6599 – Algorithm and Programming


Bell Laboratories. Pada tahun 1978 Dennis M. Ritchie dan Brian W. Kernighan
mempublikasikan bahasa C.

Bahasa pemrograman C merupakan bahasa pemrograman yang bersifat umum, tidak


dikhususkan untuk bidang aplikasi tertentu. Bahasa pemrograman ini digolongkan
sebagai bahasa pemrograman tingkat menengah (medium-level language). Hal ini
dikarenakan bahasa C memiliki kemampuan dalam mengakses mesin komputer yang
mendekati kemampuan bahasa rakitan, tetapi mudah dipelajari dan digunakan seperti
halnya bahasa pemrograman tingkat tinggi. Selain itu, bahasa C memiliki karakteristik
lain seperti : hemat ekspresi, alur kontrol, menggunakan struktur data modern, dan
kaya dengan operator. Bahasa C merupakan bahasa pemrograman yang banyak
digunakan mulai dari komputer mikro hingga super computer. Sampai saat ini bahasa
C merupakan bahasa pemrograman yang paling banyak digunakan untuk membuat
sistem operasi dan sistem software lainnya.

COMP6599 – Algorithm and Programming


SIMPULAN

Algoritma adalah urutan langkah demi langkah yang logis untuk menyelesaikan masalah
yang disusun secara sistematis.

Terdapat langkah-langkah tahapan yang dapat diterapkan.


a. Mendefinisikan masalah
b. Membuat model
c. Merancang Algoritma
d. Menulis program
e. Executablecode
f. Menjalankan program (run)
g. Memperbaiki kesalahan (fix error)
h. Dokumentasi

Pseudo-code dapat diartikan juga sebagai cara untuk menuliskan sebuah algoritma secara
high-level (level tingkat tinggi). Dalam penulisan pseudo-code biasanya dituliskan dengan
kombinasi bahasa yang mudah dimengerti (bahasa manusia) dan notasi matematika dan
biasanya sebuah pseudo-code tidak terlalu detail jika dibandingkan dengan kode
pemrograman (source code).

Flow chart merupakan penggambaran secara grafik mengenai langkah-langkah dalam


menyelesaikan suatu masalah suatu program.

Terdapat juga langkah-langkah yang dapat digunakan untuk membuat pemrograman


komputer, dapat dibagi menjadi 3 kelompok proses : Sequence process, Selection process,
dan Iteration process.

Bahasa pemrograman C merupakan bahasa pemrograman yang bersifat umum, tidak


dikhususkan untuk bidang aplikasi tertentu. Bahasa pemrograman ini digolongkan sebagai
bahasa pemrograman tingkat menengah (medium-level language). Bahasa C merupakan
bahasa pemrograman yang banyak digunakan mulai dari komputer mikro hingga super
computer. Sampai saay ini bahasa C merupakan bahasa pemrograman yang paling banyak
digunakan untuk membuat sistem operasi dan sistem software lainnya.

COMP6599 – Algorithm and Programming


DAFTAR PUSTAKA

1. Paul J. Dietel,Harvey M. Deitel,. 2010. C : how to program. PEAPH. New Jersey.


ISBN:978-0-13-705966-9 Chapter 3
2. Programming in C: http:// www.cs.cf.ac.uk/Dave/C/
3. C Language Tutorial:
http://www.physics.drexel.edu/courses/Comp_Phys/General/C_basics/
4. Pseudocode Examples: http://www.unf.edu/~broggio/cop2221/2221pseu.htm
5. Computer & Internet Help : Understanding Flowchart Symbols:
http://www.youtube.com/watch?v=xLoL7tlJYws
6. Thompson Susabda Ngoen, 2006. Pengantar Algoritma dengan Bahasa C. Salemba
Teknika. ISBN : 979-9549-25-6. Bagian 1, dan 2.

COMP6599 – Algorithm and Programming


LECTURE NOTES

COMP6599 – Algorithm and


Programming

Minggu 2
Sesi 3
Format Input &Output

COMP6599 – Algorithm and Programming


LEARNING OUTCOMES

Learning Outcomes (Hasil Pembelajaran) :

Setelah menyelesaikan pembelajaran ini mahasiswa akan mampu :


1. LO 1 : Menjelaskan permasalahan algoritma dan membuat pemecahan masalahnya.
2. LO 2 : Menerapkan sintaks dan fungsi bahasa pemrograman C dalam pemecahan
masalah.

OUTLINE MATERI(Sub-Topic):Format Input & Output

1. C Standard library
2. C Structure
3. Comments in C
4. Escape Sequences in C
5. Character, Identifier, Keyword in C
6. Variable
7. Data Type
8. Constant
9. Size Of
10. Input & Output Operation
11. Input & Output Formatting
12. Input & Output Example

COMP6599 – Algorithm and Programming


Format Input & Output

1. C Standard library
C adalah bahasa komputer yang paling banyak digunakan, dimana memiliki sifat yang
umum dan lebih mudah digunakan dan lebih efektif dalam menyelesaikan berbagai
permasalahan dibandingkan bahasa pemrograman yang lainnya. Seorang programer
diberikan keleluasaan dalam mengimplementasikan bahasa pemrograman C ke dalam
bentuk-bentuk instruksi program.Standart library C merupakan satu set fungsi,
konstanta, file header yang dapat digunakan untuk membuat program dengan bahasa
pemrograman C. Berikut beberapa fungsi standart library yang ada pada bahasa
pemrograman C:
Standart library in C Definition
(ctype.h) Character handling functions (header)

(math.h) C numerics library (header)

(stdio.h) C library to perform Input/Output operations (header)

(stdlib.h) C Standard General Utilities Library (header)

(string.h) C Strings (header)

(time.h) C Time Library (header)

Lihat contoh berikut ini :

Pada contoh tersebut fungsi printf akan jalan jika standart library<stdio.h> tersedia.

2. C Structure
Bahasa C merupakan bahasa pemrograman yang struktural hal ini dikarenakan :

COMP6599 – Algorithm and Programming


 Bahasa pemrograman C hanya memiliki 1 fungsi utama (fungsi main) dimana
ketika program tersebut di compile, maka fungsi utama yang akan dijalankan
pertama kali.
 Bahasa pemrograman C sangat case sensitif. Maksudnya adalah huruf besar dan
kecil sangat diperhatikan dalam pemrograman ini.
Misal :
1. printf(“Hello Word”);
2. Printf(“Hello Word”);
Antara statement 1 dan statement 2 terlihat perbedaanya yaitu ketika fungsi
printf dengan Printf maka statement 2 akan tidak dikenali dalam bahasa C.
Namun untuk statement 1 akan dikenali di bahasa C.
 Setiap pernyataan pada bahasa C harus diakhiri dengan ; (semi-colon).
Misal :
1. printf(“Algoritma”);
2. printf(“Algoritma”)
Antara statement 1 dan statement 2 terlihat perbedaanya yaitu ketika statement 1
diakhiri dengan ; (semi-colon) maka statement1 akan dalam bahasa C. Namun
untuk statement2tidak akan dikenali di bahasa C, dikarenakan statement 2 tidak
diakhiri dengan ; (semi-colon).

3. Comments in C
Komen di bahasa pegraman C digunakan untuk perintah yang tidak akan dijalankan
ketika program tersebut di compile.
Terdapat 2 cara dalam melakukan komen di bahasa C :
1. Dengan menggunakan /*komen untuk lebih dari 1 baris */
2. Dengan menggunakan //komen untuk 1 baris

COMP6599 – Algorithm and Programming


Berikut contoh potongan program yang menggunakan komen C :

/*--------------------------
My First Program
--------------------------
*/
#include<stdio.h>
void main(){
printf (“Hello,
BINUSIAN\n”);
}
// This program will simply
print out a message
4. Escape Sequences in C
Escape sequence digunakan untuk mewakili karakter khusus atau tertentu dalam
string literal dan karakter literal.
Berikut merupakan data-data escape sequence pada bahasa C :

Lihatlah contoh berikut ini :

COMP6599 – Algorithm and Programming


5. Karakter, Identifier, Keyword in C
- Karakter pada bahasa C
Bahasa program C ditulis dengan menggunakan sebagian dari karakter ASCII
(American Standard Code for Information Interchange), yaitu :
a. Huruf besar  A B C sampai Z.
b. Huruf kecil  a b c sampai z.
c. Angka  0 1 2 sampai 9
d. Karakter khusus ‘!’, ‘&’, ‘+’, ‘\’, ‘_’, dan lain-lainnya.
- Identifier pada bahasa C
Identifier adalah nama berbagai elemen program sepeti : nama variabel, nama
fungsi (function), nama tipe data, dan lain-lainnya. Sebuah identifier memiliki sifat
case sensitive. Diawali oleh huruf, atau _ (garis bawah) dan diikuti huruf atau angka.
Contoh :
- name, x1, _total, cubic()
- wrong: 1time, int
- Keyword pada bahasa C
Keyword adalah merupakan identifier yang telah didefinisikan oleh bahasa C.
Keyword pada bahasa C adalaha reserved word yang artinya dicadangkan dan tidak
boleh digunakan untuk keperluan lain (nama variabel, nama fungsi (function), nama
tipe data, dan lain-lainnya). Semua keyword ditulis dalam huruf kecil.
Berikut contoh keyword pada bahasa C :

COMP6599 – Algorithm and Programming


6. Variabel
Variabel adalah tempat yangdigunakan untuk menampung data. Jenis data yang dapat
ditampung pada suatu variabel harus ditentukan terlebih dahulu tipe datanya.
Penamaan variabel mengikuti aturan dari penamaan identifier.
Berikut contoh variabel pada bahasa C :
- int a, b, c, total;
- float salary, bonus;
- int num_students = 20;
7. Tipe data (data type)
Data yang ingin dioleh dengan menggunakan bahasa C harus dapat memiliki tipe
yang jelas. Berikut tipe data dasar yang dikenal pada bahasa C :

DATA TYPE SYNTAX RANGE

character unsigned char 0 to 255

char -128 to 127

integer unsigned int 0 to 65535

int -32768 to 32767

short int -128 to 127

unsigned long 0 to 4294967295

long -2147483648 to 2147483647

float float 3.4E-38 to 3.4E+38

double 1.7E-308 to 1.7E+308

long double 3.4E-4932 to 1.1E+4932

COMP6599 – Algorithm and Programming


Tipe data dapat digabungkan dengan modifier signed, unsigned, long, dan short untuk
menyesuaikan jangkauan nilai yang diinginkan.
8. Konstanta (constant)
Konstanta adalah suatu nilai konstan, dimana nilai tersebut tidak berubah nilainya
dalam sebuah program. Konstanta yang dikenal pada bahasa C yaitu :

Integer constant adalah sebuah bilangan bulat. Integerconstant juga dapat berupa
bilangan basis 10 (desimal), basis 8(oktal), atau basis 16(heksadesimal). Konstanta
diawali dengan bilangan 0. Dan konstanta heksadesimal diawali dengan 0x atau 0X.
Floating-point konstan adalah sebuah bilangan pecahan(bilangan desimal).
Character desimal adalah sebuah karakter ASCII. Biasanya diapit dengan tanda petik
tunggal. String konstan adalah kumpulan karakter ASCII yang diapit oleh tanda petik
ganda.
Escape sequence adalah karakter yang diawali dengan backlash (garis miring
terbalik). Setiap escapesequence memiliki arti tertentu (sesuai dengan tabel pada
penjelasan ke 4).
9. Size Of
Size of merupakan operator yang digunakan untuk mengetahui ukuran dari tipe data
dalam bahasa C. Lihatlah contoh berikut ini :

COMP6599 – Algorithm and Programming


Dari contoh tersebut dihasilkan bahwa ukuran dari tipe data int besarnya adalah 4
byte.
10. Operasi Input & Output
a. Output
Instruksi keluaran (output) digunakan untuk menampilkan hasil proses, pada layar
monitor, dicetak pada printer, atau ditulis ke file. Berikut adalah data-data operasi
output pada bahasa C.
- printf();
Merupakan fungsi yang menampilkan sejumlah keluaran dengan format tertentu.
Berikut contoh dari fungsi printf();

- putchar();
Merupakan fungsi yang menampilkan karakter pada monitor.
Berikut contoh fungsi putchar();

- puts();
Merupakan fungsi yang digunakan untuk menambahkan karakter dan
memindahkan kursor ke baris baru.

COMP6599 – Algorithm and Programming


Berikut contoh fungsi puts();

b. Input
Instruksi masukkan (input) adalah fungsi yang digunakan untuk membaca data.
Berikut data-data operasi input pada bahasa C:
- scanf();
Merupakan fungsi yang digunakan untuk membaca sejumlah masukkan (input)
sesuai dengan format dan disimpan pada alamat variabel. Jumlah format yang
ditetapkan harus sama dengan jumlah variabel yang diberikan.
Berikut contoh fungsi scanf();

- gethcar();
Merupakan fungsi yang digunakan untuk mengembalikan karakter berikutnya.
Menunggu input-an enter.
Berikut contoh penggunaan getchar();

COMP6599 – Algorithm and Programming


- gets();
Merupakan fungsi yang dugunakan untuk membaca string dari keyboard sampai
menemukan new-line dan menyimpannya.
Berikut contoh penggunaan gets();

11. Input & Output Formatting


Berikut adalah format yang dapat digunakan untuk operasi input&output :

COMP6599 – Algorithm and Programming


12. Contoh Input & Output
Berikut contoh sederhana dari input & output :

Hasil dari code diatas adalah :

COMP6599 – Algorithm and Programming


SIMPULAN

1. Standart library C merupakan satu set fungsi, konstanta, file header yang dapat
digunakan untuk membuat program dengan bahasa pemrograman C.
2. Bahasa C merupakan bahasa pemrograman yang struktural hal ini dikarenakan :
 Bahasa pemrograman C hanya memiliki 1 fungsi utama (fungsi main)
 Bahasa pemrograman C sangat case sensitif.
 Antara statement 1 dan statement 2 terlihat perbedaanya yaitu ketika fungsi printf
dengan Printf maka statement 2 akan tidak dikenali dalam bahasa C.
 Setiap pernyataan pada bahasa C harus diakhiri dengan ; (semi-colon).
3. Komen di bahasa pegraman C digunakan untuk perintah yang tidak akan dijalankan
ketika program tersebut di compile.
4. Escape sequence digunakan untuk mewakili karakter khusus atau tertentu dalam
string literal dan karakter literal.
5. Karakter, Identifier, Keyword in C
- Karakter pada bahasa C
Bahasa program C ditulis dengan menggunakan sebagian dari karakter ASCII
(American Standard Code for Information Interchange).
- Identifier pada bahasa C
Identifier adalah nama berbagai elemen program sepeti : nama variabel, nama
fungsi (function), nama tipe data, dan lain-lainnya.
- Keyword pada bahasa C
Keyword adalah merupakan identifier yang telah didefinisikan oleh bahasa C.
Keyword pada bahasa C adalaha reserved word yang artinya dicadangkan dan tidak
boleh digunakan untuk keperluan lain (nama variabel, nama fungsi (function), nama
tipe data, dan lain-lainnya.
6. Variabel adalah tempat yangdigunakan untuk menampung data. Jenis data yang dapat
ditampung pada suatu variabel harus ditentukan terlebih dahulu tipe datanya.
7. Data yang ingin dioleh dengan menggunakan bahasa C harus dapat memiliki tipe
yang jelas.
8. Konstanta adalah suatu nilai konstan, dimana nilai tersebut tidak berubah nilainya
dalam sebuah program.

COMP6599 – Algorithm and Programming


9. Operasi Input & Output
a. Output
Instruksi keluaran (output) digunakan untuk menampilkan hasil proses, pada layar
monitor, dicetak pada printer, atau ditulis ke file.
Contoh output pada bahasa C :
- printf();
- putchar();
- puts();
b. Input
Instruksi masukkan (input) adalah fungsi yang digunakan untuk membaca data.
Contoh input pada bahasa C :
- scanf();
- gethcar();
- gets();

COMP6599 – Algorithm and Programming


DAFTAR PUSTAKA

1. http://en.cppreference.com/w/cpp/language/escape

2. http://www.cplusplus.com/reference/cstdio

3. Paul J. Dietel,Harvey M. Deitel,. 2010. C : how to program. PEAPH. New Jersey. ISBN:978-0-
13-705966-9 Chapter 9

4. Reading from and Writing to Standard I/O: http://aelinik.free.fr/c/ch05.htm

5. Intro to File Input/Output in C: http://www.cs.bu.edu/teaching/c/file-io/intro/

COMP6599 – Algorithm and Programming


LECTURE NOTES

COMP6599 – Algorithm and


Programming

Minggu 3
Sesi 4
Operator, Operan, dan Aritmatika

COMP6599 –Algorithm and Programming


LEARNING OUTCOMES
Learning Outcomes (Hasil Pembelajaran) :

Setelah menyelesaikan pembelajaran ini mahasiswa akan mampu :


1. LO 1 : Menjelaskan jenis algoritma dan membuat pemecahan masalahnya.
2. LO 2 : Menerapkan sintaks-sintaks dan fungsi-fungsi bahasa pemrograman C dalam
pemecahan masalah.

OUTLINE MATERI (Sub-Topic): Operator, Operan, dan Aritmatika


1. Pengenalan Operator dan Operan
2. Operator Assignment
3. Operator Arimatika
4. Operator Relasional
5. Kondisional ekspresi
6. Operator Logika
7. Operator Bitwise
8. Precedence dan Associative

COMP6599 –Algorithm and Programming


Operator, Operan, dan Aritmatika

1. Pengenalan Operator dan Operan


Dalam bahasa C terdapat banyak sekali oparator, yang digunakan untuk memproses
operasi perhitungan, seperti integer di tambah dengan integer. Operan adalah data
yang digunakan untuk memanipulasi atau dilakukan operasi.
2. Operasi assignment
Merupakan operasi pemberian nilai ke suatu variabel. Assignment diberikan dengan
simbol (=). Operan disebelah kiri operator harus berupa variabel (L-value). Operan di
sebelah kanan harus berupa ekspresi (R-value).
Berikut contoh dari operasi assignment:
Operand1 = Operand2;
x = 3; // konstan
x = y; // jika y bernilai 5 maka x akan bernilai sama dengan y.

3. Operator Arimatika
Operator aritmatika adalah operator yang digunakan untuk pengolahan aritmatika
seperti penjumlahan, pengurangan, perkalian, pembagian, dua bilangan (bulat atau
pecah), sisa bagi 2 bilangan bulat, penambahan dan pengurangan nilai antar variabel.
Dan menghitung hasil sisa bagi dengan menggunakan simbol % yang disebut sebagai
modulo.
Berikut contoh dari operator aritmatika modulo pada bahasa C :

COMP6599 –Algorithm and Programming


Berikut tabel dari operasi aritmatika yang dapat digunakan pada bahasa C :

Bila ingin menuliskan sebuah operasi perhitungan penjumlahan secara akumulasi,


misalkan total yang diperoleh dari penjumlahan jumlah_belanja, maka bentuk
penulisan programnya adalah total = total + jumlah_belanja. Artinya adalah nilai
pada total akan terus diakumulasi dengan nilai jumlah_belanja yang baru.
Perhitungan ini dapat dipersingkat dengan total += jumlah_belanja. Demikian juga
dengan operasi perhitungan lainnya seperti ‘/=’, ‘-=’, ‘*=’, atau ‘%=’.

Berikut contoh dari penggabungan operator (combined operator) :

Increment dan Decrement Operators

Selain combined operator seperti yang telah dijelaskan diatas, terdapat pula operator
singkat untuk menggantikan fungsi x = x + 1 atau x += 1, yaitu dengan
menggunakan increment atau decrement operator.

COMP6599 –Algorithm and Programming


Operasi penambahan atau pengurangan yang memainkan angka 1 disetiap
akumulasinya maka dapat menggunakan increment ++ atau decrement --. Contoh x
+= 1 dapat ditulis menjadi x++, operasi x -= 1 dapat ditulis dengan x--.

Perlu diperhatikan bahwa bila menuliskan ++x tidaklah salah, melainkan hal tersebut
mempunyai arti yang berbeda dengan x++. Perhatikan contoh dibawah ini:

Nilai x yang tercetak diatas adalah 2 karena operasi x++ sudah dijalankan. Perhatikan
potongan program berikut ini:

Maka output yang dihasilkan adalah :

Nilai x berubah menjadi 2 setelah proses x++ berhasil dieksekusi, tetapi bila mencetak
nilai x++ maka nilai pada saat itu belum ditambahkan dengan 1.
Berbeda dengan x++, perhatikan contoh berikut:

Maka output yang dihasilkan adalah

Operasi ++x akan langsung dieksekusi yang artinya nilai x langsung ditambahkan satu
pada saat itu juga.

4. Operator Relasional
Operasi relasional adalah operator yang digunakan untuk membandingkan 2 nilai
sejenis. Kedua nilai tersebut dapat berupa konstanta atau variabel. Jika hasil
perbandingan benar maka nilai pengembaliannya akan menjadi 1 (true), jika salah
maka nilai pengembaliannya akan menjadi 0 (false).
Berikut adalah beberapa operator pembanding dan contoh serta hasil dari penggunaan
operator tersebut:

COMP6599 –Algorithm and Programming


Berikut contoh dari operator relasional pada bahasa C :

5. Kondisional ekspresi
Kondisional ekpresi merupakan operasi bersyarat dimana operator ini bersifat triadic
(trinary operator) yang membutuhkan 3 operan dan dikenal juga sebagai ekspresi
bersyarat (conditional expression). 3 operan yang diperlukan terdiri dari atas 1
ekspresi yang akan diuji dan memiliki 2 ekspresi pilihan. Kondisional ekpresi
menggunakan simbol (:?). Berikut contoh dari kondisional ekspresi pada bahasa C:

COMP6599 –Algorithm and Programming


6. Operator Logika
Operator logika adalah operator yang berkaitan dengan operasi logika, seperti : negasi
(ingkaran), konjungsi (dan), disjungsi (atau), nor (exclusive or). Berikut adalah tabel
operasi logika pada bahasa C :
Operator Name Description
! not logical negation
&& and logical conjunction
|| or logical disjunction
^ exclusive or logical exclusion
Dibawah ini merupakan beberapa table kebenaran yang perlu ketahui untuk
menghindari logic eror pada program yang akan dibuat.

Not (!) operator

p !p Example
true false !(1>2) is true, because (1>2) is false
false true !(1>0) is false, because (1>0) is true

Not operator digunakan untuk membalikkan hasil dari suatu perbandingan. Seperti
pada contoh diatas, ketika 1>2 bernilai salah, maka ketika diberikan tanda ‘!’, hasil
dari operasi logic tersebut adalah benar.

AND (&&) operator

p1 p2 p1 && p2 Example
false false false (2>3) && (5>5) is false
Because both (2>3) and (5>5) are false
false true false (2>3) && (6>5) is false
Because (2>3) is false
true false false (6>5) && (2>3) is false
Because (2>3) is false
true true true (3>2) && (5>=5) is true
Because both (3>2) and (5>=5) are true
Operasi AND akan bernilai benar jika dan hanya jika kedua kondisi (atau semua
kondisi) harus bernilai benar/true. Bila ada satu saja syarat yang idak dipenuhi (salah)
maka hasil dari operasi AND bernilai false.

COMP6599 –Algorithm and Programming


OR ( || ) operator

p1 p2 p1 || p2 Example
(2>3) || (5>5) is false
false false false
Because both (2>3) and (5>5) are false
(2>3) || (6>5) is true
false true true
Because (6>5) is true
(6>5) || (2>3) is true
true false true
Because (6>5) is true
(3>2) || (5>=5) is true
true true true
Because both (3>2) and (5>=5) are true
Kebalikan dari operasi AND, bila ada satu saja kondisi yang benar maka hasil dari
operasi OR bernilai benar(true). Operasi OR bernilai salah jika dan hanya jika kedua
kondisi (semua kondisi yang ada) bernilai salah(false).

7. Operator Bitwise
Operator bitwise adalah operator yang memperlakukan operan-operannya sebagai
sebuah nilai tunggal, operator bitwise memperlakukan operan-operannya sebagai
kuantitas yang terdiri atas bit-bit. Berikut tabel-tabel operator bitwise yang ada pada
bahasa C :

COMP6599 –Algorithm and Programming


Berikut adalah contoh program dari operator bitwise pada bahasa C :

8. Presedensi dan asosiatif (Precedence dan Associative)


Presedensi operator menunjukkan tingkat atau level operator, misalnya operator *
memiliki presedensi yang lebih tinggi dari dibandingkan operator +. Operator dengan
presedensi yang lebih tinggi akan dikerjakan terlebih dahulu. Asosiatif menjelaskan
cara pengerjaan suatu ekpresi jika terdapat operator dengan tingkat atau level yang
sama pada presedensi, misal pengerjaan dilakukan dari kiri ke kanan atau dari kanan
ke kiri. Berikut tabel-tabel presedensi dan asosiatif yang ada pada bahasa C :

COMP6599 –Algorithm and Programming


SIMPULAN

1. Pengenalan Operator dan Operan


Operator adalah proses operasi perhitungan, seperti integer di tambah dengan integer.
Operan adalah data yang digunakan untuk memanipulasi atau dilakukan operasi.
2. Operasi assignment
Assignment diberikan dengan simbol (=). Operan disebelah kiri operator harus berupa
variabel (L-value). Operan di sebelah kanan harus berupa ekspresi (R-value).
3. Operator Arimatika
Operator aritmatika adalah operator yang digunakan untuk pengolahan aritmatika
seperti penjumlahan, pengurangan, perkalian, pembagian, dua bilangan (bulat atau
pecah), sisa bagi 2 bilangan bulat, penambahan dan pengurangan nilai antar variabel.
4. Operator Relasional
Operasi relasional adalah operator yang digunakan untuk membandingkan 2 nilai
sejenis. Jika hasil perbandingan benar maka nilai pengembaliannya akan menjadi 1
(true), jika salah maka nilai pengembaliannya akan menjadi 0 (false).
5. Kondisional ekspresi
Kondisional ekpresi merupakan operasi bersyarat dimana operator ini bersifat triadic
(trinary operator) yang membutuhkan 3 operan. Kondisional ekpresi menggunakan
simbol (:?).
6. Operator Logika
Operator logika adalah operator yang berkaitan dengan operasi logika, seperti : negasi
(ingkaran), konjungsi (dan), disjungsi (atau), nor (exclusive or).
7. Operator Bitwise
Operator bitwise adalah operator yang memperlakukan operan-operannya sebagai
kuantitas yang terdiri atas bit-bit.
8. Presedensi dan asosiatif (Precedence dan Associative)
Presedensi operator menunjukkan tingkat atau level operator. Operator dengan
presedensi yang lebih tinggi akan dikerjakan terlebih dahulu. Asosiatif menjelaskan
cara pengerjaan suatu ekpresi jika terdapat operator dengan tingkat atau level yang
sama pada presedensi.

COMP6599 –Algorithm and Programming


DAFTAR PUSTAKA

1. Paul J. Dietel,Harvey M. Deitel,. 2010. C : how to program. PEAPH. New Jersey.


ISBN:978-0-13-705966-9 Chapter 2, 3 & 4
2. Manipulating Data with Operators: http://aelinik.free.fr/c/ch06.htm
3. Thompson Susabda Ngoen, 2006. Pengantar Algoritma dengan Bahasa C. Salemba
Teknika. ISBN : 979-9549-25-6. Bagian 1, dan 2.

COMP6599 –Algorithm and Programming


LECTURE NOTES

COMP6599 – Algorithm and


Programming

Minggu 4
Sesi 5
Program Control: Selection &
Repetition

COMP6599 – Algorithm and Programming


LEARNING OUTCOMES

Learning Outcomes (Hasil Pembelajaran) :

Setelah menyelesaikan pembelajaran ini mahasiswa akan mampu :


1. LO 2 : Menerapkan sintaks-sintaks dan fungsi-fungsi bahasa pemrograman C dalam
pemecahan masalah.
2. LO 3 : Membuat program dengan menggunakan bahasa C dalam pemecahan masalah.

OUTLINE MATERI (Sub-Topic): Program Control: Selection & Repetition

1. Pemilihan (Selection)
2. Perulangan (Repetition)
3. Break Vs. Continue
4. Go to dan Label
5. Error Type

COMP6599 – Algorithm and Programming


Program Control: Selection & Repetition
1. Pemilihan (Selection)
Stuktur kendali pemilihan digunakan untuk memilih langkah-langkah mana yang akan
dikerjakan terlebih dahulu berdasarkan hasil pemeriksaan suatu kondisi.
Bahasa C menyediakan 5 langkah dalam pemilihan yaitu :
- if
If digunakan untuk memilih apakah proses tersebut akan dilakukan atau tidak. Berikut
bentuk dari sintax if yang digunakan dalam bahasa C :
if(expression){ statement(s); }
Dimana expression adalah syarat yang akan dikerjakan, syarat ini memiliki nilai benar
(true) atau salah (false). Bila expression tersebut bernilai benar (true), statement di
dalam blok if tersebut akan dijalankan. Bila nilai expression bernilai salah (false),
maka program akan berakhir. Berikut merupakan contoh program if pada bahasa C:

Pada contoh potongan program diatas, misalkan nilai dari radius adalah 5. Program
akan mengeksekusi perintah yang ada di blok if tersebut bila syarat terpenuhi.
Pertama-tama akan dilakukan pengecekan apakah nilai radius saat ini bernilai lebih
dari atau sama dengan 0? Jawabannya adalah benar, 5 >= 0, maka program akan
menghitung nilai dari area, dan kemudian akan dicetak nilai dari radius dan area
tersebut. Bila tidak, maka tidak ada statement yang akan dieksekusi(dijalankan).

Secara flowChart bentuk dari if adalah :

COMP6599 – Algorithm and Programming


- if-else
If-else digunakan untuk memilih satu dari 2 proses yang akan dieksekusi. Berikut
bentuk dari sintax if-else yang digunakan dalam bahasa C :
if (expression){
statement(s)-for-the-true-case;
}
else {
statement(s)-for-the-false-case;
}
Statement untuk kondisi yang benar diletakkan didalam blok if yang dibatasi dengan
tanda kurung kurawal buka dan tutup. Kemudian untuk statement kondisi yang salah
diletakkan pada else blok yang diawali dan diakhiri dengan kurung kurawal buka dan
tutup juga.

Berikut contoh program dari penggunaan if-else pada bahasa C:

Pada program tersebut meminta inputan yang akan ditampung pada variabel angka.
Fungsi seleksi dilakukan dimana terdapat dua buah kondisi yang dihubungkan dengan
logical operator OR “||”, yang berarti bahwa bila salah satu kondisi terpenuhi atau
benar maka expression tersebut akan bernilai benar. Andaikan angka bernilai 200,
maka program akan mengecek apakah angka < 0? Jawabannya adalah salah (false),
kemudian program akan mengecek kembali kondisi berikutnya apakah angka > 100?
200 bernilai lebih dari 100, maka kondisinya adalah benar. Karena relasi yang ada
adalah OR, maka nilai akhir dari syarat ini adalah benar, sehingga program akan
mencetak “Wrong input”.

COMP6599 – Algorithm and Programming


Tetapi sebaliknya bila kondisi angka yang dimasukkan adalah 50, maka kondisi
pertama dan kedua bernilai salah, dan syarat tidak terpenuhi, maka program akan
mencetak “Input : “ yang dilanjutkan dengan nilai dari angka tersebut.

Bila melihat kembali pada program yang ada, pada blok statement if ataupun else
tidak terdapat tanda kurung kurawal buka dan tutup “{“ “}” yang biasanya digunakan
untuk menandakan batasan blok. Hal ini dapat dilakukan jika hanya ada satu
statement yang akan dieksekusi pada blok tersebut. Bila terdapat lebih dari satu
statement yang ingin dilakukan pada blok statement if, maka perlu digunakan tanda
kurung kurawal buka dan tutup “{“ “}” sebagai penanda.

Secara flow Chart bentuk dari if-else adalah :

- nested if
Nested if merupakan jenis variasi yang digunakan bila memiliki lebih dari satu syarat
dan syarat tersebut saling berkaitan. Yang dimasud dengan nested adalah di dalam if
atau if-else statement terdapat if atau if-else statement lainnya. Tidak ada batasan
maximum untuk if di dalam if tersebut. Berikut adalah contoh nested if:

COMP6599 – Algorithm and Programming


Potongan coding diatas adalah contoh penyeleksian dalam memberikan grade
berdasarkan dari nilai yang ada. Bila kondisi tidak dipenuhi maka didalam blok else
terdapat kondisi lainnya yang dicek kembali, dan seterusnya. Ini adalah salah satu
contoh sederhana dari nested if. Potongan coding dikolom sebelah kiri dan kanan
adalah sama, hanya lebih disarankan untuk mengikuti penulisan coding di kolom
sebelah kanan.

- switch-case
Switch – case adalah salah satu cara seleksi yang digunakan untuk memilih satu dari
sejumlah alternatif. Seleksi yang dilakukan pada switch statement berdasarkan pada
sebuah status. Format penulisan statement switch itu sendiri dapat dilihat dibawah
ini :
switch (switch-expression)
{
case value1: statement(s)1;
break;
case value2: statement(s)2;
break;

case valueN: statement(s)N;
break;
default: statement(s)-for-default;
}

switch-expression hanya boleh menggunakan sebuah nilai dengan tipe karakter(char),


byte, short atau int. Kemudian untuk nilai value1, value2, valueN harus mempunyai
tipe data yang sama seperti tipe data yang ada di switch-expression. Statement-
statement pada setiap pilihan (case) akan dieksekusi sampai program membaca
keyword break (akan dijelaskan lebih rinci di topik selanjutnya), atau hingga
switch statement telah berakhir. Keyword break dan default case bersifat optional,
boleh digunakan boleh juga tidak. Case statement tersebut juga dieksekusi secara
berurut (sequential).

COMP6599 – Algorithm and Programming


Gunakan keyword break bila memang diperlukan. Karena bila tidak ada keyword
break, misalnya status 2 terpenuhi, maka statement 2 dan seterusnya akan dieksekusi
juga selama blok switch belum berakhir. Untuk lebih kelas dapat dilihat pada flow
chart diatas.

Dibawah ini adalah contoh program sederhana yang menerapkan switch statement
dalam melakukan seleksi. Seleksi dilakukan terhadap hasil input user berupa bilangan
integer yang disimpan ke dalam variable number. Yang menjadi switch expression
adalah nilai sisa dari number dibagi dua (modulus). Statement di case 0 akan
dijalankan bila sisa bagi bernilai 0, dan statement di case 1 akan dijalankan bila sisa
bagi tersebut bernilai 1. Di dalam setiap statement case juga diberikan keyword break.
Program sederhana ini merupakan contoh dari penentuan apakah sebuah angka
merupakan bilangan ganjil atau genap.

COMP6599 – Algorithm and Programming


Berikut adalah contoh input dan output dari program tersebut:

- Conditional expression

Jenis terakhir dari seleksi statement dapat juga dilakukan dengan bentuk conditional
expression. Format yang digunakan adalah sebagai berikut:

Boolean-expression ? expression1 : expression2;

Lihatlah contoh if sederhana yang dituliskan dalam bentuk conditional expression


berikut ini:

Use the conditional Expression

2. Perulangan (Repetition)

COMP6599 – Algorithm and Programming


Struktur kendali perulangan atau iterasi (repetition) digunakan untuk melaksanakan
satu atau beberapa instruksi secara berulang-ulang. Frekuensi pengulangan dapat
ditentukan dalam program atau ditentukan saat program dijalakan.

Dalam iterasi ini instruksi yang dikerjakan berulang-ulang harus memiliki nilai
variabel pengendali kondisi yang harus selalu berubah setiap iterasi terjadi agar iterasi
dapat berakhir. Pada bahasa C menyediakan 3 instruksi iterasi yaitu :
- for
For digunakan untuk mengulang suatu statement yang dideklarasikan berdasarkan
suatu kondisi atau syarat tertentu.
Format penggunaan For:
o Jika hanya 1 statement yang dijalankan dalam perulangan

for ([initialization];[condition];[increment/decrement])
<statement>

o Jika terdiri lebih dari 1 statement yang dijalankan dalam perulangan

for (initialization; condition; increment/decrement)


{
<block of statements>
}

Contoh:
for ( int i = 0; i < 5; i++) {
printf(“Value of i is = %d“ , i);
printf(“Loop number %d”, (i+1));
}
Pada potongan program di atas, kedua statement yang terdapat didalam for akan
dijalankan selama kondisi i < 5 terpenuhi. Dalam hal ini, awalnya nilai i adalah 0 dan
ketika proses dilakukan, nilai i akan ditambahkan satu point (increment i++), dan
proses dilakukan terus.
- while
While digunakan untuk mengulang suatu statement selama expression yang diberikan
didalamnya bernilai benar, jika bernilai salah, maka statement yang dideklarasikan di
dalamnya tidak akan diulang.
while (expression) { <block statement> }
Contoh :

COMP6599 – Algorithm and Programming


int i = 0;
while (i < 5){
printf(“Value of i is %d“, i);
i++;
}

Pada potongan program di atas, program akan melakukan pengecekan terlebih dahulu
apakah nilai i < 5, jika benar, maka program akan mengulang kedua statement yang
terdapat di dalam while.
- do-while
Do...While digunakan untuk mengulan suatu statement yang dideklarasikan sesudah
keyword Do dan setelah menjalankan statement tersebut, dilakukan pengecekan
terhadap expression yang diberikan, apakah bernilai benar atau salah. Jika bernilai
benar, maka statement tesebut akan diulang kembali. Jika bernilai salah, maka
statement tersebut hanya akan dijalankan satu kali tanpa dilakukan pengulangan.
do{ <block statement> }while (expression);
Contoh :
int i = 0;
do{
printf(“Value of i is %d“, i);
i++;
}while (i < 5);

Pada potongan program di atas, program akan menjalankan terlebih dahulu kedua
statement di dalam do kemudian dilakukan pengecekan apakah nilai i < 5, jika benar,
maka program akan kembali mengulang kedua statement tersebut.
3. Break Vs. Continue
Break merupakan instruksi yang menyebabkan proses keluar dari instruksi for, while,
do-while, switch.
Continue dapat menyebabkan proses mengabaikan (melewati) instruksi selanjutnya
dan melanjutkan proses iterasi berikutnya pada instruksi for, while, do-while.
Berikut contoh program continue pada bahasa C:

COMP6599 – Algorithm and Programming


Pada program tersebut terlihat bahwa ketika x bernilai 5 maka proses 5 akan dilewati
dan tidak di cetak. Sehingga akan menghasilkan output : 1 2 3 4 6 7 8 9 10.
4. Go to dan Label
Bahasa C menyediakan cara untuk menyediakan lompatan goto melalui label dengan
fungsi yang sama.
Penggunaan goto ini sangat tidak dianjurkan dalam bahasa pemrograman dikarenakan
akan membuat struktur code menjadi tidak teratur, dan membuat sulit untuk melacak
aliran kontrol dari sebuah program.
Berikut bentuk flow chart dari goto label pada bahasa C :

Berikut contoh penggunaan goto label pada bahasa C:

COMP6599 – Algorithm and Programming


5. Error Type
Terdapat beberapa jenis error yang sering terjadi pada umumnya, antara lain:

a. Lupa untuk memberikan tanda kurung batas blok if. Perlu diingat bahwa
Anda boleh menghilangkan penulisan “{“ “ }” sebagai penanda pada if statement
jika hanya terdapat satu statement pada blok tersebut. Lihat contoh berikut:

Pada potongan program diatas, bila syarat radius >=0 terpenuhi maka program akan
menjalankan statement if yaitu area = radius * radius * PI. Kemudian program akan
melanjutkan untuk mengeksekusi statement berikutnya (dalam konteks melanjutkan
pengeksekusian program yang berada diluar blok if. Bila syarat radius >=0 tidak
terpenuhi, maka program tidak akan menjalankan perhitungan area, tetapi akan
langsung mengeksekusi statement System.out.println, karena statement tersebut tidak
termasuk statement didalam blok if.

b. Memberikan tanda “;” pada akhir persyaratan if. Hal ini akan menyebabkan
error. Ingat bahwa tanda titik koma “;” digunakan untuk menandakan akhir dari
sebuah statement.

COMP6599 – Algorithm and Programming


Logic error

c. Perulangan dalam pengecekan nilai. Pada contoh dibawah ini terlihat bahwa
statement if akan dijalankan bila syarat/kondisi bernilai benar/true. Maka secara
tersirat if akan melakukan pengecekan apakah nilai dari variable yang dicek bernilai
benar.

Th

Equivalent

d. Pernyataan blok else yang ambigu dalam nested if. Contoh:

Anda dapat melihat blok else pada kolom sebelah kiri cukup ambigu, apakah blok else
tersebut merupakan blok else milik if(i>j) atau if(i>k). Seharusnya blok else
tersebut ditulis seperti potongan program disebelah kanan. Bila Anda ingin membuat
else untuk milik if(i>j), maka Anda perlu memberikan tanda “{ }” untuk
membatasi statement blok if(i>j) tersebut.

COMP6599 – Algorithm and Programming


e. Compile time-error : disebabkan oleh kesalahan sintaks.
f. Link-time error : berhasil di compile, namun menyebabkan link-error,
dikarenakan kesalahan pada saat kompilasi. Biasanya disebabkan karena file .exe
tidak berhasil dihubungkan sehingga menyebabkan format file .exe tidak dapat
dibentuk.
g. Run-time error : program berhasil di susun namun terdapat kesalahan pada saat
run-time. Biasanya hal ini disebabkan karena operasi numerik seperti pembagian
dengan nol, dan lain sebagainya.
h. Logical error : berhasil di eksekusi namun, hasil output tidak sesuai dengan yang
diharapkan. Hal ini terjadi dikarenakan kesalahan pada algoritma yang dibentuk.

SIMPULAN

1. Fungsi seleksi digunakan untuk mengaplikasikan alternaive pilihan. Ada beberapa jenis
seleksi: if statement, if-else statement, nested if statement, switch statement, dan
conditional expression.

2. Semua macam dari if statement merupakan struktur control yang berdasarkan pada
expression. Bergantung pada nilai true atau false yang dihasilkan dari expression tersebut
(syarat seleksi), seleksi if ini akan memilih satu dari dua pilihan.

3. Switch statement adalah struktur control yang bergantung pada tipe dari switch-
expression yang hanya dapat mengaplikasikan tipe char, byte, short, atau int.

4. Keyword break bersifat pilihan (optional), tetapi biasanya digunakan pada setiap kahir
case statement dengan tujuan untuk memberhentikan pengeksekusian program yang
tersisa dalam switch statement. Jika break statement tidak digunakan, maka case

COMP6599 – Algorithm and Programming


statement yang selanjutkan tetap akan dieksekusi, dimana switch statement melakukan
pengeksekusian secara sequential order.

5. Ada 3 jenis sintaks perulangan yang dapat digunakan, yaitu while, do-while dan for.

6. Break merupakan instruksi yang menyebabkan proses keluar dari instruksi for, while, do-
while, switch.
7. Continue dapat menyebabkan proses mengabaikan (melewati) instruksi selanjutnya dan
melanjutkan proses iterasi berikutnya pada instruksi for, while, do-while.
8. Bahasa C menyediakan cara untuk menyediakan lompatan goto melalui label dengan
fungsi yang sama.
9. Penggunaan goto ini sangat tidak dianjurkan dalam bahasa pemrograman dikarenakan
akan membuat struktur code menjadi tidak teratur, dan membuat sulit untuk melacak
aliran kontrol dari sebuah program.
10. Beberapa macam tipe error pada bahasa C :
a. Compile time-error
b. Link-time error
c. Run-time error
d. Logical error

COMP6599 – Algorithm and Programming


DAFTAR PUSTAKA
1. http://www.tutorialspoint.com/cprogramming/c_goto_statement.htm

2. Paul J. Dietel,Harvey M. Deitel,. 2010. C : how to program. PEAPH. New Jersey. ISBN:978-0-
13-705966-9 Chapter 3 & 4

3. Choosing between Alternatives:


http://docs.roxen.com/pike/7.0/tutorial/statements/conditions.xml

4. Getting Controls: http://aelinik.free.fr/c/ch10.htm

5. Doing the Same Thing Over and Over: http://aelinik.free.fr/c/ch07.htm

6. Thompson Susabda Ngoen, 2006. Pengantar Algoritma dengan Bahasa C. Salemba


Teknika. ISBN : 979-9549-25-6. Bagian 4.

COMP6599 – Algorithm and Programming


LECTURE NOTES

COMP6599 – Algorithm and


Programming

Minggu 5
Sesi 6
Pointer dan Array

COMP6599 – Algorithm and Programming


LEARNING OUTCOMES

Learning Outcomes (Hasil Pembelajaran) :

Setelah menyelesaikan pembelajaran ini mahasiswa akan mampu :


1. LO 2 : Menerapkan sintaks-sintaks dan fungsi-fungsi bahasa pemrograman C dalam
pemecahan masalah.
2. LO 3 : Membuat program dengan menggunakan bahasa C dalam pemecahan masalah.

OUTLINE MATERI (Sub-Topic):Pointers dan Arrays

1. Pointer

2. Array

3. Pointer Constant & Pointer Variable

4. String

COMP6599 – Algorithm and Programming


Pointers dan Arrays
1. Array

Array adalah suatu tipe data terstruktur yang bertipe data sama dan berjumlah tetap
(berdasarkan apa yang ditentukan) dan diberi suatu nama tertentu (sesuai variabel).
Elemen-elemen array tersusun secara berurutan. Susunan tersebut membuat array
memiliki alamat yang bersebelahan / berdampingan dalam memori sesuai dengan
besar pemakaian memoritipe data yang digunakan. Namun, perlu diingat, walaupun
elemen-elemen nya tersusun secara berurutan, array tetap dapat diakses secara acak di
dalam memori. Array juga dapat berupa array 1 dimensi, 2 dimensi, bahkan n-
dimensi.

Berikut contoh penggambaran array pada bahasa C.

0 1 2 3 4 5 6 7 indeks
10 44 2 7 25 56 32 40 value
1d2 1d4 1d6 1d8 1da 2dc 2de 1ed alamat

Deklarasi Array :

data_typearray_name[size];

contoh :
charnama[26];
Contoh diatas berarti anda memesan tempat di memori computer sebanyak 26
tempat dengan indeks yang dapat digunakan dari index 0 sampai index 25.

a. Inisialisasi array 1D

Untuk memasukkan suatu nilai kedalam sebuah array, dapat dilakukan dengan
beberapa cara, salah satu caranya adalah :

int list[5] = {2,1,3,7,8};

Contoh di atas berarti program akan memasukkan angka 2, 1, 3, 7 dan 8 kedalam


sebuah array dengan nama list.

COMP6599 – Algorithm and Programming


b. Initializing Multidimensional Arrays

Untuk membuat array yang multi dimensi (contohnya pada penggunaan array
dalam konsep matrix). Dapat dilakukan inisialisasi dengan cara:

intvariabel[x][y] = {
{1, 2, ..., n},
{1, 2, ..., n},
... dst
};
Dalam hal ini jumlah array yang dapat digunakan adalah mulai dari index [0][0]
sampai dengan index [x-1][y-1]. Contoh:

int matrix[3][3] = {
{11, 12, 13},
{21, 22, 23},
{32, 31, 33},
};
Contoh di atas berarti program akan memasukkan kumpulan angka yang
berjumlah 9 tersebut kedalam array matrix yang akan menghasilkan: Matrix
[0][0] = 11 Matrix [0][1] = 12 Matrix [0][2] = 13 Matrix [1][0] = 21 Matrix [2][0]
= 32 Matrix [2][2] = 33 Dan seterusnya. Matrix yang dapat digunakan adalah
mulai dari index [0][0] sampai dengan [2][2] yang bila dihitungakan berjumlah 9
buah.

2. Pointer

Pointer adalah suatu variabel yang berisi alamat memori dari suatu variabel lain.
Pointer dilambangkan dengan operator “ * ” dan biasanya digunakan untuk
memanipulasi isi variabel di dalam memori. Contoh penggunaannya adalah:

int a = 5;
int b = 3;
int *p;
p = &a; //1
b = *p; //2

COMP6599 – Algorithm and Programming


Pada potongan program di atas dapat dilihat bahwa terdapat 3 buah variable yaitu a, b
dan pointer p. Variabel a bernilai 5, variabel b bernilai 3.Pada //1 p menerima alamat
dari a, dalam hal ini operator “&” digunakan untuk mengambil alamat dari variabel a,
jadi setelah statement //1 dijalankan maka pointer p akan memiliki alamat dari a.
Untuk mengambil nilai dari alamat yang dipegang oleh pointer p dapat dilakukan
dengan cara seperti statement //2. Dengan memanggil *p maka nilai dari variabel a
(alamat yang dipegang oleh p) akan diambil, dari contoh di atas nilai tersebut
diberikan ke variabel b. Seperti penggunaan array dalam sebuah variabel, sebuah
pointer juga dapat menggunakan array. Seperti contoh berikut ini:

int *ap[10];

Dari contoh di atas dapat dilihat bahwa variable ap adalah sebuah kumpulan variabel
yang dapat menyimpan 10 alamat dari variabel lain. Index dari pointer tersebut
dimulai dari *ap[0] sampai dengan *ap[9].

3. Pointer Constant & Pointer Variable

Pointer constant adalah pointer yang tidak dapat ditetapkan dengan nilai baru pada
saat run-time. Dalam hal ini array merupakan salah satu contoh pointer constant.
Berikut contoh pointer constant :

int B[4]; // B is an Array  pointer constant

Pointer variabel adalah pointer yang diberikan dengan nilai baru pada saat run-time.
Dengan contoh sebagai berikut :
int *ptr; //ptr is pointer variable
4. String
String adalah kumpulan karakter ASCII. Dalam bahasa C terdapat 2 cara
mendeklarasikan variable string, satu sebagai pointer to character dan yang lain
sebagai array of character. Penanda akhir string dilakukan dengan null character
(‘\0’).
Berikut contoh array of character pada bahasa C:

char name[40] = ”Amir”; //ok

COMP6599 – Algorithm and Programming


Berikut contoh pointer to character pada bahasa C :

char label[] = "Single";


char label2[10] = "Married";
char *labelPtr;

labelPtr = label;

String adalah array of character dimana sebuah string ini dapat dimanipulasi layaknya
sebuah array. Pada bahasa C menyediakan beberapa standart function yang dapat
digunakan untuk manipulasi string. Function ini tersimpan pada header string.h.
Berikut beberapa fungsi string manipulasi yang ada pada bahasa C :
a. strlen()
Fungsi ini mengembalikan angka yang menyatakan panjangnya suatu string tanpa
menghitung adanya null karakter pada ujung string.
Berikut adalah penggambaran dari fungsi strlen() pada bahasa C:

COMP6599 – Algorithm and Programming


Berikut contoh penggunaan fungsi strlen() pada bahasa C :

Pada program tersebut terlihat bahwa fungsi strlen() pada C menghitung


banyaknya kata pada suatu variable. Jika dimasukkan kata ‘String’pada program
tersebut maka program tersebut akan mengeluarkan panjang karakter dari variable
a, b, dan c. Sehingga dari program tersebut akan menghasilkan output sebagai
berikut :

b. strcpy(s1,s2)
Fungsi ini menyalin string dari s2 ke s1, s2 dapat berupa variable atau string
constant. Berikut adalah contoh penggunaan fungsi strcpy() pada bahasa C:

COMP6599 – Algorithm and Programming


Jika pada program tersebut dimasukkan kata “Programming Tutorial” yang
kemudian akan disimpan pada variabel a. Kemudian digunakan fungsi strcpy()
dimana variabel a disalin ke variabel b. Sehingga akan menghasilkan output
sebagai berikut :

c. strncpy(s1,s2,n)
Fungsi ini menyalin string dari s2 ke s1 sebanyak n karakter, s2 dapat berupa
variable atau string constant. Berikut adalah contoh penggunaan fungsi strncpy()
pada bahasa C :

Pada program tersebut variable src memiliki nilai ‘This is


tutorialspoint.com’dimana nilai dari variable src ini disalin kevariabel dest.
Penyalinan dilakukan hanya sebanyak 10 karakter sehingga hasil output dari
program tersebut adalah :

d. strcat(s1,s2)
Fungsi ini berguna untuk menambahkan nilai string dari s2 keakhir string s1, s2
dapat berupa variable atau string constant. Berikut adalah contoh penggunaan
fungsi strcat() pada bahasa C :

COMP6599 – Algorithm and Programming


Pada program tersebut variable src memiliki nilai ‘This is source’ dan variable
dest memiliki nilai ‘This is destination’. Jika menggunakan fungsi strcat maka
variable src akan ditambahkan diakhir variable dest. Sehingga hasil output dari
program tersebut adalah :

e. strncat(s1,s2,n)
Fungsi ini berguna untuk menambahkan n karakter pada string dari s2 keakhir
string s1, s2 dapat berupa variable atau string constant. Berikut adalah contoh
penggunaan fungsi strcat() pada bahasa C :

COMP6599 – Algorithm and Programming


Pada program tersebut variable src memiliki nilai ‘This is source’dan variable
dest memiliki nilai ‘This is destination’. Jika menggunakan fungsi strncat maka
variable src akan ditambahkan sebanyak 15 karakter diakhir variable dest.
Sehingga hasil output dari program tersebut adalah :

f. strcmp(s1,s2)
Fungsi ini berguna untuk membandingkan antara string s1 danstring s2, sescara
alfabetis. Berikut adalah contoh penggunaan fungsi strcmp() pada bahasa C :

Pada program tersebut dilakukan perbandingan antara 2 variabel yaitu str1


“abcdef” dengan variabel str2 “ABCDEF”. Terdapat variable ret yang berguna
untuk mengembalikan nilai dari fungsi strcmp() ini.

COMP6599 – Algorithm and Programming


Dengan ketentuan nilai fungsi yang dikembalikan sebagai berikut :
- jika nilai kembali< 0 maka str1 memiliki nilai kurang dari str2.
- Jika nilai kembali> 0 maka str2 memiliki nilai kurang dari str1.
- Jika nilai kembali = 0 maka str1 memiliki nilai yang sama dengan str2.
Sehingga hasil output dari program tersebut adalah :

COMP6599 – Algorithm and Programming


SIMPULAN

1. Array
Array adalah suatu tipe data terstruktur yang bertipe data sama dan berjumlah tetap
(berdasarkan apa yang ditentukan) dan diberi suatu nama tertentu (sesuai variabel).
2. Pointer
Pointer adalah suatu variabel yang berisi alamat memori dari suatu variabel lain.
Pointer dilambangkan dengan operator “*” dan biasanya digunakan untuk
memanipulasi isi variabel di dalam memori.
3. Pointer Constant & Pointer Variable
Pointer constant adalah pointer yang tidak dapat ditetapkan dengan nilai baru pada
saat run-time.
Pointer variabel adalah pointer yang diberikan dengan nilai baru pada saat run-time.
4. String
String adalah kumpulan karakter ASCII. Dalam bahasa C terdapat 2 cara
mendeklarasikan variable string, satu sebagai pointer to character dan yang lain
sebagai array of character. Terdapat fungsi string manipulasi yang dapat digunakan
dalam bahasaC :
– strlen()
– strcpy(s1,s2)
– strncpy(s1,s2,n)
– strcat(s1,s2)
– strncat(s1,s2,n)
– strcmp(s1,s2)

COMP6599 – Algorithm and Programming


DAFTAR PUSTAKA
1. https://www.cs.bu.edu/teaching/cpp/string/array-vs-ptr/
2. http://www.programiz.com/c-programming/library-function/string.h

3. http://www.tutorialspoint.com/c_standard_library/string_h.htm

4. Paul J. Dietel,Harvey M. Deitel,. 2010. C : how to program. PEAPH. New Jersey. ISBN:978-0-
13-705966-9 Chapter 6 & 7

5. C Programming – Pointers: http://www.exforsys.com/tutorials/c-language/c-pointers.html

6. Storing Similar Data Items: http://aelinik.free.fr/c/ch12.htm

7. Thompson Susabda Ngoen, 2006. Pengantar Algoritma dengan Bahasa C. Salemba


Teknika. ISBN : 979-9549-25-6. Bagian 6.

COMP6599 – Algorithm and Programming


LECTURE NOTES

COMP6599 – Algorithm and


Programming

Minggu 6
Sesi 10
Function and Recursion

COMP6599 – Algorithm and Programming


LEARNING OUTCOMES

Learning Outcomes (Hasil Pembelajaran) :

Setelah menyelesaikan pembelajaran ini mahasiswa akan mampu :


1. LO 3 : Membuat program dengan menggunakan bahasa C dalam pemecahan masalah.

OUTLINE MATERI(Sub-Topic):Function dan Recursion

1. Modular Programming

2. Function

3. Identifier Scoping

4. Passing Parameter

5. Recursion

6. Iterative vs. Recursive

COMP6599 – Algorithm and Programming


Function dan Recursion
1. Modular Programming

Dalam pembuatan perancangan program yang baik biasanya digunakan kosep


pemrograman modular. Konsep ini merupakan meyode untuk memecahkan suatu
masalah menjadi bagian-bagian yang lebih kecil (ke dalam modul-modul). Dengan
membagi permasalahan tersebut menjadi beberapa modul, maka permasalahan
tersebut akan dapat menjadi lebih sederhana, sehingga memudahkan dan lebih mudah
memahami dalam penyusunan program. Dalam bahasa C modul dinyatakan dengan
menggunakan funngsi (function).

Terdapat keuntungan dalam menggunakan modul yaitu :

a. Rancangan program besar akan dapat dibagai menjadi modul-modul yang lebih
kecil.
b. Modul-modul yang telah disederhanakan dapat dikerjakan oleh beberapa orang.
c. Mempermudah dalam mencari kesalahan karena alur logika yang telah terstruktur,
dan kesalahan dapat ditelusuri dari 1 modul saja.
d. Modul ini dapat digunakan berkali-kali jika diperlukan (software reusability).
e. Dapat melakukan modifikasi pada suatu modul tanpa mengganggu program secara
keseluruhan.
f. Mempermudah dokumentasi.

Terdapat sifat-sifat yang menggambarkan modul yang baik :

- Fan-in yang tinggi : makin sering suatu modul dipanggil oleh pemakai, semakin
tinggi nilai fan-in.
- Fan-out yang rendah : makin sedikit (spesifik) tugas yang ada pada suatu modul,
makin rendah fan-out.
- Self-contained : kemampuan memenuhi kebutuhannya sendiri.

COMP6599 – Algorithm and Programming


2. Function

Function merupakan sekelompok pernyataan yang digunakan berasama-sama untuk


melakukan tugas. Pada program C memiliki setidaknya 1 fungsi utama, yaitu main();
dan pada suatu program dapat membuat fungsi lainnya selain fungsi main();.

Function pada bahasa C dibagi menjadi 2 kelompok yaitu :

a. Standart library function.


Standar library function adalah fungsi-fungsi yangtelah disediakan oleh compiler
C, sehingga programmer hanya tinggal menggunakannya saja. Untuk
menggunakan standart library function diperlukan header library khusus yang
dipanggil untuk mendefinisikan fungsi tersebut. Berikut contoh penggunaan
standart library function pada bahasa :

Pada program tersebut terlihat bahwa terdapat 2 fungsi yang digunakan, yaitu
printf(), dan sqrt(). Kedua fungsi tersebut dapat digunakan jika memanggil
headerlibrary. Dimana header library dari printf() adalah #include <stdio.h>, dan
headerlibrary dari sqrt() adalah #include <math.h>
b. Programmer-defined function.
Programmer-defined function adalah fungsi-fungsi yang dibuat oleh programmer
sesuai kebutuhan program. Function yang dibuat dapat digunakan dalam 1
program saja atau dibuat menjadi library yang berisi fungsi-fungsi sejenis.

COMP6599 – Algorithm and Programming


Dalam merancang function ada beberapa hal yang perlu ditentukan :
- Data yang diperlukan function sebagai masukkan (input) untuk diolah.
- Informasi apa yang dihasilkan (dikembalikan) function kepada pemanggil.
- Algoritma yang digunakan untuk mengolah data masukkan menjadi informasi
keluaran.

Berikut adalah penggambaran pembuatan function pada bahasa C :

return_type function_name( parameter list )


{
body of the function
}

Definisi function pada bahasa C terdiri darifunctionheader, dan functionbody. Berikut


penjelasan dari bagian function :

 Return type : return type adalah tipe data dari nilai kembali function. Beberapa
function melakukan oeprasi yang diinginkan tanpa memerlukan pengembalian
nilai. Dalam hal ini, void dapat digunakan menjadi return-type yang tidak
memerlukan pengembalian nilai.
 Function name : penamaan function, digunakan untuk mempermudah
pemanggilan function. Penamaan function sama halnya dengan syarat penamaan
variabel.
 Parameters : sebuah parameter seperti sebuah tempat. Ketika function dipanggil,
maka pemanggilan tersebut akan melewati paramter ini. Nilai parameter ini
disebut sebagai aktual atau argumen. Banyaknya dan jenis parameter sesuai
dengan jumlah parameter yang dipanggil pada function lainnya atau functionmain.
 Function body :function body mengandung kumpulan penyataan yang
mendefinisikan apa yang function tersebut lakukan.

COMP6599 – Algorithm and Programming


Berikut penggambaran nyata penggunaan function pada bahasa C :

3. Identifier Scoping

Berdasarkan jangkauannya identifier dibagi menjadi 2, yaitu :

a. Globalidentifier
Global identifer merupakan identifier yang dideklarasikan di luar function dan
ditempatkan di atas semua function dalam suatu program. Jangkauannya biasanya
meliputi seluruh program. Identifier yang dideklarasikan secara global, dapat
dideklrasikan kembali di dalam function.
b. Localidentifier
Local identifier merupakan identifier yang dideklrasikan di dalam function,
termasuk dalam daftar parameter. Jangkauannya terbatas pada function itu sendiri.

Berikut keuntungan dan kerugian dalam menggunakan global identifier :

- Keuntungan :
o Transfer data antar function menjadi mudah.
- Kerugian :
o Jika program semakin besar, maka semakin besar juga kecendurngan
terjadinya kesalahan.
o Sulit melacak kesalahan.
o Data tidak terjaga dengan baik, setiap function dapat mengubah isi variabel
tanpa sepengetahuan function lainnya.

COMP6599 – Algorithm and Programming


4. Passing Parameter

Jika satu function memanggil function yang lain untuk melakukan tugas tertentu,
kepada function yang dipanggil (called function) diberikan seluruh data yang
diperlukan untuk melakukan tugas yang diberikan oleh function pemanggil. Setelah
melakukan tugas function yang dipanggil mengembalikan hasil proses kepada
function pemanggil (calling function). Pengiriman data trsebut melalui parameter
yang menjadi interface (penghubung) suatu modul dengan modul yang lain.
Pengiriman paramter di dalam bahasa C terdapat 2 jenis yaitu :

- Call by value
Call by value, adalah pengiriman ke function lain berupa nilai (r-value). Nilai
parameter aktual akan disalin ke parameter formal. Dengan cara ini nilai
parameter aktual tidak berubah sekalipun terjadi perubahan nilai parameter
formal. Berikut contoh program function call by value pada bahasa C :

Pada program tersebut dapat dilihat pada saat di functionmain memanggil fungsi
tukar untuk memelakukan tugas penukaran variabel a dan b. Maka fungsi tukar
akan melakukan tugasnya dan mengembalikan hasil proses yang ada dalam fungsi
tukar tersebut.

COMP6599 – Algorithm and Programming


Berikut hasil output dari program function call by value :

- Call by reference
Pemanggilan dengan alamat yang dilakukan dengan cara mengirimkan alamat-
alamat variabel melalui parameter aktualnya ke function yang dipanggil. Function
yang dipanggil kemudian menampung alamat-alamat ini pada variabel-variabel
pointer yang terdapat dalam daftar parameter formal. Dengan cara pemanggilan
ini, jika terdapat perubahan terhadap data yang dikirimkan, perubahan yang terjadi
tidak hanya secara lokal saja. Semua perubahan data yang dilakukan pada function
yang dipanggil akan otomatis mengubah data pada function yang memanggil. Hal
ini disebabkan informasi yang dikirimkan ke function yang dipanggil adalah
alamat data tersebut, sehingga perubahan teradap data dilakukan langsung di
tempat data itu tersimpan. Call by reference disebut juga call by location.
Berikut adalah contoh dari function call by reference pada bahasa C :

Pada program ini hasil nilai yang telah ditukar tidak dapat dicetak langsung pada
fungsi tukar. Hal ini dikarenakan jika mencetak langsung dari fungsi tukar maka
yang akan dicetak adalah alamat dari nilai x, dan y. Karena nilai x dan y berasal
dari alamat &a, dan &b.

COMP6599 – Algorithm and Programming


Program tersebut akan menghasilkan output yang sama dengan function call by
value.

5. Recursion

Rekursif (recursion) adalah suatu proses yang memanggil dirinya kembali. Dalam
bahasa C rekursif dilakukan oleh function. Function yang memanggil dirinya sendiri
disebut sebagai recursive function. Berikut adalah bentuk sintaks fungsi recursif pada
bahasa C :
void recursion()
{
recursion(); /* function calls itself */
}

int main()
{
recursion();
}

Berikut contoh program rekursif pada bahasa C :

COMP6599 – Algorithm and Programming


Pada awal program tersebut diminta untuk memasukkan inputan, jika user
memasukkan 10. Maka bilangan 10 akan disimpan pada variabel bil. Pada fungsi
main dipanggil fungsi count, yang mana didalam struktur fungsi count, terdapat
rekursi yang dijalankan untuk mencetak 10 hingga 0 (batasan yang telah ditentukan
pada program).dari program tersebut akan menghasilkan output sebagai berikut :

Dalam penggunaanya rekursif memiliki kekurangan yaitu :


- Memerlukan memori yang lebih banyak untuk menyimpan activation record dan
variabel. Activation record diperlukan waktu proses kembali kepada fungsi
pemanggil.
- Memerlukan waktu yang lebih lama untuk menangani activation record.

Secara umum penggunaan rekursif dilakukan hanya jika :


a. Penyelesaian tidak dapat dilakukan secara iteratif (perulangan).
b. Efisiensi dengan cara rekursif sudah sesuai.
c. Fungsi rekursif setidaknya memiliki 1 kondisi yang digunakan untuk keluar dari
proses rekursif tersebut, jika tidak maka fungsi rekursif akan memanggil dirinya
sendiri sampai terjadi runtime stack overflows.

6. Iterative vs. Recursive

Jika sebuah masalah dapat diselesaikan dengan cara iteratif maka gunakan iteratif.
Jika penyelesaian dengan iteratif memerlukan algoritma yang cukup rumit maka dapat
meggunakan pendekatan rekursif karena rekursif memerlukan sumber daya yang
banyak.

COMP6599 – Algorithm and Programming


SIMPULAN

1. Modular Programming
Dalam pembuatan perancangan program yang baik biasanya digunakan kosep
pemrograman modular. Konsep ini merupakan meyode untuk memecahkan suatu
masalah menjadi bagian-bagian yang lebih kecil (ke dalam modul-modul). Function
Function merupakan sekelompok pernyataan yang digunakan berasama-sama untuk
melakukan tugas. Pada program C memiliki setidaknya 1 fungsi utama, yaitu main();
dan pada suatu program dapat membuat fungsi lainnya selain fungsi main();.
Function pada bahasa C dibagi menjadi 2 kelompok yaitu :
- Standart library function.
- Programmer-defined function
2. Identifier Scoping

Berdasarkan jangkauannya identifier dibagi menjadi 2, yaitu :

a. Globalidentifier
Global identifer merupakan identifier yang dideklarasikan di luar function dan
ditempatkan di atas semua function dalam suatu program.
b. Localidentifier
Local identifier merupakan identifier yang dideklrasikan di dalam function,
termasuk dalam daftar parameter. Jangkauannya terbatas pada function itu sendiri.
3. Passing Parameter

Jika satu function memanggil function yang lain untuk melakukan tugas tertentu,
kepada function yang dipanggil (called function) diberikan seluruh data yang
diperlukan untuk melakukan tugas yang diberikan oleh function pemanggil.

Pengiriman paramter di dalam bahasa C terdapat 2 jenis yaitu :

- Call by value
- Call by reference / location

4. Recursion

Rekursif (recursion) adalah suatu proses yang memanggil dirinya kembali. Dalam
bahasa C rekursif dilakukan oleh function.

5. Iterative vs. Recursive


Jika sebuah masalah dapat diselesaikan dengan cara iteratif maka gunakan iteratif.

COMP6599 – Algorithm and Programming


DAFTAR PUSTAKA

1. Paul J. Dietel,Harvey M. Deitel,. 2010. C : how to program. PEAPH. New Jersey. ISBN:978-0-
13-705966-9 Chapter 5

2. Functions in C: http://aelinik.free.fr/c/ch15.htm

3. C Recursive Function: http://cprogramminglanguage.net/c-recursive-function.aspx

4. http://www.programiz.com/c-programming/library-function

5. http://www.cprogramming.com/tutorial/c/lesson16.html

6. Thompson Susabda Ngoen, 2006. Pengantar Algoritma dengan Bahasa C. Salemba


Teknika. ISBN : 979-9549-25-6. Bagian 5.

COMP6599 – Algorithm and Programming


LECTURE NOTES

COMP6599 – Algorithm and


Programming

Minggu 7
Sesi 11
Structure & Union

COMP6599 – Algorithm and Programming


LEARNING OUTCOMES

Learning Outcomes (Hasil Pembelajaran) :

Setelah menyelesaikan pembelajaran ini mahasiswa akan mampu :


1. LO 2 : Menerapkan sintaks-sintaks dan fungsi-fungsi bahasa pemrograman C dalam
pemecahan masalah.
2. LO 3 : Membuat program dengan menggunakan bahasa C dalam pemecahan masalah.

OUTLINE MATERI(Sub-Topic):Structures & Union

1. Structure

2. Typedef

3. Union

4. Enumeration

COMP6599 – Algorithm and Programming


Structures & Union
1. Structure

Structure atau struct merupakan struktur data yang menggabungkan beberapa data
yang berbeda tipe (heterogen) tetapi data tersebut saling berkaitan. Misalnya data
mengenai StudentId, nama, dan IPK seorang mahasiswa. Ketiga data ini memiliki tipe
data yang berbeda tetapi masih saling berhubungan yaitu data akademik seorang
mahasiswa. Dengan megngunakan structmaka data ini bisa diolah per-elemen (per
field) atau secara keseluruhan (per struct, per record). Berikut contoh sintaks struct
pada bahasa C :

struct [type_name]
{
member definition;
member definition;
...
member definition;
} [one or more structure variables];

Type_name : adalah nama tipe struct.


Member definition : adalah nama member atau field.
one or more structure variables : adalah nama variabel struct.
Berikut adalah beberapa contoh deklarasi struct pada bahasa C :

COMP6599 – Algorithm and Programming


Pada beberapa compiler C, keyword struct pada deklarasi variabel struct secara
terpisah dapat dihilangkan. Seperti tipe data yang lain, sebuah variabel struct dapat
diinisialisasi diawal pada saat pendeklarasian. Berikut contoh inisialisasi struct pada
C:

Untuk mengakses field struct gunakan dotoperator yaitu nama variabel struct diikuti
titik dan nama field. Berikut adalah hasil output dari contoh inisialisasi sturct diatas :

2. Typedef

Pada bahasa pemrograman C disediakan keyword typedef, yang dapat digunakan


untuk membuat tipe penamaan baru.

COMP6599 – Algorithm and Programming


Misalnya typedef dapat digunakan dengan struct untuk mendefinisikan tipe data baru
dan kemudian tipe data ini digunakan untuk mendefinisikan variabel struct, dengan
contoh sebagai berikut :

Berikut output dari program tersebut adalah :

3. Union

Union digunakan untuk kongsi (menggabungkan) memori. Dengan menggunakan


union, suatu lokasi memori dapat ditempati oleh dua atau beberapa variabel dengan
masing-masing tipe data yang berbeda.Berikurt sintaks dalam penggunaan union pada
bahasa C :

union [type_name]
{
member definition;
member definition;
...
member definition;
} [one or more union variables];

COMP6599 – Algorithm and Programming


Type_name : adalah nama tipe union.
Member definition : adalah nama-nama variabel yang kongsi memori, minimal
memiliki 2 variabel.
one or more union variables : adalah nama variabel union.
Berikut contoh penggunaan union pada bahasa C :

Pada contoh program tersebut terlihat bahwa memori terbesar adalah charstr sebesar
20 byte maka memori yang dibutuhkan adalah sebesar 20 byte. Dari program tersebut
akan menghasilkan output sebagai berikut :

4. Enumeration

Enumeration adalah tipe data yang ditetapkan oleh pengguna yang terdiri dari
konstanta integral dan setiap konstanta tersebut diberikan nama. Berikut sintaks enum
pada bahasa C :

enumtype_name{ value1, value2,...,valueN };

Type_name : adalah nama dari tipe data enum.

Value : nilai dari enum.

COMP6599 – Algorithm and Programming


Berikut adalah contoh penggunaan enum pada bahasa C :

Berikut hasil dari output program diatas :

COMP6599 – Algorithm and Programming


SIMPULAN

1. Structure atau struct merupakan struktur data yang menggabungkan beberapa data
yang berbeda tipe (heterogen) tetapi data tersebut saling berkaitan.
2. Typedef, yang dapat digunakan untuk membuat tipe penamaan baru. Misalnya typedef
dapat digunakan dengan struct untuk mendefinisikan tipe data baru dan kemudian tipe
data ini digunakan untuk mendefinisikan variabel struct.
3. Union digunakan untuk kongsi (menggabungkan) memori. Dengan menggunakan
union, suatu lokasi memori dapat ditempati oleh dua atau beberapa variabel dengan
masing-masing tipe data yang berbeda.
4. Enumeration adalah tipe data yang ditetapkan oleh pengguna yang terdiri dari
konstanta integral dan setiap konstanta tersebut diberikan nama.

COMP6599 – Algorithm and Programming


DAFTAR PUSTAKA

1. Paul J. Dietel,Harvey M. Deitel,. 2010. C : how to program. PEAPH. New Jersey.


ISBN:978-0-13-705966-9 Chapter 10
2. Collecting Data Items of Different Types: http://aelinik.free.fr/c/ch19.htm
3. Structs, Enums, and Unions: http://www.lysator.liu.se/c/c-faq/c-9.html
4. http://www.tutorialspoint.com/cprogramming/c_structures.htm
5. http://www.tutorialspoint.com/cprogramming/c_typedef.htm
6. http://www.tutorialspoint.com/cprogramming/c_unions.htm
7. http://www.programiz.com/c-programming/c-enumeration
8. Thompson Susabda Ngoen, 2006. Pengantar Algoritma dengan Bahasa C. Salemba
Teknika. ISBN : 979-9549-25-6. Bagian 6.

COMP6599 – Algorithm and Programming


LECTURE NOTES

COMP6599 – Algorithm and


Programming

Minggu 8
Sesi 12
Memory Allocation

COMP6599 – Algorithm and Programming


LEARNING OUTCOMES

Learning Outcomes (Hasil Pembelajaran) :

Setelah menyelesaikan pembelajaran ini mahasiswa akan mampu :


1. LO 2 : Menerapkan sintaks-sintaks dan fungsi-fungsi bahasa pemrograman C dalam
pemecahan masalah.
2. LO 3 : Membuat program dengan menggunakan bahasa C dalam pemecahan masalah.

OUTLINE MATERI(Sub-Topic):Memory Allocation

1. Static

2. Void * Data Type

3. Command Execution

4. Memory Allocation

5. Macro

6. Pointer to Function

7. C Preprocessor

COMP6599 – Algorithm and Programming


Memory Allocation

1. Static

Static merupakan salah satu keyword yang ada pada bahasa C dimana keyword ini
digunakan untuk menandai atau menetapkan suatu kondisi. Berikut adalah contoh
sintaks penggunaan static pada bahasa C :

Static tidak seperti global variabel pada C, akses fungsi static dibatasi untuk setiap
file yang di tetapkan dengan keyword static. Karena itu, jika ingin membatasi akses ke
fungsi yang telah dibuat maka fungsi tersebut harus di buat menjadi static. Berikut
contoh fungsi static untuk membatasi akses pada bahasa C :

Sebagai contoh, jika ada program pada file file.c :

Dan kemudian ada file lain dengan nama file2.c :

Jika file1.c dan file2.c dieksekusi maka akan terjadi error. Hal ini dikarenakan fungsi
fun1 pada file1.c dideklrasikan sebagai fungsi static sehingga tidak dapat digunakan
pada file2.c.

COMP6599 – Algorithm and Programming


2. Void * Data Type

Tipe data void merupakan tipe data yang tidak megembalikan nilai. Void digunakan
dalam 3 jenis situasi :

a. Function return as void


Ada berberapa fungsi pada pemrograman C yang tidak membutuhkan
pengembalian nilai. Sebuah fungsi tanpa pengembalian nilai maka fungsi tersebut
memiliki tipe void. Sebagai contoh : void exit (int status);
b. Function arguments as void
Ada beberapa fungsi pada pemrograman C yang tidak menerima parameter sama
sekali. Sebuah fungsi tanpa parameter dapat diterima sebagai void. Sebagai contoh
: int rand(void);
c. Pointers to void
Sebuah pointer dengan tipe void* merupakan alamat dari sebuah objek. Sebagai
contoh alokasi memori fungsi void * malloc (size_t size); maka pengembaliannya
adalah pointertovoid yang dapat diterapkan untuk semua jenis tipe data.

3. Command Execution

Command execution merupakan pemanggilan prosesor untuk dijalankan. Sebagai


contoh command execution pada bahasa C :

#include <stdio.h>/* printf */


#include <stdlib.h>/* system, NULL, EXIT_FAILURE */

int main ()
{
inti;
printf ("Checking if processor is available...");
if (system(NULL)) puts ("Ok");/* command execution */
else exit (EXIT_FAILURE);
printf ("Executing command DIR...\n");
i=system ("dir");
printf ("The value returned was: %d.\n",i);
return 0;
}

COMP6599 – Algorithm and Programming


Pada program tersebut terdapat pointer null, fungsi hanya memeriksa apakah prosesor
perintah tersedia melalui fungsi tersebut atau tidak, tanpa memanggil perintah apapun.
Pemanggilan perintah ini tergantung pada sistem dan standart library yang tersedia.

4. Memory Allocation

Memory allocation adalah alokasi memori yang dibutuhkan oleh suatu program saat
menjalankan eksekusi pada program tersebut. Memori yang digunakan merupakan
RAM yang dikelola oleh operating system (OS) yang akan digunakan oleh program.
Pada memory allocation ini juga tedapat de-allocation yang gunanya adalah melepas
memory (RAM) yang telah digunakan kembali ke OS. Terdapat 2 jenis memory
allocation yaitu :

a. Satic
Static adalah memory allocation yang telah ditetapkan sebelumnya. Biasanya
disimpan pada local stack memory. Dapat di de-allocated pada saat program
berakhir. Contoh dari static memori adalah struct, array.
b. Dynamic
Saat mengeksekusi suatu program dan ternyata ukuran array yang telah
ditentukan tidak cukup atau kurang dibanding memory yang diperukan. Maka
salah satu cara untuk mengatasi ini adalah dynamic memory dimana
memungkinkan sebuah program untuk lebih fleksibel mendapatkan ruang
memory. Terdapat 4 jenis memory allocation yang dapat digunakan pada bahasa C
:
- malloc() : alokasi membutuhkan ukuran byte dan mengembalikan pointer pada
byte pertama pada memory yang dialokasikan. Berikut sintaks dari malloc
pada bahasa C :

ptr=(cast-type*)malloc(byte-size)

- calloc() : mengalokasikan tempat pada setiap elemen memory dimana setiap


elemen diberikan ukurannya masing-masing. Calloc menginisialisasikan
seluruh elemen dengan 0. Berikut sintaks dari calloc pada bahasa C :

COMP6599 – Algorithm and Programming


ptr=(cast-type*)calloc(n,element-size);

- realloc() : digunakan untuk realokasi memory atau elemen secara


dinamis.Berikut sintaks dari realloc pada bahasa C :

ptr=realloc(ptr,newsize);

- free() : digunakan untuk melepas memory yang telah selesai


digunakan.Berikut sintaks dari free pada bahasa C :

free(ptr);

5. Macro

Macro pada bahasa C memungkinkan nilai-nilai konstan dapat digunakan di seluruh


code program.Macro sendiri bukan merupakan variabel dan tidak dapat diubah seperti
melakukan perubahan nilai pada variabel. Biasanya macro ini digunakan untuk
membuat konstanta yang mewakili angka, string, atau ekspresi.Define merupakan
salah satu macro pada bahasa C. Berikut sintaks define pada bahasa C :

#define CNAME value

Berikut contoh program penggunaan define :

Berikut hasil output dari program tersebut :

COMP6599 – Algorithm and Programming


6. Pointer to Function

Pointer to function adalah penempatan alamat dari suatu fungsi dalam memori.
Berikut sintaks pointer tofunction pada bahasa C :

return_type (* pointer_name)(parameter);

Berikut contoh penerapan pointer to function pada bahasa C :

Pada program tersebut terdapat 2 cara untuk memberikan nilai pada fungsi cetak yaitu
dengan cara 1 atau dengan cara 2. Hasil output dari program tersebut adalah :

7. C Preprocessor

C preprocessor bukan bagian dari compiler, tetapi merupakan langkah yang terpisah
dalam proses kompilasi.C Preprocessor hanyalah alat pengganti teks dan
menginstruksikan compiler untuk melakukan diperlukan pra-pengolahan sebelum
kompilasi yang sebenarnya. Preprocessor ini biasanya dibuat sebagai CPP.

COMP6599 – Algorithm and Programming


Seluruh perintah preprocessor dimulai dengan simbol #.Berikut beberapa daftar
preprocessor pada bahasa C :

COMP6599 – Algorithm and Programming


SIMPULAN

1. Static merupakan salah satu keyword yang ada pada bahasa C dimana keyword ini
digunakan untuk menandai atau menetapkan suatu kondisi.
2. Tipe data void merupakan tipe data yang tidak megembalikan nilai. Void digunakan
dalam 3 jenis situasi :
a. Function return as void :void exit (int status);
b. Function arguments as void: int rand(void);
c. Pointers to void
3. Command execution merupakan pemanggilan prosesor untuk dijalankan.
4. Memory allocation adalah alokasi memori yang dibutuhkan oleh suatu program saat
menjalankan eksekusi pada program tersebut. Memori yang digunakan merupakan
RAM yang dikelola oleh operating system (OS) yang akan digunakan oleh program.
Terdapat 2 jenis memory allocation yaitu :static dan dynamic.
5.
6. Macro pada bahasa C memungkinkan nilai-nilai konstan dapat digunakan di seluruh
code program. Macro sendiri bukan merupakan variabel dan tidak dapat diubah
seperti melakukan perubahan nilai pada variabel.
7. Pointer to function adalah penempatan alamat dari suatu fungsi dalam memori.
8. C preprocessor bukan bagian dari compiler, tetapi merupakan langkah yang terpisah
dalam proses kompilasi.

COMP6599 – Algorithm and Programming


DAFTAR PUSTAKA

1. Paul J. Dietel,Harvey M. Deitel,. 2010. C : how to program. PEAPH. New Jersey.


ISBN:978-0-13-705966-9 Chapter 2, 13 & 14
2. C - Storage Classes: http://www.tutorialspoint.com/ansi_c/c_storage_classes.htm
3. C Programming - Dynamic Memory allocation: http://www.exforsys.com/tutorials/c-
language/dynamic-memory-allocation-in-c.html
4. C – Preprocessors :
http://www.tutorialspoint.com/cprogramming/c_preprocessors.htm
5. http://www.geeksforgeeks.org/what-are-static-functions-in-c/
6. http://www.embedded.com/design/programming-languages-and-tools/4429397/The-
C-keyword--static-
7. http://crasseux.com/books/ctutorial/void.html
8. http://www.tutorialspoint.com/cprogramming/c_data_types.htm
9. http://www.cplusplus.com/reference/cstdlib/system/
10. http://www.programiz.com/c-programming/c-dynamic-memory-allocation

11. http://www.techonthenet.com/c_language/constants/create_define.php

12. http://www.cprogramming.com/tutorial/function-pointers.html

13. http://www.tutorialspoint.com/cprogramming/c_preprocessors.htm

COMP6599 – Algorithm and Programming


LECTURE NOTES

COMP6599 – Algorithm and


Programming

Minggu 9
Sesi 13
File Processing

COMP6599 – Algorithm and Programming


LEARNING OUTCOMES

Learning Outcomes (Hasil Pembelajaran) :

Setelah menyelesaikan pembelajaran ini mahasiswa akan mampu :


1. LO 2 : Menerapkan sintaks-sintaks dan fungsi-fungsi bahasa pemrograman C dalam
pemecahan masalah.
2. LO 3 : Membuat program dengan menggunakan bahasa C dalam pemecahan masalah.
3. LO 4 : Mendesain program dengan proses File dengan menggunakan bahasa C dalam
pemecahan masalah.

OUTLINE MATERI(Sub-Topic):File Processing

1. Files and Streams

2. Open File

3. Close File

4. Input & Output File

COMP6599 – Algorithm and Programming


File Processing

1. Files and Streams


File digunakan untuk penyimpanan data yang bentuknya adalah permanen bukan
sementara. Berbeda dengan array yang menyimpan data namun hanya sementara
(hanya selama program dijalankan).File dapat disebut juga sebagai kumpulan record.
Stream adalah kumpulan karakter yang disusun dalam baris-baris yang berpindah dari
satu media ke media lain pada sistem komputer. Semua data dimasukkan dan
dikeluarkan berupa stream. Bahasa C file sama dengan stream. Saat program
dijalankan maka ada 3 stream yang akan langsung diaktifkan. Masing-masing stream
berasosiasi dengan sebuah file. Berikut penjelasan ke-3 stream:
a. Standart input stream, yang mengatur aliran data masukkan melalui ketikkan
keyboard.
b. Standartoutputstream, yang mengatur aliran data keluaran ke layar monitor.
c. Standarterrorstream, yang mengatur tampilan pesan kesalahan ke layar monitor.
Operasi terhadap file dapat dikelompokkan atas operasi yang mengolah isi file
(membaca file, dan menulis file) dan operasi yang tidak mengolah isi file (mengganti
file, menghapus file). operasi yang mengolah isi filememerlukan buffer untuk
menampung informasi yang berhubungan dengan file tersebut.
Operasi untuk mengaktifkan sebuah filemengakibatkan sebuah pointer dikembalikan
kepada instruksi pemanggil. Pointer ini menunjuk ke sebuah struktur bertipe
FILEyang telah didefinisikan di librarystdio.h. struktur ini berisikan informasi
mengenai file yang dibuka. Untuk ke-3 file baku yang dibuka secara otomatis, pointer
file-nya adalah stdin, stdout, dan stderr.
Berikut merupakan sintaks untuk menyiapkan buffer pada bahasa C :
FILE *fp;
Berikut cara mendeklarasi FILEpada bahasa C :

COMP6599 – Algorithm and Programming


2. Open File
Openfile adalah dimana dilakukan manipulasi terhadap sebuah file yang diawali
dengan mengaktifkan file tersebut melalui function fopen(). Sehingga function-
function untuk membaca dan menulis data ke dalam file dapat dikerjakan selama
program berjalan. Berikut sintaks yang digunakan untuk fopen pada bahasa C :
FILE *fopen (const char *filename, const char *mode );
Function ini mengasosiasikan nama file fisik dengan bufferarea, mengembalikan
pointer ke awal bufferarea, jika gagal maka akan mengembalikan NULL.
Pada openfile ini juga terdapat mode untuk mengakses file. Berikut tablemode yang
digunakan dalam mengakses file :

Berikut cara membuka file (fopen) pada bahasa C :

3. Close File
Setelah selesai di proses (openfile) maka file harus ditutup dengan memanggil
functionfclose() atau fcloseall().
- fclose() : function ini menutup file stream tertentu. Apabila proses berhasil maka
dikembalikan 0. Apabila terjadi kesalahan saat menutup file maka
dikembalikanEOF(end of file).Berikut sintaks untuk fclose pada bahasa C :

COMP6599 – Algorithm and Programming


intfclose (FILE*stream);
- fcloseall() : function ini menutup seluruh stream yang aktif kecuali stdin, stdout,
stderr. Apabila proses berhasil maka dikembalikan bilangan yang menyatakan
jumlah stream yang berhasil di tutup apabila terjadi kesalahan maka dikembalikan
EOF(end of file). Berikut sintaks untuk fcloseall pada bahasa C :
int fcloseall (void);
Berikut cara menutup file (fclose) pada bahasa C :

4. Input & Output File


Input dan outputfile memiliki fungsi yang sama dengan input dan output pada fungsi
bahasa C. Yang membedakan adalah input dan output yang dilakukan menggunakan
file sebagai informasi yang dimasukkan dan dikeluarkan. Berikut beberapa fungsi
yang dapat digunakan untuk melakukan input dan output pada file dalam bahasa C :
- fputc (output)
Fungsi ini digunakan untuk menulis 1 karakter C kedalam filestream. Jika proses
penulisan berhasil aka dikembalikan 1 karakter. Apabila proses tidak berhasil
maka dikembalikan EOF (end of file). Berikut deklarasi fputc pada bahasa C :
intfputc ( int character, FILE * stream );
Berikut contoh program penggunaan fputc pada bahasa C :

COMP6599 – Algorithm and Programming


Pada program tersebut jika dieksekusi tidak akan terjadi apa namun akan dibentuk
1 file dengan nama file1.txt. dimanaisi file tersebut merupakan hasil dari
penggunaan fputc. Berikut isi file1.txt yang telah dieksekusi :

- fgetc (input)
Fungsi ini digunakan untuk membaca karakter dari file stream. Apabila proses
pembacaan berhasil maka dikembalikan karakter yang terbaca. Apabila gagal
membaca karakter pada file maka akan dikembalikan EOF (end of file). Berikut
deklarasi dari fgetc pada bahasa C :
intfgetc ( FILE * stream );
Berikut contoh program penggunaan fgetc pada bahasa C:

COMP6599 – Algorithm and Programming


Pada program tersebut jika file yang ingin di baca karakter tidak tersedia maka
akan mencetak pesan “Gagal buka file”, namun jika file yang ingin di baca
karakterter sedia maka akan tercetak pada program dengan tampilan sebagai
berikut :

- fputs (output)
fungsi ini digunakan untuk menulis sejumlah karakter string yang diakhiri NULL
ke file stream, tetapi karakter NULL tersebut tidak ikut dituli spada file, dan tidak
ada juga penambahan karakter pada new line. Apabila proses penulisan berhasil
maka fungsi ini akan mengembalikan sebuah bilangan positif, jika gagal maka
akan mengembalikan EOF. Berikut deklarasi fputs pada bahasa C :
intfputs ( const char * str, FILE * stream );
Berikut contoh program penggunaan fputs pada bahasa C:

COMP6599 – Algorithm and Programming


Dari program tersebut terlihat bahwa user akan diminta untuk memasukkan kata
yang akan ditulis kedalam file2.txt. Dengan mode “a” yang berarti setiap kata
yang dimasukkanakanselalubertambahdidalamfile.
Berikutadalahcarapengisian program ketika program dieksekusi.

Kemudian dilakukan pengisian lagi dengan kata-kata sebagai berikut :

Maka hasil output pada file2.txt adalah :

- fgets (input)
Fungsi yang digunakan untuk membaca sebanyak n karakter dari file stream.
Fungsi ini akan berhenti membaca setelah membaca seluruh karakter atau
membaca new line. Karakter new line yang terbaca akan ditambahkan pada akhir
string. Apabila proses berhasil maka fungsi ini akan mengembalikan string
tersebut (yang dibaca), jika fungsi ini gagal terbaca maka akan mengembalikan
NULL. Berikut adalah deklarasi fgets pada bahasa C :

char * fgets ( char * str, int num, FILE * stream );


Berikut merupakan contoh program penggunaan fgets pada bahasa C :

COMP6599 – Algorithm and Programming


Pada program diatas ketika membuka file2.txt dimana sesuai dengan contoh
sebelumnya terdapat 2 kalimat yang telah dimasukkan pada file2.txt tersebut. Jika
program tersebut dieksekusi maka akan menghasilkan output sebagai berikut :

Yang ditampilkan hanya 1 kalimat “Hello Word” saja dikarenakan setelah kata
tersebut terdapat new line kata berikutnya yaitu “Ini Merupakan fungsi fputs”.

- fscanf (input)
Fungsi ini membaca data dari filestream kedalam field-field sesuai format.
Apabila proses berhasil membaca maka fungsi ini akan mengembalikan bilangan
yang menyatakan jumlah field yang berhasil di baca. Apabila tidak ada field yang
berhasil dibentuk maka akan dikembalikan angka 0. Apabila EOF maka akan
dikembalikan EOF. Berikut deklarasi dari fscanf pada bahasa C :

int fscanf ( FILE * stream, const char * format, ... );

- fprintf (output)
fungsi ini digunakan untuk menulis data berformat kedalam file stream sesuai

dengan format masing-masing argument. Apabila proses menulis berhasil

dilakukan maka fungsi ini akan mengembalikan bilangan yang menyatakan

COMP6599 – Algorithm and Programming


jumlah byte yang dituliskan, jika gagal menulis file maka kana mengembalikan

EOF. Berikut deklrasi dari fprintf pada bahasa C :

intfprintf ( FILE * stream, const char * format, ... );

Berikut adalah contoh program penggunaan fscanf dan fprintf pada bahasa C :

COMP6599 – Algorithm and Programming


SIMPULAN

1. File digunakan untuk penyimpanan data yang bentuknya adalah permanen bukan
sementara. File dapat disebut juga sebagai kumpulan record.Stream adalah
kumpulan karakter yang disusun dalam baris-baris yang berpindah dari satu media
ke media lain pada sistem komputer.
2. Openfile adalah dimana dilakukan manipulasi terhadap sebuah file yang diawali
dengan mengaktifkan file tersebut melalui function fopen(). Sehingga function-
function untuk membaca dan menulis data ke dalam file dapat dikerjakan selama
program berjalan.
3. Close file adalah proses selanjutnya ketika suatu fileselesai di proses (dibuka)
maka file harus ditutup dengan memanggil functionfclose() atau fcloseall().
4. Input dan outputfile memiliki fungsi yang sama dengan input dan output pada
fungsi bahasa C. Yang membedakan adalah input dan output yang dilakukan
menggunakan file sebagai informasi yang dimasukkan dan dikeluarkan.

COMP6599 – Algorithm and Programming


DAFTAR PUSTAKA

1. Paul J. Dietel,Harvey M. Deitel,. 2010. C : how to program. PEAPH. New Jersey.


ISBN:978-0-13-705966-9 Chapter 11
2. Disk File Input and Output: Part I: http://aelinik.free.fr/c/ch21.htm
3. Disk File Input and Output: Part II: http://aelinik.free.fr/c/ch22.htm
4. File Handling in C Language: http://www.mycplus.com/tutorials/c-programming-
tutorials/file-handling/
5. File: http://www.cs.iupui.edu/~n305/spring11/book_slides/chtp6_11.ppt
6. Thompson Susabda Ngoen, 2006. Pengantar Algoritma dengan Bahasa C. Salemba
Teknika. ISBN : 979-9549-25-6. Bagian 8.
7. http://www.cplusplus.com/reference/cstdio

COMP6599 – Algorithm and Programming


LECTURE NOTES

COMP6599 – Algorithm and


Programming

Minggu 10
Sesi 14
Sorting & Searching

COMP6599 – Algorithm and Programming


LEARNING OUTCOMES

Learning Outcomes (Hasil Pembelajaran) :

Setelah menyelesaikan pembelajaran ini mahasiswa akan mampu :


1. LO 2 : Menerapkan sintaks-sintaks dan fungsi-fungsi bahasa pemrograman C dalam
pemecahan masalah.
2. LO 3 : Membuat program dengan menggunakan bahasa C dalam pemecahan masalah.
3. LO 5 : Memilih metode pengurutan dan pencarian algoritma dalam pemecahan masalah.

OUTLINE MATERI(Sub-Topic):Sorting & Searching

1. Sorting
2. Bubble Sort
3. Selection Sort
4. Insertion Sort
5. Quick Sort
6. Merge Sort
7. Searching
8. Linear Search
9. Binary Search
10. Interpolation Search

COMP6599 – Algorithm and Programming


Sorting & Searching
1. Sorting
Dalam pengolahan data sering kali data tersebut perlu diurutkan (disusun) untuk
mempermudah proses data tersebut. Proses pengurutan data tersebut disebut dengan
sorting. Salah satu tujuan dari sorting adalah untuk mempercepat pencarian data
(searching, retrieving).
Pengurutan data dilakukan berdasarkan nilai kunci (key). Misalnya sejumlah data
(record) presetasi akademik mahasiswa yang masing-masing terdiri dari StudentId,
nama, dan IPK maka kunci pengurutan dapat berupa StudentId (jika ingin diurutkan
berdasarkan StudentId), atau berupa IPK bila ingin didapatkan susunan data dari IPK
tertinggi hingga IPK terendah (atau sebaliknya).
Berdasarkan perbandingan nilai data maka sorting dapat dilakukan dengan 2 cara
yatu :
a. Ascending : merupakan pengurutan data dari data terkecil hingga data terbesar.
b. Descending : merupakan pengurutan data dari data terbesar hingga data terkecil.
Selanjutnya dalam lecturenote ini akan dijelaskan macam-macam bentuk sorting yang
dapat digunakan.
2. Bubble Sort
Bubblesort merupakan teknik sorting yang sederhana dan mengikuti prinsip bubble
(gelembung udara). Pengurutan dalam algoritma ini menggunakan perbandingan di
antara 2 data. Untuk lebih jelasnya perhatikan simulasi berikut ini, simulasi sorting
dilakukan secara ascending (pengurutan dari data terkecil hingga data terbesar).

COMP6599 – Algorithm and Programming


COMP6599 – Algorithm and Programming
COMP6599 – Algorithm and Programming
Berikut merupakan algoritma Bubble sort :

COMP6599 – Algorithm and Programming


Berikut merupakan isi dari fungsi swap pada algoritma Bubble sort :

Berikut contoh program Bubble sort pada bahasa C :

COMP6599 – Algorithm and Programming


3. Selection Sort
Algoritma selection sort membagi proses pengurutan menjadi putaran-putaran. Pada
putaran pertama diseleksi data dengan nilai terkecil dan data ini ditempatkan pada
posisi indeks terkecil (data[0]). Pada putaran ke-2 diseleksi data dengan nilai nomor
dua kecil untuk ditempatkan pada posisi ke-2 (data[1]). Proses seleksi dalam satu
putaran dilakukan dengan membandingkan nilai elemen pada 2 indeks pembanding.
Selama proses pembanding berlangsung perubahan hanya dilakukan terhadap indeks
pembanding. Pertukaran data secara fisik dilakukan pada akhir setiap putaran. Jadi,
berbeda dengan bubble sort yang pada setiap pembandingan dilakukan pertukaran
data bila diharuskan, selection sort melakukan pertukaran data hanya satu kali untuk
setiap putaran yaitu saat putaran tersebut selesai. Berikut simulasi dari selection sort
yang dilakukan secara ascending (pengurutan dari data terkecil hingga data terbesar).

COMP6599 – Algorithm and Programming


Berikut merupakan algoritma Selection sort :

Berikut contoh program Selection sort pada bahasa C :

COMP6599 – Algorithm and Programming


4. Insertion Sort
Algoritma insertion sort prosesnya sama seperti seseorang mengurutkan kartu.
Selembar demi selembar kartu diambil dari kumpulan kartu dan disisipakan pada
posisi yang tepat. Pada putaran pertama diurutkan 2 data pertama. Perngurutan ini
sifatnya relatif, artinya kedua data ini belum tentu memiliki dua data terkecil dari
seluruh data melainkan bahwa kedua data ini telah terurut dalam lingkup dua kartu
tersebut. Pada putaran kedua dicarikan tempat sisip yang tepat bagi data[2].Berikut
simulasi dari insertion sort yang dilakukan secara ascending (pengurutan dari data
terkecil hingga data terbesar) :

COMP6599 – Algorithm and Programming


Berikut merupakan algoritma Selection sort :

COMP6599 – Algorithm and Programming


Berikut contoh program Insertion sort pada bahasa C :

5. Quick Sort
Algoritma quick sort bekerja dengan membagi sekumpulan data menjadi 2 bagian
sedemikian rupa sehingga elemen tertentu (elemen ke-i) berada tepat pada posisinya,
semua elemen yang nilainya lebih kecil dari elemen ke-i berada pada di sebelah kiri
elemen ke-i dan semua elemen yang nilainya lebih besar dari elemen ke-i berada di
sebelah kanan elemen ke-i.
a[kiri], a[kiri+1], ... , a[i-1] < a[i] < a[i+1], a[i+2], ..., a[kanan]
Selanjutnya elemen-elemen pada posisi sebelah kiri elemen ke-i di-sort kembali
dengan cara yang sama, sama halnya dengan elemen-elemen pada posisi sebelah
kanan elemen ke-i.

COMP6599 – Algorithm and Programming


Langkah untuk menentukan poisis yang sebenarnya bagi elemen paling kiri
(data[kiri]) sesuai dengan algoritma dari quick sort adalah sebagai berikut :
1. Cari data arah kiri ke kanan data yang nilainya tidak lebih kecil dari data[kiri],
misalnya data tersebut data[j] (instruksi baris ke-7).
2. Cari data arah kanan ke kiri data yang nilainya tidak lebih besar daripada
data[kiri], misalnya data tersebut data[k] (instruksi baris ke-8).
3. Apanila j < k maka tukar data[j] dan data[k] (instruksi baris ke-9) dan ulangi
kembali langkah pertama sampai dengan ketiga (instruksi baris ke-10).
4. Tukar data[kiri] dan data[k], data[k] telah berada pada posisinya yang tepat
(instruksi baris ke-11).
5. Ulangi langkah pertama samapi dengan keempat untuk data sebelah kiri (data[kiri]
sampai data[k-1]) dan data sebelah kanan (data[k+1] sampai dengan data[kanan]),
instruksi baris ke-12 dan ke-13. Proses pengulangan ini berlangsung selama kiri <
kanan.

COMP6599 – Algorithm and Programming


COMP6599 – Algorithm and Programming
Berikut algoritma dari quick sort :

Berikut contoh program dari quick sort :

COMP6599 – Algorithm and Programming


6. Merge Sort
Algoritma merge sort adalah pengurutan dengan cara penggabungan. Dua kumpulan
data yang masing-masing telah diurutkan digabung menjadi satu. Penggabungan
dimulai dengan menggabungkan kelompok data dengan jumlah elemen terkecil, yaitu
kelompok satu data digabung dengan kelompok satu data. Berikut simulasi dari
algoritma merge sort :

COMP6599 – Algorithm and Programming


7. Searching
Dalam data yang telah tersimpan dalam file adakalanya data tersebut akan dilakukan
pencarian informasi atau retrieval yang dilakukan untuk mendapatkan informasi
tertentu. Apabila file yang diolah tidak tersusun (ter-sorted) berdasarkan nilai kunci
tertentu maka pencarian data untuk nilai kunci tertentu mengharuskan seluruh record
dibaca satu per satu.
8. Linear Search
Linear search adalah salah satu teknik pencarian data secara berurutan dari data
pertama hingga data dengan kunci pencarian ditentukan atau sampai data yang telah
dicari ternyata tidak ditemukan. Linear search ini dilakukan terhadap data yang tidak
diurutkan (sort) berdasarkan kunci tertentu sehingga tidak diketahui posisi data yang
ingin dicari, pada awal ataukah mendekati akhir kumpulan data (file). Pencarian ini
dapat dilakukan terhadap data yang berada di memori (ditampung dalam array)
maupun terhadap file pada media sekunder.Berikut adalah algoritma dari linear
search :

COMP6599 – Algorithm and Programming


Berikut contoh penggunaan linear search pada bahasa C :

COMP6599 – Algorithm and Programming


Berikut hasil output dari program tersebut :

9. Binary Search
Binary search (pencarian biner) adalah pencarian data yang dilakukan mulai dari
pertengahan kumpulan data yang telah diurutkan berdasarkan nilai kunci. Apabila
nilai kunci yang dicari lebih besar daripada nilai kunci data pertengahan maka
kemungkinan data yang dicari berada pada paruh akhir data (tengah ke bawah).
Dengan cara ini lingkup data pencarian berkurang setengah setiap kalinya sehingga
proses pencarian akan lebih cepat selesai dibandingkan linear search. Berikut
algoritma dari binary search :

COMP6599 – Algorithm and Programming


Berikut contoh program dari Binary Search :

Berikut hasil output dari program tersebut :

COMP6599 – Algorithm and Programming


10. Interpolation Search
Interpolation search adalah teknik lain dalam melakukan pencarian. Misal ketika
mencari nomor telepon berdasarkan pemilik telepon pada buku petunjuk telepon
umumnya pencarian tidak akan dimulai dari pertengahan buku telepon walaupun data
telah diurutkan. Yang biasanya dilakukan adalah mencari pada posisi relatif kunci
pencarian terhadap jumlah data. Maksudnya bila mencari nama yang diawali oleh
huruf T maka yang akan dibuka adalah halaman sekitar atau dari tebal buku

telepon tersebut. Pencarian ini disebut dengan interpolation search. Posisi relatif
kunci pencarian dihitung dengan rumus :

Berikut algoritma dari interpolation search :

COMP6599 – Algorithm and Programming


Berikut contoh program dari interpolation search :

COMP6599 – Algorithm and Programming


Berikut hasil output dari program tersebut :

COMP6599 – Algorithm and Programming


SIMPULAN

1. Dalam pengolahan data sering kali data tersebut perlu diurutkan (disusun) untuk
mempermudah proses data tersebut. Proses pengurutan data tersebut disebut dengan
sorting. Salah satu tujuan dari sorting adalah untuk mempercepat pencarian data
(searching, retrieving).
Berdasarkan perbandingan nilai data maka sorting dapat dilakukan dengan 2 cara yatu
ascending dan descending.
2. Bubblesort merupakan teknik sorting yang sederhana dan mengikuti prinsip bubble
(gelembung udara). Pengurutan dalam algoritma ini menggunakan perbandingan di
antara 2 data.
3. Algoritma selection sort membagi proses pengurutan menjadi putaran-putaran. Pada
putaran pertama diseleksi data dengan nilai terkecil dan data ini ditempatkan pada posisi
indeks terkecil (data[0]).
4. Algoritma insertion sort prosesnya sama seperti seseorang mengurutkan kartu. Selembar
demi selembar kartu diambil dari kumpulan kartu dan disisipakan pada posisi yang tepat.
5. Algoritma quick sort bekerja dengan membagi sekumpulan data menjadi 2 bagian
sedemikian rupa sehingga elemen tertentu (elemen ke-i) berada tepat pada posisinya,
semua elemen yang nilainya lebih kecil dari elemen ke-i berada pada di sebelah kiri
elemen ke-i dan semua elemen yang nilainya lebih besar dari elemen ke-i berada di
sebelah kanan elemen ke-i.
6. Algoritma merge sort adalah pengurutan dengan cara penggabungan. Dua kumpulan
data yang masing-masing telah diurutkan digabung menjadi satu. Penggabungan dimulai
dengan menggabungkan kelompok data dengan jumlah elemen terkecil.
7. Dalam data yang telah tersimpan dalam file adakalanya data tersebut akan dilakukan
pencarian informasi atau retrieval yang dilakukan untuk mendapatkan informasi tertentu.
8. Linear search adalah salah satu teknik pencarian data secara berurutan dari data pertama
hingga data dengan kunci pencarian ditentukan atau sampai data yang telah dicari
ternyata tidak ditemukan. Linear search ini dilakukan terhadap data yang tidak diurutkan
(sort) berdasarkan kunci tertentu sehingga tidak diketahui posisi data yang ingin dicari.
9. Binary search (pencarian biner) adalah pencarian data yang dilakukan mulai dari
pertengahan kumpulan data yang telah diurutkan berdasarkan nilai kunci.

COMP6599 – Algorithm and Programming


Apabila nilai kunci yang dicari lebih besar daripada nilai kunci data pertengahan maka
kemungkinan data yang dicari berada pada paruh akhir data (tengah ke bawah).
10. Interpolation search adalah teknik lain dalam melakukan pencarian. Misal ketika
mencari nomor telepon berdasarkan pemilik telepon pada buku petunjuk telepon
umumnya pencarian tidak akan dimulai dari pertengahan buku telepon walaupun data
telah diurutkan.

COMP6599 – Algorithm and Programming


DAFTAR PUSTAKA

1. Paul J. Dietel,Harvey M. Deitel,. 2010. C : how to program. PEAPH. New Jersey.


ISBN:978-0-13-705966-9 Chapter 6 & 7
2. Sorting Algorithm Animations: http://www.sorting-algorithms.com/
3. Sorting Algorithms: http://www.youtube.com/watch?v=INHF_5RIxTE
4. Paul J. Dietel,Harvey M. Deitel,. 2010. C : how to program. PEAPH. New Jersey.
ISBN:978-0-13-705966-9 Chapter 14
5. Interpolation search: http://en.algoritmy.net/article/40348/Interpolation-search
6. Algorithms Lesson 5: Linear and Binary Searching:
http://www.youtube.com/watch?v=2AhwHa7wTrc
7. http://www.programmingsimplified.com/c/source-code/c-program-linear-search
8. http://www.programmingsimplified.com/c/source-code/c-program-binary-search
9. http://www.c-program-example.com/2011/11/c-program-to-implement-
interpolation.html

10. Thompson Susabda Ngoen, 2006. Pengantar Algoritma dengan Bahasa C. Salemba
Teknika. ISBN : 979-9549-25-6. Bagian 11 dan 12.

COMP6599 – Algorithm and Programming

Anda mungkin juga menyukai