









Dear Kanjeng Pembaca sekalian,… naaagh berikutnya kembali latihan logik dan bikin program … dan case studynya ini tentang mahasiswa yang bernama Zoro… yang akan bangun pagi… dan ia harus ke kampus nya …!!! Tentu ada waktu yang dibutuhkan berapa lama ia akan sampai ke kampus… dan berapa menit ia ingin bisa tidur kembali… !!! Yaaagh namanya juga ingin tidur … maximize waktu … so lebih jelasnya soal nya sbb :
Naaagh tentu ada constrain yang harus diperhatikan dan output yang diharapkan … so apa saja yang harus divalidasi … dan apa saja output yang harus muncul di screen… yuuuk kita lihat dulu apa yang diminta dalam soal ini …!!!
Baik kita bahas dulu logik programming nya … tentu harus memahami soalnya… sehingga nanti kita bisa bikin programmnya …!!! Dalam dunia programming yang selalu harus diperhatikan adalah 3 (tiga) tahap, yaitu (i) Input, (ii) Proses, dan (iii) Output …!!! Berbicara soal input, maka harus dipastikan bahwa inputnya adalah valid… kalau gak valid maka akan membuat garbage in… dan ujung-ujungnya akan membikin garbage out …!!! Yuk kita mulai dalami soal input … :
Variable input mempunyai data type wakeHH, wakeMM, classHH, classMM, triptime, minsleepTime … dan variable input tersebut harus dimasukkan dengan statement / syntax scanf …!!! Selanjutnya harus divalidasi dan dipastikan bahwa wakeHH >=0 dan wakeHH <= 12 dan wakeMM >= 0 dan wakeMM <= 59 dan classHH >= 0 dan classHH <= 12 dan classMM >= 0 dan classMM <= 59 dan tripTime >= 0 dan tripTime <= 120 dan minsleepTime >= 0 dan minsleepTime <= 120 …!!! Naaagh disini ada kata dan… dimana seluruh variable input itu harus benar… jika semua nya benar baru diproses … so ini kuncinya …!!! So validasi ini untuk memenuhi constraint soal sebagaimana gambar dibawah ini …!!!
Berikutnya kita akan membahas tentang proses… dimana proses akan dilakukan ketika input yang diberikan valid …!!! Kalau data yang dimasukkan tidak valid, maka tentu gak perlu dibahas… cukup diberikan message ‘Data Invalid’ … dan hal ini untuk mencegah Garbage in Garbage Out (GIGO) …!!! Naaagh gimana proses dan output yang diharakan … yuuuk kita analisa :
Untuk proses tentu langkah pertama adalah mencari selisih antara jam berapa harus masuk ke kampus dengan jam bangun …!!! Ini langkah penting agar proses selanjutnya yaitu apakah selisih waktu ini masih lebih besar dengan tripTime …!!! Karena kalau sudah bangun nya telat atau masih ada sisa waktu namun lebih kecil dari tripTime … nanti harus dicetak printf(“Sleepyhead you already late smh \n”); …!!! Kemudian jika tripTime + minsleepTime lebih besar dibandingkan sisa waktu… maka harus dicetak printf(“Don’t sleep again or you’ll be late, Zoro \n”); Sedangkan untuk yang lebih besar sisa_waktu lebih besar tripTime + minsleepTime, maka dicetak printf(“Zoro can sleep for another %d minutes \n”, hitung_boleh_tidur); …!!! Disini ada hitung_boleh _tidur = hitung sisa menit dikurangi dengan trip_Time ….!!!
Atas dasar logik tersebut, maka dibuatkan laaah program nya … dan tentu saja konstruksi bahasa pemrograman C… ada deklarasi variabel, kemudian ada validasi input, setelah itu ada proses mencari sisa_waktu, kemudian membandingkan sisa_waktu terhadap tripTime… apakah telat atau tidak, termasuk dengan menghitung berapa lama boleh tidur …!!! So selengkapnya dapat dilihat pada program berikut :
#include <stdio.h>int main(){int wakeHH, wakeMM;int classHH, classMM;int tripTime, minsleepTime;int hitung_sisa_menit, delta_jam;int hitung_tripsleep_time;int hitung_boleh_tidur;scanf(“%d%d”, &wakeHH, &wakeMM);scanf(“%d%d”, &classHH, &classMM);scanf(“%d%d”, &tripTime, &minsleepTime);// printf(“WakeHH adalah %d \n”, wakeHH);//validasi dulu terkait wakeHH, wakeMM, classHH, classMMif (wakeHH >=0 && wakeHH <= 12 && wakeMM >= 0 && wakeMM <= 59&& classHH >= 0 && classHH <= 12 && classMM >= 0 && classMM <= 59&& tripTime >= 0 && tripTime <= 120 && minsleepTime >= 0 && minsleepTime <= 120 ){// berikutnya mengecheck apakah ia sudah telatif (( wakeHH > classHH) || (wakeHH == classHH && wakeMM > classMM)){printf(“Sleepyhead you already late smh \n”);}else{delta_jam = classHH – wakeHH;hitung_sisa_menit = ( delta_jam * 60) + (classMM – wakeMM);// mengecheck apakah trip_time ke sekolah lebih besar dari sisa menit// printf(“Hitung sisa menit %d \n”, hitung_sisa_menit);if ( tripTime > hitung_sisa_menit){printf(“Sleepyhead you already late smh \n”);}else{//hitung total triptime ditambah sleep timehitung_tripsleep_time = tripTime + minsleepTime;//mengecheck jika tripsleep_time lebih besar gak boleh tidur lagiif (hitung_tripsleep_time > hitung_sisa_menit){printf(“Don’t sleep again or you’ll be late, Zoro \n”);}else{hitung_boleh_tidur = hitung_sisa_menit – tripTime;printf(“Zoro can sleep for another %d minutes \n”, hitung_boleh_tidur);}}}}else{printf(“Not Valid \n”);}return 0;}
Hasil Output nya setelah dijalankan… memenuhi input, dan proses nya … dan dapat dilihat pada hasil sebagai berikut :
Demikian pembahasan terkait soal Zoro wants to sleep again… dan memang step-step nya harus runut… dari sisi input harus benar, kemudian dari sisi proses juga harus benar… dan dari sisi output pun harus sesuai …!!! Last,… demikian pembahasan dasar-dasar programming … terkait dengan case study Zoro wants to sleep again… jika ada yang ingin ditanyakan monggo tulis di kolom komentar …!!! Ciaooo 😀
Leave a Reply