Anda di halaman 1dari 81

2018

Modul Praktikum Algoritma


Pemrograman

LABORATORIUM SOFTWARE
ENGINEERING AND APPLICATION
TEKNIK KOMPUTER
FAKULTAS TEKNIK ELEKTRO
Hanya dipergunakan di lingkungan Fakultas Teknik Elektro
UNIVERSITAS TELKOM
DAFTAR PENYUSUN

• Asisten Praktikum Laboratorium Software Engineering Application


• Ir. Burhannudin Dirgantoro, M.T

Diperbaiki Oleh
• Ir. Burhannudin Dirgantoro, M.T

Modul Praktikum Algoritma Pemrograman 1


LEMBAR REVISI

Yang bertanda tangan dibawah ini:


Nama : Ir. Burhannudin Dirgantoro, M.T
NIP : 93680020
Jabatan : Dosen Pembina Praktikum Algoritma Pemrograman
Dengan ini menyatakan pelaksanaan Revisi Modul Algoritma Pemrograman untuk Prodi S-1
Teknik Komputer, telah dilaksanakan dengan penjelasan sebagai berikut:

No Keterangan Revisi Tanggal Revisi Terakhir

Modul Praktikum Algoritma Pemrograman 2


LEMBAR PERNYATAAN

Yang bertanda tangan dibawah ini:


Nama : Ir. Burhannudin Dirgantoro, M.T
NIK : 93680020
Jabatan : Dosen Pembina Praktikum Algoritma Pemrograman
Menerangkan dengan sesungguhnya bahwa modul praktikum ini telah direview dan akan
digunakan untuk pelaksanaan praktikum di Semester Genap Tahun Akademik 2017/2018 di
Laboratorium Software Engineering Application Sistem Komputer fakultas Teknik Elekro
Universitas Telkom

Bandung, 27 Desember 2018

Mengetahui, Dosen Pembina Praktikum


Ketua Kelompok Keahlian Algoritma Pemrograman

Ir. Agus Virgono, M.T Ir. Burhannudin Dirgantoro, M.T


NIK. 93660027 NIK. 93680020

Modul Praktikum Algoritma Pemrograman 3


Visi & Misi
Fakultas Teknik Elektro

VISI:

Menjadi fakultas unggul berkelas dunia yang berperan aktif pada pengembangan ilmu
pengetahuan dan teknologi elektro serta fisika, berbasis teknologi informasi dan komunikasi.

MISI:

1. Menyelenggarakan pendidikan tinggi dan pendidikan berkelanjutan berstandar


internasional
2. Mengembangkan, menyebarluaskan, dan memanfaatkan ilmu pengetahuan dan
teknologi bidang teknik telekomunikasi, teknik komputer, fisika teknik, dan
elektroteknik, serta bekerja sama dengan industri/institusi, guna meningkatkan
kesejahteraan dan kemajuan masyarakat.
3. Mengembangkan dan membina jejaring dengan perguruan tinggi dan industri
terkemuka dalam dan luar negeri dalam rangka kerjasama pendidikan dan penelitian.
4. Mengembangkan sumberdaya untuk mencapai keunggulan dalam pembelajaran,
penelitian dan pengabdian kepada masyarakat.

Modul Praktikum Algoritma Pemrograman 4


Visi & Misi
Jurusan Teknik Komputer

VISI:

“Menjadi Program Studi S1 Sistem Komputer (Computer Engineering) unggulan di kawasan


Asia Tenggara Tahun 2020 yang menghasilkan sarjana Sistem Komputer yang berkeahlian
Sistem Komputasi Bergerak (Mobile Computing System), dan dapat menyesuaikan dengan
perkembangan teknologi komputer terkini.”

MISI:

1. Menyelenggarakan pendidikan unggulan di kawasan Asia Tenggara untuk


menghasilkan lulusan yang menguasai ilmu dan teknologi komputer, dalam bidang
Komputasi Bergerak (Mobile Computing System), serta didukung oleh pengetahuan
jaringan komputer dan telekomunikasi, dan sistem tertanam (embedded system).
2. Menyelenggarakan penelitian berkualitas internasional di bidang Sistem Komputer
berbasis teknologi informasi dan komunikasi komputer dengan melibatkan mahasiswa
secara aktif.
3. Menjalankan pengabdian masyarakat dengan prinsip menyebarluaskan ilmu dan
teknologi komputer hasil penelitian kepada masyarakat luas dengan melibatkan
mahasiswa secara aktif.
4. Membekali mahasiswa ilmu dan pengetahuan yang praktis, agar mampu bekerja, dan
mengembangkan diri dan berwirausaha di bidang teknologi informasi dan komunikasi
komputer.

Modul Praktikum Algoritma Pemrograman 5


ATURAN LABORATORIUM FAKULTAS TEKNIK ELEKTRO
TELKOM UNIVERSITY

Setiap Mahasiswa Fakultas Teknik Elektro yang akan menggunakan Fasilitas Laboratorium,
WAJIB mematuhi Aturan sebagai berikut :
1. Menggunakan seragam resmi Telkom University, dan Membawa Kartu Tanda Mahasiswa
(KTM) yang masih berlaku.

2. Tidak berambut gondrong untuk mahasiswa

3. Dilarang merokok dan makan minum didalam ruangan, dan membuang sampah pada
tempatnya

4. Dilarang menyimpan barang-barang milik pribadi di Laboratorium tanpa seijin Fakultas

5. Dilarang menginap di Laboratorium tanpa seijin Fakultas

6. Jam Kerja Laboratorium dan Ruang Riset adalah 06.30 WIB sampai 22.00 WIB

7. Mahasiswa yang akan menggunakan Laboratorium dan atau ruang riset diluar jam kerja,
harus mengajukan ijin kepada Fakultas

Dekan Fakultas Teknik Elektro


Bandung, ….. Juli 2018

Dr. Rina Pudjiastuti, Ir., MT.

Modul Praktikum Algoritma Pemrograman 6


DAFTAR ISI

Daftar Penyusun ......................................................................................................................... 1


Lembar Revisi ............................................................................................................................ 2
Lembar Pernyataan .................................................................................................................... 3
Visi & Misi Fakultas Teknik Elektro ......................................................................................... 4
Visi & Misi Jurusan Sistem Komputer ...................................................................................... 5
Aturan Laboratorium Fakultas Teknik Elektro Telkom University .......................................... 6
Daftar Isi .................................................................................................................................... 7
Daftar Gambar ........................................................................................................................... 8
Daftar Tabel ............................................................................................................................... 9
Modul 0 : Running Modul ....................................................................................................... 11
Modul 1 : Tipe Data dan Komponen Algoritma ...................................................................... 14
Modul 2 : Percabangan ............................................................................................................ 21
Modul 3 : Perulangan ............................................................................................................... 27
Modul 4 : Array ....................................................................................................................... 31
Modul 5 : Prosedur dan Fungsi ................................................................................................ 35
Modul 6 : Sorting ..................................................................................................................... 46
Modul 7 : Searching ................................................................................................................. 53
Modul 8 : Operasi File ............................................................................................................. 58
Modul 9 : Printf Formatting ..................................................................................................... 64
Modul 10 : Strings ................................................................................................................... 70
Modul 11 : Loop Control & Math Function ............................................................................ 72
Modul 12 : Pointers.................................................................................................................. 79

Modul Praktikum Algoritma Pemrograman 7


DAFTAR GAMBAR

Gambar 6.1 Bubble Sort .......................................................................................................... 46


Gambar 6.2 Insertion Sort ........................................................................................................ 48
Gambar 6.3 Selection Sort ....................................................................................................... 49
Gambar 6.4 Counting Sort ....................................................................................................... 51
Gambar 7.1 Binary Search-1.................................................................................................... 55
Gambar 7.2 Binary Search -2................................................................................................... 55
Gambar 7.3 Binary Search-3.................................................................................................... 55
Gambar 12.1 Penjelasan Pointer .............................................................................................. 80

Modul Praktikum Algoritma Pemrograman 8


DAFTAR TABEL

Tabel 1.1 Tipe Data Standard C ............................................................................................... 15


Tabel 1.2 Contoh Modulus (Mod) ........................................................................................... 16
Tabel 1.3 Program Menampilkan Kalimat............................................................................... 17
Tabel 1.4 Contoh Input Nilai Secara Langsung ....................................................................... 17
Tabel 1.5 Program Input Nilai scanf() ..................................................................................... 18
Tabel 1.6 Program Input Nilai Menggunakan Konstanta ........................................................ 19
Tabel 1.7 Program Tipe Data Bentukan .................................................................................. 20
Tabel 1.8 Penentu Format dalam Bahasa C ............................................................................. 20
Tabel 2.1 Operasi Logika ......................................................................................................... 21
Tabel 2.2 Operasi Relasi .......................................................................................................... 21
Tabel 2.3 Program If ................................................................................................................ 22
Tabel 2.4 Program If – Else ..................................................................................................... 23
Tabel 2.5 Program If – Else If ................................................................................................. 23
Tabel 2.6 Program Nested If .................................................................................................... 24
Tabel 2.7 Program Switch Case ............................................................................................... 25
Tabel 3.1 Operator Unary ........................................................................................................ 27
Tabel 3.2 Program Operator Unary ......................................................................................... 27
Tabel 3.3 Program Perulangan While ...................................................................................... 28
Tabel 3.4 Program Perulangan Do While ................................................................................ 29
Tabel 3.5 Program Perulangan For .......................................................................................... 30
Tabel 4.1 Array ........................................................................................................................ 31
Tabel 4.2 Program Array Satu Dimensi ................................................................................... 32
Tabel 4.3 Pengalamatan Array Dua Dimensi .......................................................................... 33
Tabel 4.4 Program Array Dua Dimensi ................................................................................... 33
Tabel 4.5 Program Array Multidimensi ................................................................................... 34
Tabel 5.1 Program Prosedur dengan Parameter Masukan ....................................................... 37
Tabel 5.2 Program Prosedur dengan Parameter Keluaran ....................................................... 38
Tabel 5.3 Program Prosedur dengan Parameter Masukan/Keluaran ....................................... 39
Tabel 5.4 Program Fungsi f(x) = x2 + 2x – 4 ........................................................................... 41
Tabel 5.5 Program Bilangan Maks .......................................................................................... 42
Tabel 5.6 Program Fungsi Rekrusif ......................................................................................... 43
Tabel 5.7 Program Fungsi -> Prosedur .................................................................................... 44
Tabel 5.8 Program Prosedur -> Fungsi .................................................................................... 45
Modul Praktikum Algoritma Pemrograman 9
Tabel 6.1 Program Bubble Sort ............................................................................................... 47
Tabel 6.2 Program Insertion Sort ............................................................................................. 49
Tabel 6.3 Program Selection Sort ............................................................................................ 50
Tabel 6.4 Program Counting Sort ............................................................................................ 52
Tabel 7.1 Program Sequential Search ...................................................................................... 54
Tabel 7.2 Program Binary Search ............................................................................................ 57
Tabel 8.1 Program Read and Write.......................................................................................... 60
Tabel 8.2 Program Hapus File ................................................................................................. 61
Tabel 8.3 Program File Sekuensial .......................................................................................... 63
Tabel 9.1 Program Integer Formatting..................................................................................... 64
Tabel 9.2 Program Float Formatting ........................................................................................ 65
Tabel 9.3 Program String Formatting ...................................................................................... 66
Tabel 9.4 Program Formatting Lainnya ................................................................................... 67
Tabel 9.5 Flags ......................................................................................................................... 68
Tabel 9.6 Width ....................................................................................................................... 68
Tabel 9.7 .Precision.................................................................................................................. 69
Tabel 9.8 Specifier ................................................................................................................... 69
Tabel 10.1 Program String ....................................................................................................... 71
Tabel 11.1 Program Keyword Break ....................................................................................... 72
Tabel 11.2 Program Keyword Continue .................................................................................. 73
Tabel 11.3 Program Keyword Goto ......................................................................................... 74
Tabel 11.4 Fungsi-Fungsi Trigonometri .................................................................................. 75
Tabel 11.5 Program Trigonometri ........................................................................................... 76
Tabel 11.6 Fungsi-Fungsi Eksponensial .................................................................................. 76
Tabel 11.7 Program Eksponensial ........................................................................................... 77
Tabel 11.8 Fungsi-Fungsi Lainnya .......................................................................................... 77
Tabel 11.9 Program Fungsi Lainnya ........................................................................................ 78
Tabel 12.1 Program Pointer ..................................................................................................... 80

Modul Praktikum Algoritma Pemrograman 10


Modul 0 : Running Modul

A. Tujuan
1. Memahami peraturan kegiatan praktikum.
2. Memahami Hak dan Kewajiban praktikan dalam kegiatan praktikum.
3. Memahami komponen penilaian kegiatan praktikum.
B. Peraturan Praktikum
1. Praktikum diampu oleh Dosen Mata Kuliah Praktikum dan dibantu oleh Asisten
Laboratorium dan Asisten Praktikum.
2. Praktikum dilaksanakan di Laboratorium SEA (N207) sesuai jadwal yang ditentukan.
3. Praktikum Alpro terdiri dari 12 Modul.
4. Praktikan wajib membawa kartu praktikum, modul praktikum (optional), dan alat
tulis.
5. Praktikan wajib mengisi daftar hadir praktikum dengan pulpen bertinta hitam.
6. Durasi praktikum = 2,5 jam (150 menit).
• 15 menit untuk pengerjaan tes awal.
• 25 menit untuk pembahasan modul.
• 90 menit untuk pengerjaan jurnal.
• 20 menit untuk pengerjaan test akhir.
7. Praktikan wajib hadir minimal 75% dari seluruh pertemuan praktikum Alpro di
Laboratorium SEA. Jika total kehadiran kurang dari 75%, maka nilai Praktikum = 0.
8. Praktikan yang datang terlambat:
• Terlambat kurang dari 15 menit : diperbolehkan mengikuti praktikum tanpa ada
tambahan waktu untuk pengerjaan tes awal.
• Terlambat lebih dari 15 menit : tidak diperbolehkan mengikuti praktikum.
9. Saat praktikum berlangsung, praktikan:
• Wajib menggunakan seragam sesuai aturan instansi.
• Wajib mematikan atau men-silent semua alat komunikasi.
• Dilarang membuka aplikasi yang tidak berhubungan dengan praktikum.
• Dilarang membawa makanan maupun minuman di ruang praktikum.
• Dilarang makan, minum, merokok dan sejenisnya di ruangan praktikum.
• Dilarang memberikan jawaban ke praktikan lain (TP, Tes Awal, Jurnal, dan Tes
Akhir).
• Dilarang menyebarkan soal Tes Awal, Jurnal, dan Tes Akhir.
• Dilarang membuang sampah/sesuatu apapun di ruangan praktikum.

Modul Praktikum Algoritma Pemrograman 11


C. Peraturan Laboratorium
Setiap Mahasiswa Fakultas Teknik Elektro yang akan menggunakan Fasilitas
Laboratorium, WAJIB mematuhi Aturan sebagai berikut
1. Menggunakan seragam resmi Telkom University, membawa Kartu Tanda
Mahasiswa (KTM) yang masih berlaku atau membawa kartu praktikum.
2. Aturan rambut:
• Laki-laki potongan rapi (tidak gondrong)
• Perempuan yang rambutnya melebihi bahu, wajib diikat
• Tidak boleh diwarnai
• Bagi perempuan yang menggunakan hijab, dilarang memakai hijab langsung pakai
3. Mahasiswa diwajibkan menjaga kebersihan Laboratorium SEA.
4. Dilarang membuat kegaduhan selama praktikum berlangsung
5. Dilarang menyimpan barang-barang milik pribadi di Laboratorium tanpa seijin
Fakultas
6. Dilarang meminjam barang-barang inventaris Laboratorium tanpa seijin Fakultas.
7. Dilarang memasukkan perangkat USB dan sejenisnya kedalam port komputer di
Laboratorium.
8. Dilarang menginap di Laboratorium SEA tanpa seijin Fakultas.
9. Dilarang menggunakan fasilitas Laboratorium selain untuk keperluan praktikum.
10. Jam kerja Laboratorium dan Ruang Riset adalah 06.30 WIB sampai 18.00 WIB.
11. Mahasiswa yang akan menggunakan Laboratorium dan atau ruang riset diluar jam
kerja, harus mengajukan ijin kepada Fakultas.
D. Penilaian Praktikum
1. Komponen nilai praktikum terdiri dari:
• Tes Pendahuluan (TP) = 15%
• Tes Awal = 15%
• Jurnal (Pengerjaan jurnal dan keaktifan mahasiswa) = 40%
• Tes Akhir = 30%
2. Seluruh komponen penilaian beserta pembobotannya ditentukan oleh dosen Mata
Praktikum
3. Penilaian permodul dilakukan oleh Asisten Praktikum, sedangkan nilai seluruh modul
diserahkan kepada Dosen Mata Praktikum.
4. Baik praktikan maupun asisten tidak diperkenankan meminta atau memberikan tugas
tambahan untuk perbaikan nilai.
5. Ketahuan mencontek atau plagiat saat pengerjaan TP, Tes Awal, dan Tes Akhir akan
dikenakan pengurangan nilai.

Modul Praktikum Algoritma Pemrograman 12


E. Peraturan Pengerjaan TP
1. Format buku TP:
a. Ukuran buku A5
b. Warna sampul buku
• Hex (#00ffff)
• RGB (0, 255, 255)
c. Contoh cover akan di share besok pukul 10.00 di OA Line SEA
d. Buku wajib diberi sampul plastik
e. Jika halaman pada buku sudah habis, praktikan boleh menambahkan buku. Warna
sampul harus sama dan disatukan dengan buku yang lama.
2. Source code program ditulis tangan di buku TP oleh praktikan dan menggunakan
komentar yang berkaitan dengan modul.
3. Hasil running program di screenshot dan ditempel didalam buku TP.
4. Jadwal keluar soal TP:
Hari : Kamis
Jam : 10.00 – 13.00
Tempat : Mading Laboratorium Gedung N lt.2
5. Jadwal pengumpulan buku TP:
Hari : Sabtu
Jam : 13.00 – 18.00
Tempat : Laboratorium SEA N207
6. Jika praktikan mengumpulkan buku TP lebih dari jam 18.00 akan dikenakan
pengurangan nilai 20.
7. Jika praktikan mengumpulkan buku TP setelah hari sabtu nilai TP = 0.
8. Pengumpulan buku TP oleh praktikan boleh dilakukan secara individu ataupun kolektif.
9. Praktikan wajib mengisi absen saat mengumpulkan buku TP.
10. Jika terdapat kesamaan jawaban antar praktikan, maka yang bersangkutan akan
mendapatkan nilai TP = 0.
11. Pembagian buku TP akan dilaksanakan setiap selesai praktikum.

Modul Praktikum Algoritma Pemrograman 13


Modul 1 : Tipe Data dan Komponen Algoritma

A. Tujuan Praktikum
1. Memahami bentuk algoritma pemograman dan implementasinya dalam bahasa C.
2. Membuat program sederhana yang melibatkan tipe data, variabel, dan I/O.
3. Memahami tipe-tipe data pada algoritma pemograman beserta persamaannya dalam
bahasa C.
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
1. Struktur Bahasa Pemrograman C
Dalam bahasa C, struktur pemograman terdiri dari fungsi-fungsi (bersifat
prosedur). Berikut merupakan struktur umum bahasa pemograman C:

//fungsi_utama
main() {
/*statement*/
}
//fungsi_lain
fungsi_lain() {
/*statement*/
}

2. Tipe Data
Tipe data adalah jenis dari suatu variabel yang digunakan dalam algoritma.
Berikut adalah beberapa macam tipe data:
a. Int : Menyatakan bilangan bulat antara -326767 sampai +32767.
Contoh : 1 0 3 -5 -7

b. Float : Menyatakan bilang real (asli) dari 10-38 sampai dengan 1038.
Contoh : 1.1 1.3 -9.2
c. Char : Menyatakan sebuah karakter.
Contoh : A, f, 9, atau *.
d. Bool : Menyatakan nilai logika
Contoh : true atau false

Modul Praktikum Algoritma Pemrograman 14


Type Bits Range

char 8 -127 to 127

unsigned char 8 0 to 255

signed char 8 -127 to 127

int 16 or 32 -32.767 to 32.767

unsigned int 16 or 32 0 to 65.535

signed int 16 or 32 Same as int

short int 16 -32.767 to 32.767

unsigned short int 16 0 to 65.535

signed short int 16 Same as short int

long int 32 -2.147.483.647 to 2.147.483.647

long long int 64 -(263 -1) to 263-1 (Added by C99)

signed long int 32 Same as long int

unsigned long int 32 0 to 4.294.967.295

unsigned long long int 64 264-1 (Added by C99)

float IE-37 to IE+37 with six digits of


32
percision

double IE-37 to IE+37 with six digits of


64
percision

long double IE-37 to IE+37 with six digits of


80
percision
Tabel 1.1 Tipe Data Standard C
3. Variabel dan Konstanta
Variabel dan konstanta adalah suatu nama yang menyatakan tempat dalam
memori komputer dan berisi sebuah nilai. Isi dari variabel dapat diubah sewaktu-
waktu ketika program dieksekusi. Sementara konstanta tidak dapat diubah ketika
program dieksekusi.
Hal-hal penting yang harus diperhatikan dalam penamaan variabel dan konstanta
antara lain:
• Harus diawali dengan huruf alfabet (A-Z, a-z).

Modul Praktikum Algoritma Pemrograman 15


• Karakter selanjutnya bisa berupa huruf, digit atau karakter garis bawah ( _ ).
• Panjang maksimal adalah 32 karakter, jika lebih maka yang dianggap adalah
32 karakter awal.
• Tidak boleh menggunakan spasi.
• Tidak boleh menggunakan operator aritmatika ( + - / * % ).
• Tidak boleh menggunakan karakter-karakter khusus seperti : , ; # @ $ & dan ( ).
Bahasa C bersifat case-sensitive, sehingga huruf kapital dan non-kapital dibedakan.
4. Operasi Aritmatika
Untuk operasi aritmatika hanya tipe data int dan float saja yang dapat
digunakan. Berikut operator aritmatika yang tersedia:
a. Kali ( * )
Digunakan untuk mengalikan dua buah bilangan.
b. Bagi ( / )
Digunakan untuk membagi dua buah bilangan
c. Tambah ( + )
Digunakan untuk menjumlahkan dua buah bilangan.
d. Kurang ( - )
Digunakan untuk pengurangan antar dua buah bilangan.
e. Modulus (%)
Mod digunakan untuk mencari sisa dari hasil pembagian dua bilangan dengan
operator “%”. Operasi mod hanya bisa di gunakan oleh data bertipe int.

Tipe Data Contoh

6 % 4 = 2 → {6 = 4 x 1 + 2}
int % int = int 8 % 5 = 3 → {8 = 5 x 1 + 3}
-5 % 3 = 1 → {1 = 3 x (-2) + 1}
Tabel 1.2 Contoh Modulus (Mod)
5. Tipe Bentukan
Tipe bentukan adalah tipe data yang dibuat sendiri oleh pengguna. Tipe ini
dibuat karena ada relasi antar variabel yang bila digabungkan mempunyai suatu maksud
yang sama. Untuk membuat tipe data bentukan, digunakan kata kunci “struct”. Salah
satu contoh dari tipe data bentukan adalah mahasiswa, dimana mahasiswa
mempunyai nama, nim, jurusan, dan nilai.

Modul Praktikum Algoritma Pemrograman 16


6. Contoh Program
a. Menampilkan Kalimat

Source Code Output

#include <stdio.h> Hello World


int main()
{
printf(“Hello World \n”);
return 0;
}
Tabel 1.3 Program Menampilkan Kalimat
Penjelasan program :
• Berkas header (berekstensi .h) adalah berkas yang berisi prototype fungsi,
definisi konstanta, dan definisi variable
• #include adalah suatu perintah yang digunakan untuk mengatur kompiler agar
membaca berkas header yang disertakan di belakang kata include saat
pelaksanaan kompilasi.
• main () adalah fungsi yang akan dijalankan pertama kali ketika program
dieksekusi. Kata int di depan main() menyatakan bahwa program memberikan
nilai balik yang bertipe int.
• Nilai balik program ditentukan oleh pernyataan return. Pada program tersebut,
return 0 menyatakan bahwa nilai balik program adalah nol atau program
berhasil melaksanakan tugasnya.
• Setiap pernyataan dalam bahasa C ditulis dengan diakhiri tanda titik-koma (;).
Pada program di atas, ada dua buah pernyataan, yaitu : printf (“Hello World
\n”); dan return 0;
• “\n” akan menyebabkan kursor berpindah ke baris berikut setelah Hello World
dioutputkan.
b. Menambahkan Nilai ke dalam Variabel
1) Assignment (nilai dimasukkan ke dalam variabel secara langsung

Source Code Algoritma

a = 7; A <- 7
Tabel 1.4 Contoh Input Nilai Secara
Langsung

Modul Praktikum Algoritma Pemrograman 17


2) Input nilai menggunakan scanf()

Source Code

#include <stdio.h>
int main ()
{
int x,y,z;
printf("Bilangan 1 = ");
scanf ("%d",&x);
printf("Bilangan 2 = ");
scanf("%d",&y);
z = x + y;
printf("Bilangan 1 + Bilangan 2 = %d \n",z);
return 0;
}

Algoritma

Kamus :
x,y,z : integer

Algoritma :
output (‘Bilangan 1 = ‘)
input (x)
output (‘Bilangan 2 = ‘)
input (y)
z = x + y
output(‘Bilangan 1 + Bilangan 2 = ‘, z)

Output

Bilangan 1 = 12
Bilangan 2 = 7
Bilangan 1 + Bilangan 2 = 19
Tabel 1.5 Program Input Nilai scanf()
3) Penggunaan konstanta

Source Code

#include <stdio.h>
#define phi 3.14
int main (){
int r;
float luas;
printf("Jari-Jari Lingkaran = ");
scanf (“%d”, &r);
luas = phi*r*r;
printf("Luas Lingkaran = %.2f\n", luas);
return 0;
}

Modul Praktikum Algoritma Pemrograman 18


Output

Jari-Jari Lingkaran = 12
Luas Lingkaran = 452.16
Tabel 1.6 Program Input Nilai Menggunakan Konstanta
Catatan:
• %x.f berfungsi untuk menampilkan x angka di belakang koma dari
variabel keluaran. Pada contoh di atas, printf(“Luas Lingkaran = %.2f
\n”,luas); akan menampilkan 2 angka di belakang koma
c. Tipe Data Bentukan

Source Code

#include <stdio.h>

struct biodata{
char nama[50],jurusan[30], nim[20], kelas [20]
}b;

int main (){


printf("Nama : "); gets(b.nama);
printf("Jurusan : "); gets(b.jurusan);
printf("NIM : "); gets(b.nim);
printf("Kelas : "); gets(b.kelas);
printf("\nBiodata Anda : \n");
printf("Nama : %s \n",b.nama);
printf("Jurusan : %s \n",b.jurusan);
printf("NIM : %s \n",b.nim);
printf("Kelas : %s \n", b.kelas);
return 0;
}

Algoritma

Type biodata : <nama, jurusan, NIM, Kelas : string>

Kamus :
b : biodata

Algoritma :

output(‘Nama : ‘) input(b.nama)
output(‘Jurusan : ‘) input(b.jurusan)
output(‘NIM : ‘) input(b.NIM)
output(‘Kelas : ‘) input(b.Kelas)
output(‘Biodata Anda : ‘)
output(‘Nama : ‘,b.nama)
output(‘Jurusan : ‘,b.jurusan)
output(‘NIM : ‘,b.NIM)
output(‘Kelas : ‘,b.kelas)

Modul Praktikum Algoritma Pemrograman 19


Output

Nama : Muhammad Rizqi Mubarak


Jurusan : S1 Teknik Komputer
NIM : 1103161076
Kelas : TK-40-03

Biodata Anda :
Nama : Muhammad Rizqi Mubarak
Jurusan : S1 Teknik Komputer
NIM : 1103161076
Kelas : TK-40-03
Tabel 1.7 Program Tipe Data Bentukan
Catatan :
• Fungsi gets() digunakan untuk menginputkan string. Jika menggunakan fungsi
scanf() ketika menginputkan string maka hanya akan terbaca sampai
ditemukan spasi. Misal “Christiano Ronaldo”, maka hanya akan terbaca
Christiano, sedangkan Ronaldo tidak terbaca sebab sebelum kata tersebut
program telah menemukan spasi.
• Setiap input dengan scanf dan output dengan printf harus menyertakan penentu
format dari input dan output tersebut. Contoh, kita akan menginputkan nilai 5
(integer) ke variabel x maka kita akan menuliskan : scanf (“%d”, &x); dimana
“%d” merupakan penentu format untuk tipe data integer. Berikut ini adalah
beberapa penentu format yang digunakan dalam bahasa pemrograman C:

Tipe Data Penentu Format

integer %d, %i (iterasi)


floating point
• bentuk decimal %f
• bentuk berpangkat %e
• yang lebih pendek antara decimal dan %g
berpangkat
double precision %lf
character %c
string %s
unsigned integer %u
long Integer %ld
long unsigned Integer %lu
unsigned hexadecimal integer %x
unsigned octal integer %o
Tabel 1.8 Penentu Format dalam Bahasa C

Modul Praktikum Algoritma Pemrograman 20


Modul 2 : Percabangan

A. Tujuan Praktikum
1. Memahami konsep percabangan dalam pemograman
2. Membuat program sederhana menggunakan percabangan dengan bahasa C
3. Mampu memahami dan memecahkan masalah-masalah kasus dalam pemograman
bahasa C
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
Dalam kehidupan sehari-hari, untuk melakukan sesuatu pasti akan dihadapkan
dengan sebuah atau beberapa keputusan. Di dalam pemograman bahasa C, keputusan
disebut juga dengan fungsi kondisional. Fungsi kondisional menggunakan operasi boolean
(true atau false), operasi logika, dan operasi relasi untuk menentukan aksi (keputusan)
yang akan dilakukan oleh program.

Operasi
Program Keterangan Contoh
Boolean

&& Logika AND (6>5)&&(4<5) TRUE

|| Logika OR (11>=10)||(10>=10) TRUE

! Logika NOT !((6>5)&&(4<5)) TRUE


Tabel 2.1 Operasi Logika

Operasi
Program Keterangan Contoh
Boolean

> Lebih Besar 7>6 TRUE

< Lebih Kecil 6<7 TRUE

>= Lebih Besar Sama 7>=7 TRUE


Dengan

<= Lebih Kecil Sama 6<=6 TRUE


Dengan

== Sama Dengan 5==5 atau 'a'=='a' TRUE

!= Tidak Sama Dengan 5!=4 atau 'a'!= 'b' TRUE


Tabel 2.2 Operasi Relasi

Modul Praktikum Algoritma Pemrograman 21


1. If
Digunakan untuk menjalankan suatu instruksi apalagi kondisi terpenuhi. Jika
kondisi tersebut bernilai benar, maka statement tersebut akan dijalankan. Jika kondisi
tersebut bernilai salah, maka statement tersebut akan diabaikan dan program berlanjut
ke instruksi selanjutnya. Penulisannya adalah sebagai berikut:

if(kondisi){
/*statement atau aksi*/
}

Contoh:

Source Code Output

#include <stdio.h> Masukan nilai : 98


int main()
{ SELAMAT ANDA LULUS!
float nilai;
printf("Masukan nilai: ");
scanf("%f", &nilai);
printf("\n");
if (nilai>65 && nilai<=100)
{
printf("SELAMAT ANDA LULUS!");
}
}
Tabel 2.3 Program If
2. If – Else
Kita dapat menentukan apa yang akan dilakukan jika kondisi tersebut tidak
terpenuhi menggunakan else. Jika kondisi tersebut bernilai salah, maka program akan
menjalankan statement selain kondisi yang diinginkan. Penulisannya adalah sebagai
berikut:

if(kondisi){
/*statement atau aksi*/
}
else{
/*statement atau aksi*/
}

Contoh:

Source Code Output

#include <stdio.h> Masukan nilai : 20


int main(){
float nilai; MAAF TIDAK LULUS!
printf("Masukan nilai : ");
scanf("%f", &nilai);

Modul Praktikum Algoritma Pemrograman 22


printf("\n");
if (nilai>65 && nilai<=100)
printf("SELAMAT ANDA LULUS!");
else
printf("MAAF TIDAK LULUS!");
}
Tabel 2.4 Program If – Else
3. If – Else If
If - else if digunakan untuk memeriksa beberapa kondisi. Statement 2 akan
dijalankan jika kondisi 1 tidak terpenuhi dan kondisi 2 terpenuhi. Namun jika semua
kondisi tidak terpenuhi, maka program akan menjalankan statement 3. Penulisannya
adalah sebagai berikut:

if(kondisi1){
/*statement atau aksi*/
}
else if(kondisi2){
/*statement atau aksi*/
}

Contoh:

Source Code Output

#include <stdio.h> Masukan nilai : 70


int main()
{ SELAMAT ANDA LULUS!
float nilai; Indeks = B
printf("Masukan nilai : ");
scanf("%f", &nilai);
printf("\n");
if (nilai>80 && nilai<=100)
{
printf("SELAMAT ANDA LULUS!");
printf("\nIndeks = A");

}
else if(nilai>60 && nilai<=80)
{
printf("SELAMAT ANDA LULUS!");
printf("\nIndeks = B");
}
else
{
printf("MAAF, TIDAK LULUS!");

}
}
Tabel 2.5 Program If – Else If

Modul Praktikum Algoritma Pemrograman 23


4. Nested If
Nested if digunakan jika dalam suatu kondisi membutuhkan kondisi lainnya
agar terpenuhi. Kondisi 1 harus bernilai benar, jika kondisi 2 juga bernilai benar maka
program akan dijalankan. Namun jika salah satu kondisi bernilai salah, maka program
akan mengambil instruksi selanjutnya. Penulisannya adalah sebagai berikut:

if(kondisi1){
if(kondisi2){
/*statement atau aksi*/
}
}

Contoh:

Source Code Output

#include <stdio.h> Masukan nilai : 92


Masukkan sks : 104
int main()
{ SELAMAT, ANDA LULUS!
float nilai;
int sks;

printf("Masukan nilai : ");


scanf("%f", &nilai);
printf("Masukan sks : ");
scanf("%d", &sks);

if (nilai>80 && nilai<=100)


{
if (sks>90)
{
printf("SELAMAT, ANDA LULUS!");
}
else
{
Printf("MAAF, SKS KURANG!");
}
}

else
{
printf("MAAF, TIDAK LULUS!");
}

return 0;
}
Tabel 2.6 Program Nested If

Modul Praktikum Algoritma Pemrograman 24


5. Switch Case
Switch berfungsi untuk memeriksa beberapa kondisi dan akan mengerjakan
statemenr sesuai dengan case yang terpenuhi. Penulisannya adalah sebagai berikut:

switch(variabel){
case value_1 :
/*statement value 1*/;
break;
case value_2 :
/*statement value 2*/;
break;
.
.
case value_n :
/*statement value n*/;
break;
default :
/*statement selain value-value diatas*/;
break;
}

Contoh:

Source Code Output

#include <stdio.h> Masukan nilai : 43


int main(){
int nilai; Index = C
char index;
printf("Masukan nilai: ");
scanf("%d", &nilai);
switch(nilai){
case 80 ... 100 :
index = 'A';
break;
case 60 ... 79 :
index = 'B';
break;
case 40 ... 59 :
index = 'C';
break;
case 10 ... 39 :
index = 'D';
break;
default :
index = 'E';
break;
}
printf("Index = %c",index);
}
Tabel 2.7 Program Switch Case
Modul Praktikum Algoritma Pemrograman 25
Yang perlu diketahui saat menggunakan switch case dalam pemrograman C:

a. Syarat variabel dalam menggunakan switch case adalah harus bertipe int, char,
dan enum.
b. Peletakan default: bebas.
c. Tidak boleh ada duplikat pada value case.
d. Keyword break; berfungsi untuk menghentikan perintah yang ada pada case. Jika
tidak menyertakan break;, maka case selanjutnya akan dilakukan.
e. “ … “ 3 titik pada program diatas digunakan untuk menandakan range/interval.
Misal: 1 sampai 5 bisa kita tuliskan menjadi 1 … 5.
f. Nested switch case diperbolehkan

Modul Praktikum Algoritma Pemrograman 26


Modul 3 : Perulangan

A. Tujuan Praktikum
1. Memahami struktur perulangan dalam bahasa C.
2. Mampu membuat program sederhana menggunakan perulangan dengan Bahasa C
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
1. Operator Unary
Operator Unary adalah operator yang hanya mengguanakn operand saja. Dalam
perulangan terdapat beberapa operator unary yang sering digunakan, yaitu :

Operator Arti / Maksud Letak Contoh Equivalen

Peningkatan dengan Sebelum dan


++ X++ X=X+1
penambahan nilai 1 sesudah

Penurunan dengan Sebelum dan


-- X-- X=X-1
pengurangan nilai 1 sesudah
Tabel 3.1 Operator Unary
Contoh:

Source Code Output

#include <stdio.h> Nilai = 5, X = 6


int main() Nilai = 6, X = 7
{ Nilai = 9, Y = 9
int X,Y, Nilai = 9, Y = 8
Nilai; X = 5;
Y = 10;
Nilai = ++X;
printf("Nilai = %d, X = %d\n", Nilai, X);
Nilai = X++;
printf("Nilai = %d, X = %d\n", Nilai, X);
Nilai = --Y;
printf("Nilai = %d, Y = %d\n", Nilai, Y);
Nilai = Y--;
printf("Nilai = %d, Y = %d\n", Nilai, Y);
return 0;
}
Tabel 3.2 Program Operator Unary

Modul Praktikum Algoritma Pemrograman 27


2. While [kondisi] Do [aksi]
Pada metode ini, aksi akan dilakukan selama kondisi bernilai true dan akan
berhenti jika kondisi menjadi false. Pada perulangan ini jumlah perulangan belum
diketahui secara pasti. Bentuk While Do :

while (condition expression) {


statement-statement;
}

Contoh:

Source Code

#include<stdio.h>
int main(){
int n=0;
float jumlah=0,bil,rata;
char lagi='Y';

while ((lagi=='Y')||(lagi=='y')){
printf("Masukkan bilangan : ");
scanf("%f",&bil);
jumlah=jumlah+bil;
n=n+1;
printf("Apakah Anda akan memasukkan data lagi[Y/T]: ");
scanf("%s",&lagi);
printf("\n");
}

rata=jumlah/n;
printf("\n");
printf("Banyaknya bilangan : %i \n",n);
printf("Rata-rata bilangan : %.2f \n",rata);
}

Output

Masukan bilangan : 3
Apakah anda akan memasukan data lagi [Y/T]: y

Masukan bilangan : 5
Apakah anda akan memasukan data lagi [Y/T]: t

Banyaknya bilangan : 2
Rata-rata bilangan : 4.00
Tabel 3.3 Program Perulangan While
Pada contoh program menghitung rata-rata bilangan di atas input bilangan diisi
3 dan 10 namun bisa diisi secara bebas, kemudian pertanyaan “Apakah anda akan
memasukkan data lagi[Y/T]: ” akan terus muncul secara berulang jika inputnya “y” dan
akan berhenti jika input “t”.

Modul Praktikum Algoritma Pemrograman 28


3. Do [Aksi] While [Kondisi]
Pada metode perulangan ini, aksi akan dilakukan minimal satu kali, hal ini
dikarenakan pengecekan kondisi dilakukan setelah aksi dilakukan untuk pertama kali.
Aksi akan terus dilakukan selama kondisi bernilai true dan berhenti ketika kondisi
bernilai false. Pada perulangan ini jumlah perulangan belum diketahui secara pasti.
Bentuk do while :

do {
statement-statement;
} while (condition expression);

Contoh:

Source Code

#include<stdio.h>
int main() {
int n=0;
float jumlah=0,bil,rata;
char lagi;

do {
printf("Masukkan bilangan : ");
scanf("%f",&bil);
jumlah=jumlah+bil;
n=n+1;
printf("Apakah Anda akan memasukkan data lagi[Y/T]: ");
scanf("%s",&lagi);
printf("\n");
} while ((lagi=='Y') || (lagi=='y'));

rata=jumlah/n; printf("\n");
printf("Banyaknya bilangan : %i \n",n);
printf("Rata-rata bilangan : %.2f \n",rata);
return 0;
}

Output

Masukan bilangan : 10
Apakah anda akan memasukan data lagi [Y/T]: y

Masukan bilangan : 9
Apakah anda akan memasukan data lagi [Y/T]: t

Banyaknya bilangan : 2
Rata-rata bilangan : 9.50
Tabel 3.4 Program Perulangan Do While

Modul Praktikum Algoritma Pemrograman 29


4. For
Struktur ini digunakan bila kita mengetahui secara pasti banyaknya
pengulangan yang akan dilakukan. Pernyataan FOR mempunyai 3 parameter yaitu:
a. Nilai awal (initial value)
b. Test kondisi yang menentukan akhir loop (condition expression)
c. Penentu perubahan nilai (incremental expression)
Bentuk for:
forintial value;condition expression;incremental expression);

Keterangan :
• Initial value
Memberikan nilai awal pada variable kontrol
• Conditional expression
Eksprsi yang menyatakan berhentinya pengulangan. Jika teskondisi bernilai salah
maka loop aka berhenti.
• Incremental expression
Berfungsi menaikkan/menurunkan nilai dari variable kontrol. Dapat berupa nilai
positif (penaikan) / nilai negatif (penurunan)
Penaikan: setiap loop operator ++ akan menambah 1 ke variable kontrol.
Penurunan: setiap loop operator -- akan menurunkan 1 ke variable kontrol.
Contoh:

Source Code

#include<stdio.h>
int main()
{
int i;

for (i=1;i<=5;i++) {
printf("%d. Selamat belajar, Aku pasti bisa... \n",i);
}

Return 0;
}

Output

1. Selamat belajar, Aku pasti bisa...


2. Selamat belajar, Aku pasti bisa...
3. Selamat belajar, Aku pasti bisa...
4. Selamat belajar, Aku pasti bisa...
5. Selamat belajar, Aku pasti bisa...
Tabel 3.5 Program Perulangan For

Modul Praktikum Algoritma Pemrograman 30


Modul 4 : Array

A. Tujuan Praktikum
1. Memahami konsep array
2. Memahami syntax pada array
3. Memahami komsep multidimensial array
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
1. Pengertian Array
Array merupakan sebuah jenis struktur data yang dapat menyimpan ukuran dari
elemen yang mempunyai tipe data sama. Array merupakan konsep yang penting dalam
pemrograman, karena array menyimpan data dalam jumlah banyak dan terindeks.
Misalkan ada kumpulan data bertipe int yaitu angka 1, 2, 3, 4, dan 5. Kumpulan
data ini dapat disajikan dalam bentuk Array karena memiliki tipe data yang sama yaitu
int. Misal kumpulan data tadi diberi nama Angka sehingga jika disajikan dalam bentuk
array akan menjadi int Angka[] = {1, 2, 3, 4, 5} atau int Angka[5] = {1, 2, 3, 4, 5}. Pada
sebuah array, index array dimulai dari indeks ke-0, sehingga pada array Angka[], angka
1 berada di indeks ke-0 (Array[0]), angka 2 berada di indeks ke-1 (Array[1]), dan
seterusnya. Sedangkan pada pendeklarasian Array, int Angka [5] berarti Array Angka
dapat menampung 5 masukan nilai int.

Nilai ke-1 Nilai ke-2 … Nilai ke-N Nilai Elemen Array

Alamat ke-1 Alamat ke-2 … Alamat ke-N Alamat Elemen Array

0 1 … N-1 Indeks Elemen Array


Tabel 4.1 Array
2. Deklarasi Array
Dalam pendeklarasian array, harus menentukan jenis elemen dan jumlah
elemen yang dibutuhkan oleh sebuah array, sistematikanya sebagai berikut :

type namaArray [ukuranArray];

• ukuranArray harus bilangan integer yang lebih besar dari nol


• type dapat berupa tipe data yang valid dalam bahasa C.
• Contoh deklarasi array yang bertipe data double :

double data[10];

Modul Praktikum Algoritma Pemrograman 31


3. Jenis Array
Dalam bahasa C, array dibedakan menjadi beberapa jenis, yaitu :
A. Array satu dimensi
Array satu dimensi adalah suatu array yang terdiri dari satu subscript, yaitu
jumlah data maksimum. Sistematikanya sebagai berikut :

Type namaArray[x];

• ‘Type’ dapat bertipe data bebas yang sesuai dalam bahasa C .


• ‘namaArray’ disesuaikan dengan compiler.
• ‘x’ harus bilangan integer yang lebih dari 0.
Contoh:

Source Code Output

#include <stdio.h> Elemen[0] = 0


int main () { Elemen[1] = 1
int n[ 10 ]; Elemen[2] = 2
//n adalah array bertipe integer, Elemen[3] = 3
yang bernilai 10 Elemen[4] = 4
int i,j; Elemen[5] = 5
//inialisasi elemen array n – 0 Elemen[6] = 6
for ( i = 0; i < 10; i++ ) Elemen[7] = 7
{ Elemen[8] = 8
n[i] = i + 0; Elemen[9] = 9
//membuat elemen pada lokasi i
dengan i + 0
}
//output dari setiap nilai elemen array
for (j = 0; j < 10; j++ )
{
printf("Elemen[%d] = %d\n",j,n[j] );
//%d berarti bilangan integer ,
not double
}
return 0;
}
Tabel 4.2 Program Array Satu Dimensi
B. Array dua dimensi
Array dua dimensi merupakan array yang terdiri baris dan kolom. Biasanya
dapat berupa matrik atau table. Untuk mendeklarasikan array dua dimensi adalah
sebagai berikut:

Type namaArray[x][y];

Modul Praktikum Algoritma Pemrograman 32


Array dua dimensi dapat dianggap sebagai table yang memiliki ‘x’ jumlah
baris dan ‘y’ jumlah kolom. Berikut yang berisi 3 baris dan 4 kolom yang dapat
ditampilkan sebagai berikut:

Kolom 0 Kolom 1 Kolom 2 Kolom 3

Baris 0 A[0][0] A[0][1] A[0][2] A[0][3]

Baris 1 A[1][0] A[1][1] A[1][2] A[1][3]

Baris 2 A[2][0] A[2][1] A[2][2] A[2][3]


Tabel 4.3 Pengalamatan Array Dua Dimensi
Dengan demikian, setiap elemen dalam sebuah array diidentifikasi dengan
nama elemen dalam bentuk [i] dan [j], dimana ‘A’ adalah nama dari array, dan ‘i’
dan ‘j’ adalah subscript yang mengidentifikasi setiap elemen ‘A’.
Contoh:

Source Code Output

#include <stdio.h> 1 2 3
int main() 4 5 6
{
int x[2][3] = {{1, 2, 3}, {4, 5, 6}};
//insialisasi data
int i, j;

for (i=0; i<2; i++)//for yang pertama


{
for (j=0; j<3; j++)//for yang kedua
{
printf("%d ", x[i][j]);
//mencetak isi array
}
printf("\n");
//mencetak enter pada baris terakhir.
}

return 0;
}
Tabel 4.4 Program Array Dua Dimensi

Modul Praktikum Algoritma Pemrograman 33


C. Array Multidimensi
Array multidimensi merupakan array yang mempunyai ukuran lebih dari
dua. Deklarasi array Type namaArray[1][2][3]…[n]
Contoh:

Source Code Output

#include <stdio.h> masukkan 12 nilai:


int main(){ 1
int i, j, k, test[2][3][2]; 2
//menyimpan 12 elemen 3
4
printf("masukkan 12 nilai : \n"); 5
for(i = 0; i < 2; ++i) { 6
for (j = 0; j < 3; ++j) { 7
for(k = 0; k < 2; ++k ) { 8
scanf("%d", &test[i][j][k]); 9
//menampilkan nilai dari 10
index yang tepat 11
} 12
}
} Menampilkan data:
test[0][0][0] = 1
printf("\nmenampilkan data:\n"); test[0][0][1] = 2
for(i = 0; i < 2; ++i) { test[0][1][0] = 3
for (j = 0; j < 3; ++j) { test[0][1][1] = 4
for(k = 0; k < 2; ++k ) { test[0][2][0] = 5
printf("test[%d][%d][%d] = test[0][2][1] = 6
%d\n",i,j,k,test[i][j][k]); test[1][0][0] = 7
} test[1][0][1] = 8
} test[1][1][0] = 9
} test[1][1][1] = 10
test[1][2][0] = 11
return 0; test[1][2][1] = 12
}
Tabel 4.5 Program Array Multidimensi

Modul Praktikum Algoritma Pemrograman 34


Modul 5 : Prosedur dan Fungsi

A. Tujuan Praktikum
1. Mempelajari konsep Prosedur dan Fungsi
2. Mengenali syntax C yang digunakan untuk Memahami implementasi Prosedur dan
Fungsi pada C
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
1. Prosedur
Di dalam dunia pemrograman, prosedur adalah modul program yang
mengerjakan tugas atau aktivitas yang spesifik dan menghasilkan suatu efek netto.
Suatu efek netto diketahui dengan membandingkan keadaan awal dan keadaan akhir
pada pelaksanaan sebuah prosedur. Oleh karena itu, pada setiap prosedur kita perlu
mendefinisikan keadaan awal sebelum rangkaian instruksi di dalam prosedur
dilaksanakan dan keadaan akhir yang diharapkan setelah rangkaian instruksi di dalam
prosedur dilaksanakan.
1.1 Pendefinisian Pemanggilan Prosedur
Pendefinisian prosedur artinya menuliskan nama prosedur, mendeklarasikan
nama-nama konstanta, variabel dan tipe (jika ada), dan menjabarkan rangkaian aksi
yang dilakukan. Pada dasarnya, struktur prosedur sama dengan struktur algoritma
yang sudah dikenal, yaitu: ada bagian judul (header) yang terdiri atas nama
prosedur dan deklarasi parameter (jika ada), bagian deklarasi untuk mengumumkan
nama-nama, dan bagian algoritma yang disebut badan prosedur. Setiap prosedur
mempunyai nama yang unik. Nama prosedur sebaiknya diawali dengan kata kerja
karena prosedur berisi suatu aktivitas, misalnya:
• HitungLuas
• Tukar
• CariMaks
• Dan lain sebagainya.
Parameter adalah nama-nama variabel yang dideklarasikan pada bagian
header prosedur. Sebagian besar program memerlukan pertukaran data/informasi
antara prosedur atau fungsi dan titik dimana ia dipanggil. Penggunaan parameter
menawarkan mekanisme pertukaran informasi tersebut. Tiap item data ditransfer
antara parameter aktual dan parameter formal yang bersesuaian. Parameter
aktual/argumen adalah parameter yang disertakan pada waktu pemanggilan
prosedur, sedangkan parameter formal adalah parameter yang dideklarasikan di
dalam bagian header prosedur itu sendiri. Ketika prosedur dipanggil, parameter
aktual menggantikan parameter formal.

Modul Praktikum Algoritma Pemrograman 35


Notasi bahasa C untuk mendefinisikan prosedur (tanpa parameter) adalah:

void NamaProsedur(deklarasi parameter, jika ada)


/* Spesifikasi prosedur, berisi penjelasan tentang apa
yang dilakukan oleh prosedur ini. */
{
/*DEKLARASI
semua nama yang dipakai di dalam prosedur dan hanya
berlaku lokal di dalam prosedur didefinisikan di sini

ALGORITMA:
badan prosedur, berisi urutan instruksi */
}

Prosedur bukan program yang berdiri sendiri, jadi ia tidak dapat dieksekusi
secara langsung. Ini berarti, instruksi-instruksi di dalam prosedur baru dapat
dilaksanakan hanya bila prosedur tersebut diakses.
• Cara memanggil prosedur tanpa parameter:

Nama_Prosedur();

• Cara memanggil prosedur dengan parameter:

Nama_Prosedur(parameter aktual);

Nb: Parameter didalam prosedur boleh ada atau tidak ada.


1.2 Parameter
Kebanyakan program memerlukan pertukaran informasi antara prosedur dan
titik dimana ia dipanggil. Ketika prosedur dipanggil, parameter aktual
berkoresponden dengan parameter formal (pada prosedur). Tiap-tiap parameter
aktual berpasangan dengan parameter formal yang bersesuaian. Aturan yang harus
diperhatikan dalam korespondensi satu-satu antara parameter aktual dan parameter
formal adalah:
1. Jumlah parameter aktual pada pemanggilan prosedur harus sama dengan jumlah
parameter formal pada deklarasi prosedurnya;
2. Tiap parameter aktual harus bertipe sama dengan tipe parameter formal yang
bersesuaian;
3. Tiap parameter aktual harus diekspresikan dalam cara yang sejenis dengan
parameter formal yang bersesuaian.
Berdasarkan maksud penggunaannya, terdapat tiga jenis parameter formal yang
disertakan di dalam prosedur:

Modul Praktikum Algoritma Pemrograman 36


1. Parameter Masukan (Input Parameter)
Pada parameter ini, nilai(value) parameter aktual diisikan (assign) ke
dalam parameter formal yang bersesuaian. Perhatikan program dengan prosedur
menghitung luas N buah segitiga dibawah ini:

Source Code

#include <stdio.h>

void HitungLuasSegitiga(float alas, float tinggi){


float luas; /* deklarasi variable */

luas = (alas*tinggi)/2.0; /* algoritma */


printf("\nLuas segitiga = %f ", luas);
}

int main(){
int i, N;
float a, t;

printf("Banyaknya segitiga? ");


scanf("%d", &N);
for (i=1; i<=N; i++){
printf("\nPanjang alas segitiga? ");
scanf("%f", &a);
printf("Tinggi Segitiga? ");
scanf("%f", &t);
HitungLuasSegitiga(a, t); //pemanggilan prosedur
}
return 0;
}

Output

Banyaknya segitiga? 2

Panjang alas segitiga? 11


Tinggi Segitiga? 12

Luas segitiga = 66.000000

Panjang alas segitiga? 3


Tinggi Segitiga? 4

Luas segitiga = 6.000000


Tabel 5.1 Program Prosedur dengan Parameter Masukan

Modul Praktikum Algoritma Pemrograman 37


2. Parameter Keluaran (Output Parameter)
Prosedur mungkin menghasilkan satu atau lebih keluaran yang akan
digunakan oleh program pemanggil. Jika ini kasusnya, maka nilai keluaran
tersebut ditampung di dalam parameter keluaran. Ketika prosedur yang
mengandung parameter keluaran dipanggil, maka nama parameter aktual
menggantikan nama parameter formal yang bersesuaian di dalam prosedur.
Selanjutnya, nama parameter aktual akan digunakan selama pelaksanaan
prosedur. Karena nama parameter merupakan suatu lokasi di memori, maka bila
di dalam prosedur parameter aktual diisi suatu nilai, nilai ini akan tetap berada
di dalam parameter aktual meskipun prosedur selesai dilaksanakan. Jadi setelah
pemanggilan, parameter aktual berisi suatu nilai yang merupakan keluaran dari
prosedur tersebut.

Source Code

#include <stdio.h> //Program menghitung rata2

void HitungRata2(int N, float *u){


int x, k;
float jumlah; /* deklarasi variable */

jumlah=0; /* algoritma */
printf("\n");
for (k=1; k<=N; k++){
printf("Masukkan angka: ");
scanf("%d", &x);
jumlah= jumlah + x;
}
*u= jumlah/N;
}

int main(){
int banyak;
float U;

printf("Banyaknya data? ");


scanf("%d", &banyak);
HitungRata2(banyak, &U); //pemanggilan prosedur
printf("\nRata-rata: %f ", U);
}

Output

Banyaknya data? 3

Masukkan angka: 19
Masukkan angka: 21
Masukkan angka: 34

Rata-rata: 24.666666
Tabel 5.2 Program Prosedur dengan Parameter Keluaran

Modul Praktikum Algoritma Pemrograman 38


3. Parameter Masukan atau Keluaran (Input/Output Parameter)
Parameter masukan/keluaran umumnya digunakan pada situasi dimana
ketika prosedur yang mengandung parameter keluaran dipanggil, nama
parameter aktual di dalam program pemanggil menggantikan nama parameter
formal yang bersesuaian di dalam prosedur. Selain itu, isi/nilai parameter aktual
juga ikut disalin ke dalam parameter formal. Jadi, nama dan nilai parameter
aktual digunakan di seluruh bagian prosedur. Akibat penggunaan parameter
masukan/keluaran, bila parameter aktual diubah nilainya di dalam badan
prosedur, maka sesudah pemanggilan prosedur nilai parameter aktual di titik
pemanggilan juga berubah. Ini berbeda dengan parameter masukan, yang dalam
hal ini meskipun nilai parameter aktual di dalam badan prosedur diubah, nilai
parameter aktual tersebut tidak berubah di titik pemanggilan. Perhatikan
program selisih XY dibawah ini, program utama untuk menghitung selisih nilai
X dan Y, dengan syarat X ≥ Y. Jika X < Y, maka X dan Y dipertukarkan dengan
memanggil prosedur Tukar.

Source Code

#include <stdio.h>
void Tukar(int *A, int *B){
int temp;

temp = *A; //simpan nilai A di temp


*A = *B; //isi A dengan nilai B
*B = temp; //isi B dengan nilai temp
}
int main(){
int X, Y, Z;

printf("X = ?");
scanf("%d", &X);
printf("Y = ?");
scanf("%d", &Y);

if (X < Y) //jika X < Y maka panggil prosedur Tukar


Tukar(&X, &Y);
Z= X - Y;
printf("Z = %d \n", Z);
}

Output

Banyaknya data? 3

Masukkan angka: 19
Masukkan angka: 21
Masukkan angka: 34

Rata-rata: 24.666666
Tabel 5.3 Program Prosedur dengan Parameter Masukan/Keluaran

Modul Praktikum Algoritma Pemrograman 39


2. Fungsi
Fungsi adalah modul program yang memberikan/mengembalikan (return)
sebuah nilai dari tipe tertentu (tipe dasar atau tipe bentukan). Fungsi sendiri sering
diartikan sebagai sekumpulan kode yang ditaruh dalam sebuah blok dan digunakan
untuk menjalankan suatu tugas khusus. tujuan pentingnya untuk membuat program
lebih terstruktur dan efisien sehingga program tersebut mudah dipahami atau dibaca
alur programnya.
Penggunaan fungsi membuat program jadi lebih efisien karena mengurangi
pengulangan penulisan kode yang sama. Hal ini karena jika sekelompok kode sudah
dibuat fungsi maka selanjutnya kita tinggal memanggil nama fungsinya saja beserta
parameter yang menyertainya jika ada.
2.1 Pendefinisian Pemanggilan Fungsi
Notasi bahasa C untuk mendefinisikan fungsi adalah:

tipe_data NamaFungsi(deklarasi parameter, jika ada)


/* Spesifikasi fungsi, berisi penjelasan tentang apa yang
dilakukan oleh fungsi ini. */
{
/*DEKLARASI
semua nama yang dipakai di dalam fungsi dan hanya
berlaku lokal di dalam fungsi didefinisikan di sini

ALGORITMA:
badan fungsi, berisi urutan instruksi */

return ekspresi;
//pengembalian nilai yang dihasilkan fungsi
}

Catatan:
1. Apabila fungsi tidak memiliki daftar parameter formal, maka tanda kurung
buka dan kurung tutup ( ) tetap harus ditulis. Hal yang sama juga berlaku pada
waktu pemanggilannya.
2. Sebagaimana halnya pada prosedur, fungsi didefinisikan di luar blok int
main().
Berikut ini bentuk umum dari definisi fungsi dalam bahasa C :

tipe-data nama-fungsi(daftar variabel) {


deklarasi variabel;
tubuh-fungsi;
}

• Tipe-data merupakan penentu tipe data dari keluaran fungsi yang berupa salah
satu dari tipe data yang didukung oleh bahasa C seperti char atau int.
• Nama-fungsi adalah pengenal atau identifier dari fungsi misalnya saat
dipanggil.

Modul Praktikum Algoritma Pemrograman 40


• daftar-variabel berisi sekumpulan parameter yang merupakan masukan dari
fungsi.
• Deklarasi-variabel adalah parameter didalam fungsi.
• tubuh-fungsi, berisi kode-program yang akan dijalankan ketika fungsi
tersebut dipanggil. Didalam tubuh fungsi kita bisa mendeklarasikan variabel
serta menulis kode program termasuk perintah return yang akan memberi nilai
balik fungsi
Berikut ini adalah contoh program fungsi dalam bahasa c:
f(x) = x2 + 2x – 4, dimana f adalah nama fungsi sedangkan x adalah parameter
fungsi yang bersangkutan. Nilai diberikan oleh fungsi bergantung pada masukan
parameter.
x = 2, maka f(2) = 22 + 2(2) – 4 = 4. Nilai 4 adalah nilai yang diberikan (return
value) oleh fungsi f. Perhatikan contoh program pemanggilnya di bawah ini.
Program ini menampilkan nilai x dan f(x) di dalam selang [2, 5] dengan x = 0.5

Source Code

#include<stdio.h>
float F(float x){
return x*x + 2*x -4;
}
int main(){
float x = 2.0;
printf("----------------------\n");
printf("| x | f(x) |\n");
printf("----------------------\n");
while(x <= 5.0){
printf("| %.2f | %10f |\n", x, F(x));
x += 0.5;
}
printf("----------------------\n");
return 0;
}

Output

----------------------
| x | f(x) |
----------------------
| 2.00 | 4.000000 |
| 2.50 | 7.250000 |
| 3.00 | 11.000000 |
| 3.50 | 15.250000 |
| 4.00 | 20.000000 |
| 4.50 | 25.250000 |
| 5.00 | 31.000000 |
----------------------
Tabel 5.4 Program Fungsi f(x) = x2 + 2x – 4

Modul Praktikum Algoritma Pemrograman 41


Program berikut adalah program yang bisa menentukan nilai terbesar dari dua buah
integer (int a dan int b).

Source Code

#include<stdio.h>

int Maks(int a, int b){


int c;
if(a<b)
c=b;
else if(b<a)
c=a;
return c;
}
int main(){
int a, b;
printf("Masukkan bilangan a : ");
scanf("%d", &a);
printf("Masukkan bilangan b : ");
scanf("%d", &b);
printf("\nBilangan terbesar : %d", Maks(a, b));
return 0;
}

Output

Masukkan bilangan a : 3
Masukkan bilangan b : 8

Bilangan terbesar : 8
Tabel 5.5 Program Bilangan Maks
2.2 Parameter Fungsi
Parameter sebuah fungsi adalah variabel yang menyertai fungsi tersebut baik
saat deklarasi maupun saat pemanggilan fungsi. Dalam bahasa C dikenal dua jenis
parameter, yaitu parameter formal dan aktual. Parameter formal adalah parameter
yang berupa variabel yang ada dalam definisi fungsi saat dideklarasikan.
Sedangkan parameter aktual adalah parameter yang bisa berupa variabel atau
konstanta yang dipakai saat pemanggilan fungsi
Ada 2 Jenis Parameter diantaranya:
• Parameter Formal
Parameter Formal adalah sebuah fungsi harus berupa variabel karena
dia bersifat kerangka yang nanti nilainya bisa berubah selama proses
program. Tata cara penulisan parameter formal tampak jelas pada saat
pembahasan tentang prototipe fungsi. Parameter formal bisa berupa satu atau
beberapa variabel yang ditulis setelah nama fungsi, ditaruh didalam kurung
dengan masing-masing variabel dipisahkan tanda koma

Modul Praktikum Algoritma Pemrograman 42


• Parameter Aktual
Parameter Altual merupakan parameter yang dipakai ketika sebuah
fungsi dipanggil didalam program. Parameter aktual dapat berupa variabel
atau konstanta. Penulisan dan tipe data parameter aktual sebuah fungsi harus
mengikuti aturan yang telah ditetapkan oleh parameter formal. Selain itu,
parameter aktual juga bisa merupakan hasil dari sebuah operasi bilangan
2.3 Fungsi Rekrusif
Rekursif adalah proses memanggil dirinya sendiri yang biasa dilakukan oleh
fungsi atau prosedur pada pemrograman prosedural. Rekursif akan terus berjalan
sampai kondisi berhenti terpenuhi.
Pada fungsi rekursif terdapat blok kode:
• Basis
Kode yang menjadi titik berhenti dari proses rekursif.
• Rekrusif
Kode dimana sebuah blok program memanggil dirinya sendiri.
Contoh penggunaan rekrusif pada program:

Source Code

#include<stdio.h>

void deret(int i){


if(i<10){
printf("%d ",i);
deret(++i);
}
}

int main(){
int i=0;
deret(i);
}

Output

0 1 2 3 4 5 6 7 8 9
Tabel 5.6 Program Fungsi Rekrusif
Pada program diatas bisa kita lihat dan kita nyatakan bahwa:
• Basis dari program diatas adalah if(i<10) dimana dinyatakan titik berhenti
program ketika If variable I adalah 10.
• Rekrusif terdapat pada class main ditulis deret(i) dinyatakan bahwa class
deret diulang sebanyak I kali.

Modul Praktikum Algoritma Pemrograman 43


3. Konversi Prosedur – Fungsi
3.1 Mengubah Fungsi Menjadi Prosedur
Sebuah fungsi dapat dikonversi menjadi prosedur dengan cara menyatakan
nilai yang dikembalikan (return value) oleh fungsi tersebut sebagai parameter
keluaran dari prosedur. Sebagai contoh, tinjau kembali fungsi Maks diatas. Maka
program prosedur nya adalah:

Source Code

#include <stdio.h>
void TentukanMaks(int a, int b, int *maks){
printf("Masukkan bilangan 1: ");
scanf("%d", &a);
printf("Masukkan bilangan 2: ");
scanf("%d", &b);
if (a<b)
*maks=b;
else if (b<a)
*maks=a;
}

int main(){
int c,d,e;
TentukanMaks(c, d, &e);
printf("Angka terbesar: %d", e);
}

Output

Masukkan bilangan 1 : 12
Masukkan bilangan 2 : 10
Angka terbesar: 12
Tabel 5.7 Program Fungsi -> Prosedur
3.2 Mengubah Prosedur Menjadi Fungsi
Prosedur yang mempunyai satu buah parameter keluaran dapat ditulis
sebagai fungsi dengan cara menyatakan parameter keluaran sebagain nilai yang
dikembalikan oleh fungsi. Sebagai contoh, tinjau prosedur menghitung rata-rata di
sub bab prosedur. Maka program fungsi nya adalah:

Source Code

#include <stdio.h> //Program menghitung rata2


float RataRata(int N){
int x, i;
float jumlah; /* deklarasi variable */
jumlah=0; /* algoritma */
for (i=1; i<=N; i++){
printf("Masukkan angka ke-%d : ",i);
scanf("%d", &x);

Modul Praktikum Algoritma Pemrograman 44


jumlah= jumlah + x;
}
return jumlah/N;
}
int main(){
int banyak;
printf("Banyaknya data? ");
scanf("%d", &banyak);
printf("\n");
printf("\nRata-rata: %f ", RataRata(banyak));
}

Output

Banyaknya data? 3

Masukkan angka ke-1 : 12


Masukkan angka ke-2 : 19
Masukkan angka ke-3 : 31

Rata-rata: 20.666667
Tabel 5.8 Program Prosedur -> Fungsi

Modul Praktikum Algoritma Pemrograman 45


Modul 6 : Sorting

A. Tujuan Praktikum
1. Mengetahui dan Memahami Konsep Sorting
2. Mengetahui Jenis-Jenis Sorting dan Perbedaan Masing-masing Sorting
3. Memahami Bagaimana Implementasi Sorting
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
Dalam pemrograman dengan bahasa C memiliki cara untuk mengurutkan data.
Konsep Sorting dalam pemrograman dengan bahasa C dapat memudahkan mengurutkan
data acak. Ada beberapa teknik atau metode sorting dalam bahasa C,sebagai berikut :
1. Bubble Sort
Bubble sort (metode gelembung) adalah metode/algoritma pengurutan dengan
dengan cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus
sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak
ada perubahan berarti data sudah terurut.

Gambar 6.1 Bubble Sort

Modul Praktikum Algoritma Pemrograman 46


Contoh:

Source Code

#include <stdio.h>
int main ()
{
int data[10] = {3, -2, 7, 10, -5, 22, 1, 27, 25, 30};
int pass, i, temp;

printf("Data sebelum diurutkan :\n");


for (i = 0; i < 10; ++i)
{
printf("%d\t", data[ i ]);
}

//bubble sort
for (pass = 1; pass < 10; ++pass)
{
for (i = 0; i < 10 - 1; ++i)
{
//Membandingkan data array ke-i dengan array ke-i+1
if (data[i] > data[i + 1])
{
temp = data[i];
//data array ke i dipindahkan ke variable temp
data[i] = data[i + 1];
//data array i menjadi array i+1
data[i + 1] = temp;
//data array i+1 menjadi data array i
}
}
}

printf("\nData sesudah diurutkan :\n");


for (i= 0; i < 10; ++i)
{
printf("%d\t", data[i]);
}
printf("\n");
return 0;
}

Output

Data sebelum diurutkan :


3 -2 7 10 -5 22 1 27 25 30
Data sesudah diurutkan :
-5 -2 1 3 7 10 22 25 27 30
Tabel 6.1 Program Bubble Sort

Modul Praktikum Algoritma Pemrograman 47


2. Insertion Sort
Insertion sort adalah sebuah metode pengurutan data dengan menempatkan
setiap elemen data pada posisinya dengan cara melakukan perbandingan dengan data –
data yang ada. Metode insertion sort ini dapat dianalogikan sama seperti mengurutkan
kartu, dimana jika suatu kartu dipindah tempatkan menurut posisinya, maka kartu yang
lain akan bergeser mundur atau maju sesuai kondisi pemindahanan kartu tersebut.

Gambar 6.2 Insertion Sort


Contoh:

Source Code

#include <stdio.h>
#define SIZE 5
int main (){
int data[SIZE] = {3, 12, 7, 1, 5};
int i, j, temp;
printf("Data sebelum diurutkan :\n");
//printing data items
for ( i = 0; i < SIZE; ++i){
printf("%4d", data[i]);
}

//sorting using insertion method


for (i = 1; i < SIZE; i++){
temp = data[ i ];
j = i - 1;
while (j >= 0 && data[ j ] > temp){
data[ j + 1 ] = data[ j ];
j = j - 1;
} //end while loop
data[ j + 1 ] = temp;
} //end for loop
printf("\nData sesudah diurutkan :\n");
for (i = 0; i < SIZE; ++i){
printf("%4d", data[ i ]);
}
return 0;
}

Modul Praktikum Algoritma Pemrograman 48


Output

Data sebelum diurutkan :


3 12 7 1 5
Data sesudah diurutkan :
1 3 5 7 12
Tabel 6.2 Program Insertion Sort
3. Selection Sort
Selection sort merupakan kombinasi dari searching dan sorting. Sebuah
algoritma pengurutan yang secara berulang mencari item yang belum terurut dan
mencari paling sedikit satu untuk dimasukkan ke dalam lokasi akhir. Di dalam selection
sort memiliki 2 varian seleksi/pengurutan data yaitu maximum sort dan minimum sort.

Gambar 6.3 Selection Sort


1) Maximum sort yaitu mencari data terbesar(X) yang dibandingan dengan index 1
kemudian jika index1 < data terbesar(X) maka data terbesar menjadi index 1.
2) Minimum sort yaitu kebalikan dari maximum sort yaitu mencari data terkecil(X)
yang dibandingkan dengan index 1 kemudian jika index1 > data terkecil(X) maka
data terkecil menjadi index1.

Modul Praktikum Algoritma Pemrograman 49


Contoh:

Source Code

#include <stdio.h>
#define SIZE 5

int main (){


int data[SIZE] = {3, 12, 7, 10, 5};
int pass, i, temp;

printf("Data sebelum diurutkan :\n");


//printing data items
for (i = 0; i < SIZE; ++i)
{
printf("%4d", data[i]);
}

//selection sort algorithm


for (pass = 0; pass < SIZE; ++pass)
{
for (i = pass + 1; i < SIZE; ++i)
{
if (data[pass] > data[i])
{
//steps for swapping
temp = data[ pass ];
data[pass] = data[i];
data[i] = temp;
}
}
}

printf("\nData sesudah diurutkan :\n");


for (i= 0; i < SIZE; ++i)
{
printf("%4d", data[i]);
}
return 0;
}

Output

Data sebelum diurutkan :


3 12 7 10 5
Data sesudah diurutkan :
3 5 7 10 12
Tabel 6.3 Program Selection Sort

Modul Praktikum Algoritma Pemrograman 50


4. Counting Sort
Algoritma pengurutan efektif dan efisien yang melakukan pengurutan dengan
ide dasar meletakkan elemen pada posisi yang benar, dimana penghitungan posisi yang
benar dilakukan dengan cara menghitung (counting) elemen-elemen dengan nilai lebih
kecil atau sama dengan elemen tersebut.

Gambar 6.4 Counting Sort


Contoh:

Source Code

#include<stdio.h>

void counting_sort(int a[],int n,int max){


int count[100]={0},i,j;
for(i=0;i<n;++i){
count[a[i]]=count[a[i]]+1;
}
printf("\nData sesudah diurutkan :");
for(i=0;i<=max;++i){
for(j=1;j<=count[i];++j){
printf("%4d ",i);
}
}
}

int main(){
int a[50],n,i,max=0;
printf("Masukan jumlah data : ");
scanf("%d",&n);
printf("\n");

for(i=0;i<n;++i){
printf("Masukkan data ke %d : ",i);
scanf("%d",&a[i]);
if(a[i]>max)
max=a[i];
}
counting_sort(a,n,max);
return 0;
}

Modul Praktikum Algoritma Pemrograman 51


Output

Masukan jumlah data : 7

Masukkan data ke 0 : 9
Masukkan data ke 1 : 52
Masukkan data ke 2 : 7
Masukkan data ke 3 : 2
Masukkan data ke 4 : 7
Masukkan data ke 5 : 54
Masukkan data ke 6 : 8

Data sesudah diurutkan : 2 7 7 8 9 52 54


Tabel 6.4 Program Counting Sort

Modul Praktikum Algoritma Pemrograman 52


Modul 7 : Searching

A. Tujuan Praktikum
1. Memahami dan mengerti logika pencarian dengan menggunakan metode sekuensial
dan binary
2. Mampu mengimplementasikan logika pencarian ke dalam program menggunakan
bahasa C.
3. Mampu melakukan analisis pada algoritma Searching yang dibuat.
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
Searching merupakan proses pencarian suatu data / nilai di dalam sebuah array
dengan cara mengecek satu persatu pada setiap index baris atau setiap index kolomnya.
Hampir sama dengan sorting, searching menggunakan teknik perulangan untuk melakukan
pencarian data. Ada 2 Teknik umumnya adalah sebagai berikut:
1. Sequential Search
Sequential Search adalah teknik pencarian data dimana data dicari secara urut
dari depan ke belakang atau dari awal sampai akhir. Data dibandingkan satu per satu
dari awal sampai data ditemukan atau tidak ditemukan. Kelebihan dari proses pencarian
secara sequential ini jika data yang dicari terletak didepan, maka data akan ditemukan
dengan cepat. Tetapi dibalik kelebihannya ini, teknik ini juga memiliki kekurangan.
Pertama, jika data yang dicari terletak dibelakang atau paling akhir, maka akan
membutuhkan waktu yang lama dalam proses pencariannya. Kedua, beban komputer
akan semakin bertambah jika jumlah data dalam array sangat banyak.
Misalkan terdapat sebuah data pada array A : 5 3 1 8 4, yang dicari angka 1,
maka program akan mengecek satu persatu dan data ditemukan pada indeks ke 3.
Contoh:

Source Code

#include<stdio.h>
int main(){
int a[100], i, n, cari;
printf("Banyak data : ");
scanf("%d",&n);
printf("\n");
for (i=0;i<=n-1;i++){
printf("Data ke-%d : ",i+1);
scanf("%d",&a[i]);
}
printf("\nData yang ingin dicari : ");
scanf("%d",&cari);
//proses sequential search
i=0;
while ((i<=n-1) && (a[i]!=cari)){

Modul Praktikum Algoritma Pemrograman 53


i=i+1;
if(a[i]==cari){
printf("\nData ditemukan di indeks : %d",i+1);
break;
}
if(i==n-1){
printf("Data tidak ditemukan");
}
}
return 0;
}

Algoritma

Program sequentialSearch

Kamus
a : array [1..100] of integer
i, n, cari : integer

Algoritma :
Output(‘Masukkan banyak data : ‘)
Input(n)
i traversal [1..n]
Output(‘Masukkan data ke-‘,i,’ : ‘);
Input(ai)
Output(‘Data yang ingin dicari : ‘)
Input(cari)
i = 1
while (i ≤ n) and (ai≠cari) do
i = i + 1;
if(ai = cari) then
Output(‘Data ditemukan pada indeks : ‘,i)
break
if(i = n-1) then
Output(‘Data tidak ditemukan’)

Output

Banyak data : 6

Data ke-1 : 98
Data ke-2 : 23
Data ke-3 : 54
Data ke-4 : 66
Data ke-5 : 31
Data ke-6 : 78

Data yang ingin dicari : 31

Data ditemukan di indeks : 5


Tabel 7.1 Program Sequential Search

Modul Praktikum Algoritma Pemrograman 54


2. Binary Search
Metode ini hanya dapat dilakukan pada kumpulan data yang sudah diurutkan
terlebih dahulu. Jika terdapat N buah data pada array A, data yang akan dicari akan
dibandingkan dengan data A[mid], dimana mid adalah indeks tengah dari array A
(low=1, high=N, mid=(high + low) div 2 atau (1+N) div 2)
a. Jika data A[mid] lebih besar dari data yang dicari maka akan dilakukan
penyempitan pada area pencarian (nilai low menjadi mid + 1).
b. Jika data A[mid] lebih kecil dari data yang dicari maka akan dilakukan
penyempitan pada area pencarian (nilai high menjadi mid - 1).
Keunggulan utama dari algoritma binary search adalah kompleksitas
algoritmanya yang lebih kecil daripada kompleksitas algoritma sequential search. hal
ini menyebabkan waktu yang dibutuhkan algoritma binary search dalam mencari
sebuah record dalam sebuah tabel lebih kecil daripada waktu yang dibutuhkan
algoritma sequential search.
Berikut ini adalah contoh pencarian dengan binary search :
low = 1 mid = (1+6) div 2 high = 6

1 2 3 4 5 6 Indeks
1 3 10 15 17 20 Array A (sudah diurutkan
terlebih dahulu)

Gambar 7.1 Binary Search-1


Misalkan data yang ingin dicari adalah 17, karena A[mid] < data yang dicari maka
daerah pencarian akan dipersempit. Karena A[mid] < cari, maka nilai low berubah
menjadi mid + 1 = 4 dan nilai mid menjadi (low + high) div 2 = (4+6) div 2 = 5

low mid high

1 2 3 4 5 6 Indeks
Array
1 3 10 15 17 20 A

Gambar 7.2 Binary Search -2


Jika data yang ingin dicari adalah 3, maka nilai high yang akan berubah menjadi
mid - 1 = 2 dan nilai mid menjadi (low + high) div 2 = (1+2) div 2 = 1
low = mid high

1 2 3 4 5 6 Indeks
Array
1 3 10 15 17 20 A
Gambar 7.3 Binary Search-3
Pencarian akan terus berlangsung hingga data ditemukan atau nilai dari mid = low =
high.
Modul Praktikum Algoritma Pemrograman 55
Contoh:

Source Code

#include <stdio.h>
int a[100];
int i,n,cari,idx,low,high, mid;
void main (){
printf("Banyak data : ");
scanf("%d",&n);
for (i=1;i<=n;i++)
{
printf("Data ke-%d : ",i);
scanf("%d",&a[i]);
}
printf("Data yang dicari : ");
scanf("%d",&cari);

//data diurutkan terlebih dahulu


//isi bagian ini dengan proses sorting
//proses binary search

low=1;
high=n;
idx=0;
while ((low<=high) && (idx==0))
{
mid=(low+high)/2;
if (a[mid]==cari)
idx=mid;
else if (a[mid]<cari)
low=mid+1;
else
high=mid-1;
}
if (idx!=0)
printf("\nData ditemukan pada indeks : %d",idx);
else
printf("\nData tidak ditemukan");
return 0;
}

Algoritma

Program binarySearch

Kamus
a : array [1..100] of integer
i, n, cari, idx, low, high, mid : integer

Algoritma :
Output(‘Masukkan banyak data : ‘) Input(n)

Modul Praktikum Algoritma Pemrograman 56


i traversal [1..n]
Output(‘Masukkan data ke-‘,i,’ : ‘);
Input(ai)
Output(‘Data yang ingin dicari : ‘)
Input(cari)
{ -------------------- }
{ -- proses sorting -- }
{ -------------------- }
low = 1
high = n
idx = 0
while (low ≤ high) and (idx = 0) do
mid = (low + high) div 2
if(a[mid] = cari) then
idx = mid
else if(a[mid] < cari) then
low = mid + 1
else
high = mid - 1
if(idx ≠ 0) then
Output(‘Data ditemukan pada indeks : ‘,i)
else
Output(‘Data tidak ditemukan’)

Output

Banyak data : 6

Data ke-1 : 98
Data ke-2 : 23
Data ke-3 : 54
Data ke-4 : 66
Data ke-5 : 31
Data ke-6 : 78

Data yang dicari : 31

Data ditemukan pada indeks : 5


Tabel 7.2 Program Binary Search

Modul Praktikum Algoritma Pemrograman 57


Modul 8 : Operasi File

A. Tujuan Praktikum
1. Memahami cara membuat, membuka, dan menutup file.
2. Memahami cara read dan write pada file.
3. Memahami cara truncate dan mengubah data pada file.
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
1. Pengertian
Secara definisi file adalah entitas dari data yang disimpan di dalam sistem
berkas yang dapat diakses dan diatur oleh pengguna. File juga dapat didefinisikan
sebagai kumpulan informasi yang biasanya disimpan dalam sebuah disk komputer,
dimana informasi disimpan dan dapat diambil kembali. Sebuah berkas memiliki nama
yang unik dalam direktori dimana ia berada. Alamat direktori dimana suatu berkas
ditempatkan diistilahkan dengan path. File atau berkas diorganisasikan dari sejumlah
record. Masing-masing record bisa terdiri dari satu atau beberapa field. Setiap field
terdiri dari satu atau beberapa byte
2. Operasi File
Secara umum operasi file dibagi menjadi 4, yaitu:
2.1 Membuat File
Dalam membuat file kita memerlukan nama file terlebih dahulu sehingga deklarasi
yang di perlukan sebagai berikut:

FILE *nama_file = pointer_ke_file;

2.2 Membuka dan Menutup File


Untuk membuka file kita membutuhkan fungsi fopen(“letak_file*/nama_file dan
format”,jenis_operasi), untuk menutup file kita bisa menggunakan fclose(nama_file).
Jika kita melakukan operasi yang membutuhkan kita membuka file lebih dari satu maka
kita bisa menggunakan fcloseall(void) untuk menutup semua file. Fopen merupakan
fungsi dari header “stdio.h”. Contoh penggunaan:
*apabila file tidak berada pada tempat yang sama dengan file projek

FILE *fp; //nama file

fp = fopen("file.txt", "w+");
//variabel fp sekarang berisi file.txt

fclose(fp);
//menutup file yang ada di variabel fp uaitu file.txt

Untuk jelasnya, ada pada read and write

Modul Praktikum Algoritma Pemrograman 58


2.3 Read and Write File
Read and write secara umum di bagi menjadi 3:
a) String
Sebelumnya kita harus tahu bahwa string merupakan tipe data yang
memuat sebuah list atau array dari char sehingga apabila char hanya bisa
menerima input sebanyak 1 karakter maka string bisa menerima lebih dari satu
karakter atau bisa terangkai menjadi sebuah kata. Dalam operasi file string
memiliki cara tersendiri dalam menuliskan nilainya ke dalam sebuah file yaitu
dengan cara : fgets() dan fputs(). Jika diperhatikan maka pada setiap akhir kata
get atau put di tambahkan f→ yang berarti file dan s→ yang berarti string.
Penulisannya sebagai berikut:

//untuk fgets
fgets(char *str, int p, file*fp);

//untuk fputs
fputs(char *str, file *fp);

Catatan:
• char *str menyesuaikan dengan nama variabel string yang ingin kita
masukkan kedalam file atau yang akan kita baca dari file.
• int p merupakan panjang dari string atau filenya.
• file *fp merupakan variabel file yang ingin kita akses.
b) Blok Data
Untuk menulis blok data kita dapat menggunakan fwrite() dan fread().
Penulisannya sebagai berikut:

fread(void *buffer, int b_byte, int c, file *fp);


fwrite(void *buffer, int b_byte, int c, file *fp);

Catatan:
• buffer merupakan alamat memori dari variabel yang ingin kita ambil
nilainya.
• b merupakan panjang byte yang ingin ktia pakai.
• c merupakan panjang karakter yang digunakan.
• fp merupakan pointer ke file.
c) File Yang Sudah Terformat
Jika diperlukan kita bisa menuliskan, data yang sudah terformat. Penulisannya
sebagai berikut:

fprintf(pointer_file,"string control", operasi);


fscanf(pointer_file, "string control", operasi);

Modul Praktikum Algoritma Pemrograman 59


Operasi file yang menentukan mode dari file :
• r → menentukan bahwa file hanya bisa dibaca tanpa diedit dengan
ketentuan file yang sudah ada
• w → menentukan bahwa file bias ditulis dan dibaca, apabila file sudah ada
maka akan dilakukan overwrite/ditumpuk.
• a → untuk membuat file yang sudah ada, untuk menambahkan dan
membaca data, apabila file belum ada, maka akan dibuat secara otomatis.
Contoh program Read and Write:

Source Code

#include<stdio.h>
#include<stdlib.h>

int main(){

FILE *pf;
char kar;
if((pf=fopen("COBA.TXT","a+"))==NULL)
{
printf("file tidak dapat diciptakan!\r\n");
exit(0);
}
while((kar=fgetc(pf)) != EOF) /*baca kar dari file*/
putchar(kar);
while((kar=getchar())!='\n') /*baca inputan user */
fputc(kar,pf);
fclose(pf);
return 0;
}
Tabel 8.1 Program Read and Write
2.4 Truncate File
Truncate file merupakan suatu cara untuk menghapus atau mengubah isi
dalam sebuah file, truncate akan menghapus satu line dalam file. Contoh Program:

Source Code

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(){
int status;
char COBA[25];
printf("\tProgram penghapus file\n");
printf("Tulis nama file yang ingin dihapus\n");
scanf("%[^\n]",COBA);
status = remove(COBA);

Modul Praktikum Algoritma Pemrograman 60


if(status == 0)
printf("\nSukses menghapus file %s\n", COBA);
else{
printf("\nTidak dapat menghapus file %s\n, COBA);
perror("Error");
}
printf("\t—Terimakasih--\n");
return 0;
}
Tabel 8.2 Program Hapus File
Dalam bahasa C sendiri sudah di sediakan fungsi truncate , akan tetapi pada
modul kali ini akan dibahas bagaimana kita menghapus salah satu line dengan me-
”rewrite” bagian tertentu pada file.
Dalam Truncate memiliki operasi yang sedikit berbeda dengan operasi file biasa.
• r+ → membaca dan menulis file tanpa mengubah isi dari file apa bila file sudah
ada maka file yang lama akan di gunakan.
• w+ → membaca dan menulis file, apabila file sudah ada maka file akan di hapus.
• a+ → membaca dan menulis program, apabila file sudah ada, isinya akan di
hapus
3. File Sekuensial
Operasi file secara berurutan atau secara sekuensial memungkinkan data dapat
di akses secara berurutan. Urutan data record yang telah direkam, sama dengan urutan
data ketika di masukan atau direkam. Urutan data yang telah di rekam akan menempati
urutan record yang selanjutnya, setelah record terakhir data di rekam. Ada 2 macam
organisasi file secara terurut : sequential dimana memiliki panjang record yang tetap,
dan line sequential dimana data berurut panjang nya berbeda-beda, setiap record
memiliki carriage return (CR) dan line feed(LF). Fungsi baku yang terkait dengan file
sekuensial ini antara lain adalah fprintf, fcanf, dan rewind.
Contoh Program:

Isi File "klien.txt"

982939881 bayok + 999.99


127718781 julian - 188.19
123910909 indy + 0
129301898 rico - 200.12
192389011 gita + 653.4
192891881 bayu + 0
982837187 el - 132.2
123187718 syifa + 92.1
912881877 arief + 199.1
182771823 tirta + 1200.9
123761726 alif + 0
129891881 reri - 12.99

Modul Praktikum Algoritma Pemrograman 61


Source Code

#include<stdio.h>
int main(){
int request, acc;
float bal;
char name[25],min;
FILE *cfPtr;
if((cfPtr = fopen("klien.txt","r+"))==NULL)
printf("File could not be opened\n");

else{
printf("Enter Request\n"
"1 - List account with zero balances\n"
"2 - List account with credit balances\n"
"3 - List account with debit balances\n"
"4 - End of run\n\n? ");
scanf("%d", &request);
while(request!=4){
fscanf(cfPtr,"%d %s %c %f", &acc, name, &min, &bal);
switch(request){
case 1:
printf("Account with zero balances:\n");
while(!feof(cfPtr)){
if(bal == 0 && min!= '-')
printf("%-10d%-6s%5.2f\n", acc,name,bal);
fscanf(cfPtr,"%d %s %c %f",&acc,name,&min,&bal);
}break;
case 2:
printf("Account with credit balances:\n");
while(!feof(cfPtr)){
if(min == '-')
printf("%-10d%-6s%5.2f\n", acc,name,0-bal);
fscanf(cfPtr,"%d %s %c %f",&acc,name,&min,&bal);
}break;
case 3:
printf("Account with debit balances:\n");
while(!feof(cfPtr)){
if(bal > 0 && min!= '-')
printf("%-10d%-6s%5.2f\n", acc,name,bal);
fscanf(cfPtr,"%d %s %c %f",&acc,name,&min,&bal);
}break;
}
rewind(cfPtr);
printf("\n? ");
scanf("%d",&request);
}
printf("End of run.\n");
fclose(cfPtr);
}
return 0;
}

Modul Praktikum Algoritma Pemrograman 62


Output

Enter Request
1 - List account with zero balances
2 - List account with credit balances
3 - List account with debit balances
4 - End of run

? 1
Account with zero balances:
123910909 indy 0.00
192891881 bayu 0.00
123761726 alif 0.00

? 2
Account with credit balances:
127718781 julian -188.19
129301898 rico -200.12
982837187 el -132.20

? 3
Account with debit balances:
982939881 bayok 999.99
192389011 gita 653.40
123187718 syifa 92.10
912881877 arief 199.10
182771823 tirta 1200.90

? 4
End of run.
Tabel 8.3 Program File Sekuensial

Modul Praktikum Algoritma Pemrograman 63


Modul 9 : Printf Formatting

A. Tujuan Praktikum
1. Memahami formatting integer dalam printf pada C
2. Memahami formatting float dalam printf pada C
3. Memahami formatting string dalam printf pada C
4. Memahami formatting lainnya dalam printf pada C
5. Memahami escape sequence pada C
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
1. Fungsi printf

Syntax :
printf("%flags|width|.precision|length|specifier", ...);

Fungsi printf pada dasarnya bukan bagian dari Bahasa pemograman C, tetapi
merupakan sebuah fungsi didalam header library <stdio.h>. Fungsi printf
menggunakan format specifier yang diawali dengan “%”, dimana format specifier akan
digantikan dengan nilai-nilai pada argumen-argumen selanjutnya pada fungsi printf.
Yang paling umum digunakan adalah %d atau %i untuk integer (bilangan bulat); %f
untuk float(bilangan pecahan); %c untuk char(karakter atau huruf); %s untuk string,
dan masih banyak lagi yang nantinya akan dijelaskan dalam bab ini
a. Integer Formatting
Formatting untuk integer menggunakan simbol %i atau %d, dalam source code

Source Code Output

#include <stdio.h> 123


123
123
int main()
123
{
00123
int a = 123;

printf("%i\n", a);
printf("%d\n", a);
printf("%3d\n", a);
printf("%5d\n", a);
printf("%05d\n" ,a);

return 0;
}
Tabel 9.1 Program Integer Formatting

Modul Praktikum Algoritma Pemrograman 64


Penjelasan:
• %i menandakan bahwa argumen selanjutnya merupakan sebuah integer, sama
dengan %d
• %3d menandakan bahwa integer tersebut akan dialokasikan daerah tiga
karakter/digit, tetapi karena panjang integer >= panjang daerah alokasi tidak ada
perubahan.
• %5d menandakan bahwa daerah alokasinya sekarang lima karakter/digit, karena
integer hanya sepanjang tiga karakter, pada kiri integer akan diberi whitespace
sampai panjang digit terakhir integer menempati karakter ke-lima.
• %05d merupakan format yang sama dengan %5d, hanya dengan perbedaan
whitespace diganti dengan angka 0.
• \n merupakan sebuah escape sequence berupa “newline”, yakni memasuki
sebuah baris baru.
b. Float Formatting
Formatting untuk float dapat digunakan %f, dan dalam contoh berikut akan
memuat beberapa variasi float formatting:

Source Code Output

#include <stdio.h> 3.141590


int main() 3.141690
{ 3.141590
float a = 3.14159; 003.141590
3.14
printf("%f\n",a); 3.14
printf("%5f\n",a); 03.14
printf("%10f\n",a);
printf("%010f\n",a);
printf("%.2f\n",a);
printf("%5.2f\n",a);
printf("%05.2f\n",a);

return 0;
}
Tabel 9.2 Program Float Formatting
Penjelasan:
• %f menandakan sebuah float atau double. Catatan: jika float tidak diformat
jumlah bilangan desimalnya, maka secara default adalah 6 digit dibelakang
koma.
• %5f menandakan bahwa float akan dialokasikan lima karakter, tetapi karena
float lebih panjang dari 5 karakter, tidak ada perubahan. PENTING: tanda
petik ( . ) dihitung sebagai 1 karakter

Modul Praktikum Algoritma Pemrograman 65


• %10f menandakan bahwa float akan dialokasikan sepuluh karakter, dan karena
float memiliki panjang 8 karakter (3; tanda koma; 6 digit dibelakang koma)
didepan float akan diberi whitespace sehingga digit terakhir float akan
menempati karakter kesepuluh.
• %010f sama dengan %10f namun whitespace digantikan dengan angka 0.
• %.2f menandakan bahwa float hanya menampilkan dua digit dibelakang koma
(dibulatkan).
• %5.2f menandakan bahwa float dialokasikan lima karakter dan menampilkan
dua digit di belakang koma. Karena panjang float 4 karakter (3; tanda koma; 2
digit dibelakang koma) maka muncul whitespace sehingga float berakhir di
karakter ke 5.
• %05.2f sama dengan %5.2f namun whitespace diganti dengan angka 0.
c. String Formatting
Formatting untuk string dapat digunakan %s, dan dalam contoh berikut akan
memuat beberapa variasi string formatting:

Source Code Output

#include<stdio.h> :Hay, I am SEA:


int main() : Hay, I am SEA:
{ :Hay, I am :
char s[20] = "Hay, I am SEA"; :Hay, I am SEA:
:Hay, I am SEA :
printf(":%s:\n", s); :Hay, I am SEA:
printf(":%15s:\n", s); : Hay, I am :
printf(":%.10s:\n", s); :Hay, I am :
printf(":%-10s:\n", s);
printf(":%-15s:\n", s);
printf(":%.15s:\n", s);
printf(":%15.10s:\n", s);
printf(":%-15.10s:\n", s);

return 0;
}
Tabel 9.3 Program String Formatting
Penjelasan:
• %s – menampilkan string seperti biasa
• %15s – string dialokasikan lima belas karakter, jika string lebih pendek akan
diberi whitespace sampai string sepanjang 15 karakter.
• %.10s – sepuluh karakter pertama string saja yang ditampilkan
• %-10s – string akan dialokasikan sebanyak sepuluh karakter dan ditampilkan
rata kiri (-), karena string lebih panjang dari 10 karakter maka tidak ada
perubahan.

Modul Praktikum Algoritma Pemrograman 66


• %-15s – string akan dialokasikan lima belas karakter dan ditampilkan rata kiri,
karena string lebih pendek dari 15 karakter akan diisi whitespace pada sisi
kanan.
• %.15s – lima belas karakter pertama string ditampilkan, karena string lebih
pendek seluruh string akan ditampilkan seperti normalnya.
• %15.10s – string akan dialokasikan lima belas karakter, tetapi hanya sepuluh
karakter yang ditampilkan, sisanya akan diisi whitespace pada sisi kiri.
• %-15.10s – string akan dialokasikan lima belas karakter dan ditampilkan rata
kiri, tetapi hanya sepuluh karakter yang ditampilkan, sisanya akan diisi
whitespace pada sisi kanan
d. Formatting Lainnya
Untuk formatting numerik lainnya, dapat diberikan nilai integer dan compiler akan
mengkonversi ke nilai yang sesuai pada tipe data formatting, supaya lebih jelas
lihat berikut ini:

Source Code

#include<stdio.h>

int main()
{
printf("Heksadesimal 1 : %x\n", 123);
printf("Heksadesimal 2 : %#x\n\n", 123);

printf("Signed int : %i\n", 4000000000);


printf("Unsigned int : %u\n\n", 4000000000);

printf("Oktal : %o\n\n", 255);

printf("Tanda petik \' \" \n");


printf("Tanda persen %d%% \n", 10);

return 0;
}

Output

Heksadesimal 1 : 7b
Heksadesimal 2 : 0x7b

Signed int : -294967296


Unsigned int : 4000000000

Oktal : 377

Tanda petik ' "


Tanda persen 10%
Tabel 9.4 Program Formatting Lainnya

Modul Praktikum Algoritma Pemrograman 67


Catatan:
1) Batas atas signed int adalah 2,147,483,647, ketika melebih batas itu perhitungan
akan dilanjutkan dari nilai batas bawahnya yaitu -2,147,483,648, namun untuk
unsigned int batasnya merentang dari 0 sampai 4,294,967,295.
2) Escape Sequences Selain tanda “%”, fungsi printf pada C juga mengenal tanda
“\” merupakan tanda untuk escape sequence, berikut adalah beberapa escape
sequence dan penjelasannya:
• \n – newline, baris baru
• \t – tab, sejumlah whitespace yang menyesuaikan dengan tab lainnya
• \b – backspace, menghapus karakter sebelumnya
• \r – carriage return, sama dengan menenkan tombol “Enter”
• \0 – null, sebuah karakter yang tidak memiliki nilai, biasa ditemukan di akhir
string.
3) Perlu diperhatikan juga bahwa escape sequence harus berada didalam tanda
petik (“).
e. Flags

Flags Deskripsi

- Teks ditampilkan rata kiri, secara default teks ditampilkan rata


kanan (jika ditentukan width atau panjangnya)

0 Mengganti whitespace dengan (0)

# (untuk specifier o, x atau X) nilai yang ditampilkan akan


ditambahkan dengan 0, 0x atau 0X jika nilai tersebut bukan 0
Tabel 9.5 Flags
f. Width

Width Deskripsi

Minimum jumlah angka atau huruf yang ingin ditampilkan. Jika


(angka) jumlah huruf atau angka yang ditampilkan kurang dari width maka
ditambahkan whitespace pada sisi kiri. Jika jumlah huruf atau
angka yang ditampilkan lebih dari width maka tidak ada perubahan.
Tabel 9.6 Width

Modul Praktikum Algoritma Pemrograman 68


g. .Precision

.Precision Deskripsi

(untuk specifier d, i, o, u, x dan X) precision menentukan jumlah


minimum angka yang dapat ditampilkan di belakang koma. Jika
jumlah angka di belakang koma lebih dari precision maka
.(angka) ditambahkan 0 pada sisi kanan. Sebaliknya, Jika jumlah angka di
belakang koma kurang dari precision maka angka akan dibulatkan
dan ditampilkan sesuai jumlah precisionnya. Perlu diperhatikan,
jika nilai precision adalah 0, maka angka dibelakang koma tidak
ditampilkan
Tabel 9.7 .Precision
h. Specifier

Specifier Output Contoh


d or i Signed decimal integer 392
u Unsigned decimal integer 7235
O Unsigned octal 610
x Unsigned hexadecimal integer 7fa
X Unsigned hexadecimal integer (uppercase) 7FA
f Decimal floating point, lowercase 392.65
F Decimal floating point, uppercase 392.65
e Scientific notation (mantisa/exp), lowercase 3.9265e+2
E Scientific notation (mantisa/exp), uppercase 3.9265E+2
g Use the shortest representation: %e or %f 392.65
G Use the shortest representation: %E or %F 392.65
a Hexadecimal floating point, lowercase -0xc.90fep-2
A Hexadecimal floating point, uppercase -0XC.90FEP-2
c Character A
s String of characters Sample
p Pointer address b8000000
% Tanda % %
Tabel 9.8 Specifier

Modul Praktikum Algoritma Pemrograman 69


Modul 10 : Strings

A. Tujuan Praktikum
1. Memahami fundamental dari string pada bahasa C
2. Memahami cara mengolah string pada bahasa C
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
1. Fundamental String
Dalam bahasa pemograman C, pada dasarnya string merupakan sebuah array
dari char. Misalnya string “hello” merupakan array yang memuat ‘h’,’e’,’l’,’l’,’o’ dan
‘\0’ (null, tetapi karakter null ditambahkan secara automatic oleh C). Ketika membuat
string pada C digunakan array dari char, perlu diingat juga bahwa index pada array
dimulai dari nilai 0. Selain sebagai array dari char, string juga dapat ditulis sebagai
sebuah pointer char.
• Deklarasi Variabel String
Karena string merupakan array dari char, maka pendeklarasiannya sama dengan
mendeklarasikan array dari char, yaitu :

char nama_variabel[jumlah_karakter];

Contoh:

char alamat[40]
–> deklarasi variabel alamat dengan tipe data string.

2. Fungsi-Fungsi Pengolah dan Library


• String
Karena string merupakan tipe data array yang memuat char dan sering
digunakan, pada bahasa pemograman C tersedia beberapa fungsi untuk mengolah
string, Fungsi-fungsi dalam librari string.h antara lain : strcpy, strncpy, strcat,
strncat, strcmp, strncmp, strlen.
a) Strcpy
Berfungsi untuk menyalin (copying) suatu string asal ke variable string tujuan

strcpy(string_tujuan, string asal);

b) Strcat
Berfungsi untuk menambahkan string sumber ke bagian akhir dari string
tujuan.

strcat(string_awal, string_tambahan);

Modul Praktikum Algoritma Pemrograman 70


c) Strcmp
Berfungsi untuk membandingkan dua buah string. Hasil dari fungsi ini bertipe
integer dengan nilai:
− Negative, bila string pertama kurang dari string kedua.
− Nol, bila string pertama sama dengan string kedua.
− Positif, bila string pertama lebih banyak dari string kedua.

strcmp(string1, string2);

d) Strlen
Berfungsi untuk memperoleh jumlah karakter dari suatu string.

strlen(string);

Contoh:

Source Code

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char p1[10]="Welcome";
char p2[10]="Alpro";
char p3[10];
int pjg_karakter,index;
strcpy(p3,p1);
printf("p3 adalah : %s\n",p3);
strcat(p1 ,p2);
printf("p1 adalah : %s\n",p1);
printf("p2 adalah : %s\n",p2);
pjg_karakter=strlen(p2);
printf("panjang p2 adalah : %i\n",pjg_karakter);
index=strstr(p1,p2)-p1;
printf("p2 ada di index ke-%i pada karakter p1",index);
return 0;
}

Output

p3 adalah : Welcome
p1 adalah : WelcomeAlpro
p2 adalah : Alpro
panjang p2 adalah : 5
p2 ada di index ke-7 pada karakter p1
Tabel 10.1 Program String

Modul Praktikum Algoritma Pemrograman 71


Modul 11 : Loop Control & Math Function

A. Tujuan Praktikum
1. Memahami cara melakukan loop control pada C.
2. Memahami berbagai fungsi-fungsi matematika algoritma pemograman dasar terutama
pada C.
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
1. Loop Control
Saat membuat program terkadang kita perlu untuk mengkontrol sebuah loop
agar program bisa berjalan sesuai yang kita mau, untuk mengkontrol sebuah loop kita
bisa menggunakan loop control sebagai berikut :
1.1 Keyword Break
Keyword break digunakan untuk keluar dari sebuah loop. Contoh:

Source Code

#include <stdio.h>
#include <stdlib.h>
int main(){
int n,i;
printf("Masukan jumlah baris : ");
scanf("%d",&n); //input nilai n
for(i=0;i<100;i++){
//perulangan for dimulai dari i=0 sampai i<100
if(i==n){
break;
//keyword break untuk keluar dari perulangan
}
printf("ini baris ke %d\n",i);
}
return 0;
}

Output

Masukan jumlah baris : 5


ini baris ke 0
ini baris ke 1
ini baris ke 2
ini baris ke 3
ini baris ke 4
Tabel 11.1 Program Keyword Break
Loop hanya dilakukan sebanyak n kali karena pada saat i = n, statement break
dipanggil dan loop diberhentikan

Modul Praktikum Algoritma Pemrograman 72


1.2 Keyword Continue
Keyword continue digunakan untuk melewatkan sisa dari sebuah iterasi.
Contoh:

Source Code

#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i;
printf("Masukan nilai n : ");
scanf("%d",&n);
for(i=0;i<5;i++){
//perulangan for dimulai dari i=0 sampai i<5
if(i==n){
continue;
//keyword continue untuk melewatkan iterasi i = n
}
printf("ini baris ke %d\n",i);
}
return 0;
}

Output

Masukan nilai n : 3
ini baris ke 0
ini baris ke 1
ini baris ke 2
ini baris ke 4
Tabel 11.2 Program Keyword Continue
Saat iterasi dimana i = n, iterasi tersebut tidak dijalankan, dan langsung ke iterasi
selanjutnya.
1.3 Keyword Goto dan Pelabelan
Keyword goto digunakan untuk menjalankan program lagi dari sebuah “label”.
Contoh:

Source Code

#include <stdio.h>
#include <stdlib.h>

int main()
{
int n,i=0;
printf("Masukan nilai n : ");
scanf("%d",&n); //input nilai n

Modul Praktikum Algoritma Pemrograman 73


label1: //membuat label dengan nama label1
printf("label1\n");
printf("nilai i = %d\n",i); //output nilai i
i++; //nilai i bertambah 1;
if (i < n){
goto label1; //program dijalankan lagi dari label1
}
return 0;
}

Output

Masukan nilai n : 5
label1
nilai i = 0
label1
nilai i = 1
label1
nilai i = 2
label1
nilai i = 3
label1
nilai i = 4
Tabel 11.3 Program Keyword Goto
Ketika program dijalankan pertama kali, nilai i = 0. Setiap melewati statement
“i++;”, nilai i menjadi bertambah 1 dan syarat “if(i < n)” terpenuhi, dan didalam
“if” tersebut diberikan perintah “goto label1”. Maka program akan dijalankan lagi
dari label “label1”, proses akan berulang-ulang hingga “if” tidak terpenuhi dan
statement “goto label1;” tidak dijalankan lagi.
2. Math Function
Untuk pemanggilan dan melakukan perhitungan fungsi matematika di
pemrograman C diperlukan library function <math.h> . Library function adalah fungsi-
fungsi yang disediakan oleh bahasa C dan C++ dalam file-file header atau librarynya.
Perlu diperhatikan bahwa library tersebut hanya menerima parameter dengan tipe data
float/double.
Bebarapa fungsi untuk melakukan perhitungan matematika sebagai berikut :
2.1 Trigonometri
Perlu diperhatikan dalam fungsi-fungsi trigonometri pada <math.h>,
digunakan satuan radians untuk sudut, bukan derajat (degree). Untuk konversi dari
radians ke derajat dapat digunakan rumus berikut:
Degrees= 180π×Radians
Untuk nilai π dapat dideklarasikan konstanta menggunakan preprocessor #define,
contoh :
#define PHI 3.14

Modul Praktikum Algoritma Pemrograman 74


Atau menggunakan konstanta nilai PHI yaitu M_PHI yang sudah termasuk
kedalam library <math.h>.
Fungsi – Fungsi Trigonometri :

Deklarasi Kegunaan

Sin(x) Menghasilkan nilai sin dengan parameter x dalam radians.

Cos(x) Menghasilkan nilai cos dengan parameter x dalam radians.

Tan(x) Menghasilkan nilai tan dengan parameter x dalam radians.

Asin(x) Menghasilkan nilai arcsin dengan parameter x dalam


radians.

Acos(x0 Menghasilkan nilai arccos dengan parameter x dalam


radians.

Atan(x0 Menghasilkan nilai arccos dengan parameter x dalam


radians.

Atan2(y,x) Menghasilkan nilai arcus tan dengan parameter x dalam


radians y/x, untuk menentukan kaudran yang tepat.

Sinh(x) Menghasilkan nilai hiperbolik sin dengan parameter x dalam


radians.

Cosh(x) Menghasilkan nilai hiperbolik cos dengan parameter x dalam


radians.

Tanh(x) Menghasilkan nilai hiperbolik tan dengan parameter x dalam


radians.
Tabel 11.4 Fungsi-Fungsi Trigonometri
Contoh penggunaan fungsi-fungsi trigonometri:

Source Code

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
double radians,derajat;
printf("Masukan nilai : ");
scanf("%lf",&derajat); //input nilai derajat
radians = derajat * (M_PI/180); //menghitung radians
//menhitung sin menggunakan fungsi sin(radians)
printf("sin %.0f = %.2f \n", derajat, sin(radians));
//menghitung cos menggunakan fungsi cos(radians)
printf("cos %.0f = %.2f \n", derajat, cos(radians));

Modul Praktikum Algoritma Pemrograman 75


//menghitung tan menggunakan fungsi tan(radians)
printf("tan %.0f = %.2f \n", derajat, tan(radians));
return 0;
}

Output

Masukan nilai : 60
sin 60 = 0.87
cos 60 = 0.50
tan 60 = 1.73
Tabel 11.5 Program Trigonometri
2.2 Eksponensial
Fungsi – Fungsi Eksponensial :

Deklarasi Kegunaan

Exp(x) Menghitung nilai eksponen (e) dengan x sebagai pangkat


(ex ).

Log(x) Menghitung nilai logaritma (ln) dari x.

Log10(x) Menghitung nilai log dengan base 10 dari x.

Pow(x,y) Menghitung nilai x pangkat y (xy).

Sqrt(x) Menghitung nilai akar kuadrat dari x.


Tabel 11.6 Fungsi-Fungsi Eksponensial
Contoh penggunaan fungsi-fungsi Eksponensial :

Source Code

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

int main()
{
double x,y;

printf("Masukan nilai x : ");


scanf("%lf",&x); //input nilai x

printf("Masukan nilai y : ");


scanf("%lf",&y); //input nilai y

//menghitung eksponen menggunakan fungsi exp(x)


printf("\ne^%.0f = %.2f \n", x, exp(x));

Modul Praktikum Algoritma Pemrograman 76


//menghitung logaritma menggunakan fungsi log(x)
printf("log(%.0f) = %.2f \n", x, log(x));

//menghitung log base 10 menggunakan fungsi log10(x)


printf("log10(%.0f) = %.2f \n", x, log10(x));

//menghitung x pangkat y menggunakan fungsi pow(x,y)


printf("%.0f^%.0f = %.2f \n", x, y, pow(x,y));

//menghitung akar kuadrat menggunakan fungsi sqrt(x)


printf("akar kuadrat %.0f = %.2f \n", x, sqrt(x));

return 0;
}

Output

Masukan nilai x : 16
Masukan nilai y : 2

e^16 = 8886110.52
log(16) = 2.77
log10(16) = 1.20
16^2 = 256.00
akar kuadrat 16 = 4.00
Tabel 11.7 Program Eksponensial
2.3 Fungsi-Fungsi Lainnya
Selain fungsi-fungsi trigonometri dan eksponensial. Terdapat fungsi lain yang
mendukung perhitungan matematika diantaranya :

Deklarasi Kegunaan

Round(x) Pembulatan standar nilai x.

Ceil(x) Pembulatan keatas nilai x.

Floor(x) Pembulatan kebawah nilai x.

Fabs(x) Menghitung nilai absolut dari x.

Fmod(x) Menghitung nilai sisa bagi dari x/y.

Fmax(x) Mengambil nilai maksimal/terbesar dari x dan y.

Fmin(x) Mengambil nilai minimum/terkecil dari x dan y.


Tabel 11.8 Fungsi-Fungsi Lainnya

Modul Praktikum Algoritma Pemrograman 77


Contoh penggunaan fungsi-fungsi lain :

Source Code

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
double x,y;
printf("Masukan nilai x: ");
scanf("%lf",&x); //input nilai x
printf("Masukan nilai y: ");
scanf("%lf",&y); //input nilai y

//menghitung pembulatan standar menggunakan round(x)


printf("pembulatan standar %.2f = %.f\n",x,round(x));

//menghitung pembulatan keatas menggunakan ceil(x)


printf("pembulatan keatas %.2f = %.f\n",x,ceil(x));

//menghitung pembulatan kebawah menggunakan floor(x)


printf("pembulatan kebawah %.2f = %.f\n",x,floor(x));

//menghitung nilai absolut menggunakan fabs(x)


printf("nilai absolut %.2f = %.2f\n",y,fabs(x));

//menghitung sisa bagi y /x menggunakan fmod(y,x)


printf("sisa bagi %.2f/%.2f = %.2f\n",y,x,fmod(y,x));

//menghitung nilai tertinggi menggunakan fmax(x,y)


printf("nilai tertinggi = %.2f\n",fmax(x,y));

//menghitung nilai terendah menggunakan fmin(x,y)


printf("nilai terendah = %.2f\n",fmin(x,y));

return 0;
}

Output

Masukan nilai x: 3.78


Masukan nilai y: 8.45

pembulatan standar 3.78 = 4


pembulatan keatas 3.78 = 4
pembulatan kebawah 3.78 = 3

nilai absolut 8.45 = 3.78


sisa bagi 8.45/3.78 = 0.89

nilai tertinggi = 8.45


nilai terendah = 3.78
Tabel 11.9 Program Fungsi Lainnya
Modul Praktikum Algoritma Pemrograman 78
Modul 12 : Pointers

A. Tujuan Praktikum
1. Memahami dasar dari pointers pada C
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
Pointer adalah sebuah variabel yang berisi alamat memori dari suatu variabel
lainnya. Jika biasanya sebuah variabel berisi dengan suatu nilai data, maka variabel pointer
berisi dengan suatu alamat memori yang ada di computer kita. Sebuah variabel pointer
ditandai dengan asterisk (*) , dan dapat dideklarasikan dengan syntax berikut:

Type_data *nama_variabel

Deklarasi variabel pointer seperti variabel lainnya hanya ditambahkan tanda


asterisk(*) pada depan nama_variabel. Untuk pointer Type_data apapun, jika ingin
mendapatkan isi atau nilai dari alamat yang terdapat di pointer maka diberi tanda
asterisk(*) di depan nama variabel saat melakukan output.
Selain asterisk (*), juga ada operator ampersand (&). Operator ampersand(&)
digunakan untuk mengetahui sebuah address(alamat pada memory) dari suatu variabel
pointer. Alamat memori akan selalu berupa 6 karakter hexadecimal dan pendeklarasikan
dengan syntax sebagai berikut:

Output(…,&nama_variabel);

SecaraSecara singkat dapat disimpulkan pointer 2 deklarasi:


• Asterisk (*) – pointer, menunjukkan nilai pada sebuah alamat.
• Ampersand (&) – address, menunjukkan alamat variabel pointer tersebut
Supaya lebih jelas, perhatikan contoh sederhana sebagai berikut:

Source Code

#include<stdio.h>
int main(){
int x = 7;
int *ptr;
ptr = &x;
printf("* - nilai pada alamat\n& - alamat\n\n");
printf("Nilai x : %i\n", x);
printf("Nilai &x : %x\n", &x);
printf("Nilai ptr : %x\n", ptr);
printf("Nilai *ptr: %i\n", *ptr);
printf("Nilai &ptr: %x\n", &ptr);
return 0;
}

Modul Praktikum Algoritma Pemrograman 79


Output

* - nilai pada alamat


& - alamat

Nilai x : 7
Nilai &x : 60ff0c
Nilai ptr : 60ff0c
Nilai *ptr : 7
Nilai &ptr : 60ff08
Tabel 12.1 Program Pointer
Untuk lebih jelasnya coba perhatikan
• x – sudah dapat diketahui nilai dan type datanya yaitu 7 (type data integer).
• &x – alamat dari variabel x adalah 60ff0c (hexadecimal)
• ptr – nilai dari alamat pointer ptr1adalah alamat dari variabel x,karena perintah atau
logika prt = &x, maka nilai ptr1 sama dengan alamat variabel x
• *ptr – nilai pada alamat yang ditunjuk pointer ptr, karena ptr mengandung alamat x,
nilai pada alamat yang ditunjuk adalah nilai variabel x
• &ptr – alamat dari ptr adalah 60ff0c (hexadecimal).
Supaya lebih memahami address dan pointer, bisa dipelajari juga penjelasan ilustratif dari
program diatas.

Gambar 12.1 Penjelasan Pointer


Jadi pada gambar tersebut, terdapat 2 segmen memori yang digunakan program
yang memiliki alamat, nilai dan variabel. Tanda panah disini di maksudkan nilai atau
alamat tersebut, seperti jika menggunakan address(&) akan mendapatkan alamat yang
sesuai. Sementara jika menggunakan pointer(*) maka akan menampilkan isi atau nilai
yang ditunjuk, nilai ptr adalah alamat dari variabel x maka nilai pointer dari ptr
menunjuk ke nilai variabel x.

Modul Praktikum Algoritma Pemrograman 80

Anda mungkin juga menyukai