Modul Praktikum Algoritma Dan Pemrograman 2425
Modul Praktikum Algoritma Dan Pemrograman 2425
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.
Tim Penyusun
Anggota :
NIP : 14890058
Menyetujui, Mengetahui,
Koordinator Asisten Laboratorium
Kepala Laboratorium Dasar Komputer Dasar Komputer
LEMBAR REVISI
Menyetujui, Mengetahui,
Kepala Urusan Koordinator Asisten
Laboratorium dan Studio, Laboratorium Dasar Komputer,
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
a. Kondisi Pertama
• 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
• 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
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 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
2. Dispensasi Akademik
Praktikan wajib melampirkan salinan bukti approval dispensasi dari i- Gracias yang telah disetujui
oleh Badan Kemahasiswaan
• 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
4. Ibadah
Praktikan wajib melampirkan salinan bukti approval dispensasi dari i- Gracias yang telah
disetujui oleh Badan Kemahasiswaan
4. Hanya praktikan yang telah disetujui laboran yang diizinkan untuk mengikuti 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.
• 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.
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.
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.
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.
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.
Kode
No. NIM Nama Jabatan No. HP ID Line
Asisten
1. 1102223051 Teguh Patriananda TGH Koordinator Asisten 087885538877 patrianandateguh
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
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.
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.
5) Pastikan semua pilihan yang dipilih sebelumnya sudah benar, setelah itu klik install.
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.
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
• 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.
2) Setelah kalian pilih open folder, nanti akan muncul tab baru, kemudian pilihfolder untuk
menyimpan projek kalian, setelah itu pilih Select Folder
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
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)
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)
Kamus :
p, l, k : integer
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 “/* … */”.
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()
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:
Contoh input dan output dari program di atas: (input ditandai dengan teks BOLD)
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.
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.
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”.
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.
/*Nilai sebuah konstanta harus diberikan langsung, sedangkan variabel tidak perlu
langsung diberikan*/
// Beberapa variabel juga dapat dideklarasikan dalam satu line dengan tipe yang
sama.
int jari_jari, diameter;
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.
Contoh input dan output dari program di atas: (input ditandai dengan teks BOLD)
• 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.
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.
Contoh Program :
Kodingan Input dan Output Flowchart
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.
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.
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.
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
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.
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
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.
Perbedaan dari keduanya akan terlihat berbeda ketika menggunakan perintah output seperti
contoh dibawah:
//Contoh Post-Increment
printf("i=%d\n",i++);
printf("Hasil : i=%d\n",i);
Keterangan:
• 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.
Catatan:
• Jika ingin melakukan operasi pengurangan pada suatu nilai maupun variabel, maka
disebut decrement.
contoh : i– atau –i.
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.
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.
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
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.
Perintah kontrol digunakan pada perulangan untuk mengubah hasil eksekusi perulangan dari
keadaan normalnya. Dibawah ini merupakan perintah-perintah kontrol pada perulangan:
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.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>
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 }
Output
Contoh :
Flowchart
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
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.
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.
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
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
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]);
}
}
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)
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
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>
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
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.
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
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.
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.
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.
14 return 0;
15 }
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.
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;
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
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
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].
Contoh :
char *str = “Algoritma”;
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.
Pointer to struct adalah cara untuk menyimpan alamat memori dari struct.
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.
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.
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
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 :
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.
➢ 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.
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;
}
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;
}
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.
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.
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).
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;
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;
}
struct {
char nama[10], nim[10];
int nilai;
}data;
Untuk keperluan ini, ada fungsi yang bernama fseek. Berikut bentuk dasarnya :
Deskripsi :
❖ Jika operasi gagal, maka akan mengembalikan nilai selain nol yang didefinisikan
berdasarkan implementasi suatu platform.
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
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.
int main(){
FILE *f_struktur;
int no_struct;
long int offset_byte;
struct {
char nama[10], nim[10];
int nilai;
}data;
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;
}
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.
Bahasa C juga menyediakan fungsi untuk menghapus dan mengubah nama suatu file,
secara berurutan dengan nama remove dan rename. Berikut adalah bentuk dasarnya :
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.
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.
int main(){
FILE *f_biner;
FILE *f_biner2;
char hapus[50];
struct {
char nama[10], nim[10];
int nilai;
}data;
remove("data_mhs.dat");
rename("data_mhs2.dat","data_mhs.dat");
return 0;
Flowchart
int main(){
FILE *f_biner;
FILE *f_biner2;
fclose(f_biner);
fclose(f_biner2);
remove("data_mhs.dat");
rename("data_mhs2.dat","data_mhs.dat");
return 0;
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.
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.
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
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 :
Berikut ini adalah contoh sorting secara ascending (urutan dari terkecil hingga
terbesar) dengan metode selection :
Array A
3 2 1 7 4 3
• Langkah 1
1 2 3 7 4 3
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.
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
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
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
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
Array A
3 2 1 7 4 3
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 :
2
↑
3 1 7 4 3
2 3 1 7 4 3
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
1 2 3 7 4 3
1 2 3 4 7 3
1 2 3 3 4 7
Array A
3 2 1 7 4 3
• Langkah 1
2 3 1 7 4 3
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
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
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
1 2 3 4 3 7
1 2 3 4 3 7
1 2 3 4 3 7
1 2 3 3 4 7
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.
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
Indeks ke
2 36 tidak sama dengan 14
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
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
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
Flowchart
Tujuan
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).
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 ).
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’.
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).
2. Untuk menampilkan Daftar Gambar dan Daftar Tabel, pilih menu Reference →
Table of Contents → Custom table of Contents → Ok.
• 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