program KasirRingkas; uses crt; const MAX_BARANG = 3; type TBarang = record nama: string; harga, stok: integer; end; var barang: array[1..MAX_BARANG] of TBarang = ( (nama: 'Kopi'; harga: 15000; stok: 100), (nama: 'Teh Botol'; harga: 7000; stok: 50), (nama: 'Air Mineral'; harga: 5000; stok: 200) ); pilihan, kode, jumlah: integer; procedure TampilBarang; var i: integer; begin writeln('========================================'); writeln('| Kode | Nama | Harga | Stok |'); writeln('----------------------------------------'); for i := 1 to MAX_BARANG do writeln('| ', i:4, ' | ', barang[i].nama:10, ' | Rp', barang[i].harga:6, ' | ', barang[i].stok:5, ' |'); writeln('========================================'); end; procedure UbahStok(tambah: boolean); begin write('Masukkan kode barang: '); readln(kode); if (kode >= 1) and (kode <= MAX_BARANG) then begin write('Jumlah: '); readln(jumlah); if tambah then barang[kode].stok := barang[kode].stok + jumlah else if jumlah <= barang[kode].stok then begin writeln('Total harga: Rp', jumlah * barang[kode].harga); barang[kode].stok := barang[kode].stok - jumlah; end else writeln('Stok tidak cukup untuk pembelian ini!'); writeln('Stok ', barang[kode].nama, ' sekarang ', barang[kode].stok); end else writeln('Kode barang tidak valid!'); end; begin repeat clrscr; writeln('=== Program Kasir ==='); TampilBarang; writeln; writeln('1. Tambah Stok Barang'); writeln('2. Transaksi Penjualan'); writeln('0. Keluar'); writeln('====================='); write('Pilih menu: '); readln(pilihan); clrscr; { Clear screen to refresh the table view } TampilBarang; { Display updated table } case pilihan of 1: UbahStok(true); 2: UbahStok(false); end; writeln; writeln('Tekan Enter untuk kembali ke menu utama...'); readln; until pilihan = 0; writeln('Terima kasih telah menggunakan program kasir.'); end.
program Aplikasi; uses crt, sysutils; procedure Program1; begin writeln('Hello, World!'); readln; end; procedure Program2; var alas, tinggi, i, j: Integer; luas: real; begin Write('Masukkan panjang alas: '); ReadLn(alas); Write('Masukkan tinggi segitiga: '); ReadLn(tinggi); luas := 0.5 * alas * tinggi; for i := 1 to tinggi do begin Write('':(alas div 2) - i + 1); for j := 1 to (i * alas div tinggi) do Write('*'); WriteLn; end; WriteLn('Luas segitiga: ', luas:0:2); readln; end; procedure Program3; var panjang, lebar, i, j, luas: Integer; begin Write('Masukkan panjang: '); readln(panjang); Write('Masukkan lebar: '); readln(lebar); WriteLn; luas := panjang * lebar; for i := 1 to panjang do begin for j := 1 to lebar do Write('*'); WriteLn; end; WriteLn; Write('luas persegi panjang: ', luas); readln; end; procedure Program4; var nilai: integer; grade: char; lagi: char; begin repeat write('Masukkan nilai (0-100): '); readln(nilai); if (nilai >= 80) then grade := 'A' else if (nilai >= 70) then grade := 'B' else if (nilai >= 60) then grade := 'C' else if (nilai >= 50) then grade := 'D' else grade := 'E'; writeln('Nilai huruf: ', grade); write('Mau hitung lagi? (y/n): '); readln(lagi); until (lagi = 'n') or (lagi = 'N'); readln; end; procedure Program5; var celcius, fahrenheit: real; lagi: char; begin repeat write('Masukkan suhu Celcius: '); readln(celcius); fahrenheit := (9/5 * celcius) + 32; writeln('Suhu dalam Fahrenheit: ', fahrenheit:0:2); write('Mau hitung lagi? (y/n): '); readln(lagi); until (lagi = 'n') or (lagi = 'N'); readln; end; procedure Program6; var warna: array[1..3] of string; nilai: array[1..3] of longint; nilaiResistor: longint; i: integer; function getNilai(warna: string; isPengali: boolean):longint; begin if isPengali then begin case warna of 'hitam': getNilai := 1; 'coklat': getNilai := 10; 'merah': getNilai := 100; 'oranye': getNilai := 1000; 'kuning': getNilai := 10000; 'hijau': getNilai := 100000; 'biru': getNilai := 1000000; 'ungu': getNilai := 10000000; 'abu-abu': getNilai := 100000000; 'putih': getNilai := 1000000000; else getNilai:=-1; end; end else begin case warna of 'hitam': getNilai := 0; 'coklat': getNilai := 1; 'merah': getNilai := 2; 'oranye': getNilai := 3; 'kuning': getNilai := 4; 'hijau': getNilai := 5; 'biru': getNilai := 6; 'ungu': getNilai := 7; 'abu-abu': getNilai := 8; 'putih': getNilai := 9; else getNilai:=-1; end; end; end; begin for i := 1 to 3 do begin write('Masukkan warna pita ke-', i, ': '); readln(warna[i]); if i < 3 then nilai[i] := getNilai(warna[i], false) else nilai[i] := getNilai(warna[i], true) end; if (nilai[1] >= 0) and (nilai[2] >= 0) and (nilai[3] >= 0) then writeln('Nilai resistor: ', (nilai[1] * 10 + nilai[2]) * nilai[3], ' ohm') else writeln('Input warna tidak valid'); readln; end; procedure Program7; var R1, R2, R3, Rtotal: real; begin write('Masukkan nilai resistor R1 (ohm): '); readln(R1); write('Masukkan nilai resistor R2 (ohm): '); readln(R2); write('Masukkan nilai resistor R3 (ohm): '); readln(R3); Rtotal := 1 / (1/R1 + 1/R2 + 1/R3); writeln('Resistansi total (paralel) adalah: ', Rtotal:0:2, ' ohm'); readln; end; procedure Program8; var angka: array[1..10] of integer; i, max, min: integer; begin for i := 1 to 10 do begin write('Masukkan angka ke-', i, ': '); readln(angka[i]); end; max := angka[1]; min := angka[1]; for i := 2 to 10 do begin if angka[i] > max then max := angka[i]; if angka[i] < min then min := angka[i]; end; writeln('Nilai tertinggi: ', max); writeln('Nilai terendah: ', min); readln; end; procedure Program9; var warna: array[1..4] of string; nilaiResistor, i: longint; function getAngka(warna: string): integer; begin case warna of 'hitam': getAngka := 0; 'coklat': getAngka := 1; 'merah': getAngka := 2; 'oranye': getAngka := 3; 'kuning': getAngka := 4; 'hijau': getAngka := 5; 'biru': getAngka := 6; 'ungu': getAngka := 7; 'abu-abu': getAngka := 8; 'putih': getAngka := 9; else getAngka := -1; end; end; function getPengali(warna: string): longint; begin case warna of 'hitam': getPengali := 1; 'coklat': getPengali := 10; 'merah': getPengali := 100; 'oranye': getPengali := 1000; 'kuning': getPengali := 10000; 'hijau': getPengali := 100000; 'biru': getPengali := 1000000; 'ungu': getPengali := 10000000; 'abu-abu': getPengali := 100000000; 'putih': getPengali := 1000000000; else getPengali := -1; end; end; begin nilaiResistor := 0; for i := 1 to 4 do begin write('Masukkan warna pita ke-', i, ': '); readln(warna[i]); if (i < 4) and (getAngka(warna[i]) = -1) or ((i = 4) and (getPengali(warna[i]) = -1)) then begin writeln('Input warna tidak valid! Coba lagi.'); exit; end; if i < 3 then nilaiResistor := nilaiResistor * 10 + getAngka(warna[i]) else if i = 3 then nilaiResistor := (nilaiResistor * 10 + getAngka(warna[i])) * getPengali(warna[4]); end; writeln('Nilai resistor: ', nilaiResistor, ' ohm'); readln; end; procedure Program10; type Barang = record nama: string; harga: real; jumlah: integer; total: real; end; var dataBarang: array[1..10] of Barang; i: integer; grandTotal: real; lanjut: char; function FormatRupiah(nilai: real): string; var formatted: string; begin formatted := FormatFloat('#,##0', nilai); FormatRupiah := 'Rp. ' + formatted; end; begin clrscr; i := 0; grandTotal := 0; repeat inc(i); writeln('Barang ke-', i); write('Nama: '); readln(dataBarang[i].nama); write('Harga: '); readln(dataBarang[i].harga); write('Jumlah: '); readln(dataBarang[i].jumlah); dataBarang[i].total := dataBarang[i].harga * dataBarang[i].jumlah; grandTotal := grandTotal + dataBarang[i].total; writeln('Tambah barang lagi? (y/n): '); readln(lanjut); until (lanjut = 'n') or (i = 10); writeln('====== Struk Belanja ======'); writeln('No Nama Harga Jumlah Total'); for i := 1 to i do writeln(i:2, ' ', dataBarang[i].nama:10, ' ', FormatRupiah(dataBarang[i].harga):12, ' ', dataBarang[i].jumlah:6, ' ', FormatRupiah(dataBarang[i].total):12); writeln('---------------------------'); writeln('Grand Total: ', FormatRupiah(grandTotal)); writeln('==========================='); readln; end; procedure Program11; var angka, hasil: real; operasi: char; pertama: boolean; begin clrscr; pertama := true; writeln('=== Kalkulator ==='); repeat write('Masukkan angka: '); readln(angka); if pertama then begin hasil := angka; pertama := false; end else begin case operasi of '+': hasil := hasil + angka; '-': hasil := hasil - angka; '*': hasil := hasil * angka; '/': if angka <> 0 then hasil := hasil / angka else begin writeln('Error: Pembagian dengan nol tidak diperbolehkan!'); halt; end; end; end; write('(+, -, *, /) atau "=" ?: '); readln(operasi); until operasi = '='; writeln('Hasil: ', hasil:0:0); readln; end; var pilihan: integer; begin repeat clrscr; writeln('Aplikasi Gabungan Program'); writeln('========================='); writeln('1. Program Hello World'); writeln('2. Program Luas Segitiga'); writeln('3. Program Luas Persegi Empat'); writeln('4. Program Nilai Kuliah'); writeln('5. Program Suhu Celcius Ke Fahrenheiz'); writeln('6. Program Rumus Fisika Dengan 3 Warna Resistor'); writeln('7. Program Resistor 3 Paralel '); writeln('8. Program Nilai Tertinggi & Terendah'); writeln('9. Program Hitung Resistor 4 Gelang'); writeln('10. Program Kasir Sederhana'); writeln('11. Program Kalkulator'); writeln('0. Keluar'); write('Pilihan program yang ingin dijalankan (0-11): '); readln(pilihan); clrscr; case pilihan of 1: Program1; 2: Program2; 3: Program3; 4: Program4; 5: Program5; 6: Program6; 7: Program7; 8: Program8; 9: Program9; 10: Program10; 11: Program11; 0: writeln('Terima Kasih Telah Menggunakan Aplikasi Ini.'); else writeln('Pilihan tidak ada dalam daftar. Silakan memilih kembali.'); end; if pilihan <> 0 then begin writeln; writeln('Tekan Enter untuk kembali ke menu utama...'); end; until pilihan = 0; end.
program KalkulatorSederhana; uses crt; var angka, hasil: real; operasi: char; begin clrscr; hasil := 0; operasi := '+'; writeln('=== Kalkulator ==='); repeat write('Masukkan angka: '); readln(angka); case operasi of '+': hasil := hasil + angka; '-': hasil := hasil - angka; '*': hasil := hasil * angka; '/': if angka <> 0 then hasil := hasil / angka else begin writeln('Error: Pembagian dengan nol tidak diperbolehkan!'); halt; end; end; write('(+, -, *, /) atau "=" ?: '); readln(operasi); until operasi = '='; writeln('Hasil: ', hasil); readln; end.
program CariNilaiTertinggiTerendah; var angka: array[1..10] of integer; i, max, min: integer; begin { Input 10 data angka } for i := 1 to 10 do begin write('Masukkan angka ke-', i, ': '); readln(angka[i]); end; { Inisialisasi nilai max dan min } max := angka[1]; min := angka[1]; { Mencari nilai tertinggi dan terendah } for i := 2 to 10 do begin if angka[i] > max then max := angka[i]; if angka[i] < min then min := angka[i]; end; { Menampilkan hasil } writeln('Nilai tertinggi: ', max); writeln('Nilai terendah: ', min); end.