Uncategorized

Tipe Data DOUBLE

Halo, selamat datang di Bony3D!

Double merupakan pilihan terbaik bagi para programmer karena cocok untuk mengelola bilangan real dengan akurasi presisi ganda. Selain itu, double juga dapat bekerja pada algoritma matematika rumit atau operasi numerik umum. Tapi, apa itu double? Bagaimana deklarasinya? Apa saja kegunaannya? serta apa saja hal yang perlu di perhatian jika ingin menggunakan tipe data ini? Pada artikel, Saya akan menjawab semua pertanyaan Anda mengenai hal itu. Yuk kita bahas bersama!
Double termasuk dalam salah satu tipe data yang fungsinya hampir sama dengan float, yaitu menyatakan bilangan pecahan atau real maupun eksponensial. Beberapa karakteristik double, di antaranya:
- Double memiliki tingkat ketelitian ganda.
- Double memiliki ruang penyimpanan 64 bit.
- Double dapat menghitung secara matematis dengan lebih cepat dibandingkan float.
- Double lebih sering dipakai karena hasil perhitungan yang lebih akurat.
- Double memiliki presisi hingga 15 tempat digit desimal.
- Double memiliki ukuran penyimpanan memori sebesar 8 bytes.
Perhatikan contoh berikut:
Gambar 1. Contoh Kasus
Kode di atas menampilkan hasil luas lingkaran dengan tipe data double yang saya masukkan sebagai jari-jari. Saya menggunakan tipe double dalam contoh ini, karena bisa lebih akurat dalam menentukan nilai bilangan pecahan.

Apakah bilangan 2.5 dengan 2.500000 bernilai sama? Dalam pemrograman, keduanya bernilai sama meski pun jumlah angka di belakang koma tidak sama. 0 tidak mempengaruhi nilai dalam pemrograman. Namun, pada bahasa C++, otomatis untuk tipe data double maupun float memiliki 6 angka di belakang koma. Untuk membedakannya, pada float selalu menggunakan karakter "F" sebagai penanda. Perhatikan kode berikut:

double nilaiA = 2.5;
float nilaiB = 2.5F;

Bagaimana jika seorang programmer terlupa akan karakter "F" tersebut? Maka program akan secara otomatis, menganggap bahwa itu adalah pernyataan yang harus diselesaikan dengan tipe data double. Berikutnya Saya akan memberikan contoh double dengan menggunakan penulisan ilmiah. Masih ingat bukan tentang karakter "e"? Karakter "e" digunakan dalam notasi ilmiah pemrograman float dan double yang diartikan sebagai pangkat 10.
Gambar 2. Penggunaan Notasi Ilmiah pada Double
Seperti yang sudah dikatakan sebelumnya bahwa, otomatis pada bahasa C++ menampilkan angka 6 digit untuk double dan float, baik itu posisinya setelah koma atau sebelum koma. Nah, bagaimana jika ingin hanya menampilkan 2 atau 3 angka tempat desimal? Perhatikan contoh berikut:
Gambar 3. Implementasi Notasi Ilmiah dan Pembulatan
Program di atas, Saya membuat 5 variabel dengan tipe double dan input yang berbeda-beda. Tampilan awal sesuai aturan yaitu berjumlah 6 digit, jika data melebihi, maka diganti dengan notasi ilmiah dan dibulatkan agar totalnya berjumlah 6 digit. Khusus untuk variabel 4 tetap dituliskan utuh meski pun data tertera lebih dari 6 digit dan variabel 5, nilai hasilnya dibulatkan.

Kode berikut bisa digunakan jika ingin menampilkan bilangan dengan ketelitian 2 angka di belakang koma:

cout<<fixed
cout<<setprecision

Sebagai contoh, perhatikan gambar berikut:
Gambar 4. Ketelitian 2 Tempat Desimal
Sama halnya dengan float, penambahan file header diperlukan untuk menampilkan ketelitian bilangan dengan 2 tempat desimal di belakang koma. Perbedaannya, pada double, menggunakan perintah cout<<setprecision dan menggunakan #include<iomanip>. Perintah kode tersebut difungsikan untuk menampilkan ketelitian 2 tempat desimal. Variabel 4 hasilnya 0,00. Mengapa? Hal itu dikarenakan fungsi pembulatan yang terdapat pada perintah sebelumnya.

Selanjutnya, bagaimana jika ingin menjalankan kode program modifier cout<<setprecision per baris? Gunakan perintah berikut:
Gambar 5. Penggunaan Setprecision
Variabel 1 pada gambar di atas menunjukkan tingkat ketelitian. Pengaturan setprecision disimpan paling akhir karena perintah cout ke variabel 1 menggunakan setprecision (4) yang sebenarnya dimiliki oleh baris sebelumnya. Pengaturan tersebut bisa ditimpa jika ada perintah setprecision () setelahnya. Ngomong-ngomong soal setprecision, apa kamu tahu fungsi sebenarnya dari perintah ini? Setprecision difungsikan untuk mengontrol jumlah koma desimal yang akan ditampilkan pada program dan penggunaannya juga hanya dapat mempengaruhi aliran keluaran sedangkan nilai variabel asli tidak dapat berubah. Cara menggunakan perintah ini ialah dengan menyertakan library iomanip dan selanjutnya tinggal mengatur tingkat presisi dengan kode : std::setprecision() yang fungsinya adalah memastikan jika nilai yang ditampilkan dalam program tepat 2 tempat desimal.

Contoh berikutnya, Saya akan tampilkan kode pemrograman sebagai alternatif mencetak tipe data double dengan perintah priintf di bahasa C:
Gambar 6. Pemrograman Double di Bahasa C
Selanjutnya, Saya akan membahas mengenai batas minimum dan maksimum pada tipe data double. Cara mengetahuinya hampir sama dengan float, yaitu dengan mengakses file header dan kode untuk mengaksesnya pada bahasa C++ ialah <float.h> yang di dalamnya berisi berbagai jenis konstanta untuk melihat beberapa pernyataan, di antaranya: ukuran memori, nilai minimum, nilai maksimum, dan jumlah digit ketelitian. Perhatikan contoh di bawah!
Gambar 7. Batas Minimum dan Maksimum Double
Beberapa poin di bawah adalah hal-hal yang harus diperhatikan dalam menjalankan program double.

1. Inisialisasi variabel, ditujukan agar terhindar dari pembacaan memori yang tidak di inisialisasi sebelumnya.
2. Kesadaran presisi, ditujukan agar mengetahui perbandingan epsilon saat melakukan cek kesetaraan.
3. Hindari membandingkan kesetaraan tepat, hindari menggunakan simbol == dan sebaiknya cek apakah absolut ada di ambang batas toleransi?
4. Hindari kesalahan akumulatif karena akan menyebabkan ketidakakuratan yang sangat tidak signifikan. Solusinya ialah menggunakan algoritma ter-kompensasi atau pustaka presisi arbitrer untuk komputasi krisis.
5. penanganan kesalahan, gunakanlah mekanisme pemeriksaan dan penanganan kesalahan untuk operasi yang rentan terhadap kesalahan. Gunakanlah blok coba-tangkap untuk menangani pengecualian dengan baik.
6. Degradasi Presisi digunakan untuk mengurangi overhead komputasi dan meningkatkan keterbacaan.
7. Gunakanlah notasi ilmiah.

Contoh aplikasi double dalam kehidupan sehari-hari ialah dalam perhitungan ilmiah dan juga keuangan. Selain memiliki banyak manfaat, double juga memiliki beberapa kekurangan, di antaranya: terlalu memakai banyak memori dan oleh sebab itu sebagai seorang programmer harus cermat dalam menggunakan tipe data ini sesuai kebutuhan.

see you!
Referensi:
Intern Dicoding. (2020, 23 Desember). Macam-macam Tipe Data Pemrograman Beserta Fungsinya. https://www.dicoding.com/blog/macam-macam-tipe-data/.
Nosuke. (2021, 31 Mei). Mengenal Float C dan Double Data pada Bahasa Pemrograman C++. https://appkey.id/pembuatan-aplikasi/mobile-programming/float-c/.
Amirul, Karim, Damas. 7+ Tipe Data C++ Beserta Contoh Program dan Jangkauannya. https://kodedasar.com/blog/tipe-data-cpp/.
Kuliah Programming. (2023, 13 Januari). Mengenal Tipe Data Floating Point, Real, Double pada Java. https://kuliahprogramming.id/mengenal-tipe-data-floating-point-real-double-atau-bilangan-berkoma-pada-java/.
Andre. (2020, 24 Oktober). Tipe Data Float dan Double Bahasa C++. https://www.duniailkom.com/tutorial-belajar-c-plus-plus-tipe-data-float-dan-double-bahasa-c-plus-plus/.
Gaurav, Sushant. (2023, 27 September). Tipe Data Ganda di C++. https://www.scaler.com/topics/double-in-cpp/.
Gambar 1 sampai 7. Sumber: Dokumentasi Pribadi.

Tipe Data FLOAT

Halo, selamat datang di Bony3D!

Tipe data dalam pemrograman ada banyak jenisnya, ada yang khusus huruf, angka, karakter, teks, dan bahkan menghitung dengan sangat teliti. Pada artikel ini, Saya akan membahas salah satu tipe data dengan fungsi menyimpan nilai berbentuk pecahan dengan ketelitian terbatas. Apa itu? Ya! Ini adalah tipe data float. Bagaimana deklarasinya? Apa kegunaannya? Apa yang membedakannya dengan tipe data sejenis? dan yang terakhir Saya akan rinci mengenai fungsi pada deklarasi float. Yuk kita mulai!
Float ialah salah satu tipe data yang digunakan untuk menandai nilai presisi seperti ketelitian tunggal. Nilai yang disimpan dalam float berbentuk pecahan atau desimal, bukan bilangan bulat. Pemisahan antara bilangan bulat dan pecahan harus menggunakan titik, bukan koma. Hal yang sangat perlu diperhatikan dalam tipe data ini ialah "nilai". Karena nilai yang tidak sesuai baik itu terlalu besar atau kecil akan mempengaruhi hasil penilaian di akhir menjadi tidak akurat. Kelebihan utama float ialah dapat menyimpan nilai yang sangat besar namun memiliki batasan dalam tingkat ketelitian.

Penyimpanan float sendiri lebih kecil dari tipe data double dan pastinya double membutuhkan 2 kali lebih ukuran ruangan penyimpanan dibandingkan dengan float. Perbedaan lainnya, double lebih akurat dalam memproses suatu data karena memiliki 64 bit memori dengan penjelasan: tanda di bit pertama, eksponen di 11 bit setelahnya, variabel asli dalam 52 bit yang tersisa, dan 15 bit disimpan ganda. Sedangkan float hanya memiliki 32 bit memori dengan penjelasan: eksponen dalam 8 bit setelahnya, variabel asli dalam 23 bit yang tersisa, dan memiliki tingkat keakuratan 6 sampai 7 tempat desimal.

Apa itu double? Artikel berikutnya Saya akan bahas tuntas tentang tipe data ini. Namun, sebagai awalan, double ialah salah satu tipe data yang memiliki fungsi sama dengan float. Perbedaannya hanya di jangkauan angka dan ketelitiannya saja. Untuk lebih jelasnya, perhatikan tabel berikut:
Gambar 1. Tabel Perbedaan Float dan Double
Bagaimana cara penulisan bilangan pecahan dalam tipe data ini? Umumnya, bilangan pecahan hanya berbentuk angka seperti: (1.25). Namun ada cara lain yang bisa dipakai dalam penulisan pecahan yaitu karakter "e" yang diartikan sebagai pangkat 10.

Selanjutnya bagaimana dengan sintaksnya? Sintaks float dituliskan seperti ini:

float nama_variabel = nilai;

dengan ketentuan sebagai berikut:

nama_variabel ialah nama yang akan dipanggil di seluruh program dan nilai merupakan nilai yang ditetapkan ke variabel.

Selanjutnya Saya akan mendeklarasikan tipe data ini dengan 3 contoh kasus.
Gambar 2. Contoh Kasus 1
Contoh di atas saya menggunakan 2 variabel yaitu variabel float dan double. Setelah itu, Saya memasukkan angka seperti pada perintah baris ke-8 dan 9 dengan ketentuan angka 1 untuk float dan angka 2 untuk double. Selanjutnya Saya menampilkan angka tersebut dengan perintah printf dan fungsi %F yang berarti float. Lihat hasilnya!

Ada penambahan 0 di belakang bilangan yang saya input-kan. Kira-kira kenapa? Seperti yang sudah dijelaskan sebelumnya bawa tipe data ini memiliki tingkat ketelitian di 6 tempat bilangan desimal, maka jika belum mencapai 6 angka di belakang koma, tambahkan 0 di belakang bilangan pecahan. Namun, kita harus melihat dulu fungsi pada printf-nya seperti apa, karena ada berbagai macam fungsi printf yang mengharuskan programmer menambahkan nilai selain 0 untuk mencapai syarat ketentuan 6 angka di belakang koma. Apa itu? Saya akan bahas di contoh ke-3 nanti ya dan sekarang perhatikan contoh ke-2 di mana Saya akan memasukkan angka dengan notasi ilmiah "e".
Gambar 3. Contoh Kasus 2
Sama seperti sebelumnya, jika angka yang kita masukkan belum mencapai 6 angka di belakang koma, maka harus menambahkannya dengan 0 setelah penulisan bilangan pecahan karena perintah printf hanya sebatas %F. Perbedaan yang mencolok dengan contoh pertama yaitu nilai masukannya. Jika sebelumnya Saya hanya memasukkan nilai pecahan umum, namun pada contoh kali ini saya menggunakan pecahan dengan karakter "e" yang artinya pangkat 10. Perhatikan hasilnya!

6 angka di belakang koma memang sudah pengaturan awal pada tipe data ini. Namun, bagaimana jika seorang programmer ingin menampilkan angka di belakang koma sebanyak 2 saja? Maka kita bisa mengatur format keluaran dari tipe data ini. Perhatikan pernyataan berikut!

%(0) (jumlah total digit).(jumlah angka di belakang koma) %f

Keterangan yang berada di dalam kurung merupakan pilihan. Artinya, tanpa kamu memakainya, tidak menjadi masalah. Perhatikan contoh berikut:
Gambar 4. Contoh Kasus 3
Perintah baris ke-5 yaitu mengisikan nilai dengan variabel angka1 ke dalam tipe data float. Perintah printf saya membuatnya bukan hanya 1, melainkan 7. Fungsi yang Saya gunakan pada tiap printf berbeda, mari perhatikan:

printf pertama diisikan dengan fungsi %F dan jika diperhatikan lagi pada hasilnya, angka pada hasil akan berbeda dengan angka masukan. Kenapa? Hal itu dikarenakan salah satu kelemahan float yaitu tidak bisa persis menyimpan angka dan ini disebabkan karena konversi angka di komputer yang hanya menggunakan digit biner (0 dan 1).

printf kedua diisikan dengan fungsi %15F yang artinya, Saya ingin menampilkan 15 digit dalam program dan ingat ya, titik tetap dinilai sebagai hitungan digit. Jika di printf 1 dihasilkan 11 digit, maka program ini akan menambahkan 4 digit lainnya agar jumlah keseluruhan 15 digit. Tambahan ini berupa spasi kosong yang terletak di depan bilangan bulat. Tentu masih ingat bukan, pada contoh kasus, Saya sedikit menjelaskan bahwa angka 0 biasanya digunakan sebagai tambahan jika 6 angka di belakang koma belum terpenuhi syarat, namun itu jika menggunakan fungsi %F saja. Pada kasus ini tidak menambahkan 0 melainkan menggunakan spasi kosong dan penempatannya pun berbeda, karena fungsi yang digunakan adalah %15F.

printf ketiga diisikan dengan fungsi %015F. Hampir mirip dengan printf sebelumnya, namun jika menggunakan 0 di depannya berarti programmer harus menambahkan 0 sebagai syarat terpenuhinya 15 digit dalam pemrograman. 0 di sini diletakan di awal sebelum penulisan bilangan bulat.

printf yang keempat diisikan dengan fungsi %.3F yang bertujuan untuk menampilkan 3 digit angka setelah koma. Ingat bahwa pemisahan bilangan bulat dan pecahan harus menggunakan titik. Maka fungsi ditulis %.3F. Titik mengartikan bahwa penulisan setelah koma dan 3 menandai bahwa 3 digit yang diperlukan di belakang koma.

printf kelima diisikan dengan fungsi %10.3F. 10 menandakan bahwa nilai harus berjumlah 10 digit, 3 menandakan bahwa harus ada 3 digit di belakang koma yang disimbolkan dengan titik pada fungsi. Jika jumlah bilangan kurang dari 10 digit maka bisa menambahkan 0 di setelah bilangan bulat.

printf yang terakhir diisikan dengan fungsi %e dan %E. Perbedaannya hanya pada huruf "e" kapital atau kecil saja dan untuk perhitungannya sama yaitu "e" melambangkan pangkat 10.
Bahasan selanjutnya ialah mengenai batas minimum dan maksimum pada tipe data float. Bagaimana cara mengetahuinya? Yuk kita pelajari bersama:)

Cara mengetahuinya yaitu menggunakan akses file header ke float.h, di mana dalam file tersebut berisikan berbagai jenis konstanta yang digunakan untuk melihat beberapa status, seperti: ukuran memori, nilai minimum, nilai maksimum, dan jumlah digit ketelitian. Perhatikan contoh berikut:
Gambar 5. Batas Minimum dan Maksimum Float
Kode pemrograman di atas bertujuan untuk mengetahui informasi mengenai tipe data float . Lalu, apa saja sih manfaat float dalam kehidupan sehari-hari? Float ditujukan untuk menandai bilangan dengan presisi, meski pun memiliki beberapa kelemahan, float sangat bermanfaat loh di kehidupan! Contohnya saja sebagai alat bantu untuk perhitungan fisika dan keuangan. Siapa di sini yang tidak menyukai hitung-hitungan? Float dengan segala kodenya bisa loh menjadi alat bantu! Selain itu, untuk para designer, seperti grafik komputer dan pembuat animasi bisa juga menggunakan float untuk mempermudah pekerjaannya. Untuk yang suka berkreasi, float bisa juga loh dimanfaatkan sebagai pembantu dalam pembuat simulasi dan permainan. Terlebih kepada seluruh anak teknik, float sangat membantu untuk pembelajaran mesin dan analisis data.

Sekian artikel hari ini, besok pembahasan kita mengenai tipe data double yang mana selalu dibandingkan dengan float ini.
See you🙂
Referensi:
Intern, Dicoding. (2020, 23 Desember). Macam-macam Tipe Data Pemrograman Beserta Fungsinya. https://www.dicoding.com/blog/macam-macam-tipe-data/.
Andre. (2018, 08 Februari). Pengertian dan Contoh Kode Program Tipe Data Float. https://www.duniailkom.com/tutorial-belajar-c-pengertian-dan-contoh-kode-program-tipe-data-float/.
Prebita. (2023, 28 Maret). Float di C - Sintaks, Contoh, dan Kegunaan. https://www.prepbytes.com/blog/c-programming/float-in-c/.
Gambar 1. Sumber: https://www.duniailkom.com/tutorial-belajar-c-pengertian-dan-contoh-kode-program-tipe-data-float/#google_vignette.
Gambar 2 sampai 5. Sumber: Dokumentasi Pribadi.

Tipe Data STRING

Halo, selamat datang di Bony3D!

String adalah salah satu tipe data yang berfungsi untuk menyimpan dan memanipulasi teks. Lantas apa saja kegunaan tipe data ini? Bagaimana cara mendeklarasikannya? Apa saja fungsi yang terdapat dalam operasi ini? dan kode pemrograman apa yang bisa menjadi input ataupun output pada tipe data ini? Saya akan membahas semua pertanyaan Anda mengenai hal ini, yuk kita mulai!
String digunakan untuk menyimpan data yang termasuk di dalamnya huruf, kata, dan kalimat. String juga digunakan untuk memanipulasi teks seperti menggabungkan, memotong, atau mencari karakter tertentu di dalam teks. String terbentuk dari sekumpulan karakter yang dalam tipe data ini disebut sebagai alfabet. Alfabet dapat menampung maksimum255 karakter. Sangat banyak bukan?
Gambar 1. Contoh Kasus String
Contoh di atas saya menggunakan kalimat yaitu "amanda stratzie" karena seperti yang sudah dijelaskan sebelumnya bahwa Saya bisa memasukkan huruf, kata, dan kalimat untuk dicetak. Lalu bagaimana sejarah lahirnya tipe data ini? Jika dilihat dari sejarahnya, perubahan tipe data assembly menjadi BCPL (B) dan kemudian menjadi bahasa C. Oleh karena itu bahasa C selalu mengadopsi struktur kode dari bahasa sebelumnya. Pada akhirnya membuat string selalu memiliki karakter "\0". Tujuannya agar memudahkan programmer dalam menghitung panjang string serta untuk kebutuhan alokasi memori. Karena jika kita ingat kembali, komputer di zaman itu hanya memiliki alokasi yang sangat terbatas meskipun hanya menampilkan kata, seperti:

char sapaan [] = "hai";

Sebenarnya string termasuk ke dalam array karakter, namun yang membedakan pada string selalu di akhiri dengan karakter : \0 atau sering disebut null terminated seperti yang sudah kita bahas sebelumnya mengenai sejarah string ini.
Apa saja fungsi dalam operasi string? Yuk kita bahas!

1. strcpy () ialah fungsi dengan tujuan menyalin nilai. Seperti kita menyalin suatu kata atau kalimat, apa pun yang di copy pasti akan ter paste tanpa mengurangi apa pun. Inilah prinsip dari strcpy. Fungsi ini disimbolkan dengan: (S1, S2); di mana S1 adalah variabel tujuan sedangkan S2 adalah variabel sumber yang berisi string. Perhatikan contoh berikut! Saya ingin menyalin kalimat "belajar tipe data string" dengan kode perintah pada baris ke-9 dan hasilnya akan dicetak sesuai perintah printf pada baris ke-12.
Gambar 2. strcpy
2. strcat () ialah fungsi dengan tujuan menggabungkan 2 string menjadi 1. Seperti halnya kita sering menggabungkan 2 dokumen word menjadi 1 file. Simbol yang dipakai dalam fungsi ini sama, namun berbeda definisi. S1 didefinisikan sebagai variabel yang berisi string, sedangkan S2 didefinisikan sebagai variabel yang berisi string untuk ditambahkan ke S1. Contoh di bawah ini saya akan menggabungkan nama dan gelar dengan menggunakan fungsi strcat. Perhatikan gambar berikut:
Gambar 3. strcat
3. strcmp () ialah fungsi yang digunakan untuk membandingkan 2 string untuk mengetahui apakah kedua string tersebut sama atau berbeda. Simbol strcmp sama dengan kedua fungsi sebelumnya namun definisinya yang berbeda. S1 ialah variabel berisi string yang akan dibandingkan dan S2 ialah variabel berisi string yang akan dibandingkan. Mungkin dari teman-teman ada yang bertanya, "Kenapa definisinya sama?" Hal itu dikarenakan kita ingin membandingkan 2 string dengan fungsi ini. Coba diingat kembali tujuan dari fungsi ini! Pada contoh, Saya akan membandingkan apakah kata "elektro" dan "informatika" sama atau beda. Yuk lihat gambarnya:
Gambar 4. strcmp
4. strlen () ialah fungsi yang bertujuan untuk mengetahui jumlah karakter atau panjang dari sebuah string. Simbol dari fungsi ini ialah (S1); di mana S1 adalah variabel berisi string yang akan dihitung panjangnya. Contoh berikut, Saya ingin menghitung berapa karakter yang Saya miliki dalam kalimat "Tipe Data String", berapa jumlah karakternya? Perhatikan gambar di bawah ini:
Gambar 5. strlen
5. strchr () ialah fungsi yang bertujuan untuk mencari karakter tertentu. Simbol tertera seperti ini: (S1, 'A'); di mana S1 adalah variabel berisi string dan A adalah karakter yang akan dicari. Saya akan mencoba mencari karakter huruf "a" pada kalimat "Belajar Tipe Data". Ingat ya spasi kosong tetap dihitung dalam pemrograman dan di huruf ke berapa ada karakter "a" itu? Yuk perhatikan kode berikut:
Gambar 6. strchr
6. strstr () ialah fungsi yang digunakan untuk mencari teks atau string di dalam tipe data string dan untuk mengubah teks tersebut. Jangan bingung ya, teman! Teks dalam bahasa pemrograman disebut dengan string. Jika sebelumnya strchr digunakan untuk mencari karakter atau huruf, maka strstr memiliki fungsi yang sama namun diaplikasikan pada teks. Simbolnya yaitu: (S1, "Elektro"); S1 ialah variabel yang berisi string dan elektro ialah teks yang akan dicari. Berikut saya tampilkan contoh penggunaannya dalam pencarian kata "elektro" dalam suatu kalimat:
Gambar 7. strstr
Contoh di atas, saya menggunakan perintah pada kode baris ke-8 yaitu menampilkan hasil kata "elektro" tanpa mengubahnya. Jika ingin mengubahnya maka aktifkan kembali kode pada baris ke-11 dengan cara menghilangkan "//" dan memasukkan kata penggantinya.
Pembahasan terakhir yaitu mengenai deklarasi. Jika kita sudah mengetahui ukuran data yang akan disimpan, maka deklarasikanlah variabel dengan ukuran secukupnya. Adapun input yang digunakan pada string adalah scanf dengan format %s. Perhatikan contoh di bawah ini:
Gambar 8. Input String
Saya memaksimalkan karakter pada nama yaitu 30 seperti yang tertera pada baris pertama. Lalu bagaimana dengan output-nya? Prinsip yang sama digunakan pada output yaitu menggunakan %s pada printf.
Gambar 9. Output String
Jika pada kode, Saya memasukkan nama sebanyak 2 kata yaitu "amanda stratzie" maka kode hanya akan menampilkan kata yang di depannya saja. Karena kode yang menggunakan scanf hanya bisa mencetak 1 kata. Maka solusinya adalah dengan menggunakan karakter berikut: %[^\n] yang menandakan bahwa perintah membaca hingga akhir baris, jadi tidak akan terpotong meskipun jumlahnya lebih dari 1 kata. Perhatikan contoh berikut:
Gambar 10. Karakter %[^\n]
Jika sudah berhasil mencetak beberapa kata, maka selanjutnya bagaimana agar string memiliki baris baru? dalam arti lain, string tidak selalu melanjutkan teks ke kanan namun di bawahnya. Kita bisa menggunakan karakter \n pada perintah scanf dan hasilnya seperti ini:
Gambar 11. Karakter \n
Lalu, bagaimana jika ingin memisahkan 2 suku nama ke dalam 2 variabel? Maka bisa menggunakan penggabungan antara %s dan
%[^\n] seperti pada gambar di bawah:
Gambar 12. Penggabungan Karakter %s dan %[^\n]
Contoh di atas akan menghasilkan pemisahan 2 suku kata nama dengan karakter nama depan dan nama belakang.
Sekian dulu ya artikel hari ini, see you!
Referensi:
UNS. https://spada.uns.ac.id/pluginfile.php/206271/mod_resource/content/1/PERTEMUAN%202%20MENGISI%20DATA%20DATABASE.pdf#:~:text=Tipe%20Data%20Teks%20(String)%20merupakan,yang%20terdapat%20pada%20Database%20MySQL.&text=3.%20Tipe%20Data%20Date.
Medina, Sari, Annisa. (2023, 2 September). Tipe Data String: Pengertian, Fungsi, Contoh, dan Operasi String. https://fikti.umsu.ac.id/tipe-data-string-pengertian-fungsi-contoh-dan-operasi-string/.
Muhardian, Ahmad. (2019, 26 November). Mengenal Tipe Data String pada C. https://www.petanikode.com/c-string/.
Unikom. https://repository.unikom.ac.id/30961/1/09.%20String%20%28diktat%29.pdf.
Gambar 1 sampai 12. Sumber: Dokumentasi Pribadi.

Tipe Data ARRAY

Halo, selamat datang di Bony3D!

Apa kamu pernah merasa lelah untuk membuat pemrograman dengan harus mengulang kode yang sama? Atau bahkan kebingungan bagaimana memasukkan data lebih dari 1? Seperti jika kamu memiliki 3 buah data. Artikel ini akan membahas tuntas pengertian, konsep dasar, karakteristik, jenis, kegunaan, contoh kasus, dan perbedaan tipe data array dengan yang lainnya. Yuk siapkan penanya:)
Array adalah tipe data terstruktur yang dapat menyimpan lebih dari 1 data dengan syarat memiliki tipe data yang sama. Secara sederhana, array merupakan kumpulan data tunggal yang dijadikan 1 di dalam variabel yang memiliki alamat memori berbeda atau biasa disebut dengan istilah elemen array yang dapat diakses berdasarkan indeks. Tujuan dari adanya tipe data ini adalah untuk menyimpan sebuah data dalam suatu tempat.
Array memiliki beberapa variabel di dalamnya. Variabel tersebut dipisahkan berdasarkan subscript. Subscript berisikan bilangan yang berada di dalam kurung siku [] dan melalui subscript inilah, elemen array dapat diakses. Lalu apa itu elemen array?
Elemen array ialah setiap bagian yang berguna untuk menyusun tipe data array. Perlu diingat bahwa setiap data dalam array, memiliki indeks yang bertujuan agar pengguna dapat lebih mudah untuk mengakses serta memprosesnya.
Selanjutnya bagaimana dengan karakteristik tipe data ini?
Array memiliki batasan dari pemesanan alokasi memori (bersifat statis), memiliki tipe data yang sama (bersifat homogen), dan dapat diakses secara acak. Hal yang membuat tipe data ini berbeda dengan variabel lainnya karena 2 hal. Pertama, array dapat memiliki nilai sedangkan variabel biasa hanya dapat dihubungkan dengan nilai saja. Kedua, array hanya menggunakan 1 nama variabel untuk 3 tipe data yang sama sedangkan variabel biasa menggunakan nama variabel 1, variabel 2, variabel 3, dan seterusnya.
Setelah mengetahui konsep dasar, pengertian, kegunaan, karakteristik, dan hal yang membedakan array dengan lainnya. Yuk kita bahas hal yang paling sering dicari semua programmer, yaitu deklarasi. Bagaimana sih cara deklarasi pada tipe data ini? Apa saja komponen yang dibutuhkan? dan bagaimana cara mengambil data pada array?
Bentuk umum dari deklarasi array adalah sebagai berikut: int nilai [5];
Lantas, hal apa saja yang diperlukan dalam sebuah deklarasi? Pastikan bahwa Anda memiliki tipe data elemen array, nama array, dan jumlah elemen array. Cara mendeklarasikannya ada 2. Pertama dengan tanpa memasukkan nilai ke dalam variabel, seperti: int nomor [2]; dan kedua dengan memasukkan nilai ke dalam variabel, seperti contoh: int nomor [2] = {1,2};. Cara seorang programmer mengambil data dari array ialah dengan nomor indeksnya. Ingat bahwa array menyimpan data dan setiap data memiliki nomor indeks dengan tujuan agar mudah diakses. Indeks dalam array selalu berawal dari angka 0, jangan lupa ya! Karena kesalahan di awal akan membuat kesalahan beruntun di akhir. Perhatikan contoh berikut:
Gambar 1. Contoh Kasus 1
Gambar di atas menunjukkan bahwa huruf ke-2 yaitu C. Kenapa bukan B? Indeks seperti yang telah dijelaskan sebelumnya bahwa penilaian harus dimulai dari 0. Jika data di atas ada 5 karakter yaitu a, b, c, d, dan e. Maka A adalah nilai 0 pada indeks dan seterusnya. Secara singkat, jika memiliki data berjumlah 5, maka indeksnya ada 4. Karena dimulai dari 0, 1, 2, 3, 4. Perhatikan contoh kasus ke-2 dengan menentukan rata-rata tinggi badan beberapa siswa:
Gambar 2. Contoh Kasus 2
Dalam kehidupan sehari-hari, kita sering menemukan contoh kasus yang sebenarnya bisa diselesaikan dengan mudah dan cepat. Dalam bahasa pemrograman disebut dengan tipe data array. Bayangkan saja, ketika seorang guru harus memasukkan data siswanya berjumlah 40, 1 per 1. Apa itu cara yang efektif? Jelas bukan, maka di sinilah pentingnya tipe data array. Perhatikan gambar di atas, sangat mudah bukan? Hanya dengan memasukkan angka beberapa siswa dalam 1 fungsi. Program akan menghitung hasil dari beberapa pernyataan di atas dan dihasilkan rata-rata tinggi badan siswa sebesar 168,199997 cm.
Setelah memahami bagaimana cara mendeklarasikan array dalam contoh kasus kehidupan sehari-hari, mari kita pelajari apa saja sih macam-macam array? Ada 3 jenis yang termasuk dalam tipe data ini, di antaranya: array 1 dimensi, array 2 dimensi, dan array 3 dimensi.
Array 1 dimensi hanya dibutuhkan 1 penomoran indeks karena data disimpan dalam 1 baris array. Inisialisasi pada array 1 dimensi yaitu dengan mengisikan nilai awal pada elemen array. Sehingga jika elemen array tidak diisikan nilai baru, maka nilai yang telah ada sebelumnya yang dipakai. Deklarasi array 1 dimensi disimbolkan dengan kurung siku [] dan bentuk umumnya ialah: tipe_data nama_variabel_[n];. Perhatikan contoh berikut:
Gambar 3. Array 1 Dimensi
Array 1 dimensi hanya bisa memasukkan 1 data. Misal pada contoh di atas saya menggunakan 2 kali fungsi output untuk menunjukkan 2 kali cetakan angka. Bagaimana jika ingin menampilkan 2 data? Maka bisa menggunakan array 2 dimensi. Array 2 dimensi sering disebut array multidimensi dan biasanya digambarkan sebagai matriks yaitu data yang memiliki baris dan kolom. Array 2 dimensi seperti namanya, membutuhkan 2 buah nilai indeks. Bentuk umumnya, yaitu: tipe_data nama_variabel_ [jumlah baris] [jumlah kolom]. Perhatikan 2 contoh berikut:
Gambar 4. Array 2 Dimensi 1
Gambar 5. Array 2 Dimensi 2
Perbedaan dari kedua gambar di atas ialah cara memasukkan nilainya. Pada gambar 1, programmer sendiri yang memasukkan nilai sehingga jadilah sebuah matriks. Namun pada gambar ke-2, nilai sudah tertera dalam program sehingga hasil cetakannya hanya berupa matriks saja. Apa pun caranya, ini dinamakan dengan array 2 dimensi. Mengapa? Karena programmer dapat memasukkan 2 data yaitu data baris dan data kolom. Selanjutnya bagaimana jika mempunyai 3 data seperti baris, kolom, dan ukuran?
Array 3 dimensilah jawabannya. Array ini memuat ukuran yang lebih dari array 2 dimensi. Bentuk umum dari array ini ialah:
tipe_data nama_variabel_[jumlah baris]_[jumlah kolom]_[panjang karakter]. Perhatikan 2 contoh berikut:
Gambar 6. Array 3 Dimensi 1
Gambar 7. Array 3 Dimensi 2
Kedua gambar di atas merupakan contoh dari array 3 dimensi. Array 3 dimensi berisi 3 data dalam fungsinya dan pasti lebih mempermudah programmer dalam melakukan pemrograman.
Setelah mengetahui jenis-jenis dari array, selanjutnya kita akan mempelajari bagaimana jika seorang programmer ingin mencari data dalam array. Ketika saya ingin mencari data, array akan cek 1 per 1 data. Data yang dicari pun tidak sembarangan, melainkan disesuaikan dengan nilai yang saya masukkan sebelumnya. Setelah program dalam proses mencari dan menemukan hasil, maka program tersebut akan menampilkan komponen sesuai pencarian.
Lantas, apa saja kelebihan dan kekurangan pemakaian tipe data ini? Yuk cari tahu!

Kelebihan array:
-Array memiliki kode pemrograman yang lebih mudah dibandingkan lainnya.
-Array dapat menampung lebih dari 1 data.
-Array memiliki memori yang ekonomis karena dapat terisi oleh semua elemen.
-Array memiliki persamaan waktu akses ke semua elemen.
-Array dapat diakses secara acak.

Kekurangan array:
-Array membuat boros memori jika banyak elemen yang tidak terpakai.
-Array memiliki struktur penyimpanan yang statis.
-Array lebih sulit diubah ukurannya saat dilakukan eksekusi dan jika ada penambahan atau pengurangan secara kontinu, maka akan terjadi representasi statis.
Sekian dulu artikel kali ini, sehat-sehat ya semuanya:)
Referensi:
Gambar 1 sampai 7. Sumber: Dokumentasi Pribadi.

Tipe Data BOOLEAN

Halo, selamat datang di Bony3D!

Kesempatan hari ini saya akan membahas mengenai tipe data boolean. Setelah mengetahui tipe data integer dan character yang memiliki banyak sekali manfaat, mari kita pelajari tipe data ini. Saya akan membahas secara terperinci mengenai boolean, kegunaannya, perbedaannya dengan tipe data yang lain, dan juga contoh kasusnya.
Apa kamu ingat tentang bilangan biner? Nilai yang tercakup di dalamnya hanya 1 dan 0. 1 berarti true dan 0 berarti false. Tipe data boolean memiliki konsep yang sama yaitu true dan false. George Boole ialah seorang ahli matematika yang diambil namanya untuk tipe data ini sekaligus berasal dari salah satu ilmu cabang matematika, aljabar boolean. Fungsi dari tipe data ini untuk menyimpan nilai logika 1 atau 0 sesuai kebenaran data. Boolean sering digunakan untuk arus kendali, pengambilan keputusan, statement if control.
Apa perbedaan yang mendasar antara tipe data ini dengan yang lainnya? Boolean berisikan 1 byte memori sedangkan tipe lainnya mengisi 2 hingga 8 byte. Selain itu, boolean memiliki 2 kondisi untuk menentukan kondisi akhir yaitu true dan false.
Boolean dalam pemrograman disebut operator logika. Ada 3 jenis operator logika yang digunakan pada boolean untuk menggabungkan atau mengubah suatu kondisi dan untuk mengontrol aliran suatu program.
Pertama, AND (&&)
Jika kedua data bernilai benar maka hasilnya adalah true. Jika salah satu atau bahkan kedua data bernilai salah, maka hasilnya false. Perhatikan tabel berikut:
Gambar 1. Simbol AND
Gambar 2. Tabel Kebenaran AND
Ingat bahwa 1 adalah true dan 0 adalah false. Jika A dan B adalah benar maka Y benar seperti yang tertera pada tabel di atas. Hasil tabel 0 karena salah satu datanya bernilai 0. Perhatikan contoh kode pemrograman berikut:
Gambar 3. Kode Pemrogramann AND
Kode pemrograman di atas menunjukkan bahwa jika umur di atas 17 tahun dan profesinya sebagai seorang murid, maka pernyataan akan bernilai benar atau 1 dan jika umur di bawah 17 tahun atau bukan seorang murid maka pernyataan akan bernilai false dan disinilah else berfungsi. Seperti pembahasan sebelumnya bahwa boolean berfungsi juga untuk mengaplikasikan statement if control. Jika hasilnya true maka if yang bekerja dan jika hasilnya false maka else yang bekerja.
Operator logika yang kedua adalah OR ( || )
Operator ini akan bekerja jika salah satu atau keduanya bernilai true atau 1. Perhatikan tabel berikut:
Gambar 4. Simbol OR
Gambar 5. Tabel Kebenaran OR
Berbeda dengan AND yang jika salah satu bernilai 0 tetap dihasilkan 0, namun pada OR jika ada pernyataan 1 di salah satu atau keduanya terhitung 1 (true). Singkatnya pada AND (dan) harus 1 keduanya untuk menghasilkan true sedangkan OR (atau) jika ada 1 atau keduanya bernilai true maka hasilnya true. Selanjutnya mari perhatikan kode pemrograman OR.
Gambar 6. Kode Pemrograman OR
Perhatikan perintah pada baris ke-10! Jika nilai lebih dari 10 maka if yang bekerja dan jika nilai lebih kecil dari 10 maka else yang bekerja. If di sini berarti 1 dan else berarti 0.
Terakhir, bagaimana dengan NOT? Operator logika ini menghasilkan kebalikan dari masukkan. Misalnya saya beri masukan 1 maka dihasilkan 0 dan sebaliknya. Yuk kita lihat tabel kebenarannya!
Gambar 7. Simbol NOT
Gambar 8. Tabel Kebenaran NOT
Tabel di atas menunjukkan bahwa jika A = 1 maka Y = 0 seperti pada pembahasan sebelumnya. Sekarang mari kita praktikkan pada kode pemrograman.
Gambar 9. Kode Pemrograman NOT
Saya menginisialisasi bahwa true untuk masuk yang artinya saya mencetak perintah "Selamat Datang di Kelas!" jika saya menuliskan false pada bool masuk maka yang tercetak adalah "Masuk dengan menggunakan seragam". Artinya seseorang belum bisa masuk sebelum menggunakan seragam. Bagaimana? Sudah paham bukan? Setelah memahami contoh dan pengertian operator logika, mari pelajari contoh kasus pada tipe data ini.
Gambar 10. Contoh 1 Boolean
Pernyataan di atas saya menggunakan 2 kondisi yaitu 0 atau false dan 1 atau true. Perbandingan kedua fungsi ini akan menghasilkan nilai true seperti yang terlihat pada gambar.
Gambar 11. Contoh 2 Boolean
Jika nilai pada baris ke-1 dan 3 dibandingkan dengan true maka dihasilkan false.
Gambar 12. Contoh 3 Boolean
Angka apa pun yang dimasukkan dalam if maka hasilnya true. Pada contoh di atas saya menggunakan angka 0 dan hasilnya false. Artinya angka selain 0 jika dimasukkan dalam fungsi if boolean maka hasilnya true.
Gambar 13. Contoh 4 Boolean
Fungsi dari operator AND dan IF adalah untuk membandingkan. Contohnya: apakah nilai termasuk antara 5 dan 8 atau bukan antara 5 dan 8? Hasil output-nya saya menuliskan nilai 90 yang berarti else dicetak atau dengan kata lain angka 90 bukan antara 5 dan 8.
Gambar 14. Contoh 5 Boolean
Kode pemrograman di atas saat output dihasilkan, harus memasukkan angka terlebih dahulu dan di cek apakah termasuk dalam if atau else. Jika hanya memenuhi 1 syarat dari if saja maka hasil yang tercetak adalah if. Pada contoh saya memasukkan angka 0 di mana angka tersebut masuk ke dalam salah satu pernyataan fungsi if. Meskipun 1 pernyataan lainnya tidak saya masukkan, namun hasil output-nya true atau if.
Contoh aplikasi boolean dalam kehidupan nyata, seperti: pertama, ketika saya lapar saya bisa memilih ingin membeli atau memasak. Kedua, ketika saya diminta verifikasi password facebook dan saya lupa maka saya tidak bisa mengakses akun tersebut juga sebaliknya. Ketiga, jika saya menunda untuk S2 maka saya akan bekerja di PLN dengan gaji 10 juta di awal.
Referensi:
(2023, 22 September). Tipe Data Boolean. https://www.geeksforgeeks.org/boolean-data-type/
Dancuk, Milica. (2023, 9 Februari). Apa Itu Tipe Data Boolean? https://phoenixnap.com/kb/boolean-data-type
Noviyanto, Fiftin. Percabangan. http://fiftin.staff.uad.ac.id/file/ddp6.pdf
Gambar 1, 2, 4, 5, 7, 8, . Sumber: https://htotechno.blogspot.com/2014/05/jenis-jenis-gerbang-logika-beserta.html
Gambar 3, 6, 9, 10, 11, 12, 13, 14. Sumber: Dokumentasi Pribadi

Tipe Data CHARACTER

Halo, selamat datang di Bony3D!

Sebelumnya kita sudah membahas mengenai tipe data integer yang mana hanya berisikan angka terkhusus bilangan bulat. Untuk lebih jelasnya, bisa klik di link berikut yaa: https://bony3d.com/elementor-4461/. Artikel ini akan membahas: apa sih yang dimaksud tipe data character, apa kegunaannya, dan bagaimana contoh kasusnya. Yuk kita pelajari bersama:)
Berbeda dengan tipe data sebelumnya, character berisikan angka, tanda baca, huruf, simbol, dan termasuk spasi kosong. Pemrograman bahasa C mendefinisikan tipe data ini dengan 1 digit karakter. Variabel didefinisikan dalam 1 byte memori seperti pada contoh:
Gambar 1. Contoh Kasus 1
Gambar 1 mendefinisikan variabel huruf dengan tipe data char (character) seperti yang tertera pada baris ke-5, diisi dengan karakter 'B' pada baris ke-6 dan ditampilkan dengan perintah 'printf'. Hasilnya adalah karakter yang didefinisikan dengan variabel tipe data tersebut. Bagaimana jika huruf berupa konstanta? Perhatikan gambar berikut:
Gambar 2. Contoh Kasus 2
Jika huruf berupa konstanta seperti yang ditunjukkan pada baris ke-5 maka dengan cara yang sama, perintah 'printf' untuk mencetak hasilnya. Lalu, apa perbedaan konstanta dan variabel? Pembahasan selanjutnya mengenai konstanta dan variabel sebelum saya menutup dengan contoh kasus terakhir.
Konstanta ialah tempat atau wadah dari suatu nilai. Nilai pada konstanta tidak diubah atau bernilai konstan selama program berlangsung. Bagaimana cara membuat konstanta? Ada 2 cara pembuatannya.
Pertama, buatlah dengan keyword '#define' seperti pada contoh berikut:
Gambar 3. Contoh Kasus Konstanta 1
Gambar di atas mendefinisikan 2 konstanta yaitu panjang dan lebar seperti pada baris ke-3 dan ke-4. Saya memberi masukkan nilai untuk panjang yaitu 2 dan lebarnya 3. Define biasa ditulis sebelum 'int main (void)' lihat baris ke-6. Definisi dari panjang 2 berarti saya memasukkan konstanta dengan nama 'panjang' dan nilai '2' sedangkan lebar 3 mengartikan bahwa nama konstanta ialah 'lebar' dengan nilai '3'. Cara menampilkan konstanta seperti pada umumnya yaitu menggunakan perintah 'printf'.

Lalu apa arti %d dalam program? %d digunakan dalam 'printf' untuk menampilkan angka bilangan bulat sedangkan '\n' digunakan untuk membuat karakter dengan baris baru. Apa yang terjadi jika fungsi ini tidak dipakai? Yap! kata atau kalimat yang dibuat akan ditampilkan secara bersamaan menuju ke arah kanan dan pastinya sangat tidak rapi, bukan?

Lalu bagaimana dengan aturan penamaan konstanta? Mayoritas programmer menggunakan huruf besar karena variabel menggunakan huruf kecil sebagai penamaan. Namun tidak ada salahnya kok, kalau pakai penamaan konstanta dengan huruf kecil. Perhatikan contoh berikut:
Gambar 4. Contoh Kasus Konstanta 2
Saya mendefinisikan nama dan ipk dengan huruf kecil. Konstanta nama diisikan teks berupa 'Amanda' maka saya menulisnya di dalam tanda kutip dua seperti pada baris ke-3. Pada perintah 'printf' saya menggunakan %s dan %f. Ipk menggunakan %f karena saya isikan dengan angka/ float/ char yaitu '3,98' sedangkan nama saya isikan dengan teks maka menggunakan %s atau biasa disebut string.
Cara membuat konstanta yang kedua ialah dengan menggunakan perintah 'const'. Berbeda dengan sebelumnya, perintah ini ditempatkan di fungsi 'main ()' serta harus dilengkapi dengan tipe datanya. Pada gambar 2 saya membuat perintah 'const huruf = d' yang artinya saya membuat huruf dengan tipe data char yang diisi nilai 'd'.
Selanjutnya apa perbedaan konstanta dengan variabel? Variabel ialah penanda untuk menampung suatu nilai. Nilai dalam variabel bisa diubah selama program berlangsung, tidak seperti pada konstanta sebelumnya. Variabel merujuk kepada alamat di memori komputer dan masing-masing variabel memiliki nama sebagai identitas. Variabel bisa terdiri dari huruf, angka, dan juga karakter garis bawah atau underscore dengan syarat karakter pertama harus diawali dengan huruf atau underscore, tidak boleh angka. Dalam pemrograman bahasa C, disarankan untuk tidak memasukkan lebih dari 31 karakter ke dalam variabel. Ada 2 proses dalam pembentukan variabel. Pertama deklarasi dan kedua inisialisasi.
Deklarasi adalah proses mengirimkan informasi dalam pemrograman bahasa C dengan tujuan programmer akan membuat suatu variabel. Perhatikan contoh berikut:
Gambar 5. Contoh Kasus Variabel 1
Apa yang dihasilkan dari program di atas, tertulis dalam kode pada baris ke-7, 8, dan 9. Semua data tersebut masuk ke dalam karakter tipe integer. Masih ingat bukan, perbedaan konstanta dan variabel? Variabel dapat diganti nilainya selama program berlangsung sedangkan konstanta tidak. Perhatikan contoh berikut:
Gambar 6. Contoh Kasus Variabel 2
Nilai pada karakter a, b, dan c bisa diubah sesuai kebutuhan dan tidak akan mengganggu berjalannya proses pemrograman. Contoh di atas saya mengubah nilai dengan kombinasi perjumlahan a dan b. Sebelum menutup artikel hari ini, saya akan memberikan 1 contoh terakhir mengenai kombinasi tipe data character dengan scanf. Mari perhatikan gambar berikut:
Gambar 7. Kombinasi Char dan Scanf 1
Perhatikan perintah output! Masukkan karakter pertama. Apa pun yang termasuk dalam angka, huruf, simbol, karakter khusus, dan spasi kosong bisa dimasukkan. Gambar selanjutnya akan ada perintah ke-2 yaitu 'printf' pada baris ke-14.
Gambar 8. Kombinasi Char dan Scanf 2
Perintah yang sama dengan baris ke-11. Masukan karakter sembarang ke dalam output. Hasilnya akan menjadi seperti ini:
Gambar 9. Kombinasi Char dan Scanf 3
Hasil dari 3 karakter sembarang yang di masukkan akan tampil dibaris selanjutnya sesuai dengan kode pemrograman baris ke-20. Gambar 7, 8, dan 9 memiliki 3 variabel dengan tipe data char. Karakter 1, karakter 2, dan karakter 3 ialah variabel dalam pemrograman ini. Karakter tetap harus diisi 1 digit, tidak boleh lebih.
Selanjutnya bagaimana jika ingin membuat karakter dengan spesifikasi lebih dari 1 digit? Seperti kata 'Amanda' atau kalimat 'Selamat Anda Mendapatkan Hadiah!' Maka kita bisa menggunakan tipe data lainnya yaitu string. Tipe data ini akan kita bahas setelah pembahasan array nanti. Ditunggu yaa, see you🙂
Referensi:
Napizahni, Mike. Macam-macam Tipe Data Pemrograman. https://www.dewaweb.com/blog/tipe-data-pemrograman/
Andre. (2017, 21 November). Cara Pembuatan Konstanta dalam Bahasa C. https://www.duniailkom.com/tutorial-belajar-c-cara-pembuatan-konstanta-dalam-bahasa-c/
Andre. (2017, 20 Desember). Pengertian Variabel dan Cara Penulisan Variabel dalam Bahasa C. https://www.duniailkom.com/tutorial-belajar-c-pengertian-variabel-dan-cara-penulisan-variabel-bahasa-c/
Andre. (2018, 5 Februari). Pengertian dan Contoh Kode Program Tipe Dasar Char. https://www.duniailkom.com/tutorial-belajar-c-pengertian-dan-contoh-kode-program-tipe-data-char/

Tipe Data INTEGER

Halo, selamat datang di Bony3D!

Integer adalah salah satu tipe data dalam pemrograman dengan fungsi menyimpan data dalam bentuk angka. Angka yang termasuk yaitu bilangan bulat dan termasuk di dalamnya 4 tipe data seperti byte, int, short, dan long. Artikel ini membahas konsep dasar integer, fungsi, contoh kasus, dan tipe data lain yang termasuk ke dalamnya.
Semua program komputer yang sedang berjalan akan menyimpan data sementara di dalam RAM (Random Access Memori). Data yang tersimpan di RAM memiliki alamat yang direpresentasikan dalam bilangan hexa desimal. Cara program menyimpan nilai ke RAM yaitu dengan variabel. Semakin banyak variabel, semakin besar memori yang digunakan dalam RAM. Variabel merupakan nama lokasi penyimpan dalam memori sedangkan tipe data ialah jenis data yang akan dimasukkan ke dalam variabel. Secara singkat, tipe data ialah format penyimpanan data.
Tipe data dalam bahasa c++ ada beberapa, diantaranya: boolean, character, integer, floating point, double floating point, string, dan valueless.
Fungsi integer ialah untuk menyimpan data dalam bentuk angka terkhusus bilangan bulat. Integer tidak dapat menyimpan data bilangan pecahan. Sebagai contoh angka 1 dapat disimpan dalam tipe data ini sedangkan 1/2 tidak bisa. Integer memiliki 2 bentuk yaitu bentuk positif dan negatif, namun keduanya harus berbentuk bilangan bulat. Sebagai contoh saya memasukkan nilai 10 sebagai sisi persegi dan ingin mencetak perintah luas persegi, maka kode pemrogramannya akan seperti ini:
Gambar 1. Contoh Kasus Integer
Contoh di atas akan berjalan karena integer merupakan bilangan bulat. Ketika saya menggantinya dengan pecahan maka tidak akan menghasilkan apa-apa atau bahkan eror. Tipe data yang termasuk ke dalam bilangan bulat, diantaranya: byte, int, short, dan long. Byte dan short hanya digunakan pada aplikasi khusus yang berkaitan dengan memori sedangkan long digunakan untuk data berkapasitas besar. Perhatikan tabel berikut:
Gambar 2. Tabel Data Numerik Integer
Pada tabel ada keterangan ukuran sebagai batasan penyimpanan memori dalam RAM. Byte hanya mampu menyimpan data dengan ukuran 8 bit, ini memori terkecil dalam komputer. Byte digunakan untuk memproses program terutama untuk baca dan tulis. Short memiliki ukuran penyimpanan lebih besar dari byte yaitu 16, namun tetap saja spesifikasi laptop zaman ini tidak ada yang menggunakan ukuran tersebut. Int memiliki ukuran 32 dan biasanya digunakan untuk merepresentasikan angka terkhusus bilangan bulat. Int juga sering digunakan pada perulangan ataupun array. Long memiliki kapasitas terbesar dalam tipe data integer yaitu 64 bit, oleh karena itu long hanya digunakan untuk data dengan range yang tinggi. Long juga dibutuhkan saat data tidak bisa diproses oleh int, byte, dan short karena kurangnya kapasitas penyimpanan.
Gimana, udah semakin paham kan tipe data integer ini? Ditunggu ya postingan selanjutnya. See you:)
Referensi:
Eka, Meilina. (2022, 29 Desember). 6 Tipe Data Pemrograman yang Harus Anda Pahami Apa Saja? https://it.telkomuniversity.ac.id/6-tipe-data-pemrograman-yang-harus-anda-pahami-apa-saja/
Kusuma, D.A. (2020, 23 Desember). Macam-macam Tipe Data Pemrograman Beserta Fungsinya. https://www.dicoding.com/blog/macam-macam-tipe-data/
Gambar 1. Sumber: Dokumentasi Pribadi
Gambar 2. Sumber: https://www.dicoding.com/blog/macam-macam-tipe-data/

Perulangan WHILE dan DO-WHILE

Halo, selamat datang di Bony3D!

Apa sih perbedaan perulangan for dan while? Jika for memiliki batas perulangan, while tidak ada batas perulangan sampai kita yang menentukannya yaitu menggunakan fungsi increment atau decrement. While akan terus berulang selama kondisi sesuai dengan kode pemrograman. Lalu, apa perbedaan while dengan do-while?
Artikel ini akan membahas lebih dalam mengenai perulangan while, perbedaannya dengan for, contoh kasus, dan perbedaannya dengan do while .
Kode syntaks untuk while berbeda dengan for yaitu dipisahkan setiap pernyataannya. Seperti yang tertera pada gambar berikut:
Gambar 1. Syntaks While
Start digunakan untuk inisialisasi variabel counter. While (condition) menunjukkan kondisi yang harus dipenuhi agar perulangan berjalan. Increment merupakan fungsi yang digunakan untuk menaikkan nilai variabel counter misal ++ atau -- untuk menurunkan nilai variabel counter (decrement).
Perbedaan lainnya dengan for, pada while bisa memiliki pernyataan lebih dari 1 dan biasanya menggunakan operator perbandingan. Berikut saya akan berikan contoh pemrograman while tanpa menggunakan increment atau decrement. Apa yang akan terjadi?
Gambar 2. While Tanpa Increment/Decrement
Program akan terus berjalan selama kondisi bernilai syarat. Pertanyaannya, kapan akan berhenti? Kode yang sudah dieksekusi while akan terus berjalan sampai kita sendiri yang menutupnya. Jadi itulah perbedaan yang mencolok antara perulangan for dan while. Namun, bagaimana jika ingin menggunakan perulangan while tetap memiliki batasan? Maka bisa menggunakan fungsi increment atau decrement sesuai kebutuhan, seperti pada gambar di bawah ini:
Gambar 3. While Dengan Increment/Decrement
Saya menggunakan fungsi increment untuk menaikkan nilai sampai batas syarat. Input = 1 dengan batasan 3, seperti yang ditunjukkan while (i<=3). Ketika kondisi lebih dari 3 maka program akan berhenti. Hasil cetakannya berjumlah 3 seperti pada gambar di atas. Penggunaan increment selain menentukan batas juga agar kode memiliki kondisi akhir yang harus dipenuhi. Contoh lain dari increment, seperti:
Gambar 4. While Dengan Increment
Fungsi increment untuk menaikkan variabel counter 1 point, jadi ketika memiliki pernyataan ditambahkan dengan angka maka dengan fungsi ini akan berjalan dari yang kecil sampai batas syarat yang terbesar. Contoh di atas saya menggunakan input angka 1 dengan tipe data integer dan perulangan sampai batas 3 kali seperti yang tertera pada baris ke-6 fungsi while. Sebaliknya, decrement menurunkan variabel counter seperti pada gambar berikut:
Gambar 5. While Dengan Decrement
Prinsip increment dan decrement sama, namun fungsinya berbeda. Seperti pada gambar di atas, input nilai awal harus lebih besar dari perulangannya. Karena fungsi ini menurunkan variabel counter sampai batas yang ditentukan program, seperti pada baris ke-6. Bagaimana jika saya menggunakan decrement dengan input lebih kecil dari batas yang ditentukan? Yap! program akan tidak menghasilkan perulangan apa pun. Karena tidak memenuhi syarat perulangan dari awal.
Program while yang dari awal tidak sesuai nilai syarat namun tetap dieksekusi, maka disebut dengan fungsi do-while. Berikut syntaks-nya:
Gambar 6. Syntaks Do-While
Syarat lain dari perulangan do-while adalah program akan melakukan eksekusi minimal 1 kali untuk mengetahui apakah sesuai syarat atau tidak. Jika sesuai maka akan melanjutkan perulangan dan akan berhenti jika tidak sesuai. Berbeda dengan fungsi while sebelumnya, jika kondisi awal tidak sesuai syarat maka tidak menghasilkan apa-apa. Namun pada do-while, program akan dieksekusi 1 kali sebelum akhirnya berhenti. Perhatikan contoh berikut:
Gambar 7. Do-While Tidak Sesuai Nilai Syarat
Program tersebut jika dijalankan dengan while maka tidak akan berjalan, namun menggunakan do-while akan berjalan tanpa mementingkan syarat sesuai atau tidak tapi hanya sebagai pengecekan awal apakah perulangan dapat berlanjut atau tidak. Perulangan di atas saya menggunakan input 10 dengan syarat kurang dari 2. Pada tahap ini kita lewati saja karena sudah pasti setelah eksekusi pertama program tidak akan berulang lagi. Program yang ingin ditampilkan seperti di baris ke-9, yaitu input dikalikan dengan 20, hasilnya 200. Setelah output dihasilkan maka program akan berhenti karena pengecekan pertama tidak sesuai kondisi syarat. Contoh berikutnya saya akan tampilkan do-while sesuai dengan kondisi syarat yang diberikan.
Gambar 8. Do-While Sesuai Nilai Syarat
Input yang saya berikan (3) lebih kecil sama dengan 7, maka program akan terus berulang setelah eksekusi pertama sampai batasan 7 kali. Program akan menampilkan input dikali dengan 3 dan output-nya 3 x 3, 4x 3, 5x 3, dan seterusnya sampai batas nilai 7.
Selain menunjukkan hasil angka, do-while juga digunakan untuk menampilkan kata berulang sampai batas yang ditentukan atau tanpa batas sesuai kebutuhan. Perbedaannya pada kata yang akan dicetak, perulangan while tertera pada fungsi print sedangkan do-while, terletak pada 'do'. Perhatikan contoh berikut:
Gambar 9. Do-While Perulangan Kata
Sebagai simpulan, perulangan while biasanya digunakan untuk perulangan berlanjut jika sedari awal kondisi bernilai syarat, program juga bisa ditentukan batasan perulangannya dengan menggunakan fungsi increment atau decrement. Do-while akan mengeksekusi program minimal 1 kali, jika tidak bernilai syarat maka perulangan akan berakhir.
Referensi:
Tafifah, Erin. (2022, 30 Agustus). Perulangan While dan Do-While dalam Bahasa C. https://www.kmtech.id/post/perulangan-while-dan-do-while-dalam-bahasa-c
Andre. (2019, 24 Maret). Tutorial Belajar C Perulangan While Bahasa C. https://www.duniailkom.com/tutorial-belajar-c-perulangan-while-bahasa-c/
Andre. (2020, 1 November). Cara Membuat Perulangan Do-While Bahasa C++. https://www.duniailkom.com/tutorial-belajar-c-plus-plus-perulangan-do-while-bahasa-c-plus-plus/
Gambar 1 sampai 9. Sumber: Dokumentasi Pribadi.

Contoh Kasus IF, IF-ELSE, ELSE-IF, dan SWITCH

Halo, selamat datang di Bony3D!

Apa kamu tahu, apa sih yang dimaksud dengan percabangan? Dalam pemrograman, cara untuk membuat kode bertindak sesuai dengan kondisi disebut dengan percabangan. Ilustrasi sederhananya, jika Ani terlambat masuk kelas, maka dia tidak bisa mengikuti perkuliahan dan jika tidak mengikuti perkuliahan, maka harus mengulang sesuai waktu yang ditentukan. Tujuan dari percabangan sendiri ialah untuk mengetahui pernyataan benar dan salah.
Pada artikel ini, saya akan membahas perbedaan if, if-else, else-if, dan switch serta contoh kasus yang didasari percabangan masing-masing.
Pertama, if. Jika pernyataan benar maka kode akan dieksekusi dan sebaliknya. Percabangan ini sering dijumpai pada toko untuk mengetahui apakah pengunjung mendapatkan potongan harga atau tidak. Selain itu, biasa digunakan juga untuk memecahkan permasalahan matematika. Berikut saya akan tampilkan 2 contoh kasus:
Gambar 1. Kasus If 1
Pada kasus pertama saya menggunakan persoalan matematika, ketika pernyataan sesuai dengan kondisi maka akan muncul hasil dalam kode print. Namun, jika sebaliknya, maka yang terjadi adalah:
Gambar 2. Kasus 1 If 2
Bisa dilihat bahwa ketika saya menuliskan program tidak sesuai kondisi, maka tidak ada hasil yang dicetak. Lalu bagaimana kasus seorang kasir yang ingin menentukan siapa saja yang berhak mendapatkan potongan harga. Berikut kode pemrogramannya:
Gambar 3. Kasus 2 If 1
Prinsip yang digunakan sama, yaitu jika pernyataan sesuai dengan kondisi maka akan tercetak hasil yang sudah ditentukan, begitu pun sebaliknya. Pada kasus ini, jika Ani menghabiskan uangnya untuk belanja sebesar Rp. 52.000,00 sedangkan Amanda senilai Rp.520.000,00. Maka sesuai kondisi yang telah ditentukan pemilik toko, Amanda yang mendapatkan hadiah, karena memiliki total belanja lebih dari Rp. 100.000,00. Mari kita lihat flowchart -nya:
Gambar 4. kasus 2 If 2
Secara singkat, if hanya akan bisa dieksekusi jika pernyataan sesuai kondisi. Selanjutnya percabangan ke-2 yaitu if-else. Perhatikan contoh berikut:
Gambar 5. Kasus 1 If-Else 1
Jika menggunakan if-else, maka ada 2 kondisi. Kondisi pertama akan dieksekusi 'if' jika benar dan kondisi ke-2 akan dieksekusi 'else' jika tidak benar. Pada contoh di atas, Amanda mendapatkan nilai 96 di indeks prestasi semester 5, maka dia berhak untuk naik semester seperti yang ditentukan pada program. Namun, jika Ani tidak mendapatkan nilai sesuai ketentuan program, maka dia tidak naik semester. Perhatikan gambar berikut:
Gambar 6. Kasus 1 If-Else 2
Kasus berikutnya, bagaimana jika seseorang ingin mengakses akun lamanya dan membutuhkan verifikasi password terlebih dahulu? Jika password yang diisikan sesuai, maka pengguna bisa masuk ke dalam akun tersebut dan jika password yang dimasukkan tidak sesuai maka akan muncul tampilan 'password salah.' Perhatikan gambar di bawah:
Gambar 7. Kasus 2 If-Else 1
Contoh di atas, saya memasukkan password yang tidak sesuai, maka secara otomatis kondisi ke-2 atau else yang bekerja. Prinsip ke-2 kasus tersebut sama, namun kita bisa mengganti input dan output sesuai kebutuhan dan keinginan. Berikut adalah flowchart dari if-else kasus ke-2:
Gambar 8. Kasus 2 If-Else 2
Selanjutnya, bagaimana jika ingin menambahkan suatu kondisi? Misal, jika Amanda mendapat nilai 99 maka grade yang diraih adalah A, jika nilainya 80 maka grade-nya adalah B, dan jika nilainya 55 maka tidak lulus. Berikut contoh pemrogramannya:
Gambar 9. Kasus 1 Else-If 1
Else-if adalah percabangan yang selalu diletakkan antara if dan else. Fungsinya untuk menambahkan kondisi. Biasanya kondisi dalam else-if hanya beberapa dan bisa dihitung jari. Pada gambar di atas, Amanda mendapatkan nilai A karena hasil ujiannya 99. Seperti pada penjelasan sebelumnya, jika mendapatkan nilai 80 maka hasilnya adalah B. Berikut hasilnya:
Gambar 10. Kasus 1 Else-If 2
Jika dia mendapatkan nilai 55 ke bawah maka tidak lulus. Mari lihat pada gambar berikut:
Gambar 11. Kasus 1 Else-If 3
Kasus ke-2 saya memberikan beberapa kondisi, grade apa yang akan didapatkan siswa dari gurunya berdasarkan capaian yang dihasilkan. Hal ini akan sangat membantu para guru dalam menentukan tingkatkan nilai siswa. Contohnya seperti berikut:
Gambar 12. Kasus 2 Else-If 1
Setelah mengetahui pemrogramannya, mari lihat flowchart-nya. Bagan bagaimana kode akan bekerja!
Gambar 13. Kasus 2 Else-If 2
Apa kamu tahu, bagaimana jika kita membutuhkan banyak kondisi dalam 1 masalah? Sedangkan, jika masih menggunakan else-if sangat tidak efektif. Sekarang, saya akan tunjukkan cara lain dengan contoh kasusnya.
Gambar 14. Switch
Gambar di atas merupakan kode pemrograman yang sama dengan else-if, namun para programmer menggunakan switch untuk kondisi yang diperkirakan banyak. Karena selain efektif, switch juga bisa digunakan sebagai pengganti fungsi if, else-if, dan else. Oh iya, else adalah kebalikan dari if, yaitu jika kondisi tidak sesuai maka program akan dieksekusi.
Sebagai kesimpulan, if hanya bisa dieksekusi jika pernyataan bernilai benar. If-else hanya bisa dieksekusi jika kondisi if benar dan else tidak sesuai. Else-if digunakan jika program memiliki beberapa kondisi salam jumlah minimal. Switch merupakan cara efektif dan pengganti fungsi if, else-if, dan else.
Terima kasih telah membaca. Have a nice day!
Referensi
Gambar 1 sampai 14. Sumber : Dokumentasi Pribadi.

Contoh Kasus FOR

Halo, selamat datang di Bony3D!

Jika kita ingin mengulang kata berjumlah ratusan, menuliskan bilangan genap sampai batas 2000, atau bahkan menentukan termasuk bilangan apakah ini, maka apa perlu menuliskan kodenya 1 per 1? Tentu, cara itu sangat tidak efektif.. Pada artikel ini, saya akan membahas apa itu algoritma perulangan for, fungsi, konsep dasar, kode, dan beberapa kasus yang hanya bisa diselesaikan oleh algoritma ini.
Algoritma perulangan for adalah salah satu algoritma perulangan pada bahasa pascal. Perbedaan yang mendasar ialah jumlah perulangannya. For hanya bisa digunakan jika sudah tahu pasti berapa jumlah perulangannya. Konsep dasar for mengacu pada increment dan decrement. Increment ialah menambahkan nilai 1 pada kode dengan simbol ++, sedangkan decrement ialah mengurangi nilai 1 pada kode dengan simbol --. Increment juga sering disebut perulangan positif dengan kode (for-to-do) dan decrement disebut sebagai perulangan negatif dengan kode (for-downto-do).
Berikut merupakan flowchart dari decrement:
Gambar 1. Flowchart decrement
Berdasarkan flowchart di atas, kita mengetahui bahwa batas dan nilai awal, tipe datanya integer, input-nya sama dengan batas, set nilai awal lebih besar sama dengan 1, dan nilai awal berkurang 1 point sampai kode "selesai". Untuk lebih jelasnya, perhatikan contoh ilustrasi berikut:
Gambar 2. Ilustrasi Decrement Nilai Awal 5
Pada ilustrasi di atas saya membuat batas = 5 dan nilai awal = 5. Karena 5 lebih dari 1, maka dihasilkan output 5. Langkah selanjutnya karena ini decrement maka kurangi nilai awal dengan 1, lihat ilustrasi ke-2:
Gambar 3. Ilustrasi Decrement Nilai Awal 4
4 adalah hasil pengurangan nilai awal 5 dengan 1, karena 4 masih lebih besar dari 1, maka tuliskan 4 sebagai output dan begitu seterusnya sampai nilai awal kurang dari 1, seperti pada ilustrasi di bawah:
Gambar 4. Ilustrasi Decrement Nilai Awal 0
Program akan menuliskan "selesai" jika nilai awal kurang dari 1 seperti yang tertera dalam flowchart. Jadi, selain harus mengetahui jumlah perulangan, kode akan selesai jika sudah tidak memenuhi syarat flowchart. Lantas, bagaimana dengan increment? Pada prinsipnya sama, namun nilai akan bertambah sampai nilai batasnya.
Berikut adalah flowchart increment:
Gambar 5. Flowchart Increment
Konsep flowchart increment sama dengan decrement namun yang membedakan adalah set nilai awal sama dengan 1 dan nilai awal akan bertambah 1 point setiap kode sampai nilai batas. Perhatikan ilustrasi berikut:
Gambar 6. Ilustrasi Increment Nilai Awal 1
Gambar 7. Ilustrasi Increment Nilai Awal 2
Gambar 8. Ilustrasi Increment Nilai Awal 6
3 gambar di atas merupakan konsep dasar dari increment, yaitu jika nilai awal kurang dari nilai batas maka output = nilai awal, seperti yang ditujukan gambar 6 dan 7. Namun, jika nilai awal lebih besar dari nilai batas maka "selesai", kode akan berhenti yang mengartikan bahwa program sudah tidak sesuai dengan flowchart.
Pernah ga sih merasa kesulitan dalam menuliskan kode pemograman karena harus diulang? Atau bahkan untuk menentukan bilangan apa yang dimaksud dalam soal? Berikut saya akan memberi 3 contoh kasus yang hanya bisa diselesaikan oleh algoritma for.
Pertama, bagaimana jika seorang programmer ingin membuat kata berulang seperti "selamat datang" atau "terima kasih telah berkunjung!" Maka kode yang digunakan adalah:

for(a=1;a<=5;a++) {
cout<<”selamat datang! \n”
}

Program pengulangan ini menggunakan increment, pada batasan 5, maka kode akan selesai.
Kedua, bagaimana cara menampilkan seluruh bilangan ganjil sampai batas n? Maka bisa menggunakan kode berikut:

#include <iostream.h>
#include <conio.h>
void main(){
int bil, n;
cout << “Masukkan n = “;
cin >> n;
for (bil = 0; bil < n; bil++)
{
if (bil % 2 == 0) cout << bil << “ ”;
}
}
Kasus ketiga, mengetahui bilangan apa yang dimaksud dalam soal, seperti yang tertera dari kode berikut:

for (angka = 1; angka <= 6; angka+=2)
{
cout << “Isi dari angka = “ << angka << endl;
}
Dalam kehidupan sehari-hari, algoritma perulangan juga sering loh kita lakukan, seperti menyikat gigi, memasak nasi di rice cooker, menghitung langkah saat berjalan, berbelanja online, dan mengerjakan latihan fisik. Terima kasih telah membaca, jangan lupa tinggalkan komentar ya:)
Referensi:
Amirul, Damas. 3+ Macam Algoritma Perulangan Beserta Contoh Programnya. https://kodedasar.com/blog/algoritma-perulangan/
Teknik Elektro, Universitas Negeri Malang. (2017/2018). Dasar Pemrograman Modul 4 Perulangan. https://elektro.um.ac.id/wp-content/uploads/2016/04/Dasar-Pemrograman-Modul-4-Perulangan.pdf
Rosyida, S.M. (2023, 11 Juli). Contoh-contoh Algoritma Perulangan Dalam Kehidupan Sehari-hari. https://mamikos.com/info/contoh-contoh-algoritma-perulangan-dalam-kehidupan-sehari-hari-pljr/
Gambar 1. Sumber: https://drive.google.com/file/d/1i3CmeBcxfxy2kqwzEi5Du8NCuHrOEauL/view
Gambar 2. Sumber: Dokumentasi Pribadi
Gambar 3. Sumber: Dokumentasi Pribadi
Gambar 4. Sumber: Dokumentasi Pribadi
Gambar 5. Sumber: https://drive.google.com/file/d/1i3CmeBcxfxy2kqwzEi5Du8NCuHrOEauL/view
Gambar 6. Sumber: Dokumentasi Pribadi
Gambar 7. Sumber: Dokumentasi Pribadi
Gambar 8. Sumber: Dokumentasi Pribadi
Keranjang Belanja