LAPORAN PRAKTIKUM ALGORITMA & STRUKTUR DATA II PROGRAM KASIR KANTIN DENGAN MENGGUNAKAN BAHASA PEMROGRAMAN C++ Disusun Oleh : Dwi Yuliarto 201401051 Dosen Pengampu : Padosroha Marbun, S.Kom SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO PURWOKERTO 2015
Daftar Isi Bab I... 1 Dasar Teori... 1 Dasar-dasar Pemrograman C++... 1 Tipe Data... 2 Interger... 2 Float atau real... 2 Boolean ataulogical... 2 Character atau karakter... 3 1.1 Program halodunia.cpp... 3 1.2 Output Program halodunia.exe... 4 Bab II... 5 Listing Program... 5 2.1 Program kasir.cpp... 5 2.2 Output Program kasir.exe... 12 Penjelasan Listing Program... 17 Bab III... 19 Kesimpulan... 19 Daftar Pustaka... 19
Dasar-dasar Pemrograman C++ Bab I Dasar Teori Suatu bahasa C++ ditulis dari beberapa elemen, antara lain : Pernyataan : Satu atau beberapa ekspresi yang di akhiri dengan tanda titik koma (;) Blok Pernyataan : terdiri dari satu atau beberapa pernyataan yang diawali dengan tanda { dan diakhiri dengan tanda Blok Pernyataan selalu diawali dengan suatu instruksi. Blok Fungsi : terdiri dari satu atau beberapa pernyataan yang dirancang untuk melakukan proses tertentu. Blok fungsi dimulai dengan nama fungsi dan diikuti dengan tanda ( ) dan tanda { /* Program terpendek dalam bahasa C++ */ /* Nama File:... */ /* Identitas Perancang */ /* Deskripsi ringkas dari program */ Main ( ) { #include #include adalah salah satu pengarah praprosesor yang tersedia pada C++. Bentuk Umum : 1. #include <namafile> 2. #include namafile Bentuk pertama mengisyaratkan pencarian file dilakukan pada direktori khusus (direktori file include, yang diset melalui compiler). Sedangkan bentuk kedua menyatakan bahwa pencarian file (namafile) dilakukan pertama kali pada direktori kerja akan dicari pada direktori-direktori yang tercantum pada variable lingkungan yang bernama PATH (Oskar Ika Adi Nugroho, ST., MT., 2015) 1
Tipe Data Tipe data sederhana tunggal berdasarkan jenisnya dibagi menjadi 4 yaitu Interger (Bilangan Bulat), Float atau real (Bilangan decimal / pecahan), Boolean (logical atau tipe data untuk mengambil keputusan, dan Character (karakter) (Yosep Murya K.A, ST., 2002) Interger Adalah sebuah tipe data yang nilainya tidak memiliki titik decimal atau biasa disebut sebagai bilangan bulat. Ada 5 tipe data yang termasuk dalam kelompok interger yaitu short int, Interger, Long Int, byte, word (Yosep Murya K.A, ST., 2002) Type Batas Nilai Format Short Int -128 127 Signed 8 bit Interger -32768 32767 Signed 16 bit Long Int -2147483678 2147483677 Signed 32 bit Byte 0 255 Unsigned 8 bit Word 0 65535 Unsigned 16 bit Float atau real Adalah sebuah tipe data yang nilainya memiliki titik decimal atau biasa disebut sebagai bilangan pecahan (Yosep Murya K.A, ST., 2002) Type Memory Batas Nilai Format Single 4 byte 1.5x10E-45.. 3.4x10E38 7-8 Double 8 byte 5.0x10E-324.. 1.7x10E308 15-16 Extended 10 byte 1.9x10E-4951.. 1.1x10E4932 19-20 Comp 8 byte -2E+63+1.. 2E+63+1 19-20 Boolean ataulogical Adalah tipe data yang hanya mengenal dua buah nilai, yaitu nilai benar (True) dan nilai salah (False). Atau dapat juga dinyatakan dengan simbol 1 untuk nilai benar (True) dan 0 untuk nilai salah (False). 2
Operasiyang dilakukan oleh tipe data Boolean dikenal dengan nama Operasi Boolean atau Operasi Logika, yang menghasilkan nilai Benar (True) dan nilaisalah (False).Operator umum yang digunakan dalam Operasi Logika adalah Not, And, Or, dan Xor. Input NOT (!) AND (&&) OR ( ) A B C!A!B!C A&&B&&C A B C 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 0 0 1 1 0 0 0 1 1 0 1 1 0 1 0 1 0 0 1 1 1 0 0 0 1 0 1 1 1 1 0 0 0 1 1 Character atau karakter Adalah himpunan karakter yang terdiri dari aksara (simbol) yang meliputi digit numeric, character alphabetic, dan special character. Data yang termasuk dalam karakter adalah semua huruf abjad, angka, dan karakter-karakter khusus seperti &, @, %, #, *, dan lainlain. (Yosep Murya K.A, ST., 2002) Contoh Program Sederhana 1.1 Program halodunia.cpp #include <iostream> using namespace std; int main() { cout << "Halo Dunia yang Ceria!!?" << endl << endl; system("pause"); return 0; 3
1.2 Output Program halodunia.exe 4
2.1 Program kasir.cpp Bab II Listing Program #include <iostream> using namespace std; int pilmember, pilmenu, pilmakanan, pilminuman, pilrokok, harga, jrok, jmin, byr, diskon, totbyr; int bymak = 0, bymin = 0, byrok = 0, uangbyr, kembalian, total; //membuat fungsi menu makanan void makanan() { makan: //output list menu makanan cout << "=================================" << endl; cout << "No. Makanan \t\tharga" << endl; cout << "=================================" << endl; cout << "1. gado-gado \t\trp.4,000 \n" << endl; cout << "2. pecel \t\trp.5,500 \n" << endl; cout << "3. Indomie Telor \trp.7,000 \n" << endl; cout << "4. Kembali Ke Main Menu\t" << endl; cout << "=================================" << endl; cout << "inputkan pilihan :"; cin >> pilmakanan; //input pilihan menu makanan //membuat navigasi menu makanan switch (pilmakanan) { case 1: //navigasi ke menu makanan no.1 cout << "Makanan Akan segera di antar" << endl; cout << "silahkan Menunggu sebentar ^_^" << endl; bymak += +4000; goto makan; // kembali ke list makanan case 2: //navigasi ke menu makanan no.2 cout << "Makanan Akan segera di antar" << endl; cout << "silahkan Menunggu sebentar ^_^" << endl; bymak += +5500; goto makan; // kembali ke list makanan case 3: //navigasi ke menu makanan no.3 cout << "Makanan Akan segera di antar" << endl; cout << "silahkan Menunggu sebentar ^_^" << endl; bymak += +7000; goto makan; // kembali ke list makanan case 4: //navigasi ke menu makanan no.4 // keluar ke main menu default: cout << " pilihan yang anda masukan tidak ada di list menu makanan" << endl; 5
goto makan; // kembali ke list makanan //membuat fungsi menu minuman void minuman() { minum: //output list menu minuman cout << "=================================" << endl; cout << "No. Minuman \tharga" << endl; cout << "=================================" << endl; cout << "1. Es Teh Manis \trp.3,000 \n" << endl; cout << "2. Juice \t\trp.5,500 \n" << endl; cout << "3. Air Putih \t\tgratis \n" << endl; cout << "4. Kembali Ke Main Menu\t" << endl; cout << "=================================" << endl; cout << "inputkan pilihan :"; cin >> pilminuman; //input menu minuman //membuat navigasi menu makanan switch (pilminuman) { case 1: //navigasi ke menu minuman no.1 cout << "Anda Membeli Es Teh Manis Sebanyak: 1 Gelas" << endl; cout << "silahkan Menunggu sebentar ^_^" << endl; bymin += +3000; goto minum; // kembali ke list minuman case 2: //navigasi ke menu minuman no.2 cout << "Anda Membeli Juice Sebanyak: 1 Gelas" << endl; cout << "silahkan Menunggu sebentar ^_^" << endl; bymin += +5500; goto minum; // kembali ke list minuman case 3: //navigasi ke menu minuman no.3 cout << "AIR PUTIH Silahkan Ambil Sendiri Sepuasnya" << endl; bymin += +0; goto minum; // kembali ke list minuman case 4: //navigasi ke menu minuman no.4 // keluar ke main menu default: cout << " pilihan yang anda masukan tidak ada di list menu minuman" << endl; goto minum; //membuat fungsi menu rokok void Rokok() { rokok: //output list menu rokok cout << "======================================" << endl; 6
cout << "No. Rokok \t\tharga" << endl; cout << "======================================" << endl; cout << "1. LA Lights \t\trp.15,000 \n" << endl; cout << "2. MARLBORO \t\trp.18,000 \n" << endl; cout << "3. DJARUM SUPER 16 \trp.17,500 \n" << endl; cout << "4. Kembali Ke Main Menu \t\t" << endl; cout << "======================================" << endl; cout << "inputkan pilihan :"; cin >> pilrokok; //input menu rokok //membuat navigasi menu rokok switch (pilrokok) { case 1: //navigasi ke menu rokok no.1 cout << "Anda Membeli LA Lights Sebanyak:"; cin >> jrok; cout << "Anda Membeli LA Ligths Sebanyak: " << jrok << " Bungkus" << endl; //membuat kondisi jika membeli >5 dan <=10 dapat diskon 10% if (jrok>5 && jrok <= 10) { harga = 15000; diskon = (harga * 10) / 100; cout << "Anda Mendapat Diskon 10% Yaitu : Rp." << diskon << endl; cout << "Anda Cukup Membayar : Rp." << totbyr << " Dari Harga : Rp." << byr << "(Sebelum Diskon 10%)" << endl; //membuat kondisi yang lain jika membeli >10 dan <=20 dapat diskon 20% else if (jrok>10 && jrok <= 20) { harga = 15000; diskon = (harga * 20) / 100; cout << "Anda Mendapat Diskon 20% Yaitu : Rp." << diskon << endl; cout << "Anda Cukup Membayar : Rp." << totbyr << " Dari Harga : Rp." << byr << "(Sebelum Diskon 20%)" << endl; //membuat kondisi yang lain jika membeli >20 dapat diskon 30% else if (jrok>20) { harga = 15000; diskon = (harga * 30) / 100; cout << "Anda Mendapat Diskon 30% Yaitu : Rp." << diskon << endl; 7
cout << "Anda Cukup Membayar : Rp." << totbyr << " Dari Harga : Rp." << byr << "(Sebelum Diskon 30%)" << endl; //membuat kondisi selain kondisi diatas maka tidak mendapatkan diskon else { harga = 15000; diskon = 0; cout << "Anda Membayar : Rp." << totbyr << endl; cout << "Sorry, Anda Tidak Mendapat Diskon, Beli >5 untuk mendapatkan Diskon!" << endl; byrok += +totbyr; goto rokok; // kembali ke list rokok case 2: //navigasi ke menu rokok no.2 cout << "Anda Membeli MARLBORO Sebanyak:"; cin >> jrok; cout << "Anda Membeli MARLBORO Sebanyak: " << jrok << " Bungkus" << endl; //membuat kondisi jika membeli >5 dan <=10 dapat diskon 10% if (jrok>5 && jrok <= 10) { harga = 18000; diskon = (harga * 10) / 100; cout << "Anda Mendapat Diskon 10% Yaitu : Rp." << diskon << endl; cout << "Anda Cukup Membayar : Rp." << totbyr << " Dari Harga : Rp." << byr << "(Sebelum Diskon 10%)" << endl; //membuat kondisi yang lain jika membeli >10 dan <=20 dapat diskon 20% else if (jrok>10 && jrok <= 20) { harga = 18000; diskon = (harga * 20) / 100; cout << "Anda Mendapat Diskon 20% Yaitu : Rp." << diskon << endl; cout << "Anda Cukup Membayar : Rp." << totbyr << " Dari Harga : Rp." << byr << "(Sebelum Diskon 20%)" << endl; //membuat kondisi yang lain jika membeli >20 dapat diskon 30% else if (jrok>20) { 8
harga = 18000; diskon = (harga * 30) / 100; cout << "Anda Mendapat Diskon 30% Yaitu : Rp." << diskon << endl; cout << "Anda Cukup Membayar : Rp." << totbyr << " Dari Harga : Rp." << byr << "(Sebelum Diskon 30%)" << endl; //membuat kondisi selain kondisi diatas maka tidak mendapatkan diskon else { harga = 18000; diskon = 0; cout << "Anda Membayar : Rp." << totbyr << endl; cout << "Sorry, Anda Tidak Mendapat Diskon, Beli >5 untuk mendapatkan Diskon!" << endl; byrok += +totbyr; goto rokok; // kembali ke list rokok case 3: //navigasi ke menu rokok no.3 cout << "Anda Membeli DJARUM SUPER 16 Sebanyak:"; cin >> jrok; cout << "Anda Membeli DJARUM SUPER 16 Sebanyak: " << jrok << " Bungkus" << endl; //membuat kondisi jika membeli >5 dan <=10 dapat diskon 10% if (jrok>5 && jrok <= 10) { harga = 17500; diskon = (harga * 10) / 100; cout << "Anda Mendapat Diskon 10% Yaitu : Rp." << diskon << endl; cout << "Anda Cukup Membayar : Rp." << totbyr << " Dari Harga : Rp." << byr << "(Sebelum Diskon 10%)" << endl; //membuat kondisi yang lain jika membeli >10 dan <=20 dapat diskon 20% else if (jrok>10 && jrok <= 20) { harga = 17500; diskon = (harga * 20) / 100; 9
cout << "Anda Mendapat Diskon 20% Yaitu : Rp." << diskon << endl; cout << "Anda Cukup Membayar : Rp." << totbyr << " Dari Harga : Rp." << byr << "(Sebelum Diskon 20%)" << endl; //membuat kondisi yang lain jika membeli >20 dapat diskon 30% else if (jrok>20) { harga = 17500; diskon = (harga * 30) / 100; cout << "Anda Mendapat Diskon 30% Yaitu : Rp." << diskon << endl; cout << "Anda Cukup Membayar : Rp." << totbyr << " Dari Harga : Rp." << byr << "(Sebelum Diskon 30%)" << endl; //membuat kondisi selain kondisi diatas maka tidak mendapatkan diskon else { harga = 17500; diskon = 0; cout << "Anda Membayar : Rp." << totbyr << endl; cout << "Sorry, Anda Tidak Mendapat Diskon, Beli >5 untuk mendapatkan Diskon!" << endl; byrok += +totbyr; goto rokok; // kembali ke list rokok case 4: //navigasi ke menu rokok no.4 // keluar ke main menu default: cout << " pilihan yang anda masukan tidak ada di list rokok" << endl; goto rokok; // kembali ke list rokok //membuat fungsi menu Banner void bannercafe() { cout << "==================================" << endl; cout << " Kantin 'Bu Kodhar' " << endl; cout << " selamat datang di Kantin Kami " << endl; cout << " kantinbukodar@stikomyos.ac.id " << endl; cout << "==================================" << endl; //membuat fungsi menu pembayaran 10
void pembayaran() { mbayar: //menu list pembayaran cout << "total pembelian Makanan \t: Rp." << bymak << endl; cout << "total pembelian Minuman \t: Rp." << bymin << endl; cout << "total pembelian Rokok \t\t: Rp." << byrok << endl; total = bymak + bymin + byrok; cout << "TOTAL \t\t\t\t: Rp." << total << endl; cout << "BAYAR \t\t\t\t: Rp."; cin >> uangbyr; cout << "--------------------------" << endl; //membuat kondisi jika pembayaran kurang dari jumlah bayar if (uangbyr<total) { cout << "Uang Anda Kurang Rp." << total - uangbyr << " -> Mimimum Bayar Rp." << total << endl; goto mbayar; // kembali ke list pembayaran //membuat kondisi jika pembayaran lebih dari jumlah bayar else if (uangbyr>total) { cout << "Kembalian Anda \t\t\t: Rp." << uangbyr - total << endl; cout << "Terima Kasih"; //membuat kondisi jika pembayaran sama dengan jumlah bayar else { cout << "Uang Anda Pas. Terima Kasih" << endl; //jika pembayaran sama dengan jumlah bayar maka akan dikeluarkan dari main menu exit(0); //membuat fungsi main menu int main() { menu: //output main menu bannercafe(); cout << " Main Menu " << endl; cout << "1. Daftar makanan" << endl; cout << "2. Daftar Minuman" << endl; cout << "3. Daftar Rokok" << endl; cout << "4. bayar" << endl; cout << "5. Keluar Kantin" << endl; cout << "==================================" << endl; cout << "masukan pilihan :"; cin >> pilmenu; //input main menu //membuat navigasi main menu switch (pilmenu) { case 1: //navigasi ke main menu no.1 11
bannercafe(); //memanggil fungsi Banner makanan(); //memanggil fungsi menu makanan goto menu; // kembali ke list main menu case 2: //navigasi ke main menu no.2 bannercafe(); //memanggil fungsi Banner minuman(); //memanggil fungsi menu minuman goto menu; // kembali ke list main menu case 3: //navigasi ke main menu no.3 bannercafe(); //memanggil fungsi Banner Rokok(); //memanggil fungsi menu rokok goto menu; // kembali ke list main menu case 4: //navigasi ke main menu no.4 pembayaran(); //memanggil fungsi Pembayaran goto menu; // kembali ke list main menu case 5: //navigasi ke main menu no.5 cout << "Terima Kasih Sudah Mampir Ke Kantin Kami"; exit(0); default: cout << "Pilihan Tidak Ada, Pilih Menu 1-5"; 2.2 Output Program kasir.exe User Interface Menu Kantin : 12
Langkah 1 : Masukkan pilihan no.1 untuk membeli makanan Langkah 2 : inputkan 1 untuk memilih menu makanan gado-gado order 1 : - Gado-gado : Rp.4,000 Langkah 3 : inputkan 4 untuk memilih Main Menu 13
Langkah 4 : Masukkan pilihan no.2 untuk membeli minuman. Langkah 5 : inputkan 1 untuk memilih menu minuman Juice order 1 : - Gado-gado : Rp.4,000 Oder 2 : - Juice : Rp.5,500 Langkah 6 : inputkan 4 untuk memilih Main Menu Langkah 7 : Masukkan pilihan no.3 untuk membeli rokok 14
Langkah 8 : inputkan 1 untuk memilih menu rokok LA Lights. order 1 : - Gado-gado : Rp.4,000 Oder 2 : - Juice : Rp.5,500 Oder 3: - LA Lights : Rp.15,000 Langkah 9 : inputkan 4 untuk memilih Main Menu. Langkah 9 : inputkan 4 untuk memilih Bayar. Maka akan keluar Tagihan berdasarkan order yang dipilih sebelumnya yaitu : Order 1 : Gado-gado : Rp.4,000 Order 2 : Juice : Rp.5,500 Order 3 : LA Lights : Rp.15,000 + Total : Rp.24,500 Langkah 10 : Selanjutnya Kita diminta memasukkan jumlah uang yang dibayarkan jika pembayaran kurang dari Total Tagihan maka akan memunculkan hasil berikut : 15
Langkah 11 : Selanjutnya Kita diminta memasukkan kembali jumlah uang yang dibayarkan jika pembayaran lebih dari Total Tagihan maka akan memunculkan hasil berikut : Program Closed Program Diskon Pembelian Disini pemrogram hanya menerapkan diskon pada pembelian Rokok dengan ketentuan sebagai berikut : Jika Pembelian < 5 bungkus maka Tidak mendapatkan diskon Jika Pembelian >5 dan 10 maka akan mendapatkan diskon sebesar 10% Jika Pembelian >10 dan 20 maka akan mendapatkan diskon sebesar 20% Jika Pembelian >20 maka akan mendapatkan diskon sebesar 30% Untuk output programnya sebagai berikut: Diskon 10% 16
Diskon 20% Diskon 30% Penjelasan Listing Program #include adalah salah satu pengarah praprosesoryang tersedia pada C++ Int adalah tipe data untuk bilangan interger atau tipe bilangan bulat. void adalah fungsi yang sering disebut juga prosedur. Disebut void karena fungsi tersebut tidak mengembalikan suatu nilai keluaran yang didapat dari hasil proses fungsi tersebut. switch adalah pernyataan yang digunakan untuk menjalankan salah satu pernyataan dari beberapa kemungkinan pernyataan. Perintah switch dan break memiliki sifat yang hampir sama dengan else if. Namun penggunaannya lebih sempit, karena perintah ini hanya khusus untuk memeriksa data yang bertipe karakter atau integer. case pernyataan switch case, memungkinkan kita untuk memilih salah satu pilihan dari berbagai ekspresi. pemilihan dilakukan berdasarkan nilai ekspresi yang telah ditetapkan. pemilihan berbagai kemungkinan nilai switch dilakukan satu demi satu berdasarkan nilai case. jika nilai dalam ekspresi switch tidak ada 17
goto yang sesuai dengan nilai-nilai case, maka pilihan akan secara otomatis ke alihkan ke default. Intruksi goto dalam pemrograman bahasa C++ berfungsi membuat lompatan dalam program. Tujuan dari lompatan diidentifikasikan dengan label, label merupakan suatu identifier yang diikuti dengan tanda titik dua (:) yang berisikan argumenargumen. cout<< cin>> adalah sebuah perintah yang akan dieksekusi oleh compiler dan merupakan perintah yang akan dikerjakan. adalah sebuah syntax untuk melakukan fungsi masukkan (input) 18
Bab III Kesimpulan Program kasir ini dibuat untuk memenuhi tugas mata kuliah Algoritma dan Struktur Data II dalam pengembangan pemrograman dan implementasi dari tugas-tugas pemrograman sebelumnya. Demikian Laporan ini dibuat, semoga dapat bermanfaat bagi yang membacanya. $00000oooo TERIMA KASIH oooo00000$ Daftar Pustaka Dr.Suarga, M.Sc., M.Math., Ph.D. (2012). ALGORITMA dan PEMROGRAMAN. Yogyakarta: CV.Andi Offset. Oskar Ika Adi Nugroho, ST., MT. (2015). Modul Praktikum Algoritma & Pemrograman I. Purwokerto: STIKOM Yos Sudarso. Yosep Murya K.A, ST. (2002). Struktur Data Dalam Ilustrasi Eclipse Indigo. Yogyakarta: CAPS (Center of Academic Publishing Service). 19