0% menganggap dokumen ini bermanfaat (0 suara)
49 tayangan137 halaman

Modul Praktikum Algoritma Dan Pemrograman 2425

Dokumen ini adalah Modul Praktikum Algoritma dan Pemrograman untuk tahun akademik 2024/2025 yang mencakup kata pengantar, daftar tim penyusun, lembar pernyataan, revisi modul, visi dan misi fakultas, serta aturan pelaksanaan dan perizinan praktikum. Modul ini bertujuan untuk memberikan panduan praktikum yang efektif bagi mahasiswa di Fakultas Teknik Elektro Universitas Telkom. Diharapkan modul ini bermanfaat dan dapat diperbaiki melalui kritik dan saran dari pembaca.

Diunggah oleh

2sgyyczbrj
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
49 tayangan137 halaman

Modul Praktikum Algoritma Dan Pemrograman 2425

Dokumen ini adalah Modul Praktikum Algoritma dan Pemrograman untuk tahun akademik 2024/2025 yang mencakup kata pengantar, daftar tim penyusun, lembar pernyataan, revisi modul, visi dan misi fakultas, serta aturan pelaksanaan dan perizinan praktikum. Modul ini bertujuan untuk memberikan panduan praktikum yang efektif bagi mahasiswa di Fakultas Teknik Elektro Universitas Telkom. Diharapkan modul ini bermanfaat dan dapat diperbaiki melalui kritik dan saran dari pembaca.

Diunggah oleh

2sgyyczbrj
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 137

KATA PENGANTAR

Puji syukur kami panjatkan kehadirat Tuhan Yang Maha Esa, Yang Maha Pengasih
dan Penyayang, karena berkat karunia dan hidayah-Nya Modul Praktikum Algoritma dan
Pemrograman dapat diselesaikan.
Pada kesempatan ini kami mengucapkan terima kasih kepada semua pihak yang
telah memberikan kontribusinya, sehingga Modul Praktikum Algoritma dan Pemrograman
dapat diterbitkan.
Kritik dan saran sangat kami harapkan untuk perbaikan di masa mendatang.
Semoga buku ini dapat bermanfaat bagi pembaca. Selamat membaca dan
melaksanakan praktikum.

Bandung, 7 Agustus 2024

Tim Penyusun

Modul Praktikum Algoritma dan Pemrograman 2024/2025


i
TIM PENYUSUN MODUL PRAKTIKUM ALGORITMA DAN PEMROGRAMAN

Kepala Laboratorium : Dr. Rahmat Awaludin Salam, S.Si., M.Si.

Penanggung Jawab : Teguh Patriananda 1102223051

Ketua Tim : Garry Nelson 1102223258

Wakil Ketua Tim : Dennytan Raharjo 1104223013

Anggota :

• Ahmed Albatsa 1106220025

• Alika Widuri Kartika 1101223078

• Aliyus Hedri 1102223047

• Aswangga Pandita Sadu 1102223027

• Darla Gempita Daris Purba 1105223068

• Farhan Oktavian 1104223057

• Immanuel Eben Haezer Joseph Aletheia 101022300172

• Justin Fairman Tan 1102223024

• Lathifah Husnun 1105220073

• Muhammad Hafiz 101022300004

• Natasha Fedora Barus 1101223205

• Ni Kadek Cindy Sriastiti 1102223133

• Riza Aria Komara 1105220065

Modul Praktikum Algoritma dan Pemrograman 2024/2025


ii
LEMBAR PERNYATAAN

Yang bertanda tangan dibawah ini:

Nama : Dr. Rahmat Awaludin Salam, S.Si., M.Si.

NIP : 14890058

Jabatan : Kepala Laboratorium Dasar Komputer

Menerangkan dengan sesungguhnya bahwa modul praktikum ini telah direview


dan akan digunakan untuk pelaksanaan praktikum di Semester Ganjil Tahun Akademik
2024/2025 di Laboratorium Dasar Komputer Fakultas Teknik Elektro Universitas Telkom.

Bandung, 7 Agustus 2024

Menyetujui, Mengetahui,
Koordinator Asisten Laboratorium
Kepala Laboratorium Dasar Komputer Dasar Komputer

Dr. Rahmat Awaludin Salam, S.Si., M.Si. Teguh Patriananda


NIP 14890058 NIM 1102223051

Modul Praktikum Algoritma dan Pemrograman 2024/2025


iii
LABORATORIUM DASAR KOMPUTER
Engineering School – Telkom University
Gedung TULT lantai 10 ruang 10.04
Jl. Telekomunikasi No.1, Terusan Buah Batu, Bandung 40257

LEMBAR REVISI

Yang bertanda tangan di bawah ini :


Nama : Dr. Rahmat Awaludin Salam
NIP : 14890058
Jabatan : Kepala Laboratorium Dasar Komputer
Dengan ini menyatakan pelaksanaan Revisi Modul Algoritma dan Pemrograman
untuk prodi S1 Teknik Elektro dan S1 Teknik Fisika, telah dilaksanakan dengan penjelasan
sebagai berikut :

No Modul Keterangan Revisi Tanggal Revisi


Terakhir
1 Modul 1 Penambahan langkah untuk membuat
kode sederhana dan langkah untuk
melakukan debugging dalam VS Code,
serta penjelasan tentang program C
dasar.
2 Modul 2 Perubahan struktur materi
3 Modul 3 Perubahan struktur materi serta
menambahkan penjelasan pada materi.
4 Modul 4 Perubahan struktur materi serta
menambahkan penjelasan pada materi.
3 Modul 5 Penghilangan materi pointer menjadi
modul sendiri, penambahan materi
fungsi rekursif, dan penambahan 7 Agustus 2024
penjelasan singkat tentang header.
4 Modul 6 Penambahan materi string dan
metode-metode terkait string.
5 Modul 7 Perubahan urutan materi menjadi
materi pointer. Pointer menjadi modul
terpisah dari modul 5.
6 Modul 8 Perubahan urutan materi menjadi
materi file input/output, yang
sebelumnya merupakan modul 10.
Penambahan proses untuk
mengupdate data dalam file
input/output

Modul Praktikum Algoritma dan Pemrograman 2024/2025


iv
LABORATORIUM DASAR KOMPUTER
Engineering School – Telkom University
Gedung TULT lantai 10 ruang 10.04
Jl. Telekomunikasi No.1, Terusan Buah Batu, Bandung 40257

7 Modul 9 Perubahan urutan materi menjadi


materi sorting, yang sebelumnya
merupakan modul 7. Penambahan
visualisasi yang lebih terperinci pada
setiap jenis sorting.
8 Modul 10 Perubahan urutan materi menjadi
materi searching, yang sebelumnya
merupakan modul 8. Penambahan
visualisasi pada setiap jenis searching.
9 Modul 1-10 Merapihkan kesalahan tanda baca,
kalimat efektif, dan typo. Serta
memberikan flowchart pada contoh
kodingan yang terdapat dalam modul
dan memberikan line untuk contoh
program.

Bandung, 7 Agustus 2024

Menyetujui, Mengetahui,
Kepala Urusan Koordinator Asisten
Laboratorium dan Studio, Laboratorium Dasar Komputer,

Dr. Rahmat Awaludin Salam Teguh Patriananda


NIP 14890058 NIM 1102223051

Modul Praktikum Algoritma dan Pemrograman 2024/2025


v
VISI DAN MISI FAKULTAS TEKNIK ELEKTRO

VISI:

Menjadi fakultas berstandar internasional yang berperan aktif dalam pengembangan pendidikan,
riset, dan entrepreneurship di bidang teknik elektro dan teknik fisika, berbasis teknologi informasi.

MISI:
1. Menyelenggarakan sistem pendidikan yang berstandar internasional di bidang teknik
elektro dan teknik fisika berbasis teknologi informasi.
2. Menyelenggarakan, menyebarluaskan, dan memanfaatkan hasil-hasil riset berstandar
internasional di bidang teknik elektro dan fisika.
3. Menyelenggarakan program entrepreneurship berbasis teknologi bidang teknik elektro
dan teknik fisika di kalangan sivitas akademika untuk mendukung pembangunan
ekonomi nasional.
4. Mengembangkan jejaring dengan perguruan tinggi dan industri terkemuka dalam dan
luar negeri dalam rangka kerjasama pendidikan, riset, dan entrepreneurship.
5. Mengembangkan sumberdaya untuk mencapai keunggulan dalam pendidikan, riset, dan
entrepreneurship

Modul Praktikum Algoritma dan Pemrograman 2024/2025


vi
ATURAN PELAKSANAAN KEGIATAN PRAKTIKUM SEMESTER GANJIL
TAHUN AKADEMIK 2024/2025 FAKULTAS TEKNIK ELEKTRO
Nomor: 001/AKD7/TE-WD1/2024
Menindak lanjuti Surat Edaran Nomor: 358/AKD6/AKD-BAA/2022 tentang Pelaksanaan Model
Perkuliahan. Berikut disampaikan Aturan Pelaksanaan Kegiatan Praktikum Semester Genap Tahun
Akademik 2023/2024.
A. Syarat Mengikuti Praktikum
Syarat mahasiswa yang mengikuti praktikum terdiri dari:
1. Mahasiswa dapatmengikuti praktikum jika mengambil SKS mata kuliah praktikum dan telah
atau sedang mengambil SKS mata kuliah yang terkait
2. Mahasiswa yang tetap mengambil SKS mata kuliah praktikum tanpa memenuhi syarat poin
1 maka nilai praktikum tidak berlaku dan tidak dapat ditabung
3. Bagi mahasiswa yang tidak lulus pada mata kuliah praktikum tertentu, tidak diwajibkan
mengambil keseluruhan mata praktikum, mahasiswa dapat mengulang hanya pada mata
praktikum yang dinyatakan tidak lulus

B. Aturan Pelaksanaan Praktikum untuk Asisten Laboratorium


Setiap asisten laboratorium yang menjalankan praktikum wajib mematuhi aturan sebagai berikut:
1. Asisten laboratorium wajib menggunakan seragam resmi Telkom University dan Membawa
Kartu Tanda Mahasiswa (KTM) yang masih berlaku
2. Seluruh asisten laboratorium yang berambut panjang wajib mengikat rambutnya
3. Asisten laboratorium dilarang makan minum di dalam ruangan selama praktikum
4. Asisten laboratorium yang tidak melaksanakan asistensi praktikum sesuai dengan jadwal
yang telah ditentukan dengan alasan apapun, maka diharuskan melapor
ke OA Line seelabs

C. Aturan Pelaksanaan Praktikum untuk Praktikan


Setiap praktikan yang mengikuti praktikum wajibmematuhi aturan sebagai berikut:
1. Semua Praktikan WAJIB menggunakan seragam resmi Telkom University
2. Untuk keselamatan selama praktikum, rambut harus rapi dan praktikan berambut panjang
wajib mengikat rambutnya
3. Praktikum dilaksanakan selama 2,5 jam sesuai dengan jadwal yangsudah ditentukan
4. Praktikan harus hadir 10 menit sebelum pelaksanaan praktikum dimulai
5. Keterlambatan praktikan di atas 20 menit, akan menyebabkan praktikan tidak
diperbolehkan mengikuti kegiatan praktikum pada modul yang tengah dilaksanakan
6. Praktikan dapat melaksanakan praktikum setelah mendapatkan instruksi dari Asisten
Praktikum 2
7. Selama praktikum berlangsung, Praktikan dilarang :
• Makan, minum dan merokok
• Membuat kegaduhan di dalam ruangan
• Mengubah konfigurasi software atau hardware
• Meninggalkan ruangan tanpa seizin Asisten Praktikum

Modul Praktikum Algoritma dan Pemrograman 2024/2025


vii
• Menggunakan smart phone tanpa seizin Asisten Praktikum
• Segala tindakan yang tidak pantas dilakukan selama praktikum berlangsung
8. Melaksanakan "aturan khusus" alur pelaksanaan kegiatan praktikum sesuai dengan
prosedur yang sudah diiitetapkan oleh masing-masing laboratorium
9. Praktikan yang tidak praktikum karena alasan sakit, insiden atau kecelakaan, ibadah atau
kegiatan kampus yang telah diizinkan Bagian Kemahasiswaan pusat (BK) harus melaporkan
ke OA line seelabs maksimal tiga hari setelah ketidakhadiran, atau tiga hari sebelumnya.
10. Apabila Praktikan melanggar aturan 1 sampai dengan 9 di atas, maka Praktikan akan
dikenakan sanksi sesuai dengan aturan yang berlaku

Sistem Penilaian Praktikum


1. Satu mata kuliah praktikum di Fakultas Teknik Elektro terdiri dari 12 modul praktikum
dengan persentase penilaian sesuai dengan jumlah modul dari setiap mata praktikum
yang diberikan
2. Secara khusus sistem penilaian praktikum bagi mahasiswa yang mengambil mata kuliah
praktikum di Fakultas Teknik Elektro mengikuti aturan sebagai berikut:

a. Kondisi Pertama

• Mata kuliah praktikum terdiri dari :


a. 1 mata praktikum, berjumlah 12 modul praktikum

b. 2 mata praktikum, masing-masing 6 modul praktikum

c. 3 mata praktikum, masing-masing 4 modul praktikum

• Mahasiswa diberikan toleransi tidak mengikuti Praktikum, hanya 1 (satu) kali


pertemuan untuk setiap mata praktikum.

• Jika ketidakhadiran melebihi dari ketentuan poin deatas maka nilai mata kuliah
praktikum tersebut bernilai E

b. Kondisi Kedua

Mata kuliah praktikum terdiri dari 4 mata praktikum, masing-masing 3 modul praktikum

• Mahasiswa diwajibkan mengikuti seluruh pertemuan praktikum

• Jika tidak mengikuti ketentuan di atas maka nilai mata kuliah praktikum tersebut
bernilai E

3. Bagi mahasiswa yang mengulang praktikum, wajib melakukan konfirmasi nilai mata
praktikum yang telah lulus di tahun sebelumnya kepada laboran pada masa validasi nilai

Modul Praktikum Algoritma dan Pemrograman 2024/2025


viii
ATURAN PERIZINAN PRAKTIKUM SUSULAN SEMESTER GANJIL
TAHUN AKADEMIK 2024/2025 FAKULTAS TEKNIK ELEKTRO

Nomor: 002/AKD7/TE-WD1/2024

A. Mahasiswa yang mengikuti praktikum (praktikan) di Fakultas Teknik Elektro wajib mengikuti
aturan Fakultas Teknik Elektro dan masing-masing laboratorium terkait serta patuh terhadap sanksi
yang telah ditetapkan

B. Syarat pengajuan izin praktikum susulan hanya berlaku bagi yang memenuhi kriteria sebagai
berikut:

1. Sakit

a. Dirawat inap

• Praktikan wajib melampirkan surat keterangan rawat inap dari rumah


sakit/puskesmas/instansi terkait

• Praktikan wajib memproses pengajuan praktikum susulan maksimal tujuh hari setelah
massa rawat inap selesai

b. Penyakit Kronis

Praktikan wajib melampirkan surat sakit dari rumah sakit/puskesmas/instansi terkait dan
memberikan bukti rekam medis yang menunjukkan penyakit telah diderita dalam kurun waktu
yang lama

c. Rawat Jalan

• Praktikan yang berada di daerah Bandung dan Sekitarnya wajib melampirkan surat
keterangan dari dokter “Telkomedika Kampus” yang menyatakan sakit dan membutuhkan
istirahat

• Praktikan yang berada di luar wilayah Bandung wajib memberikan surat yang menyatakan
sakit dan membutuhkan istirahat dari dokter yang menanganinya, serta melampirkan bukti
photo resep dan administrasinya

• Praktikan tidak diperkenankan melampirkan surat keterangan sakit dari klinik/dokter Online

• Tanggal di surat sakit harus sesuai dengan jadwal praktikum yang tidak hadir

• Praktikan hanya diberikan kesempatan satu kali praktikum susulan

2. Dispensasi Akademik

Praktikan wajib melampirkan salinan bukti approval dispensasi dari i- Gracias yang telah disetujui
oleh Badan Kemahasiswaan

Modul Praktikum Algoritma dan Pemrograman 2024/2025


ix
3. Musibah

a. Kematian Keluarga Inti

• Praktikan wajib melampirkan surat kematian maksimal tujuh hari setelah berita duka terjadi
dan bukti Kartu Keluarga. Keluarga inti terdiri dari orang tua, kakak, dan adik.

• Perizinan susulan diperbolehkan apabila rentang waktu antara kejadian dan jadwal
praktikum maksimal h+2 setelah kematian keluarga inti.

b. Kecelakaan

• Praktikan disarankan mendokumentasikan tempat kejadian perkara/bukti kecelakaan


lainnya yang berkaitan sebagai bukti pengajuan praktikum susulan.

• Praktikan yang tidak sempat mendokumentasikan tempat kejadian perkara/bukti


kecelakaan lainnya wajib ben buat surat pernyataan bermaterai disertai keterangan
pengesahan dari pihak yang dituakan di sekitar tempat kejadian perkara.

4. Ibadah

Praktikan wajib melampirkan salinan bukti approval dispensasi dari i- Gracias yang telah
disetujui oleh Badan Kemahasiswaan

C. Alur pengajuan praktikum susulan sebagal berikut:

1. Praktikan mengajukan praktikum susulan secara online ke OA Line seelabs

2. Laboran mengecek alasan pengajuan praktikum susulan

3. Laboran menentukan keputusan pengajuan praktikum susulan disetujui atau ditolak

4. Hanya praktikan yang telah disetujui laboran yang diizinkan untuk mengikuti praktikum
susulan

5. Laboran mencatat data praktikum susulan

6. Pengumuman daftar praktikan yang mengikuti praktikum susulan diinfokan melalui OA


Line seelabs dan Info Praktikum FTE di Telegram

7. Asisten laboratorium terkait menentukan dan menginfokan jadwal praktikum susulan

8. Pelaksanaan praktikum susulan

D. Penentuan keputusan perihal pengajuan praktikum susulan pada poin C oleh Laboran FTE
selaku perwakilan dari Fakultas Teknik Elektro bersifat mutlak dan tidak dapat diganggu gugat.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


x
ATURAN LABORATORIUM

Aturan yang berlaku di dalam laboratorium:

• Dilarang mengambil atau membawa keluar alat-alat serta bahan dalam laboratorium
tanpa seizin laboran FTE
• Orang yang tidak berkepentingan dilarang masuk ke dalam laboratorium untuk mencegah
hal-hal yang tidak diinginkan
• Gunakan alat dan bahan sesuai dengan petunjuk praktikum yang diberikan
• Jangan melakukan eksperimen sebelum mengetahui informasi mengenai alat-alat, bahan
kimia dan cara pemakaiannya.
• Bertanyalah jika anda merasa ragu atau tidak mengerti saar melakukan percobaan
• Mengenali semua jenis peralatan keselamatan kerja dan letaknya untuk memudahkan
pertolongan saat terjadi kecelakaan kerja.
• Harus mengetahui cara pemakaian alat darurat seperti pemadam kebakaran/APAR,
Hydrant, dan alat keselamatan kerja yang lainnya.
• Jika terjadi kerusakaan atau kecelakaan, sebaiknya segera melaporkannya kepada petugas
laboratorium dan laboran FTE.
• Berhati-hatilah bila bekerja pada bahan yang bersifat asam kuat reagen korosif, reagen-
reagen yang volatil dan mudah terbakar.
• Setiap asisten laboratorium harus mengetahui lokasi dan cara memberi pertolongan
pertama pada kecelakaan (P3K)
• Buanglah sampah pada tempat sampah yang telah disediakan.
• Usahakan untuk tidak sendirian di ruang laboratorium agar bila terjadi kecelakaan dapat
dibantu dengan segera.
• Jangan bermain-main di dalam ruangan laboratorium.
• Lakukan latihan keselamatan kerja secara periodik.
• Dilarang merokok, makan dan minum di laboratorium.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


xi
DENAH LOKASI LAB

Modul Praktikum Algoritma dan Pemrograman 2024/2025


xii
PANDUAN UMUM KESELAMATAN DAN PENGGUNAAN PERALATAN
LABORATORIUM

Demi mewujudkan keselamatan dan kenyamanan pada saat praktikum diperlukan partisipasi
seluruh praktikan dan asisten yang bersangkutan. Oleh karena itu diperlukan kepatuhan dan
ketertiban tiap-tiap individu terhadap panduan keselamatan berikut ini:

A. Ergonomi
1. Posisi tubuh yang benar
• Bagian kepala dan leher
Posisi kepala dan leher yang baik yaitu tegak dengan pandangan lurus ke depan. Dengan posisi
ini, praktikan akan sanggup bertahan lebih lama di depan komputer dan tidak cepat merasa lelah.
Posisi leher yang terlalu lentur dan kepala menengadah atau menunduk saat menghadap monitor
tidak dibenarkan karena akan cepat lelah.
• Bagian punggung
Duduk dengan punggung yang tegak dan rileks merupakan posisi yang benar saat menggunakan
komputer. Badan yang terlalu membungkuk, terlalu miring ke kiri atau ke kanan, dapat
menimbulkan rasa sakit. Usahakan agar seluruh punggung tersangga dengan baik oleh sandaran
kursi.
• Bagian Pundak
Atur posisi pundak sedemikian rupa agar otot-otot pundak tidak tegang. Usahakan agar pundak
tidak terlalu ke bawah atau terlalu tegak
• Posisi lengan dan siku
Posisi lengan yang baik adalah berada di samping badan dan siku membentuk sudut lebih besar
dari 90 derajat. Pada bagian kaki, gunakan sandaran kaki atau footrest sehingga tungkai berada
dalam posisi yang nyaman.

2. Posisi monitor
• Letakkan monitor di ruangan dengan pencahayaan yang cukup (tidak terlalu terang dan
tidak terlalu redup).
• Atur posisi monitor agar berada tepat di depan mata dengan jarak ideal dari mata ke
komputer 30 cm.
• Aturlah kecerahan monitor agar cahaya yang keluar tidak terlalu terang atau terlalu redup.
• Gunakan filter screen (filter monitor) untuk meredam radiasi.

3. Penggunaan mouse
Letak mouse yang benar yaitu di samping keyboard. Sesuaikan tangan yang biasa digunakan
untuk bekerja. Jika praktikan bekerja dengan tangan kiri, letakkan mouse di sebelah kiri keyboard
dan aturlah agar setting mouse menjadi left handed melalui sistem operasi. Penggunaan Mouse
Ketika menggunakan mouse usahakan agar pergelangan tangan berada pada posisi tidak
menggantung atau lebih rendah dari mouse.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


xiii
4. Penggunaan keyboard
• Sejajarkan pergelangan tangan dengan telapak tangan. Upayakan pergelangan tangan
selalu sejajar dengan telapak tangan. Lemaskan pergelangan tangan seperti mengambang.
Jangan tegang.
• Posisi siku menggantung. Pastikan siku dalam posisi bebas menggantung. Menyandarkan
siku pada sandaran kursi saat mengetik, selain menyulitkan saat mengetik, juga membuat
tegang dan cepat lelah.
• Lemaskan jari telunjuk dan jari manis. Kunci mengetik tanpa lekas lelah adalah melemaskan
seluruh jari. Jangan kaku dan tegang. Biarkan lemas, rileks, apa adanya.
• Tekan tombol keyboard dengan tenang. Jangan menekan tombol dengan kuat atau
mengalirkan kekuatan penuh pada tangan.
• Bila tidak sedang mengetik lemaskan keseluruhan tangan bila sedang tidak memencet
tombol di keyboard. Keadaan sebelum mengetik juga mempengaruhi kondisi di saat
mengetik.

5. Posisi meja dan kursi


Atur meja dan kursi sedemikian rupa hingga posisi duduk di depan monitor lebih nyaman dan
dapat menjangkau keyboard dan mouse dengan mudah. Selain diatur posisinya, perangkat keras
komputer harus dijaga dengan baik karena perangkat-perangkat tersebut menggunakan listrik.

6. Posisi kotak CPU


Kotak CPU yang diletakkan di lantai dan tidak dilengkapi dengan ground dapat mengalirkan listrik
saat kita menyentuhnya tanpa alas kaki. Untuk menghindari korsleting, kotak CPU sebaiknya
diletakkan di tempat yang aman, misalnya di atas meja. Kotak CPU dapat ditanahkan (grounded)
dengan cara dihubungkan ke tanah atau tembok menggunakan seutas kawat tembaga. Karena
CPU membutuhkan konsumsi listrik yang besar, maka kita harus menjauhkannya dari benda-
benda cair dan binatang atau serangga untuk menghindari korsleting.

7. Posisi kabel-kabel
Atur susunan kabel secara baik dan rapi. Periksalah stop kontak atau sumber listrik, jangan sampai
ada yang longgar karena aliran listrik yang tidak stabil berpotensi merusak perangkat keras
komputer dan mengakibatkan korsleting.

B. Konsleting Listrik
Perhatikan tempat-tempat yang terdapat sumber listrik dan pelajari bagaimana cara menyala-
matikannya. Jika melihat ada kerusakan yang berpotensi menimbulkan
bahaya, laporkan pada asisten yang bertugas.

• Hindari daerah atau benda yang berpotensi menimbulkan bahaya listrik (sengatan listrik/
strum) secara tidak disengaja, misalnya kabel jala-jala yang terkelupas dll.
• Tidak melakukan sesuatu yang dapat menimbulkan bahaya listrik pada diri sendiri atau
orang lain.
• Keringkan bagian tubuh yang basah karena, misalnya, keringat atau sisa air wudhu.
• Selalu waspada terhadap bahaya listrik pada setiap aktivitas praktikum.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


xiv
Kecelakaan akibat bahaya listrik yang sering terjadi adalah tersengat arus listrik. Berikut ini adalah
hal-hal yang harus diikuti praktikan jika hal itu terjadi:
• Jangan panik,
• Matikan semua peralatan elektronik dan sumber listrik di meja masing-masing dan di meja
praktikan yang tersengat arus listrik,
• Bantu praktikan yang tersengat arus listrik untuk melepaskan diri dari sumber listrik,
• Beritahukan dan minta bantuan asisten, praktikan lain dan orang di sekitar anda tentang
terjadinya kecelakaan akibat bahaya listrik.
• Kebakaran

Penyebab Utama Kebakaran


Penyebab utama kebakaran antara lain :
1. Pemanasan yang tidak tepat, yaitu bila zat yang mudah terbakar dipanaskan tidak
sebagaimana mestinya, tidak berhati-hati memakai penangas minyak, dan tidak memeriksa
suhu minyak secara berkala.
2. Penyebaran uap dan gas-gas yang mudah terbakar, misalnya tidak melakukan
pendingingan yang baik pada saat penyulingan, ada kebocoran zat, reaksi yang perlu
dilakukan di ruang asam/ruang khusus, menuang sejumlah besar zat yang mudah
terbakar, ceroboh/cairan mudah menguap berceceran, atau ventilasi ruang kurang baik.
3. Personal yang kurang sadar/kurang hati-hati, misalnya merokok, membuang korek api,
dan sebagainya.

Pencegahan Kebakaran
Pencegahan kebakaran antara lain :
1. Menyimpan bahan-bahan yang mudah terbakar di tempat yang aman dari sumber nyala
api.
2. Bahan mudah bakar seperti kertas tidak boleh disimpan di ruang server f
3. Jangan biarkan sampah (misalnya kertas yang tidak terpakai) menumpuk dan
membakarnya di tempat sembarangan.
4. Pastikan bahwa kabel dan peralatan listrik tidak rusak.
5. Jangan memberi beban berlebih pada sirkuit listrik.
6. Dilarang merokok di dalam ruangan laboratorium

Pemadam Kebakaran
Apabila telah terjadi peristiwa kebakaran segera lakukan langkah-langkah sebagai berikut :
1. Tetap Tenang dan Jangan Panik
• Kontrol Diri: Tetap tenang dan jangan panik. Panik bisa membuat situasi semakin sulit
dikendalikan.

2. Beritahu Semua Orang


• Peringatan: Segera beri tahu semua orang di dalam laboratorium mengenai kebakaran
tersebut.
• Alarm Kebakaran: Aktifkan alarm kebakaran jika tersedia.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


xv
3. Matikan Sumber Listrik
• Listrik: Jika memungkinkan, segera matikan sumber listrik utama untuk mencegah
kebakaran lebih lanjut dari korsleting listrik.

4. Gunakan Alat Pemadam Kebakaran


• Jenis Alat Pemadam: Gunakan alat pemadam kebakaran yang sesuai. Untuk kebakaran
elektronik, gunakan alat pemadam kebakaran jenis C yang dirancang khusus untuk
perangkat listrik.
• Cara Penggunaan: Gunakan alat pemadam kebakaran dengan metode PASS (Pull the pin,
Aim at the base of the fire, Squeeze the handle, Sweep side to side).

5. Evakuasi
• Rute Evakuasi: Ikuti rute evakuasi yang telah ditentukan. Jangan gunakan lift, gunakan
tangga darurat.
• Periksa Pintu: Sebelum membuka pintu, periksa suhu dengan punggung tangan. Jika
panas, cari rute lain.
• Tetap Rendah: Jika asap sudah tebal, merangkaklah di lantai untuk menghindari
menghirup asap.

6. Tutup Pintu
Isolasi Kebakaran: Jika memungkinkan, tutup pintu di belakang Anda untuk memperlambat
penyebaran api dan asap.

7. Panggil Bantuan
• Nomor Darurat: Setelah berada di tempat aman, segera hubungi nomor darurat untuk
melaporkan kebakaran.
• Informasi: Berikan informasi yang jelas tentang lokasi kebakaran dan situasi terkini.

8. Jangan Kembali ke Dalam


• Keamanan: Jangan kembali ke dalam laboratorium yang terbakar hingga pihak berwenang
menyatakan aman untuk kembali.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


xvi
DAFTAR ISI

KATA PENGANTAR ................................................................................................................................................................................. i


TIM PENYUSUN MODUL PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ....................................................................... ii
LEMBAR PERNYATAAN ....................................................................................................................................................................... iii
LEMBAR REVISI ...................................................................................................................................................................................... iv
VISI DAN MISI FAKULTAS TEKNIK ELEKTRO .................................................................................................................................. vi
ATURAN PELAKSANAAN KEGIATAN PRAKTIKUM SEMESTER GANJIL ................................................................................. vii
ATURAN PERIZINAN PRAKTIKUM SUSULAN SEMESTER GANJIL............................................................................................ ix
ATURAN LABORATORIUM ................................................................................................................................................................. xi
DENAH LOKASI LAB ............................................................................................................................................................................ xii
PANDUAN UMUM KESELAMATAN DAN PENGGUNAAN PERALATAN LABORATORIUM............................................ xiii
DAFTAR ISI ........................................................................................................................................................................................... xvii
ASISTEN PRAKTIKUM LAB. DASKOM 2024/2025 ....................................................................................................................... xix
MODUL 1 : PENGENALAN ALGORITMA DAN PEMROGRAMAN .............................................................................................. 1
1.1 IDE (Integrated Development Environment) ................................................................................................................. 1
1.2 Instalasi Visual Studio Code ..............................................................................................................................................2
1.3 Membuat Kode Sederhana ...............................................................................................................................................7
1.4 Algoritma ................................................................................................................................................................................9
1.5 Struktur Dasar Pemrograman C..................................................................................................................................... 12
1.6 Debugging ........................................................................................................................................................................... 15
MODUL 2 : SINTAKS DASAR DAN STRUKTUR PROGRAM C................................................................................................... 17
2.1 Variabel dan Konstanta .................................................................................................................................................... 17
2.2 Tipe Data ............................................................................................................................................................................. 19
2.3 Operasi Aritmatika ............................................................................................................................................................ 21
2.4 Tipe Bentukan.................................................................................................................................................................... 23
MODUL 3 : KONTROL ALUR PROGRAM ...................................................................................................................................... 25
3.1 Logika dan Relasional ...................................................................................................................................................... 25
3.2 If – Else ................................................................................................................................................................................ 26
3.3 Switch Case ........................................................................................................................................................................ 29
MODUL 4 : LOOPING DAN ITERASI ............................................................................................................................................... 31
4.1 Perulangan ........................................................................................................................................................................... 31
4.2 Jenis-Jenis Perulangan .................................................................................................................................................... 32
4.3 Perintah Kontrol ................................................................................................................................................................ 37
MODUL 5 : FUNGSI ............................................................................................................................................................................ 38
5.1 Fungsi Library Standar ..................................................................................................................................................... 38
5.2 Fungsi................................................................................................................................................................................... 39
Modul Praktikum Algoritma dan Pemrograman 2024/2025
xvii
5.3 Fungsi Void/Prosedur (Void Function) ........................................................................................................................ 42
5.4 Algoritma Rekursif ............................................................................................................................................................ 42
MODUL 6 : ARRAY DAN STRING.................................................................................................................................................... 44
6.1 Array ..................................................................................................................................................................................... 44
6.2 Array 1 Dimensi ................................................................................................................................................................. 45
6.3 Array Multidimensi ........................................................................................................................................................... 48
6.4 String .................................................................................................................................................................................... 50
MODUL 7 : POINTER ........................................................................................................................................................................... 61
7.1 Pengertian Pointer ............................................................................................................................................................. 61
7.2 Operator Pada Pointer.................................................................................................................................................... 64
7.3 Pointer Void ....................................................................................................................................................................... 65
7.4 Pointer dan Array ............................................................................................................................................................. 66
7.5 Operasi Aritmatika Pada Pointer .................................................................................................................................. 67
7.6 Pointer dan String ............................................................................................................................................................ 68
7.7 Pointer Sebagai Parameter Fungsi .............................................................................................................................. 69
7.8 Pointer dengan Struct ..................................................................................................................................................... 69
7.9 Fungsi Malloc dan Free ................................................................................................................................................... 72
MODUL 8 : FILE INPUT/OUTPUT .................................................................................................................................................... 73
8.1 Pengertian File Input/Output ......................................................................................................................................... 73
8.2 Membuka File .................................................................................................................................................................... 74
8.3 Memproses File ................................................................................................................................................................. 75
8.4 Menutup File ...................................................................................................................................................................... 89
8.5 Tambahan........................................................................................................................................................................... 90
MODUL 9 : SORTING .......................................................................................................................................................................... 91
9.1 Selection Sort ...................................................................................................................................................................... 91
9.2 Insertion Sort ..................................................................................................................................................................... 95
9.3 Bubble Sort......................................................................................................................................................................... 99
MODUL 10 : SEARCHING .................................................................................................................................................................102
10.1 Sequential Search ...........................................................................................................................................................102
10.2 Binary Search ................................................................................................................................................................. 104
TEKNIS DASAR PENULISAN LAPORAN........................................................................................................................................107
DAFTAR PUSTAKA ............................................................................................................................................................................. 112

Modul Praktikum Algoritma dan Pemrograman 2024/2025


xviii
ASISTEN PRAKTIKUM LAB. DASKOM 2024/2025

Kode
No. NIM Nama Jabatan No. HP ID Line
Asisten
1. 1102223051 Teguh Patriananda TGH Koordinator Asisten 087885538877 patrianandateguh

2. 1102223258 Garry Nelson SOH Wakil Koordinator Asisten 081261469886 gn2004

3. 1101223205 Natasha Fedora Barus NFB Admin I 081232644668 natashafbarus

4. 1104223146 Dhea Aisyah Putri DEY Admin II 081250770473 dheaaisyyy

5. 1101223028 Indi Viska Rahmasari VIS Koordinator Praktikum I 085802253573 indiviska

6. 1104223013 Dennytan Raharjo TAN Koordinator Praktikum II 081395882733 dentan77


Vincentius Artyanta Penanggung Jawab artya121212121212
7. 1102223079 TNT 082322512553
Maheswara Purba Hardware 121
8. 1101223083 Aliza Nurfitrian Meizahra ALL Penanggung Jawab Software 082240482882 alizaaja24
Penanggung Jawab SC Divisi
9. 1101223078 Alika Widuri Kartika AKA Assignment and Task 081910346047 alikaawk
Committee (ATC)
Penanggung Jawab SC Divisi
10. 1105220065 Riza Aria Komara RIZ Creative Media Development 087830350963 laukemas335
(CMD)
Penanggung Jawab SC Divisi
11. 1104223057 Farhan Oktavian IAN Human Resource 085861090100 me.ahan
Development (HRD)
Penanggung Jawab SC Divisi
12. 1105223068 Darla Gempita Darris Purba DAR Maintenance and Logistic 088263589854 darlaoreki
Committee (MLC)
Penanggung Jawab SC Divisi
13. 1102223133 Ni Kadek Cindy Sriastiti CYN Rules and Discipline 0895394594943 cindy.sriastiti
Committee (RDC)
Tim Divisi Daskom Dev
14. 1104220015 Junaidi Rahmat JIN 082292625290 hyakkimaru
Community (DDC)
Tim Divisi Daskom Dev
15. 1104220063 Muh Zaidan Fauzan FYN 082123870889 ea____
Community (DDC)
Tim Divisi Daskom Dev
16. 1101224329 Dhiya Isnavisa DHY 085213696428 diarcwantofly
Community (DDC)
Nur Muhammad Faza Dwi SC Divisi Assignment and
17. 1104223009 FAZ 082243519148 fxfyfaza
Fajar Ramdhani Task Committee (ATC)
SC Divisi Assignment and
18. 1102223024 Justin Fairman Tan JFT 081277991505 justinft
Task Committee (ATC)
SC Divisi Assignment and
19. 1102223233 Muhammad Ferdiansyah PER 081293393183 frtwinz
Task Committee (ATC)
SC Divisi Assignment and
20. 1101224317 Ahmad Syaiful Bahri BRI 081217028937 a_s_r_rbahri
Task Committee (ATC)

Modul Praktikum Algoritma dan Pemrograman 2024/2025


xix
SC Divisi Creative Media
21. 1105223102 Cantik Zelda Herawan EZL 085759066922 cantik_zldh
Development (CMD)
Muhammad Azmi Anfasa SC Divisi Creative Media
22. 1102223064 AAA 081387727480 ikercasillasrma
Rizqi Development (CMD)
SC Divisi Creative Media
23. 1102223167 Dimas Bima Aditya MAS 081275554718 dimassbimaaa
Development (CMD)
SC Divisi Creative Media
24. 1106220025 Ahmed Albatsa AMG 081390831098 stuckin16
Development (CMD)
SC Divisi Creative Media
25. 1102223153 Reyhan Andhata Pratama RAP 081256288031 gakwtggakmakan
Development (CMD)
SC Divisi Creative Media
26. 1102223027 Aswangga Pandita Sadu WGG 082337495615 aswangga03
Development (CMD)
SC Divisi Human Resource
27. 1101220356 Nathan Aryasatya Andhika NTR 087824692740 nathan_aryasatya
Development (HRD)
SC Divisi Human Resource
28. 1106220009 Dega Pradipta Ramadhan DPR 089529438818 degapr
Development (HRD)
SC Divisi Human Resource
29. 1102223029 Agus Miftah Parid GUS 082119580837 mifthprd
Development (HRD)
SC Divisi Human Resource
30. 1105220073 Lathifah Husnun TIP 085846522753 thifahus
Development (HRD)
Muhammad Pachla Tigusti SC Divisi Human Resource
31. 1104220014 CLA 081779016013 pachlaa
Agung Development (HRD)
SC Divisi Human Resource
32. 1101220030 Rizq Arthur Mahesatama ARC 081315434313 rizqart
Development (HRD)
SC Divisi Human Resource
33. 1101223209 Aulia Ramadhani LLY 085649100095 lily_elui
Development (HRD)
SC Divisi Rules and Discipline
34. 1104220143 Shedy Indra Maulana LEX 087784173073 arghh_nju
Committee (RDC)
SC Divisi Rules and Discipline
35. 1102223037 Athirah Muthiah Marzuqah THI 082292062883 athirahmth
Committee (RDC)
SC Divisi Rules and Discipline
36. 1101220021 Muhammad Afwan ONE 081297285194 ice17845
Committee (RDC)
Rasyad Rifatan Rahman SC Divisi Rules and Discipline
37. 1102224221 RAD 082255112501 rasyadpatianom
Dingang Patianom Committee (RDC)
SC Divisi Rules and Discipline
38. 1102223047 Aliyus Hedri ALY 082388488916 alyhdr12
Committee (RDC)
SC Divisi Rules and Discipline
39. 1101224341 Nahda Nabila BIL 085271950028 pnn12
Committee (RDC)
SC Divisi Maintenance and
40. 1102223230 Hisyam Aqiel Sadzilli OIL 0895389942605 hisyamaqiel41
Logistic Committee (MLC)
Muhammad Nabil Arifiandi SC Divisi Maintenance and
41. 1104220154 NST 081212115707 nabil150304
Tambunan Logistic Committee (MLC)
SC Divisi Maintenance and
42. 1102223269 Danur Herlambang DNR 081395782437 danurh222
Logistic Committee (MLC)
Immanuel Eben Haezer Koordinator Divisi
43. 101022300172 NUE 085829290950 eintswx
Joseph Aletheia Assignment and Task

Modul Praktikum Algoritma dan Pemrograman 2024/2025


xx
Committee (ATC)

Rafhan Mazaya Anggota Divisi Assignment


44. 101012300238 RAF 082124795663 03_fhanyuh
Fathurrahman and Task Committee (ATC)
Sasqia Gessangie Yohanshah Anggota Divisi Assignment
45. 101012300058 SSS 081297703045 gurame_bakar
Puteri and Task Committee (ATC)
Anggota Divisi Assignment
46. 101012340343 Stevannie Pratama SNI 085269958753 stevannie30
and Task Committee (ATC)
Anggota Divisi Assignment
47. 101022300004 Muhammad Hafiz MHZ 081389137125 mhafizkusuma3
and Task Committee (ATC)
Anggota Divisi Assignment
48. 101012300089 Dariele Zebada Sanuwu Gea DAZ 082298152826 dariele_gea
and Task Committee (ATC)
Anggota Divisi Assignment
49. 101042330035 Umar Zaki Gunawan UZY 085710108151 gunaawan_727
and Task Committee (ATC)
Muhammad Zaenal Abidin Anggota Divisi Assignment
50. 101012300153 ZEN 082231639644 zaenal110206
Abdurrahman and Task Committee (ATC)
Koordinator Divisi Creative anggiangelicacecil
51. 101012300209 Angelica Cecillia ACC 087778173739
Media Development (CMD) ia
Anggota Divisi Creative
52. 101042330010 Bunga Nirmala Ramadhani FLO 082320696520 mobbue
Media Development (CMD)
Anggota Divisi Creative
53. 101022300008 Ahmad Rivaldi Putra VAL 081213538479 ahmdrivldy
Media Development (CMD)
Anggota Divisi Creative
54. 101052330040 Sakti Risla Syah Putra TRA 0895630020472 putraaxy_
Media Development (CMD)
Anggota Divisi Creative
55. 101042300014 Radif Putra Permana RAR 0895333431355 radif2503
Media Development (CMD)
Anggota Divisi Creative
56. 101022330177 Muhammad Miftah Faqih MIT 081224466880 miftah.faqih
Media Development (CMD)
Anggota Divisi Creative
57. 101022300062 Wijdan Insania Kuncoro DAN 082351996168 mr_freedwhite
Media Development (CMD)
Koordinator Divisi Rules and
58. 101012300169 Yattaqi Muazirul Mulki UKI 081220331931 muazirul17
Discipline Committee (RDC)
Anggota Divisi Rules and
59. 101012330200 Sayyid Faqih AKI 082210413840 1akii
Discipline Committee (RDC)
Anggota Divisi Rules and
60. 101012300217 Naila Bening Nurani NAI 08988508667 enaienai
Discipline Committee (RDC)
Anggota Divisi Rules and
61. 101022330038 Rega Arzula Akbar ARZ 082126565892 arzula233
Discipline Committee (RDC)
Anggota Divisi Rules and
62. 101012330082 Reza Naufal Akbar RZE 087825931871 rezaxdxp
Discipline Committee (RDC)
Anggota Divisi Rules and
63. 101042300073 Roudhotul Jannah RDJ 085722532973 roudho_
Discipline Committee (RDC)
Anggota Divisi Rules and
64. 101022330079 Geraldi Ridwan Hakim ALD 085224492559 geraldirh
Discipline Committee (RDC)
Anggota Divisi Rules and
65. 101022330180 Nicholas Sandy Kurniawan ION 089616614398 nic.id
Discipline Committee (RDC)

Modul Praktikum Algoritma dan Pemrograman 2024/2025


xxi
Anggota Divisi Rules and
66. 101022340248 Muhammad Favian Revaldy FAV 082240137674 hsystyc
Discipline Committee (RDC)
Anggota Divisi Rules and
67. 101052300002 Adelia Afriliani EKA 081278777815 aeluoi
Discipline Committee (RDC)
Anggota Divisi Rules and
68. 101022300119 Adzin Nabil Ihsan ZIN 082329451460 ahsanihsan445
Discipline Committee (RDC)
Anggota Divisi Rules and
69. 101022300056 Nasywa Anggieta Tiara SYW 081220915625 nsywlb
Discipline Committee (RDC)
Anggota Divisi Rules and
70. 101052300119 Zaidan Abdurrahman Hakim DUN 082261203464 justawildguy
Discipline Committee (RDC)
Anggota Divisi Rules and bukankasursayam
71. 101012340340 Aulia Rahma AUL 081220552616
Discipline Committee (RDC) ahal
Anggota Divisi Rules and
72. 101022330103 Wullan Natasya Elik WLN 081339008041 wullan.natss
Discipline Committee (RDC)
Koordinator Divisi Human
73. 101012330102 Farrel Ardya Ghalyndra REL Resource Development 082113964165 farrelardyag
(HRD)
Anggota Divisi Human
74. 101012330351 Neil Justin Surupati TIN Resource Development 081287480761 sk.uy
(HRD)
Anggota Divisi Human
75. 101062300038 Samuel Senin SAM Resource Development 085710845636 samuelseninn
(HRD)
Anggota Divisi Human
Mohammad Fiqri
76. 101052300113 RYU Resource Development 082192986904 fiqri945
Firmansyah
(HRD)
Anggota Divisi Human
77. 101012330067 Zaira Novika Adila ZAI Resource Development 0895613073427 lalaazaira
(HRD)
Anggota Divisi Human
78. 101022300129 M Raid Ihsan Akbar BAY Resource Development 082124072608 mr.ihsanakbar
(HRD)
Anggota Divisi Human
79. 101042330086 Deannisaa Addysti Wahyudi DYS Resource Development 085524414622 dysti_705
(HRD)
Anggota Divisi Human
80. 101022340029 Muhammad Ryan Pratama RYN Resource Development 085261820011 spideybae
(HRD)
Koordinator Divisi
81. 101022300013 Bustan Nabiel Maulana BUS Maintenance and Logistic 081216919968 tanmln
Committee (MLC)
Anggota Divisi Maintenance
82. 101052300006 Aurelia Kanaya Keisha AKK and Logistic Committee 08888608122 aurelianaya
(MLC)
Anggota Divisi Maintenance
83. 101022300124 Gibran Reza Al Ghazzali GND and Logistic Committee 085866405867 ghazzali14
(MLC)

Modul Praktikum Algoritma dan Pemrograman 2024/2025


xxii
Anggota Divisi Maintenance
84. 101052300102 Luqmanul Hakim NOE and Logistic Committee 082238264823 luqman0765
(MLC)
Anggota Divisi Maintenance
85. 101042330098 Chezta Adabi Hidayat CHZ and Logistic Committee 081297503878 kuinginmama
(MLC)
Anggota Divisi Maintenance
86. 101012330221 Darma Al Gani GAN and Logistic Committee 089513829923 darmapamatan
(MLC)
Anggota Divisi Maintenance
87. 101022300072 Ersha Anandita Larasati SHA and Logistic Committee 085891666055 erushaandita77
(MLC)
Anggota Divisi Maintenance
88. 101012300189 Arga Ulya Abdurohman ARG and Logistic Committee 087885281059 argaulyaa
(MLC)

Modul Praktikum Algoritma dan Pemrograman 2024/2025


xxiii
MODUL 1 : PENGENALAN ALGORITMA DAN PEMROGRAMAN

Tujuan Praktikum
1. Mengetahui cara installasi Visual Studio Code
2. Memahami konsep algoritma beserta notasinya.
3. Memahami perancangan algoritma suatu program.
4. Memahami cara pembuatan flowchart

1.1 IDE (Integrated Development Environment)


IDE (Integrated Development Environment) adalah program komputer yang memiliki
beberapa fasilitas yang diperlukan dalam pembangunan perangkat lunak. Tujuan dari IDE adalah
untuk menyediakan semua utilitas yang diperlukan dalam membangun perangkat lunak.

Sebuah IDE, atau secara bebas dapat diterjemahkan sebagai “Lingkungan Pengembangan
Terpadu”, setidaknya memiliki fasilitas:

• Editor, yaitu fasilitas untuk menuliskan kode sumber dari perangkat lunak.
• Compiler, yaitu fasilitas untuk mengecek sintaks dari kode sumber kemudian mengubah
dalam bentuk biner yang sesuai dengan bahasa mesin.
• Linker, yaitu fasilitas untuk menyatukan data biner dari beberapa kode sumber yang
dihasilkan compiler sehingga data-data binari tersebut menjadi satu kesatuan dan menjadi
suatu program komputer yang siap dieksekusi.
• Debugger, yaitu fasilitas untuk menguji jalannya program, untuk mencari bug/kesalahan
yang terdapat dalam program.

Sampai tahap tertentu, IDE modern dapat membantu memberikan saran yang mempercepat
penulisan. Pada saat penulisan kode, IDE juga dapat menunjukan bagian- bagian yang jelas
mengandung kesalahan atau keraguan.

Laboratorium Dasar Komputer akan menggunakan IDE Visual Studio Code selama praktikum
berlangsung. Berikut cara installasi IDE Visual Studio Code.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


1
1.2 Instalasi Visual Studio Code
1) Setelah mendownload Visual Studio Code, double klik pada file installasi. Setelah itu pilih I
accept dan klik next.

2) Tentukan dimana Visual Studio Code akan diinstal. Untuk default, program ini akan diinstal di
direktori C:\Users\Admin\AppData\Local\Programs\Microsoft VS Code. Setelah itu klik next.

3) Tentukan dimana folder untuk meletakkan file Visual Studio Code, lalu klik next.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


2
4) Ada beberapa tipe pilihan installasi di menu “Select Additional Tasks”. Centang semua kecuali
pilihan Add “Open with Code”, lalu klik next.

5) Pastikan semua pilihan yang dipilih sebelumnya sudah benar, setelah itu klik install.

6) Tunggu sampai proses instalasi selesai

Modul Praktikum Algoritma dan Pemrograman 2024/2025


3
7) klik Finish ketika instalasi sudah selesai.

8) Selanjutnya, download compiler tdm-gcc pada website https://jmeubank.github.io/tdm-gcc/


dan download sesuai spesifikasi komputer masing-masing.

9) Klik pada tombol Create

Modul Praktikum Algoritma dan Pemrograman 2024/2025


4
10) Selanjutnya pilih edisi sesuai spesifikasi system yang ada.

11) Secara default tdm-gcc akan dipasang pada C:\TDM-GCC-XX dan lalu klik next dilanjut
dengan install tanpa mengubah peraturan apapun.

12) Apabila instalasi telah selesai, akan menampilkan tulisan completed successfully, klik next dan
finish.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


5
13) Setelah instalasi tdm-gcc selesai, buka Visual Studio Code dan beralih ke halaman extension,
dan carilah C/C++ Extension Pack lalu klik Install.

14) Extension lain yang wajib dimiliki adalah Code Runner, dengannya bahasa C dapat dijalankan di
Visual Studio Code.

15) Setelah Code Runner terpasang, selanjutnya klik kanan pada extension Code Runner tersebut
dan klik Extension Settings. Lalu carilah opsi seperti gambar di atas untuk menjalankan Code
Runner pada terminal Visual Studio Code.

16) Pada penggunaan Visual Studio Code sering kali dijumpai error dalam mengoutputkan sebuah
program. Hal ini disebabkan oleh keamanan windows yang melarang untuk menjalankan atau
mengeksekusi file program tersebut. Windows secara otomatis membaca setiap folder hingga
file yang terdapat pada laptop. Sehingga terdapat cara untuk mengatasi hal tersebut, yaitu
dengan memberikan pengecualian pada folder untuk tidak dibaca oleh kemanan windows.
Berikut tahapan untuk step folder exception:
1. Pergi ke Settings windows
2. Pergi ke Windows Security -> Threats and exclusions

3. Klik tautan Manage Exclusions untuk membuka Exclusions windows.


4. Klik Add or remove exclusions

Modul Praktikum Algoritma dan Pemrograman 2024/2025


6
5. Tambahkan pengecualian dengan salah satu cara berikut:
• Klik Add an exclusion -> folder (Folder ini digunakan sebagai tempat penyimpanan
program yang akan dijalankan)

• Pilih atau buat folder yang akan dijadikan sebagai tempat penyimpanan program

Jika sudah terdapat nama alamat dari folder yang telah dipilih, maka step folder
exception telah selesai dilakukan.

1.3 Membuat Kode Sederhana


1) Untuk langkah pertama, silahkan buka Visual Studio Code, kemudian pilih Open Folder

2) Setelah kalian pilih open folder, nanti akan muncul tab baru, kemudian pilihfolder untuk
menyimpan projek kalian, setelah itu pilih Select Folder

Modul Praktikum Algoritma dan Pemrograman 2024/2025


7
3) Jika muncul tab seperti diatas pilih Yes, I trust the author

4) Kemudian klik New File

5) Setelah klik New File, maka kita akan diarahkan untuk mengisi nama filenya.
Aturan penamaan file :
• Hindari penggunaan spasi, tanda baca, atau karakter khusus lainnya. Jika ingin memisahkan
kata pertama dan kedua gunakan “_”. Contoh : hello_world
• Gunakan ekstensi .c. Contoh : hello_world.c

Modul Praktikum Algoritma dan Pemrograman 2024/2025


8
1.4 Algoritma
Algoritma adalah serangkaian langkah yang tepat, terperinci, dan terbatas dalam
menyelesaikan masalah. Tepat artinya langkah tersebut selalu benar untuk menyelesaikan
masalah. Terperinci artinya langkah tersebut detail dan dapat dieksekusi oleh komputer. Terbatas
artinya suatu saat langkah tersebut harus berhenti. Jika langkah “tidak pernah” berhenti namanya
looping forever.

Sebagai contoh sederhana, Anda diminta untuk menghitung keliling persegi panjang. Pada
kasus ini, Anda bisa menentukan keluaran berupa keliling dan masukan berupa panjang dan lebar.
Setelah itu, Anda harus menentukan bagaimana keliling persegi panjang dihitung berdasarkan data
panjang dan lebar.

Keliling=panjang+lebar+panjang+lebar

atau

Keliling=2x(panjang+lebar)

Anda bisa menuangkan algoritma sebagai berikut :


1. Masukkan nilai panjang dan lebar persegi panjang.
2. Hitung keliling persegi panjang dengan menggunakan rumus 2x(panjang+lebar).
3. Tampilkan nilai keliling persegi panjang.

Algoritma tidak selamanya dinyatakan dalam bahasa manusia seperti yang dicontohkan
sebelumnya. Sering kali algoritma dinyatakan dalam bentuk pseudocode (pseudocode) atau
diagram alir (flowchart).

1. Pseudocode (Pseudocode)
Pseudocode adalah suatu bentuk algoritma yang menggunakan berbagai notasi yang
dimaksudkan untuk menyederhanakan bentuk kalimat manusia. Sebagai contoh, kalimat seperti
“Hitung keliling persegi panjang dengan menggunakan rumus 2x(panjang+lebar)” dapat
disederhanakan menjadi : keliling  2x(panjang+lebar).
Pseudocode sering kali berorientasi pada bahasa pemrograman tertentu. Contoh berikut
menunjukkan pseudocode yang berorientasi pada bahasa pemrograman Pascal (pseudopascal).

Algoritma (Pseudopascal)

Program keliling persegipanjang

Kamus :
p, l, k : integer

Modul Praktikum Algoritma dan Pemrograman 2024/2025


9
Algoritma :
output (‘Panjang = ‘)
input(p)
output (‘Lebar = ‘)
input (l)
k  2*(p+l) output(‘Keliling Persegipanjang = ‘, k

2. Diagram Alur (Flowchart)


Flowchart adalah suatu standar untuk menggambarkan suatu proses. Setiap langkah dalam
algoritma dinyatakan dengan sebuah simbol dan aliran setiap langkah (dari suatu langkah ke
langkah lain) dinyatakan dengan garis yang dilengkapi panah.
Berikut ini beberapa petunjuk yang harus diperhatikan dalam pembuatan flowchart :
1. Flowchart digambarkan dari halaman atas ke bawah dan dari kiri ke kanan.
2. Aktivitas yang digambarkan harus didefinisikan secara hati-hati dan definisi ini harusdapat
dimengerti oleh pembacanya.
3. Kapan aktivitas dimulai dan berakhir harus ditentukan secara jelas.
4. Setiap langkah dari aktivitas harus diuraikan dengan menggunakan deskripsi kata kerja,
misalkan menghitung pajak penjualan.
5. Setiap langkah dari aktivitas harus berada pada urutan yang benar.
6. Lingkup dan range dari aktivitas yang sedang digambarkan harus ditelusuri dengan hati-hati.
Percabangan-percabangan yang memotong aktivitas yang sedang digambarkan tidak perlu
digambarkan pada flowchart yang sama. Simbol konektor harus digunakan dan
percabangannya diletakan pada halaman yang terpisah atau hilangkan seluruhnya bila
percabangannya tidak berkaitan dengan sistem.
7. Gunakan simbol-simbol flowchart yang standar.

Berikut adalah simbol standar untuk flowchart.


Bentuk Nama Deskripsi
Simbol
Flow Line Menyatakan jalannya arus suatu proses.

On-Page Menyatakan sambungan dari proses ke proses lainnya


Connector dalam halaman yang sama.

Off-Page Menyatakan sambungan dari proses ke proses lainnya di


Connector halaman yang berbeda.

Process Menyatakan suatu tindakan (proses) yang dilakukan oleh


komputer.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


10
Decision Menunjukkan suatu kondisi tertentu yang akan
menghasilkan dua kemungkinan, yaitu YA atau TIDAK.
Pre-defined Menyatakan prosedur lain yang telah dibuat dalam
Process diagram.

Terminator Menyatakan suatu permulaan atau pengakhiran dari


suatu program.
Input / Menyatakan proses input atau output tanpa
Output tergantung jenis peralatannya.

Preparation Menyatakan inisialisasi variabel, fungsi,


library dan lainnya.

Annotation Menyatakan komen atau memberikan


penjelasan lebih dalam flowchart.

Contoh flowchart menghitung luas persegi panjang :

Modul Praktikum Algoritma dan Pemrograman 2024/2025


11
1.5 Struktur Dasar Pemrograman C
Berikut adalah contoh program sederhana yang akan menampilkan teks “Hello World” pada
terminal output:

1 // Program sederhana untuk menampilkan teks. Flowchart untuk


2 #include <stdio.h> program di samping
3
4 /* int main() adalah fungsi UTAMA,
5 dan akan dijalankan pertama oleh program. */
6 int main() {
7 // Menampilkan “Hello World”
8 printf(“Hello World! \n”);
9 return 0;
10 }
11 // akhir dari fungsi utama

Gambar di atas merupakan contoh sederhana dari struktur


pemrograman bahasa C. Pada kodingan di atas terdapat fungsi printf.
Fungsi ini digunakan untuk mencetak teks ke layar, sehingga jika kita run
maka akan muncul kalimat Hello World. Selain itu, tanda “\n” akan
menyebabkan kursor berpindah ke baris berikutnya setelah Hello World
dioutputkan. Return 0 menyatakan bahwa nilai balik program adalah nol.
Nilai nol biasa digunakan untuk menyatakan bahwa program berhasil
melaksanakan tugas yang diembannya. Perlu diingat setiap pernyataan
dalam bahasa C harus diakhiri tanda titik-koma (;).

Struktur pemrograman bahasa C terdiri dari :


• Komentar (Comments)

1 // Program sederhana untuk menampilkan teks.


... ...
4 /* int main() adalah fungsi UTAMA,
5 dan akan dijalankan pertama oleh program. */
... ...
10 // akhir dari fungsi utama

Komentar atau comments adalah tulisan yang dimasukkan kedalam kode untuk
mendokumentasikan program dan meningkatkan kemudahan untuk membaca kode. Komentar
tidak akan dieksekusi oleh program atau akan di-ignore oleh program.
Komentar terbagi menjadi dua jenis, yaitu single-line comments, dan multi-line comments.
Single-line comments ditandai oleh “//” seperti pada line 1 dan 10 pada contoh di atas. Multi-line
comments ditandai oleh “/* … */” seperti pada line 4 dan 5 pada contoh di atas. Perbedaan
diantara kedua jenis diatas adalah single-line comments hanya dipergunakan untuk satu line,
sedangkan multi-line comments dapat digunakan untuk lebih dari satu line, selama komentar kita
dimulai setelah tanda “/*” dan diakhiri oleh tanda “*/” atau denga kata lain, komentar kita berada
diantara tanda “/* … */”.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


12
• Praprosesor #include

2 #include <stdio.h>

Dalam bahasa pemrograman C, terdapat sebuah perintah khusus yang disebut #include.
Perintah ini memberitahu komputer untuk membaca isi dari berkas lain yang biasa disebut
"header" dan menambahkannya ke dalam program kita. Misalnya, berkas header stdio.h. Ketika
kita menulis #include <stdio.h> di awal program, kita memberitahu komputer untuk
menggunakan fungsi-fungsi dasar yang ada di dalam stdio.h, seperti printf() dan scanf(). Isi
dari header akan dibahas lebih lanjut pada modul 5.

• Fungsi Utama

6 int main() {
7 // Menampilkan “Hello World”
8 printf(“Hello World! \n”);
9 return 0;
10 }

Fungsi utama adalah bagian dari setiap program bahasa C. Tanda kurung setelah “main”
menandakan bahwa “main” adalah sebuah fungsi. Dalam Bahasa C bisa terdiri dari satu atau lebih
fungsi, yang salah satu fungsi wajibnya adalah main(). Fungsi ini adalah tempat di mana program
C memulai eksekusinya.
Fungsi dapat mengembalikan sebuah nilai melalui sintaks return. Kata “int” sebelum
“main” mengindikasi bahwa fungsi “main” akan mengembalikan sebuah nilai bertipe “int” atau
angka bulat. “int” adalah jenis tipe data dalam bahasa pemrograman C, namun akan dibahas lebih
lanjut dalam modul 2. Nilai kembali atau return value akan dibahas lebih lanjut dalam modul 5.
Kurung kurawal pada fungsi “{ … }” menandakan body atau isi dari fungsi sebuah fungsi.
Kode yang berada dalam body sebuah fungsi (pada contoh ini, pada line 7 dan 8) akan dieksekusi,
selain itu, tidak akan dijalankan.

• Fungsi printf()

8 printf(“Hello World! \n”);

Fungsi printf(“…”) adalah fungsi yang akan menampilkan string atau kalimat yang
berada di antara tanda kutip dua pada terminal output. Fungsi printf() sudah terdefinisi dalam
header <stdio.h>.
Pada line 7, juga terdapat tanda “\n”. “\n” merupakan contoh dari escape character yang
dimulai dengan “\” atau backslash. Escape characters tidak akan ditampilkan oleh fungsi
printf(). Berikut adalah beberapa contoh dari escape characters:

Escape Character Penjelasan


\n Newline. Memposisikan cursor pada awal line berikutnya.
\t Tab. Memposisikan cursor pada tab selanjutnya.
\\ Backslash. Menampilkan backslash pada output.
\” Double quote. Menampilkan tanda kutip dua pada output.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


13
• Fungsi scanf() dan Pengenalan Variabel
Berikut adalah contoh sebuah program:

1 // Program sederhana untuk input dan output.


2 #include <stdio.h>
3
4 int main() {
5 // Mendeklarasikan sebuah variabel int bernama “var”
6 int var;
7
8 // Menampilkan teks “Masukkan sebuah angka: ” pada output
9 printf(“Masukkan sebuah angka: ”);
10
11 // User menginputkan sebuah angka melalui fungsi scanf()
12 scanf(“%d”, &var);
13
14 // Program menampilkan hasil input user
15 printf(“Angka yang dimasukkan adalah %d.”, var);
16
17 // Program berakhir
18 return 0;
19 }

Contoh input dan output dari program di atas: (input ditandai dengan teks BOLD)

Masukkan sebuah angka: 25


Angka yang dimasukkan adalah 25.

6 int var;

Variabel adalah suatu nama yang menyatakan tempat dalam memori komputer dan berisi
sebuah nilai, dan sebuah variabel nilainya dapat berubah sewaktu-waktu saat program dieksekusi.

Pada line 6 merupakan contoh mendeklarasikan sebuah variabel. Setiap variabel dalam
bahasa C HARUS dideklarasikan terlebih dahulu sebelum dapat digunakan. Pada contoh ini
dideklarasikan sebuha variabel dengan nama “var” dan bertipe “int”. Penjelasan tentang variabel
dan tipe data beserta aturan-aturannya akan dijelaskan pada modul 2, namun untuk sekarang kita
cukup perlu ketahui apa itu variabel.

12 scanf(“%d”, &var);

Fungsi scanf() adalah fungsi yang akan menerima masukkan atau input dari user. Sama
seperti printf(), scanf() juga terdapat dalam header <stdio.h>. Untuk penjelasan dari
fungsi scanf() beserta aturan-aturannya akan dijelaskan lebih lanjut pada modul 2, namun untuk
sekarang kita cukup perlu ketahui apa kegunaan dari fungsi ini.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


14
1.6 Debugging
Penggunaan debugger:
1) Pergi ke sidebar kemudian pilih Run and Debug atau click f5

2) Setelah itu nanti akan muncul tab Variable, Watch, Breakpoint, dan lain-lain. Tab
Variables berisi informasi tentang variable yang kita pakai. Breakpoint sendiri dapat
digunakan untuk menghentikan program pada titik tertentu. Sedangkan Watch
memungkinkan kita dapat mengamati nilai variable selama program dieksekusi.

3) Untuk menambah Breakpoint arahkan kursor ke sebelah kiri angka baris, nanti akan
muncul titik merah kemudian klik titik merah tersebut.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


15
4) Contoh kalau sudah diklik akan muncul titik merah seperti pada gambar.

5) Klik icon “+” atau add expression, kemudian ketik nama variabel yang ingin ditampilkan
pada kolom Expression to watch.

6) Kemudian ketika kita jalankan program maka program akan otomatis berhenti di
breakpoint yang kita pilih (baris ke-8) dan dibagian watch dapat
diamati variabel yang ingin kita amati yaitu “k”.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


16
MODUL 2 : SINTAKS DASAR DAN STRUKTUR PROGRAM C

Tujuan Praktikum
1. Memahami bentuk umum algoritma dan implementasinya dalam bahasa C.
2. Membuat program sederhana yang melibatkan I/O, assignment, variabel, konstanta,
ekspresi, dan tipe data bentukan.
3. Memahami tipe-tipe data pada algoritma dan persamaannya dalam C.

2.1 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, sedangkan konstanta tidak dapat diubah ketika program dieksekusi. Variabel dan
konstanta harus dideklarasikan terlebih dahulu sebelum dapat digunakan pada program. Contoh
deklarasian konstanta dan variabel adalah sebagai berikut:

// Mendeklarasikan konstanta menggunakan “#define”.


#define g = 9.8

// Mendeklarasikan konstanta menggunakan “const”.


const int tinggi = 10;

/*Nilai sebuah konstanta harus diberikan langsung, sedangkan variabel tidak perlu
langsung diberikan*/

// Mendeklarasikan satu variabel.


int panjang;
int tinggi;

// Beberapa variabel juga dapat dideklarasikan dalam satu line dengan tipe yang
sama.
int jari_jari, diameter;

// Nilai variabel juga dapat langsung di-assign seperti konstanta.


int jari_jari = 7, diameter = 14;

Hal-hal penting yang harus diperhatikan dalam penamaan variabel dan konstanta antara lain:
i. harus diawali dengan huruf alfabet (A..Z, a..z) atau garis bawah ( _ );
ii. karakter selanjutnya bisa berupa huruf, digit atau karakter garis bawah ( _ );
iii. panjang maksimal identifier adalah 32 karakter, jika lebih maka yang dianggap adalah 32
karakter awal;
iv. tidak boleh menggunakan spasi;
v. tidak boleh menggunakan operator aritmatika ( + - / * % );
vi. tidak boleh menggunakan karakter-karakter khusus seperti : , ; # @ ( . ) & dan $;
vii. bahasa C bersifat case-sensitive, sehingga huruf kapital dan non-kapital dibedakan.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


17
Berikut adalah contoh dari penggunaan variabel dan konstanta:

1 // Program sederhana untuk input dan output.


2 #include <stdio.h> // mendeklarasikan header
3
4 // Mendeklarasikan konstanta dengan nama “pi” dengan nilai 3.14
5 #define pi 3.14
6
7 int main() {
8 // Mendeklarasikan beberapa variabel dalam line yang sama
9 int var1, var2;
10
11 // Menampilkan teks “Masukkan angka pertama: ” pada output
12 printf(“Masukkan angka pertama: ”);
13
14 // User menginputkan sebuah angka melalui fungsi scanf()
15 scanf(“%d”, &var1);
16
17 // Menampilkan teks “Masukkan angka pertama: ” pada output
18 printf(“Masukkan angka kedua: ”);
19
20 // User menginputkan sebuah angka melalui fungsi scanf()
21 scanf(“%d”, &var2);
22
23 // Program menampilkan hasil input user
24 printf(“Angka yang dimasukkan adalah %d dan %d.”, var1, var2);
25
26 // Program berakhir
27 return 0;
28 }

Contoh input dan output dari program di atas: (input ditandai dengan teks BOLD)

Masukkan sebuah angka: 25


Angka yang dimasukkan adalah 25.

• Perintah scanf()

15 scanf(“%d”, &var1);

Perintah scanf() adalah sebuah fungsi yang terdapat dalam header <stdio.h> yang
berfungsi untuk mengambil masukkan atau input dari user. Perintah scanf() mengambil dua
argument, yang pada contoh ini adalah %d dan &var1.
Argumen pertama, %d, adalah jenis dari penentu format tipe data atau mengindikasi tipe
data yang harus dimasukkan oleh user. %d mengindikasi bahwa tipe data yang dimasukkan adalah
bertipe integer atau bilangan bulat. Penentu format akan dibahas pada bagian selanjutnya.
Argumen kedua, &var1, adalah lokasi dimana nilai yang dimasukkan oleh user akan
disimpan. Tanda & dalam bahasa C ketika digabungkan dengan nama variabel, yang dalam kasus
ini adalah var1, akan mengambil alamat dari variabel var1 dalam memori, dan akan menyimpan
nilai yang dimasukkan oleh user pada alamat memori tersebut.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


18
Menambahkan nilai ke dalam variabel
Ada 3 cara untuk memasukan nilai ke dalam variabel, yaitu :
❖ Assignment (nilai dimasukkan ke dalam variabel secara langsung)
int a = 6;
char huruf = ‘A’;
char kalimat[10] = “Daskom”;

❖ Input menggunakan perintah scanf ()


C Input dan Output
1 #include <stdio.h> INPUT (BOLD)
2 int main ()
Bilangan 1 = 10
3 {
4 int x,y,z; Bilangan 2 = 6
5 printf(“Bilangan 1 = “);
6 scanf (“%d”,&x); OUTPUT
7 printf(“Bilangan 2 = “);
8 scanf(“%d”,&y); Bilangan 1+Bilangan 2= 16
9 z=x+y;
10 printf(“Bilangan 1+Bilangan 2=
%i\n”,z);
11 return 0;
12 }

#define digunakan untuk mendefinisikan sebuah


❖ Penggunaan konstanta variable (pin input - output dll) dengan nama
C variable baru agar dalam pembuatan program
#include <stdio.h> kita lebih mudah mengingat nama variablenya,
#define phi 3.14 dari itu usahakan dalam mendefinisikan sebuah
int main ()
{ variable gunakan nama variable yang
int r; mencerminkan fungsinya.
float luas;
printf(“Jari-Jari Lingkaran =“);
scanf (“%d”,&r); %.xf berfungsi untuk menampilkan
luas = phi*r*r; x angka di belakang koma dari
printf(“Luas Lingkaran = %.2f \n”,luas); variabel keluaran. Pada contoh di
return 0;
samping, printf(“Luas Lingkaran =
}
%.2f \n”,luas); akan menampilkan
2 angka di belakang koma dari
variabel luas.
2.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 -32768 sampai +32767.
Contoh : 1 0 3 -5
b. Float : Menyatakan bilangan real (bilangan 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 true atau false.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


19
Tipe Data Penentu Format
Integer %d, %i
floating point
• bentuk decimal %f
• bentuk berpangkat %e
• yang lebih pendek antara decimal dan berpangkat %g
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
Secara default bahasa C menampilkan angka desimal dengan 6 angka di belakang koma.
Maksudnya, jika yang ditulis adalah 4.323, maka yang ditampilkan menjadi 4.323000. Perintah
printf memiliki aturan khusus untuk mengatur agar bahasa C menampilkan jumlah angka di
belakang koma. Kita bisa menambahkan 3 cara penulisan ke dalam pola %f. Dimana formatnya
adalah sebagai berikut :
Format
%f Akan menampilkan 6 digit angka dibelakang koma.
%xf Akan menampilkan angka sebanyak x digit dengan spasi sebagai
pemisah
%0xf Akan menampilkan angka sebanyak x digit dengan 0 sebagai pemisah
%.xf Akan menampilkan x digit dibelakang koma
*dengan catatan x diisi dengan angka yang diinginkan.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


20
2.3 Operasi Aritmatika
Untuk operasi aritmatika hanya tipe data int dan float saja yang dapat digunakan. Berikut
operator aritmatika yang tersedia :
1) Kali ( * )
Digunakan untuk mengalikan dua buah bilangan.
2) Bagi ( / )
Digunakan untuk membagi dua buah bilangan.
3) Tambah ( + )
Digunakan untuk menjumlahkan dua buah bilangan.
4) Kurang ( - )
Digunakan untuk pengurangan antar dua buah bilangan.
5) Modulo/Mod ( % )
Digunakan untuk mencari sisa hasil bagi dua bilangan. Operator mod dalam bahasa C
adalah “%”. Operasi mod hanya bisa digunakan oleh data bertipe int.

Tipe Data Contoh


6%4= 2 → {6=4x1+2}
8%5= 3 → {8=5x1+3}
Int % Int = Int
-5 % 3 = -2 → { -5 = 3 x (-1) + (-2) }
-3 % 2 = -1 → { -3 = 2 x (-1) + (-1) }

Kodingan Input dan Output Flowchart

1 #include<stdio.h> INPUT (BOLD)


2 Masukan jari-jari
3 int main() lingkaran = 7
4 {
5 // Mendeklarasikan OUTPUT
variabel dan konstanta Luas lingkaran = 153.86
6 const int phi = 3.14;
7 int r;
8 float luas;
9
10 // Masukkan jari-jari
11 printf(“Masukan jari-
jari lingkaran = ”);
12 scanf(“%d”, &r);
13
14 // Menghitung luas
15 luas = phi * r * r;
16
17 // Output luas
lingkaran
18 printf(“Luas lingkaran
= %.2f \n”, luas);
19
20 return 0;
21 }

Modul Praktikum Algoritma dan Pemrograman 2024/2025


21
Kodingan diatas memiliki 1 konstanta phi bertipe data int dan 2 variabel yaitu r dan luas
dengan masing-masing memiliki tipe data int dan float. Pada kodingan terdapat fungsi scanf yang
digunakan untuk membaca input dari pengguna berupa bilangan, baik bertipe data int maupun
float. Simbol // digunakan untuk menandai komentar satu baris. Komentar ini tidak akan di
eksekusi oleh kompiler dan biasanya digunakan sebagai deskripsi atau catatan untuk memahami
kode pada baris tersebut.

Selain program diatas, terdapat bentuk lain dari penggunaan konstanta dengan
menggunakan #define yang digunakan untuk mendefinisikan sebuah variabel (pin input - output
dll) dengan nama variabel baru agar dalam pembuatan program kita lebih mudah mengingat
nama variabelnya, dari itu usahakan dalam mendefinisikan sebuah variabel gunakan nama variabel
yang mencerminkan fungsinya. Penggunaan #define dapat dilihat pada contoh berikut.

Kodingan Input dan Output Flowchart

1 #include<stdio.h> INPUT (BOLD)


2 Masukan jari-jari
3 // Mendeklarasi konstanta lingkaran = 7
4 #define phi 3.14
5 OUTPUT
6 int main() Luas lingkaran = 153.86
7 {
8 // Mendeklarasikan
variabel
9 int r;
10 float luas;
11
12 // Masukkan jari-jari
13 printf(“Masukan jari-
jari lingkaran = ”);
14 scanf(“%d”, &r);
15
16 // Menghitung luas
16 luas = phi * r * r;
17
18 // Output luas
lingkaran
19 printf(“luas lingkaran
= %.2f \n”, luas);
20
21 return 0;
22 }

Modul Praktikum Algoritma dan Pemrograman 2024/2025


22
2.4 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.

Contoh Program :
Kodingan Input dan Output Flowchart

1 #include <stdio.h> INPUT (BOLD)


2 Nama : David
3 //Tipe data bentukan Jurusan : Elektro
4 struct biodata { NIM : 1010
5 // Mendeklarasikan varibel Kelas : EL08
dalam struct
6 char nama[20],jurusan[20], OUTPUT
nim[20], kelas [20]; Biodata Anda :
7 } b; // Variabel untuk struct Nama : David
8 Jurusan : Elektro
9 int main () NIM : 1010
10 { Kelas : EL08
11 // Input Nama
12 printf("Nama\t: ");
13 gets(b.nama);
14
15 // Input Jurusan
16 printf("Jurusan\t: ");
17 gets(b.jurusan);
18
19 // Input NIM
20 printf("NIM\t: ");
21 gets(b.nim);
22
23 // Input Kelas
24 printf("Kelas\t: ");
25 gets(b.kelas);
26
27 // Output
28 printf("Biodata Anda : \n");
29 printf("Nama\t: %s
\n",b.nama);
30 printf("Jurusan\t: %s
\n",b.jurusan);
31 printf("NIM\t: %s \n",b.nim);
32 printf("Kelas\t: %s \n",
b.kelas);
33 return 0;
34 }

Pada kodingan diatas terdapat fungsi gets() yang berperan sama seperti scanf(), tetapi
mereka memiliki perbedaan. Jika kita menginputkan string menggunakan scanf(), string hanya
akan terbaca sampai ditemukan spasi. Misal “Cristiano Ronaldo”, maka hanya akan terbaca
Cristiano, sedangkan Ronaldo tidak terbaca sebab sebelum kata tersebut program telah
menemukan spasi.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


23
Dalam menggunakan fungsi gets kita cukup menuliskan variabel yang mau dimasukan saja
seperti gets(variabel). Jika program menggunakan struct, penulisan fungsi gets menjadi
gets(variabel struct.variabel). selain itu, pada kodingan diatas terdapat simbol \t yang akan
menambahkan spasi yang jaraknya sama dengan tab atau bisa dibilang \t adalah perwakilan dari
karakter tab.
Contoh lain penulisan tipe data bentukan:
Kodingan Input dan Output Flowchart

1 #include <stdio.h> INPUT (BOLD)


2 struct modulo Bilangan 1 % Bilangan 2
3 { Contoh Masukkan:
4 // Mendeklarasikan 10 4
variabel dalam struct Hasil Modulo: 2
5 int x, y;
6 }; Masukkan Bilangan:
7 9 5
8 int main() Hasil Modulo: 4
9 {
10 // Mendeklarasi variabel
struct
11 struct modulo mod;
12
13 // Menampilkan kalimat
14 printf("Bilangan 1 %%
Bilangan 2\n");
15 printf("Contoh Masukkan:
\n");
16 printf("10 4 \n");
17
18 // Menampilkan “Hasil
Modulo”
19 printf("Hasil Modulo:
2\n");
20
21 // Memasukkan bilangan
22 printf("Masukkan
Bilangan: \n");
23 scanf("%d %d", &mod.x,
&mod.y);
24
25 // Menampilkan hasil
26 printf("Hasil Modulo:
%d", mod.x % mod.y);
27 return 0;
28 }

Pada penerapan tipe data bentukan juga dapat dilakukan seperti program di atas. Hal
tersebut berguna untuk menyederhanakan sebuah program serta memudahkan pekerjaan dalam
menyusun sebuah program, sehingga dapat mengefisiensikan waktu dalam penyusunan sebuah
program. Tipe data bentukan tersebut menggunakan nama Struktur sebagai alias untuk
mendeklarasikan variabel yang berisi tipe data bentukan, sehingga hanya perlu memanggil struct
structureName variableName.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


24
MODUL 3 : KONTROL ALUR PROGRAM

Tujuan Praktikum
1. Mampu menulis pernyataan if, if-else, dan switch case untuk membuat keputusan
dalam program.
2. Mampu menulis pernyataan if, if-else, dan switch case untuk membuat keputusan
dalam program.
3. Memecahkan kasus mengenai percabangan serta mengimplementasikannya ke
dalam C.

3.1 Logika dan Relasional


Operasi boolean adalah operasi logika yang hanya akan menghasilkan nilai true atau false.Operasi
ini akan sering digunakan untuk menentukan aksi yang akan dilakukan oleh program (dalam
percabangan maupun perulangan). Tipe data boolean diharuskan menggunakan Header
stdbool.h. Header stdbool.h pada bahasa c berfungsi untuk melakukan operasi yang
berhubungan dengan ekspresi boolean.
Operator
boolean Contoh Keterangan
C Algoritma
== = a == b Bernilai true jika a sama dengan b
< < a<b Bernilai true jika nilai a kurang dari b
<= ≤ a <= b Bernilai true jika nilai a kurang dari / sama dengan b
> > a>b Bernilai true jika nilai a lebih dari b
>= ≥ a >= b Bernilai true jika nilai a lebih dari / sama dengan b
!= ≠ a!=b Bernilai true jika nilai a tidak sama dengan b

Berikut merupakan tabel yang menunjukkan operasi logika AND, OR, XOR dan NOT pada dua nilai
boolean:

a b a and b a or b a xor b
False False False False False
False True False True True
True False False True True
True True True True False
Operator AND : && Operator OR : ||
Operator NOT : ! Operator XOR : ^

a NOT a
False True
True False

Modul Praktikum Algoritma dan Pemrograman 2024/2025


25
Percabangan :
3.2 If – Else
Perintah if adalah tipe percabangan yang akan menjalankan sebuah aksi jika kondisinya
bernilai true. If-Else digunakan ketika hanya ada satu kondisi, sedangkan If-Else If-Else
digunakan ketikan ada dua atau lebih kondisi.
Struktur Dasar:
if [kondisi] – – [aksi]
else if [kondisi] – – [aksi]
else – – [aksi]
Contoh:
if (tinggi >= 140) {
printf(“VALID! ”);
printf(“Silahkan masuk”);
} else {
printf(“TIDAK VALID! ”):
}
Contoh di atas dapat diartikan sebagai:
Jika tinggi lebih dari atau sama dengan 140,
maka program akan menampilkan VALID! Silahkan masuk
Selain itu, maka akan menampilkan TIDAK VALID!
Berikut merupakan contoh pengimplementasian dalam bahasa C
a. Satu aksi
C Input dan Output Flowchart
1 #include <stdio.h> CONTOH GENAP:
2 int bil; INPUT (BOLD)
3 void main() Angka: 10
4 {
5 printf("Angka: "); OUTPUT
6 scanf("%d", &bil); Bilangan Genap
7
8 // Percabangan, jika angka
yang dimasukkan tidak
bersisa ketika dibagi 2, CONTOH GANJIL:
maka bilangan genap. INPUT (BOLD)
9 if (bil%2 == 0) Angka: 25
10 {
11 printf("Bilangan Genap"); OUTPUT
12 } Bilangan Ganjil
13 // Jika angka yang
dimasukkan bersisa ketika
dibagi 2, maka bilangan
ganjil.
14 else printf("Bilangan
Ganjil");
15 }

Modul Praktikum Algoritma dan Pemrograman 2024/2025


26
Program di atas merupakan contoh program if satu aksi, program akan menampilkan
“Bilangan Genap” jika nilai bilangan yang dimasukkan bernilai genap (bilangan yang habis dibagi 2
atau bil %2 = 0), sebaliknya program akan menampilkan “Bilangan Ganjil” apabila kondisi ‘if’ tidak
terpenuhi.

b. Dua aksi
C Input dan Output Flowchart
1 #include <stdio.h> CONTOH LOGIN SUKSES
2 #include <string.h> INPUT (BOLD)
3 Username : Looping
3 // Deklarasi variabel Password : Forever
4 char user[50],pass[50];
5 int main() OUTPUT
6 { Login Sukses
7 // Masukkan username Silahkan Lanjutkan
dan password
8 printf("Username : ");
9 gets(user);
10 printf("Password : "); CONTOH LOGIN GAGAL
11 gets(pass); INPUT (BOLD)
12 Username : Daskom
13 // Apakah username dan Password : Lab
password sesuai
jawaban? OUTPUT
14 if (strcmp(user, Login Gagal
"Looping") ==0 &&
strcmp(pass, "Forever")
==0)
{
15 // Login sukses jika
sesuai jawaban
16 printf("Login Sukses
\n");
17 printf("Silahkan
Lanjutkan\n");
18 }
19 // Login gagal jika
tidak sesuai
20 else printf("Login
Gagal\n");
21 return 0;
22 }

Sama halnya dengan poin a, program di atas akan menampilkan “Login Sukses” jika
username dan password yang dimasukkan sesuai dengan yang ada di baris program di atas, yaitu
“Looping” dan “Forever).
Penjelasan lebih lanjut program di atas:
Kondisi “if (strcmp(user, "Looping") ==0 && strcmp(pass, "Forever") ==0)” menyatakan
bahwa jika nama user yang diinputkan sama dengan “Looping” DAN pass yang diinputkan adalah
“Forever”, maka program akan melakukan aksi if yaitu “Login Berhasil” dan “Silahkan Lanjutkan”.
Jika tidak sesuai maka akan menampilkan kondisi else.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


27
C Input dan Output
1 #include <stdio.h> CONTOH LOGIN SUKSES
2 #include <string.h> INPUT (BOLD)
3 Login User!
4 // Deklarasi variabel untuk username dan Username : saya
password yang benar Password : login
5 char user[50] = "aku";
6 char pass[50] = "login"; OUTPUT
7 Login Sukses
8 int main() Silahkan Lanjutkan
9 {
10 // Deklarasi variabel untuk input user
11 char username [50], password [50];
12 CONTOH LOGIN GAGAL
13 printf("Login User!\n"); INPUT (BOLD)
14 Login User!
15 // User masukkan username dan password Username : saya
16 printf("Username : "); gets(username); Password : logout
17 printf("Password : "); gets(password);
18 OUTPUT
19 // Jika salah satu username atau password Login Gagal
benar, maka login akan sukses
20 if (strcmp(user, username) ==0 ||
strcmp(pass, password) ==0)
21 {
22 printf("Login Sukses \n");
23 printf("Silahkan Lanjutkan\n");
24 }
25 // Jika kedua username dan password salah,
maka login akan gagal
26 else printf("Login Gagal\n");
27 return 0;
28 }

Sama halnya dengan code sebelumnya, program di atas akan menampilkan “Login
Sukses” jika username ATAU password yang dimasukkan sesuai dengan yang ada di baris program
di atas, yaitu “aku” dan “login”.
Penjelasan lebih lanjut program di atas:
Kondisi “if (strcmp(user, "Looping") ==0 || strcmp(pass, "Forever") ==0)” menyatakan
bahwa jika nama user yang diinputkan sama dengan “aku” ATAU jika nama password yang
diinputkan sama dengan “login”, maka program akan melakukan aksi if yaitu “Login Berhasil” dan
“Silahkan Lanjutkan”. Artinya, operator “ || “ berhasil dilakukan dengan satu kondisi yang benar.

Note:
- Jika aksi (pada if atau else) yang akan dikerjakan lebih dari satu, maka tambahkan “{“ (sebelum
aksi pertama) dan “}” (setelah aksi terakhir).
- Tidak bisa menggunakan tanda “==” untuk membandingkan string.
- Perbandingan dilakukan menggunakan fungsi strcmp(). Fungsi strcmp() terdapat pada header
#include<string.h>.
- Pada fungsi strcmp(string1, string2) terdapat beberapa return value, diantaranya :
0 : jika string1 sama dengan string2
<0 : jika string1 lebih kecil dari string2
>0 : jika string1 lebih besar dari string2

Modul Praktikum Algoritma dan Pemrograman 2024/2025


28
3.3 Switch Case
Switch case adalah jenis percabangan yang memungkinkan untuk beberapa kondisi dalam waktu
yang sama. Dalam percabangan ini terdapat tiga perintah, yaitu switch, case, dan default.
Switch akan menerima sebuah nilai variabel, kemudian akan melihat bahwa nilai variabel tersebut
termasuk dalam case. Jika merupakan sebuah case, maka program akan menjalankan perintah
tersebut, jika tidak maka program akan menjalankan perintah pada perintah default.
Struktur:
switch (variabel){
case 1:
[aksi]
break;
case ‘A’:
[aksi]
break;
default:
[aksi]
}
C Flowchart
1 #include <stdio.h>
2
3 // Deklarasi variabel
4 int i;
3
4 void main ()
5 {
6 // Masukkan urutan hari yang
diinginkan
7 printf("Masukkan urutan hari
:");
8 scanf("%d",&i);
9
10 // Switch case dengan variabel
i
11 switch (i)
12 {
13 // Program membandingkan
nilai i dengan setiap case.
14 case 1:
15 printf("Senin");break;
16 case 2:
17 printf("Selasa");break;
18 case 3:
19 printf("Rabu");break;
20 case 4:
21 printf("Kamis");break;
22 case 5:
23 printf("Jumat");break;
24 case 6:
25 printf("Sabtu");break;
26 case 7:
27 printf("Minggu");break;
28 default:
29 printf("Angka di luar
urutan 29hari");break;
30 }
31 }

Modul Praktikum Algoritma dan Pemrograman 2024/2025


29
Program di atas merupakan contoh penggunaan kasus “case of”. Aksi yang akan
dilakukan tergantung dari nilai yang ada pada variabel i. Ketika i bernilai 1, maka
program akan menampilkan kata ‘Senin’, begitupun selanjutnya hingga nilai i
menampilkan angka 7. Perintah ‘break’ digunakan untuk menghentikan aksi yang
dilakukan pada case tersebut sehingga aksi pada case selanjutnya tidak diproses.
Perintah ‘default’ berfungsi jika case 1-7 tidak terpenuhi.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


30
MODUL 4 : LOOPING DAN ITERASI

Tujuan Praktikum
1. Memahami bentuk dari perulangan.
2. Dapat membuat program sederhana menggunakan perulangan dengan bahasa C.
3. Memecahkan suatu kasus mengenai perulangan serta mengimplementasikannya
ke dalam bahasa C.

4.1 Perulangan
Perulangan dalam pemrograman digunakan untuk mengulangi sebuah blok kode tertentu sampai
memenuhi kondisi yang diinginkan. Terdapat 3 struktur utama dalam perulangan yaitu sebagai
berikut :
1. Inisialisasi
Inisialisasi merupakan kondisi awal perulangan, dimana diberikan sebuah nilai kepada variabel
counter.
2. Kondisi
Kondisi merupakan perbandingan yang harus dipenuhi agar perulangan berjalan. Selama
kondisi ini terpenuhi, maka compiler akan terus melakukan perulangan hingga kondisi tidak
terpenuhi.
3. Update Statement
Update statement merupakan bagian untuk memproses variabel counter agar bisa memenuhi
kondisi akhir perulangan.

Pre-Increment dan Post-Increment


Kedua istilah ini merupakan cara untuk menambahkan nilai pada suatu variabel.
• post-increment mengembalikan nilai ke nilai yang belum mengalami operasi
penambahan (nilai dioutputkan terlebih dahulu, kemudian ditambah).
• pre-increment mengembalikan nilai ke nilai yang telah mengalami operasi
penambahan (nilai ditambahkan terlebih dahulu, kemudian dioutputkan).

Perbedaan dari keduanya akan terlihat berbeda ketika menggunakan perintah output seperti
contoh dibawah:

Contoh Program Increment Output


#include <stdio.h> i=0

int main() { i=0


int i=0; //Inisialisasi Hasil : i=1

//Pengecekan nilai awal i=2


printf("i=%d\n",i); Hasil : i=2

//Contoh Post-Increment
printf("i=%d\n",i++);
printf("Hasil : i=%d\n",i);

Modul Praktikum Algoritma dan Pemrograman 2024/2025


31
//Pre-Increment
printf("i=%d\n",++i);
printf("Hasil : i=%d\n",i);
}

Keterangan:

• Dilakukan inisialisasi nilai i = 0.

• Perintah printf pertama digunakan untuk mengecek nilai awal dari variabel
i.

• Pada perintah post-increment (i++) menghasilkan nilai i=0 karena nilai di-
outputkan dahulu, kemudian ditambahkan. Ketika memanggil hasil dari i
kembali, nilai i sudah bernilai 1.

• Pada perintah pre-increment (++i) menghasilkan nilai i=2 karena nilai


ditambahkan daulu kemudian di-outputkan. Nilai i sebelumnya bernilai 1
kemudian ditambahkan lagi sehingga menghasilkan nilai 2.

Catatan:
• Jika ingin melakukan operasi pengurangan pada suatu nilai maupun variabel, maka
disebut decrement.
contoh : i– atau –i.

4.2 Jenis-Jenis Perulangan

Berikut adalah jenis-jenis perulangan dalam bahasa pemrograman C:


1. While loop
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.
Deklarasi:
while(kondisi)
{
// aksi
// aksi
// aksi
// update statement
}
Contoh:
while (i < 3){
printf(“%d ”, i);
i++;
}

Modul Praktikum Algoritma dan Pemrograman 2024/2025


32
Contoh ini akan menampilkan output: 0 1 2, dengan asumsi nilai awal i = 0. Pada saat i
= 0 (iterasi pertama), program akan menampilkan nilai i saat ini dan akan menambahkan
nilai i dengan satu pada perintah “i++”, sehingga nilai i menjadi 1. Kemudian pada saat i
= 1 (iterasi kedua), program akan menampilkan nilai i saat ini dan akan menambahkan
nilai i dengan satu pada perintah “i++”, sehingga nilai i menjadi 2. Program akan
melakukan perintah yang sama hingga kondisi sudah tidak bernilai TRUE.

C Flowchart Output
1 #include<stdio.h> 1
2
2
3 // Deklarasi variabel i
4 int i; 3
5 4
6 void main() 5
7 {
6
8
9 // Assign nilai i menjadi 1 7
10 i=1; 8
11 9
12 // Perulangan dimulai dengan
10
pengecekan kondisi i<=10
13 while(i<=10)
14 {
15 // Menampilkan data i
16 printf(“%d\n”,i);
17
18 // Nilai i ditambah 1
19 i=i+1;
20 }
21 }

Pada contoh di atas terdapat aksi “i = i + 1” yang akan mengubah output kondisi “i <= 10”
menjadi false (pada saat i > 10) sehingga perulangan akan berhenti. Artinya “i wajib bernilai <=
10“ agar true selain itu false.

2. Do while loop
Pada metode perulangan ini aksi akan dilakukan minimal satu kali, hal ini disebabkan adanya
pengecekan kondisi setelah aksi dilakukan untuk pertama kali. Aksi akan terus dilakukan
selama kondisi bernilai true dan berhenti ketika kondisi bernilai false. Sehingga, meskipun
kondisi bernilai false, program akan tetap melakukan aksi sebanyak satu kali. Pada
perulangan ini jumlah perulangan belum diketahui secara pasti.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


33
Deklarasi:
do {
// aksi
// aksi
// aksi
// update statement
} while(kondisi)

C Flowchart Output
1 #include <stdio.h> 1
2
3 // Deklarasi variabel i 2
4 int i; 3
5 4
6 void main (){
7 // Assign nilai i = 1 5
8 i=1; 6
9 do{
10 // Menampilkan nilai i
7
11 printf("%d \n",i); 8
12 9
13 // Menambahkan nilai i
14 i++;
15 }
16 // Mengecek kondisi
17 while (i<=10);
18 }

Catatan:
• Pernyataan i++ identik dengan i=i+1;

3. For loop
Pada perulangan ini jumlah perulangan telah diketahui dengan pasti (Counted Loop).
Perulangan ini digunakan jika kita sudah mengetahui berapa perulanganyang akan
dilakukan.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


34
Deklarasi:
for(inisialisasi; kondisi; update statement){
// aksi
// aksi
// aksi
}

C Flowchart Output
1 #include<stdio.h> 1
2
2
3 // Deklarasi variabel i
4 int i; 3
5 4
6 void main(){ 5
7 // Assign nilai i, 6
pengecekan kondisi, dan
update statement 7
8 for (i=1; i<8; i++)
9
10 // Menampilkan i
11 printf("%d \n",i);
12 }

Catatan:
• Jika ingin mencacah turun (misal 10 → 1) maka gunakan for(i=10; i>=1; i--)
• Contoh program untuk memasukkan beberapa data menggunakan perulangan

Modul Praktikum Algoritma dan Pemrograman 2024/2025


35
C Flowchart
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 // Deklarasi variabel
5 int nilai,n,i;
6 char nama[100];
7
8 void main()
9 {
10 // Membersihkan layar terminal
11 system(“cls”);
12
13 // Masukkan banyaknya data
14 printf("Banyak Data :");
15 scanf("%d",&n);
16
17 // Inisialisasi for loop
18 for (i=1;i<=n;i++)
19 {
20 // User memasukkan nama dan
nilai
21 printf("Nilai");
22 scanf("%d",&nilai); getchar();
23 printf("Nama : "); gets(nama);
24 }
25 }

system (“cls”); berfungsi untuk membersihkan Fungsi getchar() terdapatpada library


layar program. system(“cls”) terdapat pada stdio.h
library stdlib.h

scanf() memiliki kelemahan yaitu meninggalkan “\n” (baris baru) pada memori
input, sehingga jika terdapat gets() setelah scanf(), gets() tersebut tidak akan bekerja.
Solusinya adalah menambahkan getchar() setelah scanf() yang berfungsi untuk mengambil
“\n” pada memori input sehingga gets() dapat bekerja.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


36
4.3 Perintah Kontrol

Perintah kontrol digunakan pada perulangan untuk mengubah hasil eksekusi perulangan dari
keadaan normalnya. Dibawah ini merupakan perintah-perintah kontrol pada perulangan:

Perintah Contoh Program Output Keterangan


#include<stdio.h> 1 Perintah break berfungsi
2 untuk menghentikan proses
int i;
void main(){ 3 perulangan yang sedang
Perintah 4 berlangsung. Pada contoh di
for(i=1;i<10;i++){
Break if(i==7) break; 5 samping perulangan akan
printf("%d\n",i); 6 berhenti saat i = 7.
}
}
#include<stdio.h> 1 Perintah continue befungsi
2 untuk melewati/skip
int i;
void main(){ 3 perulangan yang dimaksud.
for(i=1;i<10;i++){ 4 Pada contoh disamping
Perintah if(i==7) continue; 5 program akan melanjutkan
Continue printf("%d\n",i); 6 perulangan saat i = 7.
}
} 8
9

Modul Praktikum Algoritma dan Pemrograman 2024/2025


37
MODUL 5 : FUNGSI

Tujuan Praktikum
1. Memahami penggunaan fungsi pada bahasa C.
2. Memahami struktur fungsi pada bahasa C.
3. Dapat membedakan jenis parameter fungsi pada bahasa C.
4. Dapat membuat program menggunakan fungsi pada bahasa C.

5.1 Fungsi Library Standar


Dalam bahasa C, terdapat banyak fungsi yang telah terdefinisi dalam C Standard Library,
seperti stdio.h, string.h, math.h, dan masih banyak lainnya. Berikut adalah beberapa contoh library
dalam C Standard Library dan beberapa contoh fungsi yang terdefinisi di dalamnya.

1. Standard Input Output Library (stdio.h)


Library ini menyediakan fungsi-fungsi dasar untuk input dan output, seperti printf untuk
menampilkan output ke layar dan scanf untuk membaca input dari pengguna.

2. String Manipulation Library (string.h)


Library ini menyediakan fungsi-fungsi untuk memanipulasi string seperti:
• strcpy: Menyalin string.
• strlen: Menghitung panjang string.
• strcmp: Membandingkan dua string.

3. Standard Library (stdlib.h)


Library ini menyediakan berbagai fungsi utilitas, termasuk manajemen memori, konversi
angka, dan proses kontrol salah satunya:
• system(“cls”) : Membersihkan layar terminal output
• system(“pause”) : Melakukan pause pada program
• exit : Menghentikan program

4. Mathematics Library (math.h)


Library ini menyediakan fungsi-fungsi matematika dasar seperti:
• sin, cos, tan: Fungsi trigonometri.
• sqrt: Menghitung akar kuadrat.
• pow: Menghitung pangkat.

5. Ctype Library (ctype.h)


Library ini menyediakan fungsi-fungsi untuk pemeriksaan dan manipulasi karakter. Contoh:
• isdigit : Memeriksa apakah karakter adalah digit.
• isalpha : Memeriksa apakah karakter adalah huruf.
• toupper : Mengubah karakter menjadi huruf besar.
• tolower : Mengubah karakter menjadi huruf kecil.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


38
6. Time Library (time.h)
Library ini menyediakan fungsi-fungsi untuk manipulasi waktu dan tanggal. Contoh:
• time: Mengembalikan waktu saat ini.
• clock: Mengembalikan waktu CPU yang digunakan oleh program.
• difftime: Menghitung perbedaan antara dua waktu.

5.2 Fungsi
Fungsi adalah subprogram yang sangat bermanfaat dalam pemrograman, terutama untuk
pengembangan program besar dan kompleks. Dengan menggunakan fungsi, kita dapat
mengorganisir kode menjadi bagian-bagian yang lebih kecil, lebih mudah dipahami, dan lebih
mudah diatur.
Salah satu contoh penggunaan fungsi adalah perhitungan luas prisma segiempat. Dengan
mendefinisikan rumus luas prisma dalam sebuah fungsi, kita hanya perlu menuliskannya satu kali
dan dapat memanggil fungsi tersebut kapan saja diperlukan tanpa harus menuliskannya berulang
kali di program utama.
Berikut adalah beberapa istilah penting yang sering digunakan dalam konteks fungsi:
❖ Variabel Lokal adalah variabel yang dideklarasikan di dalam sebuah fungsi dan hanya dapat
digunakan dalam lingkup fungsi tersebut saja. Variabel ini tidak dapat diakses di luar fungsi.

❖ Variabel Global adalah variabel yang dideklarasikan di luar semua fungsi, biasanya di bagian
awal program. Variabel ini dapat diakses dan digunakan oleh semua bagian program,
termasuk fungsi-fungsi yang ada.

❖ Parameter Aktual (Actual Parameter) adalah nilai atau referensi yang diberikan kepada fungsi saat
fungsi tersebut dipanggil.

❖ Parameter Formal (Formal Parameter) adalah variabel yang dideklarasikan di dalam header fungsi dan
digunakan untuk menerima nilai dari parameter aktual saat fungsi dipanggil.

#include <stdio.h>

Variabel Global int tambah(int a, int b);


int x,y;
void main(){
Parameter aktual
printf("Angka Pertama : ");
scanf("%d",&x);
printf("Angka Kedua : ");
scanf("%d",&y);
printf("Hasil Penjumlahan =
%d",tambah(x,y)); Parameter Formal
}
Variabel Lokal
int tambah(int a, int b){
int hasil;
hasil=a+b;
return hasil;
}
Modul Praktikum Algoritma dan Pemrograman 2024/2025
39
Fungsi adalah sebuah potongan kode yang ditujukan untuk menjalankan tugas yang spesifik,
tugas tersebut membutuhkan informasi input yang disebut parameter dan biasanya suatu fungsi
akan mengembalikan sebuah nilai (return value).
Dalam penulisan fungsi diberikan nama/identifier, parameter formal (nilai masukan yang diberi
juga nama dan dijelaskan tipenya), dan dideklarasikan tipe dari fungsi tersebut. Fungsi dapat
dibuat sebelum atau sesudah penulisan program utama. Bila dibuat sesudah penulisan main, maka
harus menuliskan prototype fungsi di bagian atas program.
Cara Pemanggilan Fungsi C Algoritma
Assignment a = tambah(x,y) a  tambah(x,y)
Output (printf) printf(“%d”,tambah(x,y)) Output(tambah(x,y))

a. Penulisan fungsi setelah main program


Cara penulisan seperti ini membutuhkan sebuah prototype fungsi, tujuannya adalah
sebagai abstrak supaya fungsi dapat dikenali oleh seluruh program. Prototype fungsi hanya
membutuhkan tipe data dari parameternya saja, jadi kita tidak harus menuliskan variabelnya.

C
1 #include <stdio.h>
2 int hitung(int x, int y); //Prototype Fungsi
3 int main(){
4 int total, diskon, total_diskon, total_biaya;
5 printf("===PROGRAM MENGHITUNG DISKON===\n");
6 printf("Masukan Biaya sebenarnya : Rp. ");
7 scanf("%d", &total);
8 printf("Masukan Diskon yang di dapat (%) : ");
9 scanf("%d", &diskon);
10 total_diskon = hitung(total, diskon); //parameter aktual
11 printf("Diskon yang anda dapatkan = Rp. %d\n", total_diskon);
12 total_biaya = total-total_diskon;
13 printf("Biaya setelah diskon = Rp. %d",total_biaya);
14 return 0;
15 }
16
17 int hitung(int x, int y){ //hitung = identifier, (int x,int y) = parameter
formal
18 int biaya_diskon;
19 biaya_diskon = (x*y)/100;
20 return biaya_diskon; //Return Value
21 }

b. Penulisan fungsi sebelum main program


Jika penulisan fungsi dilakukan sebelum fungsi utama, maka prototipe fungsi tidak
diperlukan. Hal ini karena kompiler sudah mengenali fungsi tersebut saat membaca fungsi utama.
C
1 #include <stdio.h>
2 int hitung(int x, int y){ //hitung = identifier, (int x,int y) = parameter
formal
3 int biaya_diskon;
4 biaya_diskon = (x*y)/100;
5 return biaya_diskon; //Return Value
6 }
7
8 int main(){
Modul Praktikum Algoritma dan Pemrograman 2024/2025
40
9 int total, diskon, total_diskon, total_biaya;
10 printf("===PROGRAM MENGHITUNG DISKON===\n");
11 printf("Masukan Biaya sebenarnya : Rp. ");
12 scanf("%d", &total);
13 printf("Masukan Diskon yang di dapat (%) : ");
14 scanf("%d", &diskon);
15 total_diskon = hitung(total, diskon); //parameter aktual
16 printf("Diskon yang anda dapatkan = Rp. %d\n", total_diskon);
17 total_biaya = total-total_diskon;
18 printf("Biaya setelah diskon = Rp. %d",total_biaya);
19 return 0;
20 }

Output
Contoh :

Masukan Biaya Sebenarnya : Rp. 100000


Masukan Diskon yang di dapat (%) : 60

Diskon yang anda dapatkan = Rp. 60000


Biaya setelah diskon = Rp. 40000

Flowchart

Modul Praktikum Algoritma dan Pemrograman 2024/2025


41
5.3 Fungsi Void/Prosedur (Void Function)
Fungsi prosedur adalah fungsi yang tidak mengembalikan nilai. Fungsi prosedur digunakan
untuk melakukan tugas tertentu tanpa mengembalikan hasil kepada pemanggil. Mereka sering
digunakan untuk melakukan aksi seperti mencetak keluaran, mengubah nilai variabel global, atau
memodifikasi parameter yang diteruskan dengan pointer.

C Output
1 #include <stdio.h> Contoh 1:
2 Angka: 10
3 void bilangan(int a){ Positive
4 if(a>0) printf("\nPositive");
5 else if(a<0) printf("\nNegative"); Contoh 2:
6 else printf("\nZero"); Angka: -22
7 } Negative
8
9 void main(){ Contoh 3:
10 int x; Angka: 0
11 printf("Angka: "); Zero
12 scanf("%d",x);
13 bilangan(x);
14 }

Flowchart

5.4 Algoritma Rekursif


Rekursi adalah algoritma yang melakukan pemanggilan terhadap dirinya sendiri. Algoritma
yang bersifat rekursi disebut rekursif. Rekursi hanya dapat digunakan pada prosedur dan fungsi,
hal ini dikarenakan hanya prosedur dan fungsi saja yang dapat dipanggil. Pada umumnya, rekursi
dapat diilustrasikan sebagai algoritma perulangan biasa (iteratif) tetapi dengan menggunakan
fungsi dan prosedur.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


42
Berikut adalah istilah penting dalam rekursif
• Basis : kondisi-kondisi yang akan menghentikan proses rekursif
• Rekurens : perintah yang akan memanggil algoritma rekursif itu sendiri (dalam hal ini
prosedur atau fungsi)
Berikut ini adalah contoh penggunaan algoritma rekursif untuk mencari nilai factorial

C Input dan Output


1 #include <stdio.h> INPUT (BOLD)
2 int nFaktorial(int n); FUNGSI FAKTORIAL
3 int x, hasil; Silahkan masukkan angka: 5
4 int main(){
5 printf("FUNGSI FAKTORIAL\n"); OUTPUT
6 printf("Silahkan masukkan angka:") Hasil faktorial: 120
7 scanf("%d",&x); getchar();
8 hasil = nFaktorial(x);
9 printf("Hasil faktorial: %d,hasil);
10 return 0;
11 }
12
13 int nFaktorial(int n){
14 if (n==1 || n==0){ //Basis
15 return 1;
16 }
17 else if (n>1) {
18 return n * nFaktorial(n-1);
19 //Rekurens
20 }
21 }

Input dan Output

Modul Praktikum Algoritma dan Pemrograman 2024/2025


43
MODUL 6 : ARRAY DAN STRING

Tujuan Praktikum
1. Memahami maksud penggunaan array.
2. Dapat membuat program dengan menggunakan array satu / dua dimensi.
3. Dapat membuat program dengan menggunakan array dua dimensi.
4. Memahami prinsip dasar dari cara kerja string dalam bahasa C.
5. Memahami perbedaan string sebagai array of characters dan pointer-to
characters.
6. Mampu memanipulasi suatu string dengan berbagai cara pengolahan yang
disediakan.

6.1 Array
Array merupakan suatu tipe data terstrukur yang dapat menyimpan banyak data dengan
suatu nama yang sama dan menempati tempat di memori secara berurutan dan juga memiliki tipe
data yang sama.
Contoh implementasi array adalah sebagai berikut :
Jika anda ingin menginputkan 5 data. Tanpa menggunakan array, anda harus membuat 5
variabel berbeda untuk masing-masing data. Jika menggunakan array, anda hanya perlu membuat
1 variabel dalam bentuk array saja.

Tanpa Array Dengan Array


1 #include <stdio.h> 1 #include <stdio.h>
2 2
3 int data1, data2, data3, data4, 3 int data[100], i, n;
data5, data6; 4
4 5 int main(){
5 int main() { 6 n = 5;
6 printf("Data Nomor 1 : "); 7 for (i = 0; i <= n; i++) {
7 scanf("%d", &data1); 8 printf("Data Nomor %d : ", i+1);
8 printf("Data Nomor 2 : "); 9 scanf("%d", &data[i]);
9 scanf("%d", &data2); 10 }
10 printf("Data Nomor 3 : "); 11 }
11 scanf("%d", &data3);
12 printf("Data Nomor 4 : ");
13 scanf("%d", &data4);
14 printf("Data Nomor 5 : ");
15 scanf("%d", &data5);
16 printf("Data Nomor 6 : ");
17 scanf("%d", &data6);
18 }

Modul Praktikum Algoritma dan Pemrograman 2024/2025


44
Flowchart

Layaknya pada variabel pada umumnya, array perlu dideklarasikan. Perbedaan dari tipe data biasa
dan array, array menggunakan kurung siku ”[...]” setelah nama dari varibel sebagai penunjuk
ukuran dari sebuah array, dengan contoh sebagai berikut :
int angka[10];
Contoh diatas mendeklarasikan bahwa array bernama ”angka” memiliki kapasitas sebanyak 10
elemen, dengan tipe data ”int”. Nilai dari array juga dapat ditentukan dalam inisialisasi dengan
cara:
int angka[5] = {1, 2, 3, 4, 5};

Contoh diatas mendeklarasikan bahwa array ”angka” dengan kapasitas 5, dengan nilai-nilai : 1, 2, 3,
4, dan 5.

6.2 Array 1 Dimensi


Sesuai dengan namanya, array 1 dimensi merupakan array yang hanya memiliki dimensi 1.
Bayangkan array merupakan kumpulan loker yang berderet dalam satu baris. Setiap kotak
menyimpan sebuah nilai dan setiap kotak memiliki nomor urut masing-masing.tidak bisa diisi lebih
dari 5 data.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


45
Elemen array → 5 2 3 4 6 7 8 1 12 9
Indeks array → 0 1 2 3 4 5 6 7 8 9
Indeks array berfungsi sebagai nomor alamat

Elemen array (isi dari tiap-tiap loker) → 5 10 7 2 11 Array [5] boleh berisi 5 data,
Indeks array (nomor loker) → 0 1 2 3 4

Elemen array (isi dari tiap-tiap loker) → 5 10 7 Array [5] boleh berisi < 5
data,
Indeks array (nomor loker) → 0 1 2 3 4

Elemen array (isi dari tiap-tiap loker) → 5 10 7 2 11 8 Array [5] tidak boleh
Indeks array (nomor loker) → 0 1 2 3 4 5 berisi >5 data

Contoh program menggunakan array satu dimensi :

C Flowchart
1 #include <stdio.h>
2
3 int data[100], i, n;
4
5 int main(){
6 printf("Masukkan banyak data :
");
7 scanf("%d", &n);
8 for (i = 0; i <= n; i++) {
9 printf("Data Nomor %d : ",
i+1);
10 scanf("%d", &data[i]);
11 }
12 }

Input
INPUT (BOLD)
Masukkan banyak data : 5
Data Nomor 1 : 5
Data Nomor 2 : 23
Data Nomor 3 : 4
Data Nomor 4 : 89
Data Nomor 5 : 46

Modul Praktikum Algoritma dan Pemrograman 2024/2025


46
Array juga dapat digunakan untuk menyimpan data dengan tipe bentukan atau
struct. Seperti pada contoh dibawah ini, yang dimana array digunakan untuk menyimpan
data mahasiswa yang terdiri atas nama, NIM, dan nilai mahasiswa.
Array of struct
#include <stdio.h>

struct {
char nama[20], nim[20];
int nilai;
} mahasiswa[100];

int i, n;

int main() {
printf("Banyaknya mahasiswa : ");
scanf("%d", &n);
for(i = 0; i <= n-1; i++) {
printf("Mahasiswa ke-%d\n", i+1);
printf("Nama\t: "); fflush(stdin);
gets(mahasiswa[i].nama);
printf("NIM\t: ");
gets(mahasiswa[i].nim);
printf("Nilai\t: ");
scanf("%d", &mahasiswa[i].nilai);
}
printf("\n");
printf("Data Mahasiswa\n");
for(i = 0; i <= n-1; i++) {
printf("Mahasiswa %d\n", i+1);
printf("Nama\t: %s\n", mahasiswa[i].nama);
printf("NIM\t: %s\n", mahasiswa[i].nim);
printf("Nilai\t: %d\n", mahasiswa[i].nilai);
}
return 0;
}

Pada contoh diatas, digunakan sintaks ’fflush(stdin)’. Sintaks ini berfungsi untuk
mengosongkan buffer input. Tanpa menggunakan fflush(stdin), maka fungsi gets() yang dijalankan
hanyalah gets() yang pertama, sementara fungsi gets() yang kedua dan seterusnya tidak akan
dijalankan oleh program.
Array of char
#include <stdio.h>
#include <string.h>

char kata[100];
int panjang;

int main() {
printf("Kata 1\t: "); gets(kata);
panjang = strlen(kata)-1;
printf("Kata Awal\t : %s\n", kata);
printf("Hasil Pembalikan : ");
for(panjang; panjang >= 0; panjang--){
printf("%c", kata[panjang]);
}
}

Modul Praktikum Algoritma dan Pemrograman 2024/2025


47
Array of char merupakan contoh penggunaan string sebagai array. Program diatas berfungsi
untuk membalikkan sebuah kalimat. Dapat dilihat bahwa digunakan sintaks ’strlen()’ yanf
digunakan untuk mengetahui panjang dari suatu string.

6.3 Array Multidimensi


Array multidimensi, sesuai dengan namanya, array ini memiliki lebih dari satu
dimensi. Pada array satu dimensi, array hanya menyimpan data dalam bentuk baris seperti
contoh sebelumnya. Pada array multidimensi, array memiliki dimensi baris dan juga
dimensi kolom.
Berikut merupakan contoh deklarasi untuk array dua dimensi :
int angka[5][10];

Berikut adalah contoh ilustrasi dari array dengan dimensi dua, dimana range1 - m
adalah untuk baris dan range 1 - n untuk kolom

1 2 ... n
1 (1,1) (1,2) ... (1,n)
2 (2,1) (2,2) ... (2,n)
... ... ... ... ...
m (m,1) (m,2) ... (m,n)

Contoh program menggunakan array dua dimensi :

C
#include <stdio.h>

int i, j, m, n;
int mat1[50][50], mat2[50][50], mat3[50][50];

int main() {
printf("Jumlah Baris\t: ");
scanf("%d", &m);
printf("Jumlah Kolom\t: ");
scanf("%d", &n);
print("Matriks 1\n");
for(i = 0; i <= m-1; i++){
for(j = 0; j <= n-1; j++){
printf("Isi baris %d, kolom %d = ", i+1, j+1);
scanf("%d", &mat1[i][j]);
}
}
printf("Matriks 2\n");
for(i = 0; i <= m-1; i++){
for(j = 0; j <= n-1; j++){
printf("Isi baris %d, kolom %d = ", i+1, j+1);
scanf("%d", &mat2[i][j]);
}
}
for(i = 0; i <= m-1; i++){
for(j = 0; j <= n-1; j++){
mat3[i][j] = mat1[i][j] + mat2[i][j];
}
}
Modul Praktikum Algoritma dan Pemrograman 2024/2025
48
printf("hasil penjumlahan matriks\n");
for(i = 0; i <=m-1; i++){
for(j = 0; j <=n-1; j++){
printf("%d", mat3[i][j]);
printf("\n");
}
}
return 0;
}

Flowchart

Modul Praktikum Algoritma dan Pemrograman 2024/2025


49
6.4 String
String adalah suatu jenis tipe data yang memuat sekumpulan karakter bertipe data
unsigned char yang terkumpul menjadi satu, dan merupakan salah satu cara bagi kita untuk dapat
menyimpan suatu data yang isinya adalah pelbagai karakter yang disatukan menjadi suatu “kata”
ataupun “kalimat” bagi manusia, dan tentu saja karakter-karakter tersebut telah diakui menurut
standar ASCII (American Standard Code for Information Interchange). Pada suatu string yang
diberikan, perlu kita ketahui bahwa satu karakter yang dikandungnya berukuran satu byte (dalam
satuan memori atau RAM), hingga dapat kita simpulkan bahwa jika diberikan suatu string yang
panjangnya (banyak huruf) adalah 1,024 karakter, maka program tersebut memerlukan ruang
memori atau RAM sebanyak 1,024 byte.

Proses pengolahan string dapat dilakukan dengan cara menyalin suatu variabel yang
berisikan string dan disimpan ke dalam variabel baru untuk menyimpan string salinan tersebut,
ataupun dengan cara menggabungkan kedua string menjadi satu. Selain itu, dapat dilakukan juga
proses pencarian suatu karakter ataupun substring dari string utama yang diberikan, juga dapat
mencari panjang suatu string, beserta memanfaatkan pesan kode kustom error yang dibuat secara
mandiri oleh pengguna.

Teruntuk modul ini, disarankan untuk menggunakan salah satu dari kedua fungsi berikut
untuk melakukan input string pada terminal ataupun command-prompt, yaitu gets() dan fgets().
Untuk tata cara penggunaannya dapat kalian lihat dari pelbagai sumber di internet, dan
diusahakan untuk dipelajari bagaimana cara memakai fgets() agar dapat meminimalisir banyaknya
warning yang diakibatkan oleh penggunaan gets() karena hal ini juga berpengaruh pada penilaian
Anda dalam hal mengurangi risiko banyak kemunculan pesan peringatan saat menjalankan
program.

Berikut ini akan disajikan tabel berupa fungsi-fungsi dan makro dalam standard library/header file
<string.h> lengkap dengan penjelasannya.
#include <string.h>

Fungsi dan Deklarasi Penjelasan

1. Penyalinan: [4] ...


memcpy() Menyalin nilai num byte dari lokasi yang ditunjuk oleh source
void* memcpy(void langsung ke blok memori yang ditunjuk oleh destination.
*destination, const
void *source, size_t
num);
memmove() Menyalin nilai num byte dari lokasi yang ditunjuk oleh source ke
void* memmove(void blok memori yang ditunjuk oleh destination. Penyalinan terjadi
*destination, const
void *source, size_t
seolah-olah buffer perantara digunakan, memungkinkan
num); destination dan source tumpang tindih.

strcpy() Menyalin string C yang ditunjuk oleh source ke dalam array yang
char* strcpy(char ditunjuk oleh destination, termasuk karakter NULL yang
*destination, const
char *source);
mengakhiri (dan berhenti pada titik itu).
strncpy() Menyalin num karakter pertama dari source ke destination. Jika
char* strncpy(char akhir string C source (yang ditandai dengan karakter NULL \0)
*destination, const
ditemukan sebelum jumlah karakter disalin, destination diisi
char *source, size_t

Modul Praktikum Algoritma dan Pemrograman 2024/2025


50
num); dengan nol \0 hingga total num karakter telah ditulis ke
dalamnya.

2. Penggabungan: ...
[2]
strcat() Menambahkan salinan string source ke string destination.
char* strcat(char Karakter NULL \0 yang mengakhiri di destination ditimpa oleh
*destination, const
char *source);
karakter pertama dari source, dan karakter NULL \0 disertakan di
akhir string baru yang dibentuk oleh penggabungan keduanya di
destination.
strncat() Menambahkan jumlah karakter pertama dari source ke
char* strncat(char destination, ditambah karakter NULL \0 yang mengakhiri. Jika
*destination, const
panjang string C di source kurang dari num, hanya konten
char *source, size_t
num); hingga karakter NULL \0 yang akan disalin.

3. Perbandingan: [3] ...


memcmp() Membandingkan num byte pertama dari blok memori yang
int memcmp(const void ditunjukkan oleh ptr1 dengan num byte pertama yang
*ptr1, const void
ditunjukkan oleh ptr2, menghasilkan nol (true) jika semuanya
*ptr2, size_t num);
cocok atau nilai berbeda dari nol (false) yang menyatakan mana
yang lebih besar jika tidak cocok. Prinsip pengembalian nilai di
atas berlaku juga untuk dua penjelasan di bawah ini.
strcmp() Membandingkan string C str1 dengan string C str2. Fungsi ini
int strcmp(const char mulai membandingkan karakter pertama dari setiap string. Jika
*str1, const char
*str2);
keduanya sama satu sama lain, maka dilanjutkan dengan
pasangan berikutnya hingga karakternya berbeda atau hingga
karakter NULL \0 terminasi tercapai.
strncmp() Membandingkan hingga jumlah karakter string C str1 dengan
int strncmp(const char string C str2. Fungsi ini mulai membandingkan karakter pertama
*str1, const char
*str2, size_t num);
dari setiap string. Jika keduanya sama satu sama lain, maka
dilanjutkan dengan pasangan berikut hingga karakternya
berbeda, hingga karakter NULL \0 tercapai, atau hingga jumlah
karakter cocok di kedua string, mana saja yang lebih dulu.

4. Pencarian: [3] ...


memchr() Mencari dalam num byte pertama dari blok memori yang
const void* ditunjuk oleh ptr untuk kemunculan value pertama (ditafsirkan
memchr(const void *ptr,
int value, size_t num);
sebagai unsigned char), dan mengembalikan pointer ke sana.
void* memchr(void *ptr, Nilai atau value dan masing-masing byte yang diperiksa pada
int value, size_t num); array ptr ditafsirkan sebagai unsigned char untuk perbandingan.
strchr() Mengembalikan pointer ke kemunculan karakter pertama dalam
const char* string C str. Pengakhiran karakter NULL \0 dianggap sebagai
strchr(const char *str,
bagian dari string C. Oleh karena itu, ini juga dapat ditempatkan
int character);
char* strchr(char *str, untuk mengambil pointer ke akhir string.
int character);
strstr() Mengembalikan pointer ke kemunculan pertama str2 di str1, atau
const char*

Modul Praktikum Algoritma dan Pemrograman 2024/2025


51
strstr(const char NULL pointer jika str2 bukan bagian dari str2. Proses pencocokan
*str1, const char
tidak mencakup penghentian karakter NULL \0, tetapi berhenti di
*str2);
char* strstr(char situ.
*str1, const char
*str2);

5. Lainnya/Tambahan: [3] ...


memset() Menetapkan num byte pertama dari blok memori yang ditunjuk
void* memset(void *ptr, oleh ptr ke nilai yang ditentukan (ditafsirkan sebagai unsigned
int value, size_t num);
char).
strerror() Menafsirkan nilai errnum, menghasilkan string dengan pesan
char* strerror(int yang menggambarkan kondisi kesalahan seolah-olah diatur ke
errnum);
errno oleh fungsi suatu library (lihat catatan di bawah). Pointer
yang dikembalikan menunjuk ke string yang dialokasikan secara
statis, yang tidak boleh diubah oleh program. Panggilan lebih
lanjut ke fungsi ini mungkin menimpa kontennya (implementasi
perpustakaan tertentu tidak diperlukan untuk menghindari data
race)
Catatan: dapat digunakan standard header file <errno.h> agar
dapat memudahkan proses pelacakan masalah sistematika yang
dialami.
strlen() Mengembalikan panjang string C str. Panjang string C ditentukan
size_t strlen(const oleh karakter NULL terminasi atau \0: String C sepanjang jumlah
char *str);
karakter antara awal string dan karakter \0 (tanpa menyertakan
karakter NULL terminasi atau \0 itu sendiri).

6. Makro dan Tipe Data: ...


[2]
NULL Makro ini diperluas ke konstanta penunjuk nol.
Definition: (void*)(0) Sederhananya, ketiadaan atau nihil.

Konstanta penunjuk nol dapat dikonversi ke tipe pointer apa pun


(atau tipe pointer-to-member), yang memperoleh nilai pointer
nol. Ini adalah nilai khusus yang menunjukkan bahwa pointer
tidak menunjuk ke objek apa pun.
size_t Alias dari salah satu tipe unsigned int, seperti pada definisi di
Definition: samping.
typedef unsigned long
long size_t
Ini adalah tipe yang mampu mewakili ukuran objek apa pun
dalam byte: size_t adalah tipe yang dikembalikan oleh operator
sizeof dan banyak digunakan di berbagai standard libraries untuk
mewakili ukuran dan jumlah.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


52
String dalam bahasa C terbagi menjadi dua bentuk deklarasi, yaitu dengan metode array
of characters dan pointer-to characters. Sekedar catatan, tipe variabel string pointer-to characters
akan dipelajari di modul berikutnya mengenai Pointer, jadi modul ini hanya akan berfokus pada
pengolahan string menggunakan array of characters. Sintaktik penulisannya adalah sebagai
berikut:
1. #define BUFSIZE 100
char my_string[100], my_other_string[BUFSIZE]; // BUFSIZE = 100
Variabel di atas dinamai my_string yang sudah diinisialisasikan untuk dapat menampung
sebanyak 100 karakter (angka yang diinisialisasikan harus bertipe data int, atau dapat
dideklarasikan terlebih dahulu menggunakan definisi konstanta, seperti pada contoh di
atas pada variabel my_other_string).

Untuk pembahasan modul ini akan lebih difokuskan untuk memahami konsep pengolahan
string dalam bahasa C menggunakan array of characters, hingga Anda dapat mempelajari secara
mandiri mengenai berbagai trik manipulasi string dengan tipe pointer-to characters. Selanjutnya
akan diberikan rincian lebih mengenai pengolahan string yang dapat berinteraksi langsung
dengan pengguna, yaitu dengan berbagai metode yang sudah dijelaskan secara singkat pada
tabel 7.1 di atas, yaitu cara menyalin string satu ke yang lainnya, menggabungkan kedua string,
membandingkan kedua string, dan melakukan pencarian karakter atau substring dari suatu string
tertentu.

Selain itu, Anda juga akan belajar mengenai bagaimana cara melakukan manipulasi string
dengan perpustakaan lainnya yang berguna untuk menanggulangi kasus kode error dalam
memprogram, agar dapat membuat kalian lebih untuk memahami cara melakukan pemecahan
masalah dari problematika pelbagai error tersebut.

Berikut ini akan disajikan empat (4) metode pengolahan string dalam bahasa C secara umumnya
beserta tabel berisikan kode program dengan penjelasannya

Metode 1: Penyalinan dan Penggabungan String


Fungsi yang diperlukan: strcpy() atau strncpy(), strcat() atau strncat()
Untuk proses penyalinan string, diberikan dua fungsi yang cukup mudah untuk digunakan
dan dimanipulasi penggunaannya. Gunakan fungsi strcpy() jika kita hanya ingin menyalin string
dari sumber ke tujuan tanpa memperhatikan kapasitas maksimum penyalinan karakter, sedangkan
apabila ketika menyalin string dan kita ingin memastikan banyak karakter maksimum yang dapat
disalin, dapat digunakan fungsi strncpy() untuk mencegah seluruh karakter yang disalin ke string
tujuan (dalam beberapa kasus tentunya)..

Tidak seperti proses penyalinan string di atas, pada proses penggabungan string sumber
dan tujuan tidak akan saling menimpa atau menghilangkan satu sama lain. Gunakan fungsi strcat()
untuk menggabungkan kedua string berbeda variabel menjadi satu tanpa memperhatikan
banyaknya kapasitas maksimum penggabungan karakter dari yang satu dengan yang lainnya,
sedangkan apabila kita ingin memastikan banyak karakter yang dapat digabungkan dengan string
lainnya, maka dapat digunakan fungsi strncat(), dengan alasan yang sama seperti pada strncpy()
sebelumnya.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


53
Kode Program Input dan Output
1 #include <stdio.h> === Input ===
2 #include <string.h> Daskom Lab
3
4 int main(void) { === Output ===
5 char src[20 + 1]; Source: Daskom Lab
6 char dst_1[40 + 1], dst_2[40 + 1]; Destination 1: Daskom Lab
7 is really amazing!
8 printf("Insert a string (~20 letters): Destination 2: Daskom Lab
"); is a fun experiment!
9 fgets(src, 20, stdin);
10 src[strlen(src) - 1] = '\0'; === Penjelasan ===
// Reason to remove the newline ‘\n’ dst_1 adalah hasil salinan
because dari src dan penggabungan
11 // of the after-effect of using fgets(). dari string “ is really
12 amazing!”. Begitu juga
13 strcpy(dst_1, src); dengan dst_2 yang juga
14 strncpy(dst_2, src, 40); adalah hasil salinan dari
15 strcat(dst_1, " is really amazing!"); src dan penggabungan dari
16 strncat(dst_2, " is a fun experiment!", string “ is a fun
40); experiment!”.
17
18 printf("Source: %s\n", src);
19 printf("Destination 1: %s\n", dst_1);
20 printf("Destination 2: %s\n", dst_2);
21
22 return 0;
23 }

Metode 2: Perbandingan String


Fungsi yang diperlukan: strcmp() atau strncmp()
Selain menyalin dan menggabungkan kedua string antar satu sama lain, pengolahan string
juga dapat berupa membandingkan string yang satu dengan yang lainnya. Dengan ketentuan
yang sama, string sumber akan dibandingkan dengan string tujuan untuk dicari perbedaannya.
Proses perbandingan ini telah dilakukan secara otomatis melalui program, hingga kita hanya perlu
fokus pada hasil keluaran yang diberikan, yaitu bernilai 0 apabila string sumber dengan string
tujuan perbandingannya sama, dan akan bernilai selain 0 (bisa -1 ataupun 1 sebagai contohnya)
apabila terdapat perbedaan antar kedua string tersebut ketika dibandingkan.

Perhatikan bahwa penulisan satu karakter yang berbeda (walau terlihat sama secara visual
namun bila diperiksa nilai atau kode ASCII dari karakter tersebut tidaklah sesuai), akan sangat
berpengaruh pada hasil keluaran nilai yang diberikan, baik oleh strcmp() maupun strncmp().
Selebihnya, pada proses perbandingan kedua string dengan menggunakan fungsi strncmp(), bila
disertakan maksimum karakter yang hendak dibandingkan hanya akan diperiksa hingga karakter
ke-sekian dari nilai maksimum perbandingan karakter tersebut.

Kode Program Input dan Output


1 #include <stdio.h> === Input ===
2 #include <string.h> Admin#1234
3 admin#1234
4 int main(void) {
5 char pass_1[20 + 1], pass_2[20 + 1]; === Output ===
6 Both pass’ are NOT the same

Modul Praktikum Algoritma dan Pemrograman 2024/2025


54
7 printf("Insert any password: ");
8 fgets(pass_1, 20, stdin); === Penjelasan ===
9 pass_1[strlen(pass_1) - 1] = '\0'; pass_1 diberikan input
10 “Admin#1234” dan pass_2
11 printf("Insert the password again: "); diberikan input “admin#1234”
12 fgets(pass_2, 20, stdin); yang keduanya berukuran 11
13 pass_2[strlen(pass_2) - 1] = '\0'; byte. Namun jika diperiksa
terlihat bahwa karakter ‘A’
14 if (strcmp(pass_1, pass_2) == 0) { pada pass_1 bernilai 65,
15 printf("Both pass’ are the same!\n"); sedangkan karakter ‘a’ pada
16 } else { pass_2 bernilai 97, hingga
17 printf("Both pass’ are NOT the same!\n"); keluar dari strcmp()
18 } tersebut bernilai tidak 0,
19 alias false. (lihat acuan:
20 // Try to experiment individually by using Tabel ASCII)
21 // strncmp(). Pay attention for how to
22 // distinguish the difference just like the
23 // first method before! (see table 7.1)
24 return 0;
25 }

Metode 3: Pencarian dan Manipulasi String Lainnya


Fungsi yang diperlukan: strlen(), strchr(), dan strstr()
Secara sederhana, fungsi strlen() sangat berguna untuk menghitung berapa banyak
karakter yang ada dalam suatu variabel bertipe string, dengan catatan bahwa sistematika
pengukuran tidak melibatkan karakter null-terminator ‘\0’ yang berada pada setiap akhir string,
karena karakter tersebut hanya sebagai tanda bahwa string tersebut hanya terdiri dari sekian
karakter saja, tidak lebih maupun kurang.

Berikutnya, apabila kita hendak mencari suatu karakter yang berada dalam suatu string,
kita dapat menggunakan fungsi strchr(). Cukup sertakan suatu string sebagai parameter
pertamanya dan suatu karakter (dapat diketik dengan notasi tanda petik satu ataupun langsung
berupa kode ASCII dari karakter tersebut yang berupa int atau unsigned char) sebagai parameter
kedua, dengan nilai kembalian fungsi berupa karakter pertama yang dijumpai terlebih dahulu jika
ditemukan, atau berupa NULL apabila tidak ditemukan. Selain untuk mencari keberadaan suatu
karakter dalam suatu string, diberikan juga fungsionalitas dalam mencari substring (atau istilahnya
berupa bagian kecil maupun besar dari string yang kita berikan) dengan maksud untuk dicari
kemiripannya dengan menggunakan fungsi strstr(). Hanya saja kali ini parameter kedua dari strstr()
adalah substring tersebut dalam wujud string (entah berupa array of characters ataupun pointer-to
characters), dengan prinsip hasil keluaran nilai fungsi yang sama dengan strchr(), namun bukanlah
karakter pertama yang dijumpai, melainkan kesesuaian substring pertama yang dijumpai terlebih
dahulu.

Finding the Length of a String

Kode Program Input dan Output


1 #include <stdio.h> === Input ===
2 #include <string.h> Dasar Komputer
3
4 int main(void) { === Output ===
5 int str_len; String length: 14
6 char lab_name[30 + 1];
7 === Penjelasan ===

Modul Praktikum Algoritma dan Pemrograman 2024/2025


55
8 printf("Insert a laboratory Sesuai penjelasan pada metode 3 paragraf
name: "); pertama di atas, fungsi strlen() berguna
9 fgets(lab_name, 30, stdin); untuk mengukur panjang suatu string tanpa
10 lab_name[strlen(lab_name) - 1] mengikutkan karakter null-terminator pada
= '\0'; akhir suatu string.
11
12 str_len = strlen(lab_name);
13 printf("String length: %d\n",
str_len);

14 return 0;
15 }

Existence of a Character in a String

Kode Program Input dan Output


1 #include <stdio.h> === Input ===
2 #include <string.h> Mahasiswa Tel-U sangat
3 ambisius!
4 int main(void) { u
5 char string[50 + 1], character;
6 === Output ===
7 printf("Free type (~50 letters): "); Not found...
8 fgets(string, 50, stdin);
9 string[strlen(string) - 1] = '\0'; === Penjelasan ===
10 Perhatikan bahwa sekalipun
11 printf("Insert single character: "); kita tahu ada huruf ‘U’
12 scanf("%c", &character); dalam string tersebut, namun
13 ‘U’ tidaklah sama dengan
14 if (strchr(string, character) != NULL) { karakter ‘u’ yang mau kita
15 printf("Found character '%c'!\n"); cari. Hal ini karena fungsi
16 } else { strchr() sangatlah case-
17 printf("Not found...\n"); sensitive, di mana perbedaan
18 } kapital suatu huruf saja
19 sangat menentukan. Solusi
20 // Try to experiment based on the given dari permasalahan ini adalah
21 // problem and solution on the right side untuk dicoba diubah
22 // of this specific table. The solution keseluruhan string menjadi
23 // can be made by yourself based on your huruf besar atau kecil, baru
24 // understanding behind the logic proses strchr()
individually dilaksanakan.
25 // by searching the solutions on the
internet
26 // and try to re-implement them back...
27 return 0;
28 }

Modul Praktikum Algoritma dan Pemrograman 2024/2025


56
Existence of a Substring in a String

Kode Program Input dan Output


1 #include <stdio.h> === Input ===
2 #include <string.h> Mahasiswa Tel-U sangat
3 ambisius!
4 int main(void) { aMBiSiUs
5 char string[50 + 1], substring[50 + 1];
6 === Output ===
7 printf("Insert the main string (~50): "); Not found...
8 fgets(string, 50, stdin);
9 string[strlen(string) - 1] = '\0'; === Penjelasan ===
10 Seperti hal-nya permasalahan
11 printf("Insert a substring (~50): "); strchr(), bahwa case-
12 fgets(substring, 50, stdin); sensitivity juga berlaku untuk
13 substring[strlen(substring) - 1] = '\0'; fungsi strstr(), bahwa
14 sekalipun menurut manusia “ada”
15 if (strstr(string, substring) != NULL) { walau berbeda penulisan, namun
16 printf("Found the substring!\n"); secara komputer tidaklah
17 } else { demikian. Solusi yang sesuai
18 printf("Not found...\n"); juga adalah dengan
19 } mengkapitalkan atau mengecilkan
satu-kesatuan string utama
20 // Try to experiment based on the given dengan sub-string tersebut,
21 // problem and solution on the right side baru dilakukan pencarian
22 // of this specific table. The solution persamaan kedua string dengan
23 // can be made by yourself based on your metode strstr() tersebut.
24 // understanding behind the logic
individually
25 // by searching the solutions on the
internet
26 // and try to re-implement them back...
27 return 0;
28 }

Introductory of NULL and size_t Data Type

Kode Program Input dan Output


1 #include <stdio.h> === Input ===
2 #include <string.h> (tidak ada)
3
4 int main(void) { === Output ===
5 char *company_name = NULL; 6969696969696969
6 size_t some_number = Before: (null)
6969696969696969LL; After: Hewlett-Packard Company
7
8 printf("%zu\n", some_number); === Penjelasan ===
9 printf("Before: %s\n", company_name); Contoh penggunaan singkat mengenai
10 cara memakai NULL maupun size_t
11 company_name = "Hewlett-Packard dalam pemrograman C.
Company";
12 printf("After: %s\n", company_name);
13
14 return 0;
15 }

Modul Praktikum Algoritma dan Pemrograman 2024/2025


57
Metode 4: Manipulasi (Kustomisasi) Error dengan String
Standard header file dan fungsi yang diperlukan: <errno.h>; strerror()
Dalam metode keempat ini, akan dibahas contoh penggunaan fungsi dari <string.h>, yaitu
strerror() yang dapat berguna untuk melatih Anda mengenai cara melakukan error-handling yang
dapat dikustomisasi pesan error-nya terlebih dahulu melalui pemrogram kepada pengguna, agar
kita dapat memberikan detail analisis permasalahan yang dialami beserta kode atau pesan error
yang diberikan secara langsung melalui sistem. Demi memaksimalkan potensi dari fungsi strerror()
ini, kita dapat menggunakan fasilitas header file dari <errno.h> untuk dapat menyelam lebih dalam
dan menggali berbagai kode error yang mampu diberikan oleh sistem (dan tentu saja akan
berbeda-beda dari satu operasi sistem dengan yang lainnya). Perhatikan bahwa parameter dari
strerror() ini hanya menerima satu parameter, yaitu kode error berupa int errnum, yang di mana
errnum merupakan kode error kustom dari pengguna, ataupun bisa dari campur tangannya
<errno.h>.

Kode Program Input dan Output


1 #include <stdio.h> === Input ===
2 #include <string.h> (tidak ada)
3 #include <errno.h>
4 === Output ===
5 int main(void) { FAIL: No such file or directory
6 // Just an example case of using
strerror(). === Penjelasan ===
7 // File-handling methods are Singkatnya, program ini ingin
specifically membuka suatu file Bernama “a.txt”
8 // be taught on the 8th module of the dengan metode “r” (read). Namun,
practicum dikarenakan file tersebut belum ada
9 dibuat sebelumnya, maka otomatis
10 FILE *my_file = fopen("a.txt", "r"); variabel my_file bernilai NULL
11 karena tidak dapat dibuka (file
12 if (my_file == NULL) { nihil). Keluaran yang didapat pun
13 printf("FAIL: %s\n", berupa pesan bahwa file atau
strerror(errno)); direktori tidaklah ada dalam
14 } else { penyimpanan pengguna (menurut
15 printf("File is successfully terjemahan asli).
opened!\n");
16 }
17
18 // Once again, this is just for an
example
19 // for how to use strerror()
properly.
20 // The following more use-cases of
strerror()
21 // can be independently taught
individually
22 // by searching over the course of
all
23 // the internet...
24 return 0;
25 }

Modul Praktikum Algoritma dan Pemrograman 2024/2025


58
Sample Program and Flowchart: Username-based Password Generator
Kode Program
1 #include <stdio.h>
2 #include <string.h>
3
4 int main(void) {
5 char username[20 + 1], password[(20 * 2) + 1];
6 char last_password[(20 * 2) + 1];
7 char find_char, find_substring[20 + 1];
8
9 printf("Insert any username: ");
10 fgets(username, 20, stdin);
11 username[strlen(username) - 1] = '\0';
12
13 strcpy(password, username); strcat(password, "2024");
14
15 printf("Insert a character: ");
16 scanf("%c", &find_char);
17
18 fflush(stdin); // Clean the input buffer after using scanf().
19 printf("Insert a substring: "); fgets(find_substring, 20, stdin);
20 find_substring[strlen(find_substring) - 1] = '\0';
21
22 puts("");
23 if (strchr(password, find_char) != NULL && \
24 strstr(password, find_substring) != NULL) {
25
26 printf("Both character and substring are PRESENT in the password!\n");
27 } else {
28 printf("One of them or both are NOT PRESENT in the password...\n");
29 }
30
31 puts("");
32 printf("Insert the final password: "); fgets(last_password, 40, stdin);
33 last_password[strlen(last_password) - 1] = '\0';
34
35 if (strcmp(password, last_password) == 0) {
36 printf("CORRECT password! Thanks for playing...\n");
37 } else {
38 printf("INCORRECT password, better luck next time...\n");
39 }
40
41 return 0;
42 }
=== Program Output (BOLD Texts are the Inputs) ===

Insert any username: 10102230ABCD


Insert a character: A
Insert a substring: 30AB

Both character and substring are PRESENT in the password!

Insert the final password: 10102230ABCD2024


CORRECT password! Thanks for playing...

Modul Praktikum Algoritma dan Pemrograman 2024/2025


59
Flowchart

Modul Praktikum Algoritma dan Pemrograman 2024/2025


60
MODUL 7 : POINTER

Tujuan Praktikum
1. Memahami konsep pointer dan array.
2. Menguasai operasi pointer.
3. Mampu mendefinisikan dan menginisialisasi pointer.
4. Menggunakan pointer dalam program.
5. Memahami hubungan pointer dan array, pointer dan string, serta pointer dan
struct.
6. Menerapkan konsep pointer dan array, pointer dan string, serta pointer dan
struct.

7.1 Pengertian Pointer


Setiap variabel akan memiliki alamat memori yang berfungsi untuk menentukan lokasi
penyimpanan data pada memori (RAM). Alamat memori terkadang disebut reference atau
referensi.

Variabel kekuatan berada di alamat abcd dan darah berada di abce. Alamat memori dapat
ditulis dalam bilangan hexadecimal (contoh: abcd), desimal (contoh: 43981), atau biner (contoh:
1010101111001101). Alamat memori sebuah variabel dipilih secara acak.
Pointer adalah variabel khusus yang menyimpan alamat memori, bukan nilai data secara
langsung. Dapat memungkinkan manipulasi data langsung di alamat memori tertentu, penting
untuk alokasi memori dinamis dan pengelolaan struktur data kompleks, namun penggunaannya
memerlukan kehati-hatian karena dapat menyebabkan crash program atau bug yang sulit dilacak
jika tidak dikelola dengan benar.
Dalam bahasa C, untuk mendapatkan alamat memori dari variabel, digunakan operator
ampersand (&). Kemudian alamat ini dapat disimpan ke dalam variabel bertipe pointer. Deklarasi
variabel pointer dilakukan dengan menambahkan tanda asterisk (*) di depan nama variabel (spasi
tidak berpengaruh), mengikuti bentuk umum:
tipe_data *nama_pointer;
contoh :
int *ptr_daskom;
float * ptr_daskom;
char* ptr_daskom;

Modul Praktikum Algoritma dan Pemrograman 2024/2025


61
Ada juga fungsi dari pointer, yaitu:
1. Menyimpan alamat dari variabel.

2. Mengakses dan memodifikasi nilai dari lokasi memori lain. Dengan pointer, kita dapat
mengakses dan memodifikasi nilai dari variabel yang disimpan di alamat memori yang
diacu oleh pointer.
Contoh:
1 int x = 15;
2 int *ptrX = &x;
3 printf(“%d”, *ptrX); // Output = 15
4 *ptrX = 40;
5 printf(“%d”, x); // Output = 40

3. Mengelola array. Pointer sering digunakan untuk mengelola array. Array dalam C
sebenarnya adalah pointer ke blok memori yang berturut-turut.
Contoh:
1 int arr[] = {1, 2, 3, 4, 5};
2 int *ptr = arr;
3 for (int i = 0; i < 5; i++) {
4 printf("%d ", *(ptr + i));
5 }

4. Alokasi memori dinamis. Pointer digunakan bersama dengan fungsi seperti malloc,
calloc, dan free untuk mengelola memori secara dinamis.
Contoh:
1 int *ptr;
2 ptr = (int*)malloc(sizeof(int) * 5); // Mengalokasikan memori untuk 5
integer
3 if (ptr == NULL) {
4 printf("Memory allocation failed");
5 return 1;
6 }
7 for (int i = 0; i < 5; i++) {
8 ptr[i] = i + 1;
9 }
10 free(ptr); // Mengembalikan memori yang telah dialokasikan

5. Mengirimkan parameter melalui referensi. Pointer dapat digunakan untuk mengirimkan


argumen ke fungsi melalui referensi, yang memungkinkan perubahan pada argumen
dalam fungsi.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


62
Contoh:
1 void increment(int *num) {
2 (*num)++;
3 }
4
5 int main() {
6 int x = 10;
7 increment(&x);
8 printf("%d", x); // Output: 11
9 return 0;
10 }

6. Pointer ke pointer. Pointer juga dapat menunjuk ke pointer lain, yang memungkinkan
struktur data yang lebih kompleks.
Contoh:
1 int x = 10;
2 int *ptr = &x;
3 int **ptr2 = &ptr;
4 printf("%d", **ptr2); // Output: 10

Menggunakan pointer dalam bahasa C menawarkan beberapa keuntungan yang signifikan,


terutama dalam hal efisiensi dan fleksibilitas. Berikut adalah beberapa keuntungan utama:
1. Efisiensi memori. Pointer memungkinkan pengelolaan memori yang lebih efisien. Dengan
menggunakan pointer, kita dapat mengalokasikan dan membebaskan memori sesuai
kebutuhan program, menghindari pemborosan memori.
2. Akses dan modifikasi langsung. Dengan pointer, kita dapat mengakses dan memodifikasi
data secara langsung di lokasi memori tertentu tanpa memerlukan salinan dari data
tersebut. Ini bisa sangat menghemat waktu dan sumber daya dalam aplikasi yang
memproses data besar.
3. Mengelola struktur data dinamis. Pointer sangat berguna dalam mengelola struktur data
dinamis seperti linked list, tree, dan graph, di mana elemen-elemen dapat dihubungkan
secara dinamis saat runtime.
4. Mengelola array dan string. Pointer memungkinkan kita untuk bekerja dengan array dan
string dengan cara yang lebih fleksibel. Kita dapat dengan mudah mengakses dan
memanipulasi elemen array atau karakter string melalui pointer.
5. Interaksi dengan hardware. Pointer memungkinkan interaksi langsung dengan hardware
melalui pengalamatan memori. Ini sangat berguna dalam pemrograman sistem tingkat
rendah, seperti dalam embedded system dan driver perangkat.
6. Mendukung alokasi memori dinamis. Dengan pointer, kita dapat menggunakan fungsi
alokasi memori dinamis seperti malloc, calloc, dan free untuk mengelola memori secara
dinamis. Ini memungkinkan pembuatan struktur data yang fleksibel dan dapat berubah
ukuran saat runtime.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


63
7.2 Operator Pada Pointer
Pada pointer, terdapat beberapa operator yang dapat digunakan, yaitu:
a. Operator address-of (alamat) yang dilambangkan dengan simbol "&" berfungsi untuk
mendapat alamat dari suatu variabel.
int tult = 10;
int *ruang_daskom = &tult; // operator alamat
printf(“Alamat variable tult: %x \n”, ruang_daskom);
// output: 0x6a2F242c contoh alamat variable tult

b. Operator dereference (referensi) yang dilambangkan dengan simbol "*" merupakan


operator untuk mendapat isi nilai pointer.
int tult;
int *ruang_daskom = &tult;
*ruang_daskom = 10 // *y = isi dari alamat x

Contoh penggunaan pada program:


Kode Program Output Program
1 #include <stdio.h> Alamat tult:
2 int main() { 0x0000009b3b3ff814
3 int tult = 10;
4 // deklarasi variabel tult dengan nilai 10 Nilai tult sebelum
5 dereference: 10
6 int *ruang_daskom; Nilai tult setelah
7 // deklarasi pointer ruang_daskom dereference: 1001
8
9 // Operator address-of (&)
10 ruang_daskom = &tult;
11 // ruang_daskom menunjuk ke alamat variabel tult
12
13 printf("Alamat tult: %p\n", ruang_daskom);
14 // menampilkan alamat tult
15
16 // Operator dereference (*)
17 printf("Nilai tult sebelum dereference: %d\n", tult);
18
19 *ruang_daskom = 1001;
20 // mengubah nilai variabel yang ditunjuk oleh
ruang_daskom
21 printf(“Nilai tult setelah dereference: %d\n”, tult);
22 return 0;
23 }

Modul Praktikum Algoritma dan Pemrograman 2024/2025


64
7.3 Pointer Void
Pointer void adalah jenis pointer yang dapat menyimpan alamat dari variabel dengan tipe
data apa pun. Berbeda dengan pointer yang memiliki tipe tertentu, seperti int* atau char*, pointer
void tidak memiliki tipe data yang spesifik, karena itu disebut pointer umum atau universal. Pointer
ini sangat berguna dalam situasi di mana tipe data dari alamat yang akan disimpan tidak diketahui
atau bisa bervariasi
Contoh penggunaannya meliputi fungsi memori seperti scanf dan berbagai fungsi yang
memerlukan pointer umum sebagai argumen atau pengembalian nilai. Untuk mengakses atau
memanipulasi data yang ditunjuk oleh pointer void, perlu dilakukan casting eksplisit ke tipe data
yang sesuai.
Contoh penggunaan pada program::

Kode Program Output Program


1 #include <stdio.h> ruang_daskom melalui pointer
2 void: 1004
3 int main() {
4 int ruang_daskom = 1004; harga_mineral melalui pointer
5 float harga_mineral = 2000.99; void: 2000.99
6 char nilai_praktikan = 'A'; nilai_praktikan melalui
7 pointer void: A
8 // Deklarasi pointer void
9 void *ptr;
10
11 // Menunjuk ke variabel bertipe int
12 ptr = &ruang_daskom;
13 printf("ruang_daskom melalui pointer void:
%d\n", *(int*)ptr);

14 // Menunjuk ke variabel bertipe float


15 ptr = &harga_mineral;
16 printf("harga_mineral melalui pointer
void: %.2f\n", *(float*)ptr);

17 // Menunjuk ke variabel bertipe char


18 ptr = &nilai_praktikan;
19 printf("nilai_praktikan melalui pointer
void: %c\n", *(char*)ptr);
20 return 0;
21 }

Perbedaan Pointer dengan Variabel Biasa


1. Variabel Biasa
a. Berisi data/nilai.
b. Operator yang dilakukan umum seperti operator aritmatika, bitwise, dll.
c. Bersifat statis.
d. Deklarasi : “int a;”

Modul Praktikum Algoritma dan Pemrograman 2024/2025


65
2. Pointer
a. Berisi alamat memori dari suatu variabel tertentu.
b. Membutuhkan operator khusus seperti operator dereference dan
address-of.
c. Bersifat dinamis.
d. Deklarasi : “int *a;”.

7.4 Pointer dan Array


Array adalah kumpulan elemen serupa yang disimpan di lokasi memori yang berdekatan.
Variabel biasa hanya mampu menyimpan satu nilai pada satu waktu. Namun, ada situasi di mana
kita ingin menyimpan lebih dari satu nilai sekaligus dalam satu variabel. Misalnya, kita ingin
menyimpan nilai persentase dalam memori. Dalam kasus ini, kita memiliki dua pilihan untuk
menyimpan nilai-nilai tersebut:
(b) Membuat 100 variabel untuk menyimpan nilai persentase yang diperoleh oleh 100 siswa
berbeda; yaitu setiap variabel berisi nilai satu siswa.
(c) Membuat satu variabel (disebut variabel bersubskrip) yang mampu menyimpan atau
menampung seluruh nilai seratus siswa tersebut.

Dalam bahasa C, pointer dan array memiliki hubungan yang erat dan saling terkait. Nama array
pada dasarnya adalah pointer ke elemen pertama array tersebut, memungkinkan akses elemen
array menggunakan notasi pointer, di mana *(arr + i) setara dengan arr[i].

Bentuk Umum Array :


type array_name[size];

Contoh Mengakses array menggunakan Pointer:


Kode Program
1 #include <stdio.h>
2 int main() {
3 int nilai_praktikan[5] = {70, 80, 90, 95, 100};
4 int *ptr = nilai_praktikan; // ptr menunjuk ke alamat elemen pertama arr
5 // alamat array
6 printf("Alamat array: %p\n", (void*)ptr);
7
8 // nilai array dapat diakses dengan pointer
9 printf("Nilai praktikan 1: %d\n", *ptr);
10 printf("Nilai praktikan 2: %d\n", *(ptr + 1));
11
12 // menggunakan loop untuk mengakses nilai array
13 // node indeks array dimuali dari 0
14 printf("Nilai praktikan menggunakan loop:\n");
15 for (int i = 0; i < 5; i++) {

Modul Praktikum Algoritma dan Pemrograman 2024/2025


66
16 printf("Nilai praktikan %d: %d\n", i + 1, *(ptr + i));
17 }
18 return 0;
19 }

Contoh Mengubah Nilai Array menggunakan Pointer :

Kode Program Output Program


1 #include <stdio.h> numbers[0] = 10,
2 *(p + 0) = 10
3 int main() {
4 int saya_punya_angka[5] = {10, 20, 30, 40, 50}; numbers[1] = 20,
5 int *pointer_saya; *(p + 1) = 20
6 numbers[2] = 30,
7 // Pointer menunjuk ke awal array *(p + 2) = 30
8 pointer_saya = saya_punya_angka;
9 numbers[3] = 40,
10 // Mengakses elemen array melalui pointer *(p + 3) = 40
11 for (int i = 0; i < 5; i++) {
12 printf("numbers[%d] = %d, *(p + %d) = %d\n", i, numbers[4] = 50,
saya_punya_angka[i], i, *(pointer_saya + i)); *(p + 4) = 50
13 } Setelah mengubah
14 nilai:
15 // Mengubah nilai elemen array melalui pointer
16 *(pointer_saya + 2) = 100; // Mengubah elemen ke-3 numbers[0] = 10
(index 2) menjadi 100
17 printf("Setelah mengubah nilai:\n"); numbers[1] = 20
18 for (int i = 0; i < 5; i++) {
numbers[2] = 100
19 printf("numbers[%d] = %d\n", i, saya_punya_angka[i]);
20 } numbers[3] = 40
21
22 return 0; numbers[4] = 50
23 }

7.5 Operasi Aritmatika Pada Pointer


Pointer dapat berperan sebagai operand dalam operasi aritmatika. Proses semacam ini
sering disebut pointer arithmetic. Biasanya digunakan sebagai notasi alternatif array tetapi
menggunakan pointer. Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan
nilai integer saja. Hanya terdapat dua operasi aritmatika yang dapat diterapkan pada pointer, yaitu
operasi penjumlahan dan pengurangan. Berikut contoh operasi aritmatika pada pointer :

Kode Program Output Program


1 #include <stdio.h> Setelah menaikkan pointer:
2
3 int main() { Alamat: 0x7fffaaa7e364,
4 int angka[] = {10, 20, 30, 40, 50}; Nilai: 20
5 int *ptr = angka; Setelah melakukan
6 // Menunjuk ke elemen pertama dari array dekrementasi pointer:
7
8 // Penambahan pointer Alamat: 0x7fffaaa7e360,
9 ptr++; Nilai: 10
10 // Pointer pindah ke elemen berikutnya
Setelah menambahkan 3 ke
Modul Praktikum Algoritma dan Pemrograman 2024/2025
67
11 printf("Setelah menaikkan pointer:\n"); pointer:
12 printf("Alamat: %p, Nilai: %d\n", ptr, *ptr);
13 Alamat: 0x7fffaaa7e36c,
14 // Pengurangan pointer Nilai: 40
15 ptr--; Setelah mengurangkan 2
16 // Pointer kembali ke elemen sebelumnya dari pointer:
17 printf("Setelah melakukan dekrementasi
pointer:\n"); Alamat: 0x7fffaaa7e364,
18 printf("Alamat: %p, Nilai: %d\n", ptr, *ptr); Nilai: 20
19 // Penambahan integer ke pointer
20 ptr += 3;
21 // Pointer pindah 3 elemen ke depan
22 printf("Setelah menambahkan 3 ke pointer:\n");
23 printf("Alamat: %p, Nilai: %d\n", ptr, *ptr);
24
25 // Pengurangan integer dari pointer
26 ptr -= 2;
27 // Pointer pindah 2 elemen ke belakang
28 printf("Setelah mengurangkan 2 dari
pointer:\n");
29 printf("Alamat: %p, Nilai: %d\n", ptr, *ptr);
30
31 return 0;
32 }

7.6 Pointer dan String


String dalam C pada dasarnya adalah array karakter yang diakhiri dengan karakter null
('\0'), dan dapat direpresentasikan sebagai pointer ke karakter pertamanya. Pointer char dapat
digunakan untuk menunjuk ke awal string, memungkinkan akses dan manipulasi karakter-karakter
individu dalam string tersebut. Ketika mendeklarasikan string sebagai array karakter, nama array
berfungsi sebagai pointer konstan ke elemen pertama, sementara pointer ke char memberikan
fleksibilitas lebih dalam operasi string, termasuk iterasi melalui karakter-karakter, modifikasi string,
dan passing string ke fungsi.

Contoh :
char *str = “Algoritma”;

Contoh penggunaan pada program:

Kode Program Output Program


1 #include <stdio.h> String asli:
2 int main() { Algoritma
3 // Deklarasi dan inisialisasi pointer ke string
4 char *str = "Algoritma"; String setelah
5 pointer digeser:
6 // Mencetak string yang ditunjuk oleh pointer oritma
7 printf("String asli: %s\n", str);

Modul Praktikum Algoritma dan Pemrograman 2024/2025


68
8
9 // Menggeser pointer sebanyak 3 posisi
10 str += 3;
11
12 // Mencetak string yang ditunjuk oleh pointer
setelah geser
13 printf("String setelah pointer digeser: %s\n", str);
14 return 0;
15 }

7.7 Pointer Sebagai Parameter Fungsi


Pointer dapat digunakan sebagai parameter fungsi. Hal ini memungkinkan fungsi untuk
mengakses dan memodifikasi data secara langsung di alamat memori yang ditunjuk oleh pointer.

Contoh penggunaan pada program:

Kode Program Ouput Program


1 #include <stdio.h> Nilai sebelum
2 ditukar:
3 // Fungsi untuk menukar nilai dua variabel
4 void tukar(int *a, int *b) { x = 5, y = 10
5 int temp; Nilai setelah
6 temp = *a; ditukar:
7 // Simpan nilai a di temp
8 *a = *b; x = 10, y = 5
9 // Salin nilai b ke a
10 *b = temp;
11 // Salin nilai temp (nilai awal a) ke b
12 }
13
14 int main() {
15 int x = 5;
16 int y = 10;
17
18 printf("Nilai sebelum ditukar:\n");
19 printf("x = %d, y = %d\n", x, y);
20
21 // Memanggil fungsi tukar dan melewatkan alamat dari x
dan y
22 tukar(&x, &y);
23
24 printf("Nilai setelah ditukar:\n");
25 printf("x = %d, y = %d\n", x, y);
26
27 return 0;
28 }

7.8 Pointer dengan Struct


Struct adalah cara untuk mengelompokkan data yang memiliki tipe data yang berbeda menjadi
satu kesatuan. Struct didefinisikan dengan menggunakan kata kunci struct.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


69
Contoh Struct :
struct mahasiswa {
char nama[50];
int nim;
float nilai;
} data_mahasiswa;

Array of struct adalah cara untuk menyimpan kumpulan data struct dengan tipe data yang sama.

Contoh :
struct mahasiswa {
char nama[50];
int nim;
float nilai;
} data_mahasiswa[30]; //contoh penggunaan array pada struct

Nested struct adalah cara untuk mendefinisikan struct di dalam struct lain.

Contoh penggunaan pada program:

Kode Program Output Program


1 #include <stdio.h> // == INPUT PADA
2 // Definisi struct alamat PROGRAM ==
3 struct alamat {
4 char jalan[50]; Masukkan nama
5 char kota[50]; mahasiswa: Teguh
6 char provinsi[50]; Masukkan NIM
7 }; mahasiswa: 1000234
8
9 // Definisi struct mahasiswa dengan nested struct
alamat
10 struct mahasiswa { Masukkan nilai
11 char nama[50]; mahasiswa: 100
12 int nim; Masukkan alamat jalan:
13 float nilai; asrama
14 struct alamat alamat_rumah;
15 }; Masukkan kota: bandung
16
17 int main() { Masukkan provinsi:
18 // Deklarasi variabel bertipe struct mahasiswa jawabarat
19 struct mahasiswa mhs;
20
21 // Mengisi data untuk mahasiswa // == OUTPUT PADA
22 printf("Masukkan nama mahasiswa: "); PROGRAM ==
23 scanf("%49s", mhs.nama);
24 // Membaca nama dengan batasan 49 karakter Data Mahasiswa:
25 printf("Masukkan NIM mahasiswa: ");
Nama: Teguh
26 scanf("%d", &mhs.nim);
27 // Membaca NIM NIM: 1000234
28 printf("Masukkan nilai mahasiswa: ");
29 scanf("%f", &mhs.nilai);

Modul Praktikum Algoritma dan Pemrograman 2024/2025


70
30 // Membaca nilai Nilai: 100.00
31
32 // Mengisi data untuk alamat rumah mahasiswa
33 printf("Masukkan alamat jalan: "); Alamat Rumah:
34 scanf("%49s", mhs.alamat_rumah.jalan); Jalan: asrama
35 // Membaca jalan dengan batasan 49 karakter
36 printf("Masukkan kota: "); Kota: bandung
37 scanf("%49s", mhs.alamat_rumah.kota);
38 // Membaca kota dengan batasan 49 karakter Provinsi: jawabarat
39 printf("Masukkan provinsi: ");
40 scanf("%49s", mhs.alamat_rumah.provinsi);
41 // Membaca provinsi dengan batasan 49 karakter
42
43 // Menampilkan data mahasiswa dan alamat rumahnya
44 printf("\nData Mahasiswa:\n");
45 printf("Nama: %s\n", mhs.nama);
46 printf("NIM: %d\n", mhs.nim);
47 printf("Nilai: %.2f\n", mhs.nilai);
48 printf("\nAlamat Rumah:\n");
49 printf("Jalan: %s\n", mhs.alamat_rumah.jalan);
50 printf("Kota: %s\n", mhs.alamat_rumah.kota);
51 printf("Provinsi: %s\n",
mhs.alamat_rumah.provinsi);
52 return 0;
53 }

Pointer to struct adalah cara untuk menyimpan alamat memori dari struct.

Contoh penggunaan pada program:

Kode Program Output Program


1 #include <stdio.h> // == INPUT PADA
2 #include <stdlib.h> // Untuk malloc dan free PROGRAM ==
3
4 // Definisi struct mahasiswa Masukkan nama
5 struct mahasiswa { mahasiswa: Ali
6 char nama[50]; Masukkan NIM mahasiswa:
7 int nim; 110223244
8 float nilai;
9 }; Masukkan nilai
10 mahasiswa: 100
11 int main() {
12 // Deklarasi pointer untuk struct mahasiswa
13 struct mahasiswa *ptr_mhs; // == OUTPUT PADA
14 PROGRAM ==
15 // Mengalokasikan memori untuk satu struct Data Mahasiswa:
mahasiswa
16 ptr_mhs = (struct mahasiswa *) Nama: Ali
malloc(sizeof(struct mahasiswa));
17 NIM: 110223244
18 if (ptr_mhs == NULL) {
Nilai: 100.00
19 printf("Alokasi memori gagal.\n");
20 return 1;
21 }
22
23 // Memasukkan data ke dalam struct melalui
pointer
24 printf("Masukkan nama mahasiswa: ");

Modul Praktikum Algoritma dan Pemrograman 2024/2025


71
25 scanf("%49s", ptr_mhs->nama);
26 // Membaca nama dengan batasan 49 karakter
27 printf("Masukkan NIM mahasiswa: ");
28 scanf("%d", &ptr_mhs->nim); // Membaca NIM
29 printf("Masukkan nilai mahasiswa: ");
30 scanf("%f", &ptr_mhs->nilai); // Membaca nilai
31
32 // Menampilkan data yang dimasukkan
33 printf("\nData Mahasiswa:\n");
34 printf("Nama: %s\n", ptr_mhs->nama);
35 printf("NIM: %d\n", ptr_mhs->nim);
36 printf("Nilai: %.2f\n", ptr_mhs->nilai);
37
38 // Membebaskan memori yang dialokasikan
39 free(ptr_mhs);
40
41 return 0;
42 }

7.9 Fungsi Malloc dan Free


Fungsi malloc dan free adalah dua fungsi yang sangat penting dalam bahasa pemrograman C
(dan bahasa lain yang menggunakan konsep alokasi memori manual). Berikut adalah penjelasan
singkat tentang keduanya:

1. malloc
• malloc adalah singkatan dari "memory allocation" (alokasi memori).
• Fungsi malloc digunakan untuk mengalokasikan blok memori dari heap (memori dinamis)
selama runtime program.
• Syntax umumnya adalah void *malloc(size_t size);.
• malloc mengembalikan pointer ke blok memori yang dialokasikan, atau NULL jika alokasi
gagal.
• Contoh penggunaan: ptr = (int *) malloc(10 * sizeof(int)); akan mengalokasikan memori
untuk 10 integer.
2. free
• free digunakan untuk membebaskan blok memori yang telah dialokasikan sebelumnya
menggunakan malloc, calloc, atau realloc.
• Syntax umumnya adalah void free(void *ptr);.
• ptr adalah pointer ke blok memori yang akan dibebaskan.
• Membebaskan memori yang tidak lagi digunakan mencegah kebocoran memori (memory
leaks).
• Contoh penggunaan: free(ptr); akan membebaskan memori yang dialokasikan untuk ptr.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


72
MODUL 8 : FILE INPUT/OUTPUT

Tujuan Praktikum
7. Memahami bentuk-bentuk file di dalam algoritma.
8. Memahami penyimpanan data dengan menggunakan file teks dan file biner.
9. Dapat membedakan antara file teks dan file biner.
10. Dapat membuka file, menutup file, menuliskan data ke file, serta
membacanyaauntuk kedua file teks dan biner biner dalam algoritma maupun
dalam bahasa C.

8.1 Pengertian File Input/Output


File input/output digunakan agar hasil dari program yang tereksekusi dapat disimpan secara
permanen di dalam perangkat penyimpanan mana pun, bukan sementara menghilang ketika
program ditutup atau dihentikan. Tujuannya adalah agar data yang sudah tersimpan dapat
digunakan kembali.
Bahasa C menyediakan sebuah struktur yang dapat digunakan untuk menyimpan semua
informasi yang dibutuhkan untuk mengendalikan aliran data suatu file, yaitu struktur FILE (sering
disebut juga sebagai file handle) dan dideklarasikan di dalam file header standard stdio.h. Struktur
tersebut akan menyimpan informasi aliran arus suatu file yang meliputi indikator posisi file, sebuah
pointer buffer (jika ada), sebuah indikator error yang menyimpan ketika proses kesalahan baca/tulis
terjadi, sebuah indikator end-of-file yang menyimpan ketika akhir dari suatu file telah tercapai,
serta informasi lainnya yang dibutuhkan.
Adapun cara pertama yang harus dilakukan untuk mendapatkan informasi dari struktur FILE
tersebut adalah mendeklarasikan sebuah pointer yang akan menunjuk ke struktur FILE. Pointer
semacam ini dinamakan dengan pointer file. Berikut ini bentuk umum dari pendeklarasian pointer
ke file yang dimaksud di atas :

FILE *file_pointer_identifier;

FILE *fp

Sebagai contoh, kita akan mendeklarasikan pointer dengan nama fp untuk menunjuk ke
struktur FILE, maka sintaks penulisannya adalah sebagai berikut :
Tahapan Operasi File
Operasi pada file meliputi tiga tahapan utama.
1. Membuka/mengaktifkan file
2. Memproses file
3. Menutup file

Modul Praktikum Algoritma dan Pemrograman 2024/2025


73
8.2 Membuka File
Sebelum file dapat diproses (dibaca atau ditulis), file haruslah dibuka terlebih dahulu.
Untuk keperluan ini, ada fungsi yang bernama fopen. Berikut adalah bentuk dasarnya :

FILE *fopen (const char * restrict filename, const char * restrict mode);

Deskripsi :
❖ filename, berupa nama dari file (string) yang akan dibuka.
❖ mode, berupa tipe operasi (string) yang akan dilakukan terhadap file.
❖ Untuk selanjutnya bentuk dasar di dalam modul ini terdapat di dalam file stdio.h.
❖ Fungsi tersebut akan mengembalikan pointer yang menunjuk pada objek (FILE) untuk
mengendalikan aliran data suatu file. Jika operasi pembukaan file gagal, fopen akan
mengembalikan pointer NULL (sebuah konstanta pointer null yang didefinisikan
berdasarkan implementasi suatu platform).
Berikut adalah mode dari fopen yang terdapat di dalam bahasa C :
Mode Arti
“r” Membuka file untuk proses pembacaan (reading). Jika file belum ada, maka
file akan gagal dibuka, sedangkan jika file ada, maka file dapat dibaca
dengan indikator posisi file mula-mula diposisikan pada awal file.
“r+” Sama seperti “r”, tetapi dapat juga digunakan untuk proses penulisan.
“w” Membuka file untuk proses penulisan (writing). Jika file belum ada, maka file
akan dibuat. Sedangkan jika file sudah ada, semua isi dari file tersebut akan
dihapus tanpa ada peringatan terlebih dahulu. Terakhir, jika file berhasil
dibuka, maka file dapat ditulis dengan indikator posisi file mula-mula
diposisikan pada awal file.
“w+” Sama seperti “w”, tetapi dapat juga digunakan untuk proses pembacaan
“a” Membuka file untuk proses penambahan (appending). Jika file belum ada,
maka file akan dibuat. Sedangkan, jika file ada, maka akan menyebabkan
proses penulisan data pada file akan ditulis pada bagian akhir dari suatu file,
meskipun adanya intervensi fungsi pemosisian file (akan dibahas nanti pada
modul ini). Terakhir, jika file berhasil dibuka, maka indikator posisi file mula-
mula akan diposisikan berdasarkan implementasi suatu platform apakah di
awal atau di akhir file.
“a+” Sama seperti “a”, tetapi dapat juga digunakan untuk proses pembacaan.
Sebagai contoh, berikut adalah contoh dari penggunaan fungsi fopen :

fp = fopen (“TES.TXT”, “w”);

Catatan:
❖ Jika argumen mode terdapat simbol ‘+’ di dalamnya, maka itu dinamakan sebagai mode
update. Proses masukan (membaca dari file) dan keluaran (menulis ke file) dapat
dilaksanakan pada aliran arus suatu file yang bersangkutan.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


74
❖ Proses penulisan tidak boleh langsung diikuti oleh proses penulisan tanpa adanya
pemanggilan intervensi fungsi fflush atau fungsi pemosisian file (fseek, fsetpos, atau
rewind), kecuali proses pembacaan telah mencapai akhir dari suatu file (end-of-file).
* Fungsi fflush, fseek, fsetpos dan rewind akan dibahas nanti lebih lanjut pada modul ini.

8.3 Memproses File


Pada saat file dibuka, file bisa diperlakukan sebagai file biner atau file teks. File biner adalah file
yang datanya diproses dalam bentuk blok-blok memori yang terdiri dari byte, seperti memori
pada RAM. Sedangkan, file teks adalah file yang datanya akan diproses dalam bentuk karakter.
Sebuah file teks biasanya dipakai untuk menyimpan data bertipe karakter atau string.
Sedangkan, file biner biasanya dipakai untuk menyimpan data kompleks, seperti struktur (struct).
Hal yang dapat dilakukan untuk bekerja dengan file biner adalah dengan menambah karakter
tambahan, yaitu “b” pada argumen mode dari fungsi fopen. Sementara itu, untuk bekerja dengan
file teks tidak perlu ditambahkan karakter apa pun di dalamnya.

➢ File teks,
Dengan r, w, a atau mode update dengan r+, w+, a+.

➢ File biner,
Dengan rb, wb, ab atau mode update dengan rb+, wb+, ab+, atau r+b, w+b, a+b.

• FILE TEKS
1. Menulis dan Membaca Data String pada File Teks
Untuk menulis data string pada file, ingat bahwa fungsi printf biasa digunakan untuk menulis
ke layar, sedangkan fungsi fprintf dapat digunakan untuk menulis pada file. Selanjutnya, untuk
membaca data string pada file, ada fungsi yang bernama fgets. Berikut bentuk dasarnya.

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

char *fgets(char * restrict s, int n, FILE * restrict stream);


Deskripsi :
❖ s adalah data string.
❖ stream adalah pointer FILE.
❖ n mendefinisikan berapa banyak karakter yang akan disimpan pada string s.
❖ Fungsi fprintf digunakan untuk menulis string s ke dalam file berdasarkan string yang
ditunjuk oleh format untuk menentukan argumen-argumen (…) yang selanjutnya akan
dikonversikan menjadi output pada file. Fungsi ini akan mengembalikan jumlah karakter
yang ditulis, atau nilai negatif jika output atau error proses pengkodean karakter
(encode) pada file terjadi.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


75
❖ Fungsi fgets digunakan untuk membaca string dari file ke dalam string s. Jika akhir dari
file telah tercapai maka s akan tetap tidak berubah dan fungsi akan mengembalikan nilai
NULL. Namun jika error terjadi, isi dari string s tidak dapat ditentukan dan fungsi akan
mengembalikan nilai NULL, Jika berhasil maka akan mengembalikan string s.

Menulis Data String ke Flowchart


dalam File Teks
#include <stdio.h>

char nama[10];
int main(){
FILE *f_teks;
f_teks =
fopen("akun_user.txt", "w");
gets(nama);
fprintf(f_teks,"%s\n", nama);
fclose (f_teks);
return 0;
}

Membaca Data String Flowchart


dari File Teks
#include <stdio.h>

char nama[10];
int main(){
FILE *f_teks;
f_teks = fopen("akun_user.txt",
"r");
while(fgets(nama,sizeof(nama),
f_teks)!=NULL)
printf("%s",string);

fclose (f_teks);
return 0;
}

Modul Praktikum Algoritma dan Pemrograman 2024/2025


76
Sebagai catatan, argumen format yang digunakan pada fungsi fprintf, yaitu "%s\n" memiliki
karakter baris baru (newline) di dalamnya. Karakter baris baru tersebut harus ditulis secara manual
ke dalam file, tanpa itu, bukannya membuat file teks yang terdiri lebih dari satu baris dengan
benar, file akan ditulis hanya dalam satu baris saja.
Selain menggunakan fungsi fgets, fgetc juga dapat digunakan untuk membaca data string.
Perbedaannya adalah fgets digunakan untuk membaca dalam basis string, sedangkan fgetc
digunakan membaca dalam basis karakter (ingat bahwa string adalah kumpulan dari karakter,
dengan kata lain adalah array of char). Berikut adalah bentuk dasarnya.

int fgetc(FILE *stream);

Fungsi fgets mengambil karakter dari dalam file dengan tipe unsigned char (memiliki
jangkauan 0 – 255 nilai dalam nilai ASCII) yang kemudian dikonversikan menjadi nilai int positif.
Fungsi tersebut mengembalikan karakter dari file yang ditunjuk oleh stream. Jika error pembacaan
terjadi, maka akan mengembalikan EOF.

Membaca Data String dari File Teks Flowchart


Menggunakan fgetc
#include <stdio.h>

char nama[10];
int main(){
FILE *f_teks;
f_teks = fopen("akun_user.txt",
"r");
while( (nama=fgetc(f_teks)) !=
EOF)
printf("%c", nama);

fclose (f_teks);
return 0;
}

EOF adalah sebuah konstanta negatif int yang didefinisikan berdasarkan implementasi suatu
platform, nilai ini biasanya dikembalikan oleh beberapa fungsi seperti fgetc untuk mengindikasikan
akhir dari suatu file, dengan kata lain, tidak ada data yang dapat dibaca dari karakter tersebut.
Oleh karena itu, untuk membaca dengan benar menggunakan fgetc, jangan mendeklarasikan
variabel cadangan untuk menyimpan karakter sebagai char, tetapideklarasikanlah dengan int.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


77
2. Menambahkan Data pada File Teks
Metode untuk menambahkan data ke dalam file hampir sama dengan metode untuk menulis
data. Perbedaannya terdapat pada argumen filemode di dalam fungsi fopen yang sedang dibuka
oleh file. Sederhana saja, ubah filemode “w” atau “w+” menjadi “a” atau “a+”untuk menambahkan.

Menambahkan Data String Flowchart


ke dalam File Teks
#include <stdio.h>

char nama[10];
int main(){
FILE *f_teks;
f_teks =
fopen("akun_user.txt", "a");
gets(nama);
fprintf(f_teks, "%s\n",
nama);
fclose (f_teks);
return 0;
}

• FILE BINER
1. Menulis dan Membaca Data pada File Biner
Terdapat dua fungsi untuk menulis atau membaca data dalam bentuk blok memori (terdiri
dari byte), misalnya untuk menulis tipe data apa pun seperti float atau struct. Keduafungsi tersebut
dinamakan fread dan fwrite. Berikut adalah bentuk dasarnya.

size_t fread(void * restrict ptr, size_t size, size_t nmemb, FILE * restrict stream);

size_t fwrite(const void * restrict ptr, size_t size, size_t nmemb, FILE * restrict stream);

Deskripsi :
❖ ptr adalah sebuah pointer yang menunjuk ke daerah memori yang akan digunakan
sebagai tempat penyimpanan data sementara untuk membaca dari file (untuk fread)
atau untuk menulis data ke dalam file (untuk fwrite).

Modul Praktikum Algoritma dan Pemrograman 2024/2025


78
❖ size adalah ukuran dari satu blok memori dalam byte yang akan dibaca atau ditulis.
❖ nmemb adalah jumlah dari blok-blok memori yang akan dibaca atau ditulis dalam satu
waktu.
❖ stream adalah file pointer yang menunjuk ke FILE.
❖ size_t, adalah tipe data integer spesial yang dapat menyimpan ukuran dari suatu objek
(seperti variabel, array, tipe data dan apa pun yang dapat menyimpan nilai) yang
disimpan dalam memori dengan satuan byte. Tipe data ini juga merupakan dari
operator sizeof.
❖ Kedua fungsi tersebut mengembalikan nilai jumlah dari blok-blok memori yang berhasil
dibaca (untuk fread) atau ditulis (untuk fwrite) dalam satu waktu.
❖ Untuk dapat menulis atau membaca data lebih dari satu blok memori (berdasarkan nilai
nmemb), sebuah array harus digunakan sebagai tempat penyimpanan sementara
sebagai input argumen ptr.

Menulis Data
ke dalam File Biner
#include <stdio.h>

int main(){
FILE *f_biner;
int n, i;
struct {
char nama[10], nim[10];
int nilai;
} data;

f_biner = fopen(“data_mhs.dat”, “wb”);

printf(“Banyaknya Mhs: ”);


scanf(“%d”, &n); getchar();
for(i=1; i<=n; i++){
printf(“Nama : ”);
gets(data.nama);
printf(“NIM: ”);
gets(data.nim);
printf(“Nilai: ”);
scanf(“%d”, &data.nilai);
getchar();
fwrite(&data, sizeof(data), 1, f_biner);
}
fclose(f_biner);
return 0;
}

Modul Praktikum Algoritma dan Pemrograman 2024/2025


79
Flowchart

Catatan :
Pada contoh tersebut, sebuah file dengan nama “data_mhs” akan memiliki ekstensi“.dat”, perlu
diketahui bahwa eksetensi apa pun (termasuk .txt) dapat digunakan baik itu file teks maupun biner.
Membaca Data dari File Biner
#include <stdio.h>
int main(){
FILE *f_biner;

struct {
char nama[10], nim[10];
int nilai;
} data;
f_biner = fopen("data_mhs.dat", "rb");
while(fread(&data, sizeof(data), 1, f_biner)==1){
printf("Nama : %s\n", data.nama);
printf("NIM : %s\n", data.nim);
printf("Nilai : %d\n", data.nilai);
}
fclose(f_biner);
return 0;
}

Modul Praktikum Algoritma dan Pemrograman 2024/2025


80
Flowchart

2. Menambahkan Data pada File Biner


Metode untuk menambahkan data ke dalam file biner hampir sama dengan metode untuk
menulis data. Tentu saja, gunakan filemode “wb”, “wb+”, atau “w+b” untuk menulis dan “ab”,
“ab+”, atau “a+b” untuk menambahkan.

Menambahkan Data ke dalam File Biner


#include <stdio.h>
int main(){
FILE *f_biner;
int n, i;

struct {
char nama[10], nim[10];
int nilai;
}data;

f_biner = fopen("data_mhs.dat", "ab");


printf("Silahkan masukkan banyaknya mahasiswa : ");
scanf("%d", &n);
getchar();
for (i=1; i<=n; i++){
printf("Nama : ");
gets(data.nama);
printf("NIM : ");
gets(data.nim);
printf("Nilai : ");
scanf("%d", &data.nilai); getchar();
fwrite(&data, sizeof (data), 1, f_biner);
}
fclose(f_biner);
return 0;
}

Modul Praktikum Algoritma dan Pemrograman 2024/2025


81
Flowchart

3. Mengakses File Biner Secara Acak


Bahasa C menyediakan fasilitas yang memungkinkan untuk membaca dan menulis file secara
acak dengan mengubah indikator posisi file. Dengan adanya fasilitas ini, misalkan bahwa sebuah
data yang berada di tengah file akan dibaca, data tersebut dapat dibaca secara langsung tanpa
harus diakses satu per satu dimulai dari awal file.

Untuk keperluan ini, ada fungsi yang bernama fseek. Berikut bentuk dasarnya :

int fseek(FILE *stream, long int offset, int whence);

Deskripsi :
❖ Jika operasi gagal, maka akan mengembalikan nilai selain nol yang didefinisikan
berdasarkan implementasi suatu platform.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


82
❖ stream adalah file pointer yang menunjuk ke FILE.
❖ offset adalah nilai penyesuaian byte terhadap referensi whence.
❖ whence adalah referensi indikator posisi file.
❖ Ingat, setelah pemanggilan fseek yang berhasil, operasi selanjutnya dalam aliran data
update dapat menjadi input (membaca dari file) atau output (menulis ke dalam file).Berikut
.

adalah tabel dari referensi whence :


Macro Referensi Lokasi FIle
SEEK_SET Awal file
SEEK_CUR Indikator posisi file saat ini
SEEK_END Akhir file
Macro-macro tersebut didefinisikan berdasarkan implementasi suatu platform yang
merupakan konstanta bilangan bulat dengan nilai-nilai yang berbeda.

Sebagai contoh :
1. fseek(fp, 3, SEEK_SET); Indikator posisi file akan diubah 3 byte setelah
awal dari file.
2. fseek(fp, -3, SEEK_END); Indikator posisi file akan diubah 3 byte sebelum
Perhatikan tanda negatif. akhir dari file.
3. fseek(fp, 3, SEEK_CUR); Indikator posisi file akan diubah 3 byte setelah
indikator posisi file saat ini.
4. fseek(fp, -sizeof(DATA), SEEK_CUR); Indikator posisi file akan diubah berdasarkan
Perhatikan tanda negatif. ukuran dari objek DATA sebelum indikator
posisi file saat ini.
Perlu diingat bahwa argumen offset juga dapat menerima nilai negatif.Extra,
the rewind function

void rewind(FILE *stream);

Description
❖ Fungsi rewind mengubah indikator posisi file untuk aliran data yang ditunjuk oleh stream
menjadi bagian awal file. Hal tersebut sama saja dengan (void)fseek(stream, 0L,
SEEK_SET) kecuali indikator error pada aliran data juga dihapus.
❖ Fungsi rewind tidak mengembalikan nilai.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


83
Berikut adalah contoh penggunaan dari fungsi fseek :
Mengakses File Biner Secara Acak
#include <stdio.h>

int main(){
FILE *f_struktur;
int no_struct;
long int offset_byte;

struct {
char nama[10], nim[10];
int nilai;
}data;

f_biner = fopen("data_mhs.dat", "rb");

printf("Silahkan masukkan nomor urutan yang ada pada


data mahasiswa: ");

scanf("%d", &no_struct);
Indikator file
offset_byte = (no_struct - 1) *
posisi akan
sizeof(data); diposisikan tepat
fseek(f_biner, offset_byte, SEEK_SET); sebelum data
yang nanti akan
ditampilkan
pada layar.

if (fread(&data,sizeof(data),1,f_biner) == 0){
printf("Menu yang dicari tidak dapat ditemukan pada
data.\n");
} else {
printf("Nama : %s\n", data.nama);
printf("NIM : %s\n", data.nim);
printf("Nilai : %d\n", data.nilai);
}
fclose(f_biner);
return 0;
}

Modul Praktikum Algoritma dan Pemrograman 2024/2025


84
Flowchart

Sebagai contoh, asumsikan bahwa ada lima data integer di dalam suatu file biner.
7 8 9 10 8

Asumsikan bahwa file akan dibuka dengan mode “rb”, indikator posisi file mula-mula diposisikan
pada awal file. Jika data ketiga akan dibaca, fseek(fp, 2 * sizeof(DATA), SEEK_SET) dapat dipanggil.
fseek akan memposisikan tepat sebelum data ketiga.
7 8 9 10 8
proses fread
Dengan demikian, fungsi fread akan membaca data ketiga dengan benar.

4. Menghapus Data dalam File Biner


Untuk menghapus data dengan benar, ada beberapa cara untuk melakukannya. Tetapi hanya
ada salah satu yang akan dijelaskan pada modul ini. Berikut adalah prosedur yang benar untuk
melakukannya :
1. Buka file utama dengan mode baca (read).
2. Buatlah file cadangan dan buka file tersebut dengan mode tulis (write).

Modul Praktikum Algoritma dan Pemrograman 2024/2025


85
3. Salin semua data dari file utama ke dalam file cadangan, kecuali data yang akan
dihapus.
4. Tutup file utama dan file cadangan.
5. Hapus file utama.
6. Ubah nama file file cadangan berdasarkan nama file file utama.

Bahasa C juga menyediakan fungsi untuk menghapus dan mengubah nama suatu file,
secara berurutan dengan nama remove dan rename. Berikut adalah bentuk dasarnya :

int remove(const char *filename);

Fungsi remove menyebabkan file dengan nama string yang ditunjuk oleh filename,
sehingga tidak dapat lagi diakses oleh file dengan nama tersebut. Dengan kata lain, file akan
hilang.

int rename(const char *old, const char *new);

Fungsi rename menyebabkan file dengan nama string yang ditunjuk oleh old untuk
kemudian dikenali menjadi nama yang diberikan oleh string yang ditunjuk oleh new.

Fungsi remove dan rename mengembalikan bilangan bulat nol jika operasi berhasil dan
selain yang didefinisikan berdasarkan implementasi suatu platform jika gagal.

Menghapus Data dalam File Biner


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

int main(){
FILE *f_biner;
FILE *f_biner2;
char hapus[50];
struct {
char nama[10], nim[10];
int nilai;
}data;

f_biner = fopen("data_mhs.dat", "rb");


f_biner2 = fopen("data_mhs2.dat", "wb");
printf("Silahkan masukkan nama mhs yang akan dihapus: "); gets(hapus);
while (fread(&data,sizeof (data),1, f_biner)==1){
if (strcmp(data.nama, hapus)!=0){
fwrite(&data, sizeof(data), 1, f_biner2);
}
}

Modul Praktikum Algoritma dan Pemrograman 2024/2025


86
fclose(f_biner);
fclose(f_biner2);

remove("data_mhs.dat");
rename("data_mhs2.dat","data_mhs.dat");

return 0;

Flowchart

5. Update Data dalam File Biner


Untuk update data dengan benar, ada beberapa cara untuk melakukannya. Prosedur untuk
update data pada file biner identik dengan prosedur menghapus data pada file biner. Berikut
adalah prosedur yang benar untuk melakukannya :
1. Buka file utama dengan mode baca (read).
2. Buatlah file cadangan dan buka file tersebut dengan mode tulis (write).

Modul Praktikum Algoritma dan Pemrograman 2024/2025


87
3. Gunakan string compare pada fungsi if untuk menemukan data yang sesuai, kemudian
lakukan operasi update data menggunakan operasi aritmatika kemudian salin ke file
cadangan.
4. Salin semua data yang lainnya ke file cadangan.
5. Tutup file utama dan file cadangan.
6. Hapus file utama.
7. Ubah nama file file cadangan berdasarkan nama file file utama.

Update Data dalam File Biner


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

int main(){
FILE *f_biner;
FILE *f_biner2;

Int poin_tambahan, poin_baru = 0;


char user_sekarang[10];
struct {
char nama[10], nim[10];
int nilai, poin;
}data, temp;

f_biner = fopen("data_mhs.dat", "rb");


f_biner2 = fopen("data_mhs2.dat", "wb");
printf("Masukkan poin tambahan yang ingin diisi: "); gets(hapus);
while (fread(&data,sizeof (data),1, f_biner)==1){
if (strcmp(data.nama, user_sekarang)==0){
data.poin += poin_tambahan;
poin_baru = data.poin;
temp.poin = poin_baru;
}
fwrite(&data, sizeof(data), 1, f_biner2);
}

fclose(f_biner);
fclose(f_biner2);

remove("data_mhs.dat");
rename("data_mhs2.dat","data_mhs.dat");

printf(“Poin anda sekarang adalah %d”, poin_baru);

return 0;

Modul Praktikum Algoritma dan Pemrograman 2024/2025


88
Flowchart

8.4 Menutup File


Untuk menutup file, ada fungsi yang bernama fclose. Bentuk umumnya seperti berikut :

int fclose(FILE *stream);

Deskripsi :
❖ stream adalah file pointer yang menunjuk ke FILE.
❖ Jika fungsi fclose berhasil, maka akan menghilangkan aliran data file yang ditunjuk oleh
stream dan menutup file yang bersangkutan. Data buffer untuk proses penulisan yang
belum ditulis dalam aliran suatu data akan ditulis terlebih dahulu, tetapi data buffer
untuk proses pembacaan yang belum dibaca akan dibuang.
❖ Fungsi fclose mengembalikan nilai nol jika aliran data berhasil ditutup, atau EOF jika ada
error yang terdeteksi.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


89
8.5 Tambahan
Mengosongkan Buffer pada Aliran Data

int fflush(FILE *stream);

Deskripsi :
❖ stream adalah file pointer yang menunjuk ke FILE.
❖ Data buffer untuk proses penulisan yang belum ditulis ke dalam aliran suatu data akan
ditulis terlebih dahulu.
❖ Jika operasi terakhir bukan input (membaca dari file), fungsi fflush akan menyebabkan
data buffer untuk proses penulisan yang belum ditulis dalam aliran suatu data akan
segera ditulis ke dalam file. Selain itu, perilaku dari fungsi ini tidak terdefinisi (undefined).
❖ Fungsi fflush akan menetapkan indikator error untuk aliran data dan mengembalikan
nilai EOF jika error proses penulisan terjadi. Selain itu akan mengembalikan nilai nol.

Menulis dan Menempatkan indikator posisi file

int fgetpos(FILE * restrict stream, fpos_t * restrict pos);

int fsetpos(FILE *stream, const fpos_t *pos);

Deskripsi :
❖ stream adalah file pointer yang menunjuk ke FILE.
❖ fpos_t adalah tipe data yang dapat menyimpan informasi yang dibutuhkan untuk
menentukan setiap posisi secara unik di dalam suatu file.
❖ fgetpos akan menyimpan indikator posisi file di dalam objek yang ditunjuk oleh pos dan
fsetpos akan mengubah indikator posisi file berdasarkan nilai dari objek yang ditunjuk
oleh pos.
❖ Kedua fungsi tersebut akan mengembalikan bilangan bulat nol jika operasi berhasil dan
selainnya yang didefinisikan berdasarkan implementasi suatu platform jika gagal

Modul Praktikum Algoritma dan Pemrograman 2024/2025


90
MODUL 9 : SORTING

Tujuan Praktikum
1. Memahami dan mengerti logika pengurutan dengan menggunakan metode
selection, insertion, dan bubble.
2. Mampu mengimplementasikan logika pengurutan ke dalam program
menggunakan bahasa C.

Sorting dalam modul ini diartikan sebagai algoritma pengurutan. Sorting dapat dilakukan
dengan ascending (pengurutan dari nilai terkecil ke nilai terbesar) dan descending
(pengurutan dari nilai terbesar ke terkecil). Ada beberapa metode yang dapat digunakan
untuk mengurutkan sebuah data. Namun pada praktikum kali ini akan dibahas 3 metode,
yaitu :

9.1 Selection Sort


Prinsip kerja selection sort adalah :
a. Mencari nilai ekstrim (maksimum atau minimum) pada array A (misalkan array
A adalah array yang akan diurutkan) dan tukarkan indeks ke-2 dengan indeks
pertama.
b. Kemudian tentukan nilai ekstrim selanjutnya dan tukarkan dengan indeks kedua,
lalu isolasi indeks kedua.
c. Ulangi langkah tersebut hingga data terakhir.

Berikut ini adalah contoh sorting secara ascending (urutan dari terkecil hingga
terbesar) dengan metode selection :
Array A
3 2 1 7 4 3

A[0] A[1] A[2] A[3] A[4] A[5]

• Langkah 1
1 2 3 7 4 3

A[0] A[1] A[2] A[3] A[4] A[5]

Cari data minimum yang terdapat pada Array (Indeks 0-5) lalu tukar dengan data
pada indeks ke-0 lalu isolasi. Didapat bahwa nilai minimum pada Array adalah
angka 1 (Indeks ke-2) sehingga tukar dengan angka 3 (Indeks ke-0) lalu isolasi.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


91
• Langkah 2
1 2 3 7 4 3

A[0] A[1] A[2] A[3] A[4] A[5]

Cari data minimum yang terdapat pada Array (Indeks 1-5) lalu tukar dengan data
pada indeks ke-1 lalu isolasi. Didapat bahwa nilai minimum pada Array (Indeks 1-5)
adalah angka 2 (Indeks ke-1), karena angkanya sudah terdapat pada Indeks ke-1
sehingga tidak tukar tempat lalu isolasi.

• Langkah 3
1 2 3 7 4 3

A[0] A[1] A[2] A[3] A[4] A[5]

Cari data minimum yang terdapat pada Array (Indeks 2-5) lalu tukar dengan data
pada indeks ke-2 lalu isolasi. Didapat bahwa nilai minimum pada Array (Indeks 2-5)
adalah angka 3 (Indeks ke-2), karena angkanya sudah terdapat pada Indeks ke-2
sehingga tidak tukar tempat lalu isolasi.

• Langkah 4
1 2 3 3 4 7

A[0] A[1] A[2] A[3] A[4] A[5]

Cari data minimum yang terdapat pada Array (Indeks 3-5) lalu tukar dengan data
pada indeks ke-3 lalu isolasi. Didapat bahwa nilai minimum pada Array (Indeks 3-5)
adalah angka 3 (Indeks ke-5) sehingga tukar dengan angka 7 (Indeks ke-3) lalu
isolasi.

• Langkah 5
1 2 3 3 4 7

A[0] A[1] A[2] A[3] A[4] A[5]

Cari data minimum yang terdapat pada Array (Indeks 4-5) lalu tukar dengan data
pada indeks ke-4 lalu isolasi. Didapat bahwa nilai minimum pada Array (Indeks 4-5)
adalah angka 4 (Indeks ke-4) karena angkanya sudah terdapat pada Indeks ke-4
sehingga tidak tukar tempat lalu isolasi.

• Langkah 6
1 2 3 3 4 7

A[0] A[1] A[2] A[3] A[4] A[5]

Data sudah terurut secara ascending.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


92
C Input and Output
1 #include <stdio.h> CONTOH
2 int a[100]; INPUT (BOLD)
3 int i, j, n, min, temp; Banyak data : 6
4 Data ke-1 : 3
5 int main() Data ke-2 : 2
6 { Data ke-3 : 1
7 printf("Banyak data : "); Data ke-4 : 7
8 scanf("%d", &n); Data ke-5 : 4
9 for (i = 0; i <= n - 1; i++){ Data ke-6 : 3
10 printf("Data ke-%d : ", i + 1);
11 scanf("%d", &a[i]); OUTPUT
12 } 1 2 3 3 4 7
13
14 // proses selection sort
15 for (i = 0; i <= n - 2; i++){
16 min = i;
17 for (j = i; j <= n - 1; j++){
18 if (a[j] < a[min]){
19 min = j;
20 temp = a[min];
21 a[min] = a[i];
22 a[i] = temp;
23 }
24 }
25 }
26
27 // menampilkan hasil sorting
28 for (i = 0; i <= n - 1; i++){
29 printf("%d", a[i]);
30 printf(" ");
31 }
32 }

Modul Praktikum Algoritma dan Pemrograman 2024/2025


93
Flowchart

Modul Praktikum Algoritma dan Pemrograman 2024/2025


94
Flowchart

9.2 Insertion Sort


Prinsip kerja dari insertion sort adalah mengurutkan bilangan-bilangan yang telah
dibaca kemudian secara berulang akan membandingkan serta menyisipkan
bilangan-bilangan yang telah dibaca ke sisi kiri array jika data dalam indeks array
sebelumnya belum terurut. Proses pengurutan dimulai dari indeks kedua. Berikut ini
adalah contoh sorting secara ascending dengan menggunakan insertion sort :

Array A
3 2 1 7 4 3

A[0] A[1] A[2] A[3] A[4] A[5]

Data pada A[1] (indeks kedua) bernilai 2 dibandingkan dengan data di sebelah
kirinya A[0] yaitu pada daerah abu-abu. Karena 2 < 3 maka kita perlu menyisipkan
data pada indeks satu (2) kepada daerah abu-abu sehingga setelah penyisipan
tersebut, bagian abu-abu tetap dalam keadaan terurut secara relatif, caranya
sebagai berikut :

Modul Praktikum Algoritma dan Pemrograman 2024/2025


95
a. Ambil data kedua dari array A yaitu A[1]

2

3 1 7 4 3

A[0] A[1] A[2] A[3] A[4] A[5]

b. Tukar dan sisipkan data pada bagian abu abu

2 3 1 7 4 3

A[0] A[1] A[2] A[3] A[4] A[5]

c. Dua data pertama sudah terurut secara relatif, selanjutnya sisipkan data ketiga pada
bagian abu abu dengan cara yang sama seperti langkah a dan b. Dimana data pada
A[2] lebih kecil daripada data A[1] dan A[0]. Maka array A akan menjadi seperti di
bawah ini.

1 2 3 7 4 3

A[0] A[1] A[2] A[3] A[4] A[5]

d. Ulangi proses tersebut hingga akhir

1 2 3 7 4 3

A[0] A[1] A[2] A[3] A[4] A[5]

1 2 3 4 7 3

A[0] A[1] A[2] A[3] A[4] A[5]

1 2 3 3 4 7

A[0] A[1] A[2] A[3] A[4] A[5]

Modul Praktikum Algoritma dan Pemrograman 2024/2025


96
C Input dan Output
1 #include <stdio.h> CONTOH
2 int a[100]; INPUT (BOLD)
3 int i, j, n, temp; Banyak data : 6
4 Data ke-1 : 3
5 int main(){ Data ke-2 : 2
6 printf("Banyak data : "); Data ke-3 : 1
7 scanf("%d", &n); Data ke-4 : 7
8 for (i = 0; i <= n - 1; i++){ Data ke-5 : 4
9 printf("Data ke-%d : ", i + 1); Data ke-6 : 3
10 scanf("%d", &a[i]);
11 } OUTPUT
12 1 2 3 3 4 7
13 // proses insertion sort
14 for (i = 0; i <= n - 1; i++){
15 temp = a[i];
16 j = i;
17 while ((j > 0) && (temp < a[j - 1])){
18 a[j] = a[j - 1];
19 j = j - 1;
20 }
21 a[j] = temp;
22 }
23
24 // menampilkan hasil sorting
25 for (i = 0; i <= n - 1; i++){
26 printf("%d", a[i]);
27 printf(" ");
28 }
29 }

Modul Praktikum Algoritma dan Pemrograman 2024/2025


97
Flowchart

Modul Praktikum Algoritma dan Pemrograman 2024/2025


98
9.3 Bubble Sort
Prinsip kerja dari Bubble sort adalah membandingkan suatu data (data ke i) dengan data di
sebelahnya (data ke i+1), data akan bertukar bila data tersebut lebih besar dari data di
sebelahnya (pengurutan naik/ascending).
Berikut adalah contoh Sorting untuk ascending (urutan dari terkecil hingga terbesar)
dengan menggunakan metode Bubble :

Array A
3 2 1 7 4 3

A[0] A[1] A[2] A[3] A[4] A[5]

• Langkah 1

2 3 1 7 4 3

A[0] A[1] A[2] A[3] A[4] A[5]

Bandingkan data pertama (Indeks ke-0) yaitu 3 dengan data kedua (Indeks ke-1)
yaitu 2, karena 3 > 2 sehingga terjadi proses tukar tempat.

• Langkah 2

2 1 3 7 4 3

A[0] A[1] A[2] A[3] A[4] A[5]

Bandingkan data kedua (Indeks ke-1) yaitu 3 dengan data ketiga (Indeks ke-2) yaitu
1, karena 3 > 1 sehingga terjadi proses tukar tempat.

• Langkah 3

2 1 3 7 4 3

A[0] A[1] A[2] A[3] A[4] A[5]

Bandingkan data ketiga (Indeks ke-2) yaitu 3 dengan data keempat (Indeks ke-3)
yaitu 7, karena 3 < 7 sehingga tidak terjadi proses tukar tempat karena yang kita
inginkan adalah ascending (urutan terkecil hingga terbesar).

• Langkah 4
Ulangi proses tersebut hingga data terurut.

2 1 3 4 7 3

A[0] A[1] A[2] A[3] A[4] A[5]

Modul Praktikum Algoritma dan Pemrograman 2024/2025


99
2 1 3 4 3 7

A[0] A[1] A[2] A[3] A[4] A[5]

1 2 3 4 3 7

A[0] A[1] A[2] A[3] A[4] A[5]

1 2 3 4 3 7

A[0] A[1] A[2] A[3] A[4] A[5]

1 2 3 4 3 7

A[0] A[1] A[2] A[3] A[4] A[5]

1 2 3 3 4 7

A[0] A[1] A[2] A[3] A[4] A[5]

C Input dan Output


1 #include <stdio.h> CONTOH
2 int a[100]; INPUT (BOLD)
3 int i, j, n, temp; Banyak data : 6
4 int main(){ Data ke-1 : 3
5 printf("Banyak data : "); Data ke-2 : 2
6 scanf("%d", &n); Data ke-3 : 1
7 for (i=0;i<=n-1;i++){ Data ke-4 : 7
8 printf("Data ke-%d : ", i + 1); Data ke-5 : 4
9 scanf("%d", &a[i]); Data ke-6 : 3
10 }
11 // proses bubble sort OUTPUT
12 for (i = n - 1; i >= 1; i--){ 1 2 3 3 4 7
13 for (j = 1; j <= i; j++){
14 if (a[j - 1] > a[j]){
15 temp = a[j - 1];
16 a[j - 1] = a[j];
17 a[j] = temp;
18 }
19 }
20 }
21 // menampilkan hasil sorting
22 for (i = 0; i <= n - 1; i++){
23 printf("%d", a[i]);
24 printf(" ");
25 }
26 }

Modul Praktikum Algoritma dan Pemrograman 2024/2025


100
Flowchart

Modul Praktikum Algoritma dan Pemrograman 2024/2025


101
MODUL 10 : SEARCHING

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.

Salah satu proses yang paling umum dalam pemrograman adalah searching.
Algoritma pencarian atau searching adalah proses untuk mencari lokasi dari sebuah
elemen atau nilai tertentu dalam sebuah kumpulan dari data. Dalam modul ini, kita akan
mempelajari dua algoritma pencarian dasar, yaitu sequential search dan binary search.

10.1 Sequential Search


Sequential search adalah metode pencarian yang paling sederhana, dimana
pencarian dilakukan secara terurut dari data pertama sampai data yang dicari ditemukan.
Data dibandingkan satu per satu dari awal sampai data ditemukan atau tidak ditemukan.
Sequential search biasa digunakan ketika kumpulan data yang tersedia tidak diurutkan,
digunakan pada kumpulan data yang berukuran kecil, atau kumpulan data yang tidak
sering dicari.
Dalam sequential search, misalkan terdapat sebuah array dengan banyak data
dalamnya, kita memulai proses pencarian pada indeks awal dari array dan akan lanjut
hingga kita menemukan nilai yang kita cari, atau indeks akhir dari array tersebut (atau data
tidak ditemukan).

Berikut adalah contoh pencarian menggunakan sequential search:

Misalkan terdapat sebuah array A dengan ukuran 7.

A[0] A[1] A[2] A[3] A[4] A[5] A[6]


4 21 36 14 62 92 6

Misalkan data yang ingin kita cari adalah 14, maka kita akan melakukan perbandingan satu per
satu dengan data pada array, dimulai pada indeks 0 hingga indeks terakhir.

Indeks ke
0 4 tidak sama dengan 14

A[0] A[1] A[2] A[3] A[4] A[5] A[6]


4 21 36 14 62 92 6

Modul Praktikum Algoritma dan Pemrograman 2024/2025


102
Indeks ke
1 21 tidak sama dengan 14

A[0] A[1] A[2] A[3] A[4] A[5] A[6]


4 21 36 14 62 92 6

Indeks ke
2 36 tidak sama dengan 14

A[0] A[1] A[2] A[3] A[4] A[5] A[6]


4 21 36 14 62 92 6

14 sama dengan 14, maka


Indeks ke data ditemukan pada
indeks ke 3
3

A[0] A[1] A[2] A[3] A[4] A[5] A[6]


4 21 36 14 62 92 6

Berikut adalah contoh flowchart dan kode C untuk contoh di atas:


C Input dan Output
1 #include <stdio.h> CONTOH 1:
2 INPUT (BOLD)
3 int A[7] = {4, 21, 36, 14, 62, 92, 6}; Data yang ingin
4 int cari, indeks, jumlahData; dicari: 14
5
6 void main(){ OUTPUT
7 // User memasukkan data yang ingin dicari Data ditemukan pada
8 printf("Data yang ingin dicari: "); index ke: 3
9 scanf("%d", &cari);
10
11 // Proses sequential search
12 indeks = 0; // Memposisikan searching pada indeks 0 CONTOH 2:
13 jumlahData = 7; // Ukuran dari array A INPUT (BOLD)
14 while((indeks < jumlahData) && (A[indeks] != cari)){ Data yang ingin
15 indeks++; // Jika pada indeks bukan data yang dicari: 5
dicari,
16 // maka akan lanjut ke index OUTPUT
selanjutnya. Data tidak ditemukan
17 }
18 if(A[indeks] == cari){
19 printf("\nData ditemukan pada index ke: %d",
indeks);
20 } else {
21 printf("\nData tidak ditemukan");
22 }
23 }

Modul Praktikum Algoritma dan Pemrograman 2024/2025


103
Flowchart

10.2 Binary Search


Algoritma sequential search adalah algoritma yang lambat ketika data yang ingin
dicari berada dalam kumpulan data yang berukuran yang besar. Maka kita gunakan
algoritma yang lebih efisien, yaitu binary search. Sebelum menggunakan algoritma ini,
data perlu dilakukan proses sorting terlebih dahulu.

Dalam sebuah array berukuran N, untuk menggunakan binary search, diperlukan


tiga indeks, yaitu indeks low (low = 0), indeks high (high = N – 1), dan indeks mid (mid =
(low + mid)/2). Data yang dicari akan dibandingkan dengan data array pada indeks mid.
Anggap sebuah array yang terurut secara ascending:
- Jika data A[mid] lebih besar dari data yang dicari maka akan dilakukan
penyempitan pada area pencarian (nilai high menjadi mid - 1).
- Jika data A[mid] lebih kecil dari data yang dicari maka akan dilakukan penyempitan
pada area pencarian (nilai low menjadi mid + 1).

Modul Praktikum Algoritma dan Pemrograman 2024/2025


104
Berikut adalah contoh pencarian menggunakan binary search:
Misalkan terdapat sebuah array B dengan ukuran 12.
B[0] B[1] B[2] B[3] B[4] B[5] B[6] B[7] B[8] B[9] B[10] B[11]
4 7 8 10 14 21 22 36 62 77 81 91

Misalkan data yang ingin kita cari adalah 10, maka berikut adalah prosesnya.
Low Mid High
0 5 11
21 > 10

B[0] B[1] B[2] B[3] B[4] B[5] B[6] B[7] B[8] B[9] B[10] B[11]
4 7 8 10 14 21 22 36 62 77 81 91

Low Mid High


0 2 4 8 < 10

B[0] B[1] B[2] B[3] B[4] B[5] B[6] B[7] B[8] B[9] B[10] B[11]
4 7 8 10 14 21 22 36 62 77 81 91

Low Mid High


3 3 4 10 = 10

B[0] B[1] B[2] B[3] B[4] B[5] B[6] B[7] B[8] B[9] B[10] B[11]
4 7 8 10 14 21 22 36 62 77 81 91

Berikut adalah contoh flowchart dan kode C untuk contoh di atas:


C Input dan Output
1 #include <stdio.h> CONTOH 1:
2 INPUT (BOLD)
3 int B[12] = {4, 7, 8, 10, 14, 21, Data yang ingin dicari: 10
4 22, 36, 62, 77, 81, 91};
5 int cari, idx, low, high, mid; OUTPUT
6 Data ditemukan pada indeks:
7 void main(){ 3
8 // User memasukkan data yang ingin dicari
9 printf("Data yang ingin dicari: ");
10 scanf("%d", &cari);
11 CONTOH 2:
12 // Program melakukan proses sorting INPUT (BOLD)
13 /* Data yang ingin dicari: 3
14 Masukkan algoritma sorting disini
15 (bubble, insertion, dll.) OUTPUT
16 */ Data tidak ditemukan
17
18 // Program melakukan binary search
19 low = 0;
Modul Praktikum Algoritma dan Pemrograman 2024/2025
105
20 high = 12 - 1; // 12 karena ukuran array
adalah 12
21 idx = -1;
22 while((low <= high) && (idx == -1)){
23 mid = (low+high)/2;
24 if(B[mid] == cari){
25 idx = mid;
26 } else if (B[mid] < cari){
27 low = mid + 1;
28 } else {
29 high = mid - 1;
30 }
31 }
32
33 if(idx != -1){
34 printf("Data ditemukan pada indeks: %d",
idx);
35 } else {
36 printf("Data tidak ditemukan");
37 }
38}

Flowchart

Modul Praktikum Algoritma dan Pemrograman 2024/2025


106
TEKNIS DASAR PENULISAN LAPORAN

Tujuan

1. Memahami penggunaan M.S Word dalam pembuatan Laporan


2. Membuat Daftar Isi, Daftar Pustaka, dan Caption Otomatis
3. Dapat menggunakan Styles Formating
4. Dapat menggunakan Page Numbering with Section break

Laporan ialah sebuah bentuk dokumen atau penyajian yang berisi tentang fakta suatu keadaan
atau kegiatan. Fakta yang disajikan berkaitan dengan tanggung jawab yang diberikan kepada
orang yang bersangkutan. Fakta ini berisi sebuah keterangan ataupun informasi yang didapatkan
dari pengamatan atau yang dialami oleh orang yang diberi tanggung jawab. Dalam pembuatan
laporan diperlukan pemahaman teknis dasar dalam penggunaan aplikasi pembuat dokumen
seperti M.S. Office. Berikut beberapa teknis dasar yang perlu dipahami dalam pembuatan laporan.

1. Margin
Margin adalah jarak tepi pengetikan dengan tepi halaman kertas.
Margin yang biasa digunakan dalam pembuatan laporan adalah
(4-3-3-3) cm dengan urutan (Kiri – Kanan-Atas- Bawah).

Untuk menyesuaikan margin, pilih menu Layout → Margin →


Custom Margins → Set Left-Right-Top-Bottom (4-3-3-3) cm.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


107
2. Multilevel
List Multilevel List adalah penomoran tulisan
bertingkat yang diatur secara otomatis,
sehingga penomoran dengan tingkat yang
lebih rendah akan semakin bertingkat.

Pada menu Home pilih Paragraph → Multilevel list →


heading list

3. Style Modify
Style Modify berguna untuk memodifikasi format penulisan judul bab, subbab, caption,
maupun tulisan pada paragraf. Style yang di Modify adalah Normal, Heading 1, Heading 2, dan
Caption.

Ganti formatting font menjadi Times New Roman, Font Size 12, Font Color Black, Ok jika selesai
(Untuk styles formatting Normal Text ).

Modul Praktikum Algoritma dan Pemrograman 2024/2025


108
• Untuk heading 1, heading 2, menyesuaikan
dengan kebutuhan. Heading 1 biasa diperuntukan
untuk format Level 1 (DAFTAR PUSTAKA, DAFTAR
ISI, BAB 1) untuk heading 2 (format level 2)
diperuntukan untuk Sub bab seperti (1.1, 2.2).
• Styles pada Heading 1 & Heading 2, diubah ke
bentuk Bold, Times New Roman, size 12, color =
black

4. Style Header
Dalam pemberian judul bab dan subbab, gunakan Style Heading 1 dan Style Heading 2.
Penggunaan :
klik pada text yang akan diubah format, lalu klik Heading 1 atau Heading 2. Setelah text berubah akan
muncul Navigation Panel (Dapat dilihat pada menu view) yang akan memperlihatkan bagian yang
menggunakan Heading 1 atau Heading 2.

5. Caption
Caption berguna sebagai deskripsi atau penjelas yang menyertai ilustrasi berupa gambar
atau table. Untuk penggunaan caption pilih menu Reference → Insert Caption → New Label
→ Tuliskan ‘Gambar’.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


109
Untuk menyisipkan Numbering pada Caption. Reference → Caption → Numbering → Format
(1,2,3) → ceklis Include chapter number → Chapter starts with style Heading 1 → Use Separator
periode.

Lalu penggunaannya pada gambar. Klik kanan pada gambar → Insert Caption → Pilih Gambar →
Below selected item → Ok lalu beri judul gambar tersebut. Untuk daftar tabel, Klik kanan pada tabel
→ Insert Caption → Pilih Tabel kalau sudah ada label tabel → Position Above selected item.

6. Page Numbering
Untuk memberi nomor halaman, klik pada footer (bagian bawah halaman) Bab 1. Pilih menu
Insert → Page Number → Format Page Number → Format Angka → start at 1. Untuk halaman
sebelum Bab 1 (kata pengantar, daftar isi, daftar gambar), gunakan format angka romawi).

Modul Praktikum Algoritma dan Pemrograman 2024/2025


110
7. Daftar Isi, Gambar, dan Tabel Otomatis.
1. Untuk menampilkan Daftar Isi secara otomatis, pilih menu Reference → Table of Contents →
Custom table of Contents → Ok.

2. Untuk menampilkan Daftar Gambar dan Daftar Tabel, pilih menu Reference →
Table of Contents → Custom table of Contents → Ok.

Modul Praktikum Algoritma dan Pemrograman 2024/2025


111
DAFTAR PUSTAKA

• Anon., 2019. Functions in the C programming Language. [Online] Available at:


https://www.cs.utah.edu/~germain/PPS/Topics/C_Language/c_functions.html

• Anon., 2019. Learn C Programming,The Definitive Guide. [Online] Available at:


https://www.programiz.com/c-programming

• Gilberg, R.F. and Forouzan, B.A., 2001. Data structures: A pseudocode approach with
C++. Brooks/Cole Publishing Co.

• Gottfried, B.S., GarcÃa, L.Ã. and Vaquero, S.Ã., Schaum's outline of theory and
problems of programming with C. spa.

• Kadir, A., 2012. Algoritma & Pemrograman Menggunakan C & C++. Yogyakarta:
Penerbit Andi Offset.

• Kernighan, B. W. & Ritchie, D. M., 1988. The C Programming Language. Murray Hill,
NewJersey: AT&T Bell Laboratories.

• Perry, G.M. and Miller, D., 2013. C programming: absolute beginner’s guide. Pearson
Education.

• Prakash, 2019. What are the differences between a pointer variable and a reference
variable in C++?. [Online] Available at:
https://stackoverflow.com/questions/57483/what-are-the-differences- between-a-
pointer-variable-and-a-reference-variable-in

• Schildt, H., 2003. C++:The Complete Reference,Fourth Edition. Osborne: McGraw- Hill

Modul Praktikum Algoritma dan Pemrograman 2024/2025


112

Anda mungkin juga menyukai