TUGAS BESAR PRAKTIKUM TEKNOLOGI INFORMAT

===

CAFE SEDERHANA

Disusun Oleh: Kelompok 21

1. Moh. Rizal Tahqiqi (21070116130071)

2. Dinah Asma R. (21070116140085)

3. Dwi ‘Sa Nu (21070116140088)

4. Dita Rizkiana (21070116140100)

PROGRAM STUDI TEKNIK INDUSTRI FAKULTAS TEKNIK UNIVERSITAS DIPONEGORO SEMARANG 2016

LEMBAR PENGESAHAN TUGAS BESAR PRAKTIKUM TEKNOLOGI INFORMATIKA CAFE SEDERHANA

Semarang, 24 November 2016

Asisten,

Ardanesia NIM. 21070113130089

Mengetahui, Koordinator Praktikum

Arlita Rahma Widyasrini NIM. 21070114120018

KATA PENGANTAR

Puji syukur kami panjatkan kepada Tuhan Yang Maha Esa yang telah melimpahkan rahmat serta karunia-Nya sehingga kami dapat menyelesaikan Tugas Besar Praktikum Teknologi Informatika dengan program yang kami buat, yaitu Cafe Sederhana. Laporan ini disusun untuk memenuhi nilai tugas mata kuliah Teknologi Informatika.

Tak lupa kami sampaikan terima kasih kepada seluruh pihak yang telah memberi bantuan berupa masukan, motivasi, serta bimbingan dalam penyusunan tugas besar praktikum Teknologi Informatika “Cafe Sederhana” ini.

Kami menyadari bahwa laporan tugas besar ini masih jauh dari sempurna dan masih banyak kekurangan. Oleh karena itu, kritik dan saran yang membangun sebagai pedoman dalam melangkah ke arah yang lebih baik sangat diharapkan. Semoga laporan tugas besar ini dapat menjadi masukan yang berarti dan bermanfaat bagi dunia ilmu pengetahuan. Terima kasih.

Semarang, 24 November 2016

BAB I PENDAHULUAN

1.1 Latar Belakang

Perkembangan jaman mengharuskan efisiensi dan keakuratan dalam melaksanakan segala hal. Pada saat ini, hampir kehidupan manusia tidak akan lepas dengan teknologi. Dari permasalahan yang kecil hingga komples hamir secara keseluruhan dapat diselesaikan dengan menggunakan bantuan dari teknologi. Pada umumnya teknologi yang digunakan untuk menyelesaikan suatu masalah dinamakan dengan program. Pada jaman dahulu, program dibuat sangat sederhana dan dibuat dengan alat pembuat program yang sangat biasa. Namun, di jaman sekarang ini alat pembuat program sudah berkembang hingga memudahkan pengguna untuk membuat suatu program. Program dibuat dengan menggunakan bahasa yang disebut bahasa pemrograman. Bahasa pemrograman hingga saat ini sudah dikembangkan menjadi beberapa jenis yang masing-masing mempunyai kekurangan dan kelebihan masing- masing. Salah satu dari banyak jenis bahasa pemrograman adalah bahasa pemrograman free pascal. Free Pascal merupakan salah satu bahasa pemrograman bahasa pascal yang sangat cocok untuk digunakan bagi pemula. Bahasa Free Pascal memungkinkan pengguna untuk membuat suatu program yang dapat digunakan untuk menghasilkan suatu solusi dari suatu masalah.

Kehadiran bahasa pemrograman yang digunakan untuk membuat suatu program sangat membantu kegiatan ekonomi dalam segala aspek. Kehadiran program-program membantu pekerjaan manusia sehingga memungkinkan untuk meminimalisir human error . Salah satu manfaat hadirnya program dalam kegiatan ekonomi adalah digunakannya program untuk melakukan proses reservasi makanan disuatu rumah makan atau cafe. Pada umunya kegiatan reservasi dilakukan oleh satu atau dua orang pelayan yang secara ekonomi hal ini sangatlah tidak efektif dan efisien. Adanya program reservasi makanan di cafe akan memberikan banyak kemudahan baik untuk tamu dan untuk pelayan. Dengan hadirnya program reservasi cafe ini membuat tamu hanya melakukan reservasi melalui program yang sudah disediakan di meja masing- Kehadiran bahasa pemrograman yang digunakan untuk membuat suatu program sangat membantu kegiatan ekonomi dalam segala aspek. Kehadiran program-program membantu pekerjaan manusia sehingga memungkinkan untuk meminimalisir human error . Salah satu manfaat hadirnya program dalam kegiatan ekonomi adalah digunakannya program untuk melakukan proses reservasi makanan disuatu rumah makan atau cafe. Pada umunya kegiatan reservasi dilakukan oleh satu atau dua orang pelayan yang secara ekonomi hal ini sangatlah tidak efektif dan efisien. Adanya program reservasi makanan di cafe akan memberikan banyak kemudahan baik untuk tamu dan untuk pelayan. Dengan hadirnya program reservasi cafe ini membuat tamu hanya melakukan reservasi melalui program yang sudah disediakan di meja masing-

1.2 Rumusan Masalah

Berdasarkan latar belakang di atas, maka rumusan masalah yang didapat adalah bagaimana cara dari Cafe Sederhana untuk merancang self-service sebagai upaya untuk meminimalisasi human error yang terjadi apabila pelayanan pelanggan dilakukan secara manual, apalagi Cafe Sederhana merupakan Cafe yang selalu ramai pengunjung.

1.3 Tujuan Masalah

1. Untuk menjelaskan cara meminimalisasi human error pada pelayanan pelanggan di Cafe Sederhana

2. Untuk mengetahui perancangan sistem pelayanan self-service di Cafe Sederhana

1.4 Batasan Masalah

Laporan yang disusun akan memuat tentang pemrograman dalam teknologi informatika. Untuk menghindari adanya pembahasan yang terlalu luas dan agar sesuai dengan pokok bahasan yang ditentukan, maka penyusun memberikan batasan permasalahan. Pada laporan ini penyusun akan membahas masalah seputar ruang lingkup sistem pemrograman yang dibuat dengan Free Pascal untuk program pelayanan pelanggan di Café Sederhana.

1.5 Sistematika Penulisan Bab I

Pendahuluan

Bab ini akan membahas tentang latar belakang dari penyusunan program Cafe Sederhana ini beserta rumusan masalah, tujuan masalah, dan batasan masalahnya.

Bab II Dasar Teori

Bab ini akan membahas pemrograman dan bahasa pemrograman, algoritma, pascal, procedure, function, dan operator.

Bab III Flowchart

Dalam bab ini dijelaskan flowchart sesuai dengan program pascal Cafe Sederhana yang telah dibuat

Bab IV Program Aplikasi

Dalam bab ini akan ditunjukkan screenshoot hasil dari contoh penggunaan program Free Pascal pelayanan pelanggan di Cafe Sederhana.

Bab V Listing dan Analisa Program

Dalam bab ini akan ditunjukkan listing dari program Free Pascal pelayanan pelanggan di Cafe Sederhana beserta analisanya.

Bab VI Penutup

Dalam bab ini akan dipaparkan kesimpulan dan saran dari pembuatan program Free Pascal pelayanan pelanggan di Cafe Sederhana.

BAB II DASAR TEORI

2.1 Pemrograman dan Bahasa Pemrograman

Komputer tidak bisa melaksanakan sesuatu kalau tidak ada instruksi yang mengaturnya. Instruksi-instruksi yang diberikan kepada komputer agar komputer dapat melaksanakan tugas-tugas tertentu dikenal dengan sebutan program. Sebuah program berisi sekumpulan kode yang bermacam-macam dan bergantung pada bahasa pemrograman yang digunakan (Kadir, 1997).

Bahasa pemrograman adalah notasi yang digunakan untuk menulis program (komputer). Bahasa ini dibagi menjadi tiga tingkatan yaitu bahasa mesin, bahasa tingkat rendah dan bahasa tingkat tinggi. Bahasa mesin (machine language) berupa microinstruction atau hardwire, programnya sangat panjang dan sulit dipahami. Keunggulannya adalah prosesnya sangat cepat dan tidak perlu interpreter atau penterjemah. Bahasa tingkat rendah (low level language) berupa macroinstruction (assembly). Programnya panjang dan sulit dipahami walaupun prosesnya cepat. Bahasa tingkat tinggi (high level language) menyerupai struktur bahasa manusia sehingga mudah dipahami. Bahasa ini tidak tergantung pada arsitektur mesin tetapi memerlukan penterjemah berupa compiler atau interpreter.

2.2 Algoritma

Ditinjau dari asal usul kata, kata algoritma sendiri mempunyai sejarah yang aneh. Orang hanya menemukan kata algorism yang berarti proses menghitung dengan angka Arab. Kata algorism berasal dari nama penulis buku Arab yang terkenal, yaitu Abu Ja’far Muhammad ibnu Musa al-Khuwarizmi (al-Khuwarizmi dibaca orang Barat

menjadi algorism ). Al-Khuwarizmi menulis buku yang berjudul Kitab al jabar wal- muqabala yang artinya “Buku pemugaran dan pengurangan”. Dari judul buku tu kita juga memperoleh akar kata “aljabar” ( algebra ). Perubahan dari kata algorism menjadi algorithm muncul karena kata algorism sering dikelirukan dengan arithmetic , sehingga akhiran –sm berubah menjadi –thm. Karena perhitungan dengan angka Arab sudah menjadi hal yang biasa, maka lambat laun kata algorithm berangsur-angsur dipakai menjadi algorism ). Al-Khuwarizmi menulis buku yang berjudul Kitab al jabar wal- muqabala yang artinya “Buku pemugaran dan pengurangan”. Dari judul buku tu kita juga memperoleh akar kata “aljabar” ( algebra ). Perubahan dari kata algorism menjadi algorithm muncul karena kata algorism sering dikelirukan dengan arithmetic , sehingga akhiran –sm berubah menjadi –thm. Karena perhitungan dengan angka Arab sudah menjadi hal yang biasa, maka lambat laun kata algorithm berangsur-angsur dipakai

2.3 Pascal

Sebagai bahasa pemrograman yang terstruktur, bahasa ini menyediakan sejumlah control (berupa REPEAT, WHILE, dan FOR) serta mndukung pembuatan program yang tersusun atas sejumlah blok-blok kecil. Blok-blok kecil ini dapat dipakai untuk membentuk blok yang lebih besar, dan secara keseluruhan membentuk program kerja.

Pencipta bahasa Pascal adalah Niklaus Wirth (EidgenOssische Technishe Hochshule, Zurich, Swiss). Nama pascal sendiri diambil untuk mengenang dan mengabadikan seorang matematikawan Perancis bernama Blaise Pascal (1623-1662), penemu mesin penjumlah mekanis pertama kali. Kepopuleran pascal berkembang seiring dengan berkembangnya PC. Pada platform ini juga terdapat sejumlah kompiler pascal. Salah satunya Free Pascal , yang dikeluarkan Borland International . Free Pascal menyediakan suatu lingkungan terpadu (IDE) yang di antaranya berisi kompiler (untuk mengkompilasi program menjadi suatu objek yang dipahami oleh komputer), debugger (untuk membantu mencari kesalahan program), linker (untuk menggabungkan file objek dan file pustaka serta membentuk file executable ), dan editor (untuk menulis program sumber) (Kadir, 1997).

Dalam Free Pascal terdapat beberapa menu seperti menu bar, menu file, menu edit, menu search, menu run, menu compiler, dan menu debug yang berfungsi sesuai dengan pilihan-pilihan yang berada di pilihan di tiap menunya. Program pascal di buat untuk memudahkan langkah-langkah yang sering dilakukan agar terhindar dari pembuatan suatu pertanyaan-pertanyaan yang sama , dan suatu modul program hanya sekali ditetapkan dan bisa dipanggil dari beberapa tempat dari program. Sekumpulan data yang berbeda juga dapat dipruoses setia kali modul tersebut dijalankan.

2.4 Procedure

Suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian). Prosedur diawali dengan kata cadangan prosedur di dalam bagian deklarasi prosedur. Prosedur dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan judul prosedurnya. Prosedur berguna untuk mengumpulkan suatu statement-statement yang dapat dijalankan menjadi satu dalam blok dan untuk menjalankan kembali hanya dengan menuliskan nama prosedur yang menampungnya yaitu pemanggilan dilakukan pada program utama. Struktur prosedur:

- JUDUL (header) : nama prosedur dan deklarasi parameter (jika ada) - DEKLARASI

: mengumumkan nama-nama dan tipe data - ALGORITMA

: badan prosedur (instruksi)

Prosedur sendiri memiliki sebuah keuntungan diantara lain adalah :

1. Prosedur dapat memecahkan program pada unit logika yang lebih kecil dan program akan menjadi semakin terstruktur sehingga pencarian kesalahan mudah dilakukan

2. Prosedur yang di gunakan dalam suatu program dapat bertindak sebagai suatu blok yang dibangun untuk program yang lain (Jogiyanto, 1989)

Penggunaan/pemanggilan prosedur: - Prosedur bukan program yang berdiri sendiri

- Prosedur tidak dapat dieksekusi secara langsung - Intruksi-instruksi di dalam prosedur dapat dilaksanakan bila prosedur itu diakses - Prosedur di akses dengan cara memanggil namanya dari program pemanggil

(misalnya dari program utama tau modul program lainnya) - Jika prosedur tanpa parameter maka pemanggilannya cukup dengan nama

prosedur saja (Jogiyanto, 1989).

2.5 Function

Fungsi secara garis besar sama dengan prosedur yang membedakan adalah nama fungsi harus di deklarasikan dengan type datanya. Fungsi adalah suatu bagian program yang mengerjakan satu tugas dan hasilnya biasanya hanya satu. Fungsi juga dapat menerima parameter-parameter seperti prosedur yaitu parameter nilai dan parameter variabel. Selain itu fungsi juga diperbolehkan memiliki deklarasi lokal tersendiri (Jogiyanto, 1989). Jenis-jenis fungsi antara lain:

1. Fungsi Tanpa Parameter: Semua proses dilakukan di dalam Fungsi yaitu input data, hitung, dan cetak hasil.

2. Fungsi Dengan Parameter Input: Fungsi ini hanya menggunakan parameter formal input yang bertugas menerima data yang dikirim ke dalam Fungsi.

3. Fungsi Dengan Parameter Output: Fungsi ini hanya menggunakan parameter output. Perlu diperhatikan bahwa parameter output didahului oleh kata kunci Var.

4. Fungsi Dengan Parameter Input dan Output: Fungsi ini menggunakan parameter format input dan output. Fungsi ini akan menerima nilai atau data dari variabel a dan yang dikirim ke dalam lewat parameter input. Kemudian mengirim hasil program utama lewat variabel output dan akan diterima (Jogiyanto, 1989).

Perbedaan fungsi dengan prosedur:

1. Pada fungsi suatu niai yang di kirim baik terdapat pada nama fungsinya (kalau pada prosedur pada parameter yang di kirimkan secara acauan)

2. Karena nilai baik berada di dalam fungsi tersebut maka fungsi tersebut dapat langsung digunakan untuk dicetak hasilnya

3. Atau nilai fungsi tersebut dapat juga langsung dipindahkan ke pengenal variabel yang lainnya, sedangkan pada prosedur nama prosedur tidak dapat digunakan langsung yang dapat langsung digunakan adalah parameternya yang mengandung nilai baik (Jogiyanto, 1989).

2.6 Operator

Operator didefinisikan sebagai sesuatu yang digunakan untuk melakukan operasi- operasi tertentu misalnya operasi aritmatika, penggabungan string dan banyak lagi yang lainnya.

1. Operator assignment : operator pengerjaan yang menggunakan symbol titik dua dan di ikuti dengan tanda sama dengan untuk mengisi suatu variabel (:=)

2. Operator aritmatika : operator yang di temukan untuk menghitung nilai operasi matematika dan dapat berperan memberikan tanda positif dan negative pada suatu angka

Tabel 2.1 Sintaks Operator Aritmatika Unary

Tanda positif

Tanda negative

Tabel 2.2 Sintaks Operator Aritmatika Binary

3. Operator string Operator string adalah suatu operator yang berfungsi untuk menyambungkan string yang satu dengan string yang lainnya. Dalam operasi string hanya mempunyai sebua h operator, yaitu operator ‘+’. Bila operator ini di gunakan untuk dua buah elemen string maka akan menjadi penggabungan dua buah string menjadi satu. Panjang maksimal suatu string yang diijinkan oleh pascal adalah 255 karakter (Jogiyanto, 1989).

4. Operator perbandingan Operator perbandingan yang membandingkan nilai dari 2 operand, hasilnya selalu salah satu dari TRUE atau FALSE. Hasil perbandingan akan bernilai TRUE jika kondisi perbandingan adalah benar, atau FALSE jika kondisinya salah.

Tabel 2.3 Sintaks Operator Perbandingan

15=5 (output false) >=

Sama dengan

80>17(output true) <

Lebih besar/sama dengan

80<17(output false) <>

Lebih kecil

Tidak sama dengan

36<>14 ( output true)

5. Operator boolean atau logika Suatu operator yang di gunakan untuk membandingkan suatu 2 kondisi logika, yaitu logika benar (TRUE) dan logika salah (FALSE), operator ini sering digunakan untuk keluar dari proses pengulangan. Jenis operand dalam operator ini adalah boolean.

Tabel 2.4 Sintaks Operator Boolean/Logika

Operator

Contoh And

Keterangan

Menghasilkan true jika hasil operand TRUE and FALSE true

(output : false) Or

Menghasilkan true jika salah satu TRUE or FALSE operand true

(output: true) Xor

Menghasilkan true jika kedua operand TRUE or FLASE berbeda nilai

(output : true) Not

Menghasilkan true jika operand false TRUE or FALSE (output: true)

6. Operator bitwise Adalah suatu operator yang khusus untuk menangani suatu proses logika pada bilangan biner/binary yang bilangan biner/binary sendiri memiliki arti yaitu suatu jenis bilangan yang hanya terdiri dari 2 jenis angka yakni 0 dan 1 (Kadir, 1997).

Tabel 2.5 Sintaks Operator Bitwise

Operator

Contoh Not

Keterangan

Not 01 (output:1100) And

Bitwise NOT

1101 and 01 (output:0001) <<

Bitwise AND

Bitwise shift left

01< 1 (output: 0110)

7. Operator set atau himpunan Suatu operator yang berisi kumpulan dari nilai-nilai yang memiliki kesamaan sifat yaitu tipe data yang sama dan urutan penulisannya tidak diperhatikan, setiap objek dalam himpunan disebut dengan anggota elemen himpunan (Kadir, 1997).

Tabel 2.6 Sintaks Operator Set/Himpunan

Menambahkan elemen baru

Exclude

Mengeluarkan elemen baru

In Cek apakah ada di dalam himpunan

8. Operator address atau pointer Operator address adalah operator yang berisikan alamat memory sebagai nilainya dan berbeda dengan variabel yang biasa dengan nilai tertentu. Dengan demikian operator ini di khususkan untuk tipe data pointer/address yang secara langsung menunjuk ke satu nilai tertentu dan variabel yang secara tidak langsung menunjuk ke suatu nilai (Jogiyanto, 1989).

Tabel 2.7 Sintaks Operator Address/Pointer

Menampilkan alamat

@nama_variabel

memory suatu variable

Menampilkan nilai

Nama_variabel

variabel dari alamat memory

BAB III FLOWCHART

3.1 Flowchart

Berikut ini adalah flowchart dari program Cafe Sederhana:

Gambar 3.1 Flowchart Program Cafe Sederhana

Setelah program dibuka (mulai), maka kita diharuskan untuk menginput username dan password . Jika username dan password salah, maka kita diminta untuk memasukkan username dan password lagi hingga benar. Bila username dan password sudah benar, maka kita harus memasukkan captcha untuk memverifikasi bahwa data yang kita isi itu tidak ada kesalahan/kecerobohan. Kemudian, kita mulai memasukkan jumlah pelanggan untuk mendapatkan nomor meja. Dalam satu kali pemesanan, kita Setelah program dibuka (mulai), maka kita diharuskan untuk menginput username dan password . Jika username dan password salah, maka kita diminta untuk memasukkan username dan password lagi hingga benar. Bila username dan password sudah benar, maka kita harus memasukkan captcha untuk memverifikasi bahwa data yang kita isi itu tidak ada kesalahan/kecerobohan. Kemudian, kita mulai memasukkan jumlah pelanggan untuk mendapatkan nomor meja. Dalam satu kali pemesanan, kita

Gambar 3.1 Flowchart Program Cafe Sederhana (Lanjutan)

Gambar 3.1 Flowchart Program Cafe Sederhana (Lanjutan)

Dalam memilih menu, telah disediakan pilihan paket 1, paket 2, paket 3, paket 4, dan paket 5. Jika kita tidak mau memilih paket yang tersedia, maka kita bisa memesannya secara terpisah. Dalam bagan, dijelaskan bahwa bila kita memilih paket 1, maka dalam pesanan kita akan tertulis paket 1. Namun jika tidak atau kita mau menambahkan menu lain, maka kita bisa memilih paket 2, paket 3, paket 4, paket 5, bakwan bakar, batagor kuah, lumpia basah, cireng isi, es krim, es campur, nasi goreng, sate, dan steak jawa. Bila pesanan telah terekap, maka daftar menu pilihan kita sudah selesai ditulis. Selanjutnya, kita akan diberi tawaran apakah mau mengubah pesanan Dalam memilih menu, telah disediakan pilihan paket 1, paket 2, paket 3, paket 4, dan paket 5. Jika kita tidak mau memilih paket yang tersedia, maka kita bisa memesannya secara terpisah. Dalam bagan, dijelaskan bahwa bila kita memilih paket 1, maka dalam pesanan kita akan tertulis paket 1. Namun jika tidak atau kita mau menambahkan menu lain, maka kita bisa memilih paket 2, paket 3, paket 4, paket 5, bakwan bakar, batagor kuah, lumpia basah, cireng isi, es krim, es campur, nasi goreng, sate, dan steak jawa. Bila pesanan telah terekap, maka daftar menu pilihan kita sudah selesai ditulis. Selanjutnya, kita akan diberi tawaran apakah mau mengubah pesanan

Gambar 3.1 Flowchart Program Cafe Sederhana (Lanjutan)

Setelah itu kita akan melakukan transaksi pembayaran. Dalam pembayaran, kita akan ditawarkan dalam beberapa pilihan diantaranya adalah cash, debit, dan kredit. Jika kita melakukan transaksi melalu pembayaran cash kita akan mendapatkan struk pembayaran langsung dan akhirnya pemesanan berhasil. Jika kita melakukan transaksi melalui debit kita akan diperintahkan untuk mema sukan ‘6 digit pin’ dan akan ada tampilan apakah pin itu ‘benar?’. Jika benar, kita akan mendapatkan struk dari transaksi debit dan pemesanan telah berhasil. Sedangkan bila pin salah, maka kita harus memasukkan pin lagi. Jika kita melakukan transaksi melalui kredit kita akan diperintahkan untuk memasukan nomer kartu dan CVV sebanyak tiga digit angka lalu akan ditampilkan apakah nomer kartu CVV itu ‘benar?’, jika benar kita akan mendapatkan struk pembayaran dan pemesanan telah berhasil dilakukan. Bila salah, Setelah itu kita akan melakukan transaksi pembayaran. Dalam pembayaran, kita akan ditawarkan dalam beberapa pilihan diantaranya adalah cash, debit, dan kredit. Jika kita melakukan transaksi melalu pembayaran cash kita akan mendapatkan struk pembayaran langsung dan akhirnya pemesanan berhasil. Jika kita melakukan transaksi melalui debit kita akan diperintahkan untuk mema sukan ‘6 digit pin’ dan akan ada tampilan apakah pin itu ‘benar?’. Jika benar, kita akan mendapatkan struk dari transaksi debit dan pemesanan telah berhasil. Sedangkan bila pin salah, maka kita harus memasukkan pin lagi. Jika kita melakukan transaksi melalui kredit kita akan diperintahkan untuk memasukan nomer kartu dan CVV sebanyak tiga digit angka lalu akan ditampilkan apakah nomer kartu CVV itu ‘benar?’, jika benar kita akan mendapatkan struk pembayaran dan pemesanan telah berhasil dilakukan. Bila salah,

3.2 Pseudocode Judul

Program cafe sederhana {program yang digunakan untuk membantu melaksanakan kegiatan reservasi makanan pada suatu cafe}

Deklarasi

Username , password : string {tipe data username dan password adalah tipe data string} Captcha,jum_orang,pil, pil_bayar,cvv,pin ,jumlah pesanan:integer {tipe data variabel

captcha,jum_orang,pil,pi_bayar,cvv,pin adalah integer}

Deskripsi

begin {perintah untuk memulai program cafe sederhana} repeat {pengulangan untuk proses login} input ( username , password ) {perintah memasukan username dan password } Read( username , password ) { username dan password dibaca oleh program} Until ( username )=true and ( password )=true {kondisi perulangan yang menyatakan akhir dari perulangan} Repeat {perulangan untuk melakukan validasi melalui captcha} Input (captcha) {perintah memasukan validasi captcha yang sudah disediakan secara acak} Read (captcha) {validasi captcha yang sudah dimasukan dibaca oleh program} Until (captcha)=true {kondisi perulangan yang menyatakan akhir dari perulangan validasi} Input(jum_orang) {perintah memasukan jumlah orang (tamu) pada cafe sederhana} Read(jum_orang) { jumlah orang yang diisikan dibaca oleh program sebagai jum_orang} If (jum_orang)>30 then do {pemilihan untuk jumlah orang lebih dari 30 orang} Write(silahkan bagi menjadi 2 kelompok dibawah 30 orang) {perintah jika orang lebih dari 30}

Else {pilihan lain dari pemilihan} If (jumlah orang)<31 and (jumlah orang)>15 then do {pemilihan untuk jumlah orang lebih dari 15 orang dan kurang dari 31 orang} Write(silahkan pindah ke meja VIP) {perintah ke meja VIP} Else {pilihan lain dari pemilihan} If (jumlah orang)<16 and (jumlah orang)>0 then do {pemilihan untuk jumlah orang lebih dari 0 orang dan kurang dari 16 orang} Write(anda menempati meja regular) {perintah ke meja regular} Endif {akhir pemilihan pertama} Endif {akhir pemilihan kedua} Endif {akhir pemilihan ketiga}

Repeat {perulangan untuk melakukan validasi melalui captcha} Input (captcha) {perintah memasukan validasi captcha yang sudah disediakan secara acak} Read(captcha) {validasi captcha yang sudah dimasukan dibaca oleh program} Until (captcha)=true {kondisi perulangan yang menyatakan akhir dari perulangan validasi} Write(menu) {menulis menu yang ada di dalam cafe sederhana} Repeat {perulangan pemilihan menu jika pilihan awal ingin diubah} Input(pil) { user diminta memasukan pilihan menu yang ingin dipesan}

If (pil) <─ 1 then do {pemilihan untuk memilih menu 1} Input(jumlah pesanan) { user diharuskan mengisi jumlah pesanan dari menu yang dipesan} Read( jumlah pesanan) {program membaca jumlah pesanan dari suatu menu yang diisikan user } Total harga < ─ jumlah pesanan *harga {perhitungan total harga dari menu yang dipilih} Else {pilihan lain dari pemilihan}

If (pil) <─ 2 then do {pemilihan untuk memilih menu 1}

Input(jumlah pesanan) { user diharuskan mengisi jumlah pesanan dari menu yang dipesan} Read(jumlah pesanan) {program membaca jumlah pesanan dari suatu menu yang diisikan user } Total harga <─ jumlah pesanan *harga {perhitungan total harga dari menu yang dipilih} Else {pilihan lain dari pemilihan}

If (pil) <─ 3 then do {pemilihan untuk memilih menu 1} Input(jumlah pesanan) { user diharuskan mengisi jumlah pesanan dari menu yang dipesan} Read( jumlah pesanan) {program membaca jumlah pesanan dari suatu menu yang diisikan user } Total harga <─ jumlah pesanan *harga {perhitungan total harga dari menu yang dipilih} Else {pilihan lain dari pemilihan}

If (pil) <─ 4 then do {pemilihan untuk memilih menu 1} Input(jumlah pesanan) { user diharuskan mengisi jumlah pesanan dari menu yang dipesan} Read( jumlah pesanan) {program membaca jumlah pesanan dari suatu menu yang diisikan user } Total harga <─ jumlah pesanan *harga {perhitungan total harga dari menu yang dipilih}

Else {pilihan lain dari pemilihan} If (pil) <─ 5 then do { pemilihan untuk memilih menu 1 } Input(jumlah pesanan) { user diharuskan mengisi jumlah pesanan dari menu yang dipesan } Read( jumlah pesanan) { program membaca jumlah pesanan dari suatu menu yang diisikan user } Total harga <─ jumlah pesanan *harga { perhitungan total harga dari menu yang

dipilih} Else { pilihan lain dari pemilihan } If (pil) <─ 6 then do { pemilihan untuk memilih menu 1 }

Input(jumlah pesanan) { user diharuskan mengisi jumlah pesanan dari menu yang dipesan } Read( jumlah pesanan) { program membaca jumlah pesanan dari suatu menu yang diisikan user } Total harga <─ jumlah pesanan *harga { perhitungan total harga dari menu yang dipilih } Else { pilihan lain dari pemilihan }

If (pil) <─ 7 then do { pemilihan untuk memilih menu 1 } Input(jumlah pesanan) { user diharuskan mengisi jumlah pesanan dari menu yang dipesan } Read( jumlah pesanan) { program membaca jumlah pesanan dari suatu menu yang diisikan user } Total harga <─ jumlah pesanan *harga { perhitungan total harga dari menu yang

dipilih} Else { pilihan lain dari pemilihan }

If (pil) <─ 8 then do { pemilihan untuk memilih menu 1 } Input(jumlah pesanan) { user diharuskan mengisi jumlah pesanan dari menu yang dipesan } Read( jumlah pesanan) { program membaca jumlah pesanan dari suatu menu yang diisikan user }

Total harga <─ jumlah pesanan *harga { perhitungan total harga dari menu yang dipilih} Else { pilihan lain dari pemilihan }

If (pil) <─ 9 then do { pemilihan untuk memilih menu 1 } Input(jumlah pesanan) { user diharuskan mengisi jumlah pesanan dari menu yang dipesan } Read( jumlah pesanan) { program membaca jumlah pesanan dari suatu menu yang diisikan user }

Total harga <─ jumlah pesanan *harga { perhitungan total harga dari menu yang dipilih} Else { pilihan lain dari pemilihan }

If (pil) <─ 10 then do { pemilihan untuk memilih menu 1 } Input(jumlah pesanan) { user diharuskan mengisi jumlah pesanan dari menu yang dipesan } Read( jumlah pesanan) { program membaca jumlah pesanan dari suatu menu yang diisikan user } Total harga <─ jumlah pesanan *harga { perhitungan total harga dari menu yang

dipilih} Else { pilihan lain dari pemilihan }

If (pil) <─ 11 then do { pemilihan untuk memilih menu 1 } Input(jumlah pesanan) { user diharuskan mengisi jumlah pesanan dari menu yang dipesan } Read( jumlah pesanan) { program membaca jumlah pesanan dari suatu menu yang diisikan user } Total harga <─ jumlah pesanan *harga { perhitungan total harga dari menu yang

dipilih} Else { pilihan lain dari pemilihan }

If (pil) <─ 12 then do { pemilihan untuk memilih menu 1 } Input(jumlah pesanan) { user diharuskan mengisi jumlah pesanan dari menu yang dipesan } Read( jumlah pesanan) { program membaca jumlah pesanan dari suatu menu yang diisikan user } Total harga <─ jumlah pesanan *harga { perhitungan total harga dari menu yang dipilih} Else { pilihan lain dari pemilihan }

If (pil) <─ 13 then do { pemilihan untuk memilih menu 1 }

Input(jumlah pesanan) { user diharuskan mengisi jumlah pesanan dari menu yang dipesan } Read( jumlah pesanan) { program membaca jumlah pesanan dari suatu menu yang diisikan user } Total harga <─ jumlah pesanan *harga { perhitungan total harga dari menu yang dipilih} Else { pilihan lain dari pemilihan }

If (pil) <─ 14 then do { pemilihan untuk memilih menu 1 } Input(jumlah pesanan) { user diharuskan mengisi jumlah pesanan dari menu yang dipesan } Read( jumlah pesanan) {program membaca jumlah pesanan dari suatu menu yang diisikan user } Total harga <─ jumlah pesanan *harga { perhitungan total harga dari menu yang

dipilih} If (pil) <─ 15 then do { pemilihan untuk memilih menu 1 } Input(jumlah pesanan) { user diharuskan mengisi jumlah pesanan dari menu yang dipesan } Read( jumlah pesanan) { program membaca jumlah pesanan dari suatu menu yang diisikan user } Total harga <─ jumlah pesanan *harga { perhitungan total harga dari menu yang

dipilih} Else { pilihan lain dari pemilihan }

If (pil) <─ 16 then do { pemilihan untuk memilih menu 1 } Input(jumlah pesanan) { user diharuskan mengisi jumlah pesanan dari menu yang dipesan } Read( jumlah pesanan) { program membaca jumlah pesanan dari suatu menu yang diisikan user }

Total harga <─ jumlah pesanan *harga { perhitungan total harga dari menu yang dipilih}

Endif {akhir pemilihan pertama } Endif {akhir pemilihan kedua } Endif {akhir pemilihan ketiga } Endif {akhir pemilihan keempat } Endif {akhir pemilihan kelima} Endif {akhir pemilihan keenam} Endif {akhir pemilihan ketujuh} Endif {akhir pemilihan kedelapan} Endif {akhir pemilihan kesembilan } Endif {akhir pemilihan kesepuluh } Endif {akhir pemilihan kesebelas} Endif {akhir pemilihan keduabelas} Endif {akhir pemilihan ketigabelas} Endif {akhir pemilihan keempatbelas} Endif {akhir pemilihan kelimabelas} Endif {akhir pemilihan keenambelas } Write(rekap data) {program menuliskan rekap data pemesanan yang sudah dipesan oleh user } Write(nama makanan) {program menuliskan nama makanan yang dipesan oleh user } Write(jumlah pesanan) { program menuliskan jumlah pesanan dari menu yang dipesan oleh user } Write(harga satuan) {program menuliskan harga satuan dari menu yang dipesan leh user } Write(harga total) { program menuliskan harga total pemesanan } Write(apakah anda ingin mengubah pesanan?) {pertanyaan apakah user ngin merubah pilihannya atau tidak } Input(ubah) { user diminta program untuk menginputkan nilai ubah } Read(ubah) {nilai ubah yang diisikan oleh user dibaca oleh program} Until (ubah)= false { kondisi perulangan yang menyatakan akhir dari perulangan ubah}

Write(rekap data final) {program menuliskan rekap data pemesanan yang sudah dipesan oleh user } Write(nama makanan) {program menuliskan nama makanan yang dipesan oleh user } Write(jumlah pesanan) { program menuliskan jumlah pesanan dari menu yang dipesan oleh user } Write(harga satuan) {program menuliskan harga satuan dari menu yang dipesan oleh user } Write(harga total) { program menuliskan harga total pemesanan } Input (pil bayar) { user diminta oleh program untuk memasukan variabel pil bayar} Read(pil bayar) { program membaca nilai yang diinputkan oleh user }

If (pil bayar) <─ 1 then do { pemilihan metode pembaaran pertama } Write(struk) { menampilkan struk yag sudah di- finalisasi oleh user } Else { pilihan lain dari pemilihan }

If (pil bayar) <─ 2 then do { pemilihan metode pembaaran kedua} Repeat { perulangan memasukan cvv } Input(cvv) { masukan cvv dari user } Read(cvv) {cvv yang ditulis oleh user dibaca oleh program} If (cvv)=true then do {kondisi pemilihan kode cvv} Endif {akhir dari pemilihan} Write(struk) { perintah untuk menampilakan struk yang sudah di- finalisasi } Else { pilihan lain dari pemilihan }

If (pil bayar) <─ 3 then do {pemilihan metode pembaaran ketiga} Repeat {perulangan memasukan pin} Input(pin) {masukan pin dari user } Read(pin) {pin yang ditulis oleh user dibaca oleh program} If (pin)=true then do {pemilihan metode pembaaran ketiga} Endif {akhir dari pemilihan} Write(struk) { perintah untuk menampilakan struk yang sudah di- finalisasi } Endif { akhir dari pemilihan }

Endif { akhir dari pemilihan } Endif { akhir dari pemilihan } Write(pemesanan berhasil) { tanda bahwa pesanan kita sukses } End. {akhir dari program cafe sederhana}

BAB IV PROGRAM APLIKASI

Program aplikasi cafe sederhana merupakan program pemesanan menu yang bertujuan memudahkan pelanggan dalam melakukan pemesanan di sebuah café. Dengan digunakannya program ini, dapat meminimalisasi terjadinya human error yang dapat terjadi apabila pelayanan pelanggan dilakukan secara manual.

Gambar 4.1 Tampilan awal

Pada Gambar 4.1, laman awal program dibuat dengan ucapan “Selamat datang di Café Sederhana, Cafenya anak semarang”. Setelah itu, untuk melanjutkan, cukup

tekan enter.

Gambar 4.2 Tampilan Username

Setelah itu, muncul form username dan password . Seluruh form harus diisi. Apabila username atau password tidak diisi, maka user harus mengisi ulang kembali form tersebut.

Gambar 4.3 Tampilan Username

Gambar 4.4 Tampilan peringatan password kosong

Gambar 4.5 Tampilan peringatan password kurang strong

Gambar 4.6 Screenshot program café sederhana

Pada Gambar 4.4, 4.5, 4.6 merupakan tampilan ketika mengisi form password . Pada 4.4 merupakan tampilan apabila user tidak mengisi password . Pada 4.5, muncul peringatan bahwa password yang ditulis harus strong dengan syarat minimal terdapat 6 karakter. Pada 4.6, user telah berhasil menulis password yang strong .

Gambar 4.7 Tampilan ketentuan ketentuan pemesanan

Gambar 4.8 Tampilan ketentuan ketentuan dan pemesanan tempat

Gambar 4.9 Tampilan pemesanan tempat dengan meja reguler

Gambar 4.10 Tampilan validasi

Gambar 4.11 Tampilan pemesanan tempat dengan meja VIP

Gambar 4.12 Tampilan Validasi setelah pemesanan tempat

Pada Gambar 4.7 hingga 4.12 merupakan tampilan sistem pemesanan, disini dijelaskan ketentuan-ketentuan pemesanan di café sederhana ini. Kemudian, user diminta untuk mengisi jumlah orang yang memesan dalam 1 meja. Apabila kurang dari

16 orang maka user diarahkan untuk menempati meja regular dengan kapasitas maksimum 15 orang. Apabila lebih dari 15 orang dan kurang dari 30 orang, user akan diarahkan untuk menempati meja VIP dengan biaya tambahan sebesar Rp. 500 yang akan diakumulasikan dengan biaya total pemesanan. Apabila terdapat lebih dari 30 orang. Maka user akan diarahkan untuk memesan lagi, karena sesuai ketentuan pada poin nomor 4 bahwa pelanggan hanya dapat memesan 1 meja regular atau VIP dalam sekali pemesanan. Sebelum menuju menu selanjutnya, user diberikan sebuah 4 deret acak, user diminta untuk menjumlahkan keempat angka tersebut dengan tujuan bahwa data yang telah diisi oleh user tidak terdapat kesalahan akibat kecerobohan.

Gambar 4.13 Tampilan daftar menu dan pemesanan

Gambar 4.14 Tampilan daftar menu dan pemesanan

Gambar 4.15 pemesanan

Gambar 4.16 Tampilan daftar menu dan pemesanan

Gambar 4.17 Tampilan daftar menu dan pemesanan

Pada Gambar 4.13 hingga 4.17 terdapat menu pemesanan atau daftar menu yang terdapat pada café sederhana. Pelanggan diminta untuk menuliskan nomor atau kode menu yang terdapat pada daftar menu, setelah itu pelanggan diminta untuk menuliskan jumlah yang dipesannya. Setelah mengisi keduanya, pelanggan diberi pilihan berupa (Y/T/U) yaitu Y apabila pelanggan ingin memesan menu yang lain, T apabila pelanggan Pada Gambar 4.13 hingga 4.17 terdapat menu pemesanan atau daftar menu yang terdapat pada café sederhana. Pelanggan diminta untuk menuliskan nomor atau kode menu yang terdapat pada daftar menu, setelah itu pelanggan diminta untuk menuliskan jumlah yang dipesannya. Setelah mengisi keduanya, pelanggan diberi pilihan berupa (Y/T/U) yaitu Y apabila pelanggan ingin memesan menu yang lain, T apabila pelanggan

Gambar 4.18 Tampilan rekapan pemesanan

Gambar 4.19 Tampilan rekapan pemesanan

Pada Gambar 4.18 dan 4.19 merupakan laman rekapan menu yang telah dipilih, berisikan total pesanan, charge meja VIP, total harga, dan terbilang yang menuliskan nominal angka dari total harga. Kemudian, user diberi pilihan untuk memilih melanjutkan pemesanan atau kembali untuk mengisi ulang kembali menu yang ingin Pada Gambar 4.18 dan 4.19 merupakan laman rekapan menu yang telah dipilih, berisikan total pesanan, charge meja VIP, total harga, dan terbilang yang menuliskan nominal angka dari total harga. Kemudian, user diberi pilihan untuk memilih melanjutkan pemesanan atau kembali untuk mengisi ulang kembali menu yang ingin

Gambar 4.20 Tampilan pilihan cara pembayaran

Gambar 4.21 Tampilan pembayaran debit

Gambar 4.22 Tampilan pembayaran debit

Gambar 4.23 Tampilan pembayaran debit

Gambar 4.24 Tampilan pembayaran debit

Gambar 4.25 Tampilan pembayaran kredit

Gambar 4.26 Tampilan pembayaran kredit

Gambar 4.27 Tampilan pembayaran kredit

Gambar 4.28 Tampilan pembayaran tunai

Pada menu pembayaran, diberi 3 pilihan pembayaran yaitu debit, kredit, dan tunai. Pada debit, user akan diminta untuk memasukkan kartu atm dan memasukkan pin dengan 6 digit. Pada kredit, user akan diminta untuk mengisi nomor kartu sebanyak 16 digit dan CVV 3 digit. Pada pilihan tunai, user diminta untuk membayarnya langsung ke kasir. Dengan menunjukkan struk yang akan dicetak oleh komputer.

Gambar 4.29 Tampilan struk pemesanan

Gambar 4.30 Tampilan struk pemesanan

Gambar 4.31 Tampilan struk pemesanan

Pada laman terakhir, berupa struk pembayaran. Terdapat username pemesan, total harga, terbilang, dan cara pembayarannya ditambah dengan nomor pemesanan.

BAB V LISTING DAN ANALISA PROGRAM

5.1 Listing Program

program cafe_sederhana_21; { program cafe sederhana merupakan suatu program yang dirancang sebagai salah satu alternatif yang bisa diterapkan di cafe dalam hal pemesanan yang dapat memberikan berbagai kemudahan } uses crt; { syntax yang digunakan untuk mengatur unit unit dalam program } type pesanan=record {pesanan mempunyai tipe data record yang tipe datanya lebih dari 1} namamakanan:string; { namamakanan bertipe data string } jumlahmakanan:integer; { jumlahmakanan bertipe data integer} harga:integer; { harga bertipe data integer } hargatotal:longint; { hargatotal bertipe data longint( integer dengan digit lebih banyak} end; { tanda akhir dari record pesanan } var fpesanan :file of pesanan; { fpesanan bertipe file bertipe yaitu pesanan } rpesanan:pesanan; {rpesanan bertipe pesanan yang merupakan gabungan dari beberapa jenis type dasar yang digabung dlaam record } pilih:byte; { pilih bertipe data byte }

type data = record { data mempunyai tipe data record yang tipe datanya lebih dari 1} no_pemesanan,jumlah:integer; { nomer pemesanan dan jumlah pemesanan

mempunyai tipe data integer } nama_pesanan: string; { nama pemesanan mempunyai tipe data string } harga,harga_makanan: real; { harga total dan harga makanan bertipe data real}

end; { tanda akhir dari recor data } var end; { tanda akhir dari recor data } var

nomormeja:integer; { nomor meja bertipe pembayaran}

label awal; function terbilang(x:longint):string; { function terbilang yang bertipe string } function bilang(x:longint):string; { function bilang yang bertipe string } begin { syntak untk memulai function}

case x of { pemilihan dengan x sebagai parameter pilihan } 0:bilang:=''; { x=0 maka ditulis kosong} 1:bilang:='satu'; { x=1 maka ditulis satu } 2:bilang:='dua'; 3:bilang:='tiga'; 4:bilang:='empat'; 5:bilang:='lima'; 6:bilang:='enam'; 7:bilang:='tujuh'; 8:bilang:='delapan'; 9:bilang:='sembilan'; 10:bilang:='sepuluh'; { x=10 ditulis sepuluh }

11:bilang:='sebelas'; { x=11 ditulis sebelas } end; { akhir dari pemilihan dengan x sebagai parameter pilihan }

end; { akhir dari function bilang dan terbilang }

begin if x<12 then { untuk x kurang dari 12} terbilang := ' ' + bilang(x) else if x<20 then { untuk x lebih dari 20 } terbilang:=terbilang(x-10)+' belas'

{ penulisan terbilang adalah nilai x dikurangi 10 kemudian di tambah akhiran belas } else if x<100 then { untuk x kurang dari 100 } terbilang:=terbilang(x div 10)+' puluh'+terbilang(x mod 10)

{ untuk x kurang dari 100 peulisan terbilangnya adlah dengan membagi nilai x dengan

10 kemudian ditambah akhiran puluh serta ditambah nilai dari sisa pembagian x dengan

10 } else if x<200 then { untuk x kurang dari 200 } terbilang:=' seratus'+terbilang(x-100)

{penulisan terbilangnya diwali dengan kata seratus dan ditambah dengan penulisan nilai dari x dikurangi 100 }

else if x<1000 then { untuk x kurang dari 1000 } terbilang:=terbilang(x div 100)+' ratus'+terbilang(x mod 100)

{ penulisan terbilangnya diawali dengan pembacaan nilai dari x dibagi 100 kemudian ditambah kata ratus dan diakhiri dengan pembacaan sisa bagi dari x terhadap 100 }

else if x<2000 then { untuk x kurang dari 2000 } terbilang:=' seribu'+terbilang(x-1000)

{ penulisan terbilangnya diawali dengan kata seribu dan ditambah pembacaan nilai terbilang dari x dikurnagi 1000 }

else if x<1000000 then { untuk x kurang dari satu juta} else if x<1000000 then { untuk x kurang dari satu juta}

else if x<1000000000 then { ntuk x kurang dari satu milyar terbilang:=terbilang(x div 1000000)+' juta'+terbilang(x mod 1000000)

{ penulisan terbilang dari x kurang dari satu milyar adalah diawali dengan nilai terbilang dari x dibagi satu juta ditambah kata juta dan diakhiri dari pembacaan nilai terbilang dari sisa hasil bagi x dengan satu juta }

Else terbilang:=terbilang(x div 1000000000)+' milyar'+terbilang(x mod 1000000000) ;

{ penulisan terbilang dari x kurang dari satu triliyun adalah diawali dengan nilai terbilang dari x dibagi satu milyar ditambah kata milyar dan diakhiri dari pembacaan nilai terbilang dari sisa hasil bagi x dengan satu milyar }

end; { akhir dari pemilihan if } procedure validasi; { merupakan procedure program yang digunakan untuk melakukan validasi dari data yang sudah dimasukan kedalam program } var

A:integer; B:integer; C:integer; D:integer; p:integer; q:integer; r:integer; x:integer; y:integer; k:integer;

{ A, B, C, D, p, q, r, x, y, k mempunyai tipe data integer } Label { label yang digunakan untuk melakukan perintah goto }

ulangcaptcha; { salah satu label yang didefiisikan adalah ulangcaptcha yang digunakan untuk mengulang captcha apabila trerjadi kesalahan } begin begin

ulangcaptcha: writeln('------------------------------------------------------------------------------------------------ --------------------'); writeln(' *** KONFIRMASI ***'); writeln('------------------------------------------------------------------------------------------------ --------------------'); writeln;

randomize; { perintah untuk melakukan pengacakan terhadap bilangan dengan tidak berpola } writeln('============='); for A:=1 to 1 do { jumlah nilai output A hasi pengackan adalah satu }

begin x:=random(3); { nilai x didapat dari pengacakan nilai 0 sampai 3 } write(' ',x); { hasil pengacakan dibaaca sebgai x} end;

for B:=1 to 1 do { jumlah nilai output B hasi pengackan adalah satu } begin p:=random(4); { nilai p didapat dari pengacakan nilai 0 sampai 4 } write(' ',p); { hasil pengacakan dibaaca sebgai x} end;

for C:=1 to 1 do { jumlah nilai output C hasi pengackan adalah satu } begin q:=random(3); { nilai q didapat dari pengacakan nilai 0 sampai 3 } for C:=1 to 1 do { jumlah nilai output C hasi pengackan adalah satu } begin q:=random(3); { nilai q didapat dari pengacakan nilai 0 sampai 3 }

for D:=1 to 1 do { jumlah nilai output D hasi pengacakan adalah satu } begin r:=random(2); nilai q didapat dari pengacakan nilai 0 sampai 2 } write(' ',r); { hasil pengacakan dibaaca sebgai r} end;

k:= x+p+q+r; { nilai k adalah penjumlahan dari x,p,q,r yang meruakan nilai hasi pengacakan bilangan } writeln; writeln('============'); writeln; writeln('Untuk meyakinkan bahwa anda tidak ceroboh, ketik ulang jumlah keempat

bilangan di atas');readln(y); { nilai yang dimasukan dibaca sebagai y } if y<>k then { pemilihan jika nilai inputan y tidak smaa dengan k } begin

writeln; writeln('angka yang anda tulis tidak sama'); readln; goto ulangcaptcha;

{ kembali ke bagian dimana ulangcaptcha didefinisikan } end; if y=k then { pemilihan jika nilai inputan y sama dengan k } begin

writeln; writeln(' <<ENTER>>'); writeln(' untuk melanjutkan');

readln;

end; end;

pilihanpembayaran:integer; nomorkredit:string[12]; { maksimal nomer kredit yang diperkenankan adalah 12} pindebit:string=''; pinkredit:string=''; c:char = #0; { c bertipe data char dengan kode ASCII }

label ulangpembayaran,ulangdebit,ulangkredit,ulangtunai; { label-label yang didefinisikan adalah ulangpembayaran, ulang debit, dan ulang tunai } begin begin ulangpembayaran: { ulang pembayaran didefinisikan } clrscr; writeln('======================================================== ============================================================='); writeln(' *** PILIHAN PEMBAYARAN ***'); writeln('======================================================== =============================================================');

writeln; write(' 1. Debit');write(' 2. Kredit');writeln(' 3. Tunai');

writeln; write('Pilihan: ');readln(pilihanpembayaran);

{ user memasukan pilihan untuk cara pembayaran dan dibaca sebagai pilihanpembayaran oleh program } case pilihanpembayaran of { pilihan pembayaran menjadi paramater pilihan}

1: begin begin { ualng debit didefinisikan } ulangdebit: clrscr; writeln(' *** PEMBAYARAN DEBIT ***');

writeln; writeln('semua form harus diisi!'); writeln; writeln('Dalam menu ini, anda akan membayar pesanan anda

secara debit');

writeln; writeln('Masukkan Kartu ATM debit anda');

readln; writeln; writeln('<<ENTER>> untuk melanjutkan');

readln; writeln; write('Masukkan pin kartu anda : '); while true do

begin c:=ReadKey; if (c=#13) then

break else begin

if (c=#8) then if (c=#8) then

continue; delete(pindebit,length(pindebit),1);

write(c); ClrEol; continue;

end; pindebit:=pindebit+c; write('*') end;

end; if (length(pindebit)<3) then begin

writeln(' Maaf, Pin terlalu pendek. pin terdapat 6 karakter. Pin anda salah');

readln; pindebit:=''; goto ulangdebit;

end; if (length(pindebit)>3) then begin

writeln(' Maaf, pin terlalu panjang. pin terdapat 6 karakter. Pin anda salah');

readln; pindebit:=''; goto ulangdebit;

end; end; end; end;

readln; carapembayaran:='debit'; end;

2: begin begin ulangkredit: { ulang kredit didefinisikan} clrscr; writeln(' *** PEMBAYARAN KREDIT

***');

writeln; writeln('Dalam menu ini, anda akan membayar pesanan anda

secara kredit');

writeln; writeln('semua form harus diisi!'); writeln; write('Masukkan nomor kartu anda: ');readln(nomorkredit);

if (nomorkredit='') then

{ kondsi jika nomor kredit yang diisikan kosong }

begin goto ulangkredit;

{kembali ke bagian dimana ulang kredt didefinisikan }

end;

end; if (length(nomorkredit)<>16) then {panjang tidak kurang dan tidak lebih dari 16} end; if (length(nomorkredit)<>16) then {panjang tidak kurang dan tidak lebih dari 16}

karakter. mohon ulangi pengisian data');

readln; { nomor kredit kosong } nomorkredit:=''; goto ulangkredit; { kembali ke bagian label ulang kredit di definisikan }

end; writeln; write('Masukkan pin (CVV) kartu anda : '); while true do

begin c:=ReadKey; if (c=#13) then

break else begin

if (c=#8) then begin if (length(pinkredit)=0) then

continue; delete(pinkredit,length(pinkredit),1);

write(c); ClrEol; continue;

end; pinkredit:=pinkredit+c; write('*') end; end; pinkredit:=pinkredit+c; write('*') end;

writeln(' Maaf, Pin terlalu pendek. pin terdapat 3 karakter. Pin anda salah');