Anda di halaman 1dari 5

Program Studi Teknik Elektro ITB

Nama Kuliah (Kode) : Praktikum Pemecahan Masalah dengan C (EL2208)


Tahun / Semester : 2022-2023 / Genap
Modul : 1 – Overview of C Language
Nama Asisten / NIM : Aloysius Efrata Sumaryo / 13220057
Nama Praktikan / NIM : Najmi Azzahra F / 13221086

BCL / Log Praktikum


Pilihan Soal Praktikum Yang Dikerjakan
Nomor 1, karena saat membaca deskripsi soal sudah cukup terbayang algoritma serta langkah apa yang
harus dilakukan.

Penjelasan Rancangan /Algoritma kode yang dibuat


Berikut adalah source code yang dibuat beserta penjelasan rancangannya :
Source code 1
#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("=== Kue Black Forest untuk Raya ===\n");

//Deklarasi Variabel panjang array


int panjangKue, jumlahCeri ;

Souce code 1 merupakan bagian awal dari kode. Bagian ini memuat library yang digunakan, yaitu stdio.h
untuk menggunakan fungsi printf dan scanf, serta stdlib.h untuk memanipulasi tipe data char. Pada mula
– mula program, dideklarasikan terlebih dahulu variabel panjangKue dan jumlahCeri dengan tipe data
integer. Kedua variabel ini akan digunakan sebagai tempat menyimpan data panjang kue dan jumah ceri
yang didapat dari input user.
Source code 2
//Validasi input panjang kue dari user
printf("Masukkan panjang kue : ");
scanf("%d", &panjangKue);
while ((panjangKue >20) || (panjangKue <= 0)) {
printf("Panjang kue melebihi dari yang seharusnya!\n");
printf("Masukkan panjang kue : ");
scanf("%d", &panjangKue);
}

//Deklarasi array kue blackforest


char kue[panjangKue];
Source code 2 merupakan kelanjutan dari source code 1. Pada source code 2, program meminta serta
memvalidasi input panjang kue dari user. Jika input sudah memenuhi, maka nilai input tersebut akan
disimpan dalam variabel panjangKue, yang akan digunakan untuk mendeklarasikan array dengan panjang
sebanyak panjang kue serta berelemen karakter, yaitu “kue”. Sesuai dengan namanya, array ini akan
digunakan untuk meletakkan serta menyimpan bagian dari kue yang diinginkan, yaitu meses “.” dan ceri
sebagai “6” sesuai pada tempatnya.
Praktikum Pemecahan Masalah dengan C (EL2208) | Tahun 2020-2021 | Semester Genap

Source code 3
//Validasi input jumlah ceri dari user
printf("Masukkan jumlah ceri : ");
scanf("%d", &jumlahCeri);
while ((jumlahCeri > panjangKue) || (jumlahCeri < 0)) {
printf("Jumlah ceri melebihi dari panjang kue!\n");
printf("Masukkan jumlah ceri : ");
scanf("%d", &jumlahCeri);
}

//Deklarasi array letakCeri


int letakCeri[jumlahCeri];
Source code 3 merupakan kelanjutan dari source code 2. Sama dengan kodenya yang terlihat mirip, source
code 3 juga merupakan program untuk menerima input serta validasi inout dari user. Bedanya, pada
source code 3 input akan disimpan pada variabel jumlahCeri. Sama seperti source code 2, setelah
jumlahCeri sudah memiliki nilai, maka akan dideklarasikan array letakCeri yang memiliki panjang sebanyak
jumlahCeri. Array letakCeri nantinya akan digunakan untuk menyimpan data indeks atau posisi ceri
diletakkan pada array kue.
Source code 4
//Menyimpan letak ceri di array letakCeri
for (int j = 0 ; j < jumlahCeri ; j++) {
printf("Masukkan letak ceri ke-%d: ", (j+1));
scanf("%d", &letakCeri[j]);
}
Source code 4 merupakan kelanjutan dari source code 3. Pada source code 4 ini, user akan memasukkan
input letak ceri yang diinginkan untuk mengisi array letakCeri.
Source code 5
//Membuat kue
for (int i = 0 ; i < panjangKue ; i++) {
int adaCeri = 0;
for (int j = 0 ; j < jumlahCeri ; j++) {
if ((letakCeri[j]-1) == (i)) {
adaCeri +=1 ;
} else {
adaCeri += 0;
}
}
if (adaCeri != 0) {
kue[i] = '6' ;
} else {
kue[i] = '.' ;
}
}
Source code 5 merupakan kelanjutan dari source code 4. Source code ini merupakan proses paling utama,
yaitu proses membuat kue. Pada tahapan ini, array kue akan diisi dengan meses “.” dan ceri “6” sesuai
pada tempatnya. Cara kerja dari program ini adalah menelusuri array kue dan pada tiap elemen di array
kue tersebut, akan ditelusuri array letakCeri. Jika indeks i array kue sama dengan elemen array letakCeri
pada iterasi tersebut, maka pada indeks i pada array kue akan diletakkan ceri. Untuk tiap penelusuran
array letakCeri, Jumlah ceri yang ada akan dihitung dan disimpan dalam variabel adaCeri. Variabel adaCeri
ini menetukan apakah pada indeks ke-I array kue akan diletakkan titik atau ‘6’. Setelah seluruh

Halaman 2 dari 5
pengulangan pada tahap ini selesai, array kue sudah membentuk kue blackforest yang terdiri dari “.” Serta
“6”.
Source code 6
//Mencetak output
for (int i = 0 ; i < (panjangKue+2); i++) {
printf("-");
}
printf("\n|");
for (int i = 0 ; i < panjangKue ; i++) {
printf("%c", kue[i]);
}
printf("|\n");
for (int i = 0 ; i < (panjangKue+2); i++) {
printf("-");
}
printf("\n\n==== Kue sudah siap diberikan ====");

return 0;
}
Source code 6 merupakan kelanjutan dari source code 5, sekaligus sebagai bagian output dari keseluruhan
program. Source code 6 berisikan program untuk mengeluarkan output array of character kue ditambah
dengan “-“ dan “|” untuk mempercantik output. Program ditutup dengan kode return 0 .

Flowchart Kode yang Dibuat


Praktikum Pemecahan Masalah dengan C (EL2208) | Tahun 2020-2021 | Semester Genap

DFD Dari Kode yang Dibuat

Halaman 4 dari 5
Analisis Kompleksitas Algoritma

Saya akan menggunakan analisis kompleksitas waktu untuk menganalisis kompleksitas algoritma.

Pada program membuat kue blackforest yang sudah saya buat, operasi yang mendasari keseluruhan
program ini adalah proses membuat kue yang tertera pada source code 5. Karena itu, untuk selnjutnya
saya akan banyak menijau kode hanya dari source code- 5 saja.

Kasus terbaik terjadi ketika loop terjadi paling minimum, yaitu ketika panjangKue = 1, pada input user
pertama kali (belum memasuki validasi input). Maka pada kasus terbaik kompleksitas algoritma adalah :
𝑇𝑇𝑚𝑚𝑚𝑚𝑚𝑚 (𝑛𝑛) = 1

Seperti yang dapat dilihat pada penjelasan source code 5, program tersebut masih memiliki operasi yang
mendasari lagi untuk membuat kue tersebut. Operasi tersebut adalah operasi adaCeri <- adaCeri + 1 atau
adaCeri <- adaCeri + 0. Dengan cukup meninjau bagian kode pada souce code 5, maka pada kasus
terburuk, program membuat kue akan mengalami looping sebanyak n panjang kue yang tidak diketahui.
Karena operasi tersebut berada dalam nested loop maka untuk kasus terburuk, kompleksitas algoritma
adalah
𝑇𝑇𝑚𝑚𝑚𝑚𝑚𝑚 (𝑛𝑛) = 𝑛𝑛2

Anda mungkin juga menyukai