Membuat keputusan

Dalam aplikasi kehidupan nyata, Anda biasanya perlu mengubah urutan eksekusi sesuai dengan kondisi yang ditentukan. Kadang-kadang Anda perlu menggunakan kondisi sederhana seperti: "Jika dingin, pakailah mantel Anda". Dalam pernyataan ini tindakan resultan diambil jika kondisi dievaluasi sebagai BENAR (cuaca dingin). Namun, jika cuacanya baik, seluruh pernyataan akan dilewati. Beberapa kondisi bisa berlipat ganda, seperti yang ada di percakapan berikut: Baiklah, jika saya pulang lebih awal dari kerja, saya akan melihat Anda malam ini; jika sudah terlambat, saya akan melakukannya besok; kalau tidak, jika saudara laki-laki saya datang besok kita bisa berkumpul pada hari Selasa; kalau tidak, jika Selasa adalah hari libur maka biarlah hari Rabu; kalau tidak, saya akan menelepon Anda untuk mengatur pertemuan berikutnya! "

Sebenarnya, program Anda dapat dengan mudah menangani kondisi berantai, atau bersarang, selama Anda menulis kode yang memadai. Di Pascal ada dua struktur kontrol yang digunakan untuk menangani kondisi dan keputusan yang dihasilkannya: konstruksi pilihan biner IF-THEN-ELSE dan pilihan ganda dapat dilakukan dengan CASE.

Keputusan Sederhana: IF-THEN

Untuk mengekspresikan kondisi sederhana Anda dapat menggunakan pernyataan IF-THEN, seperti pada contoh berikut: 


IF Age < 18 THEN 
WRITELN('Umur Anda di bawah 18 Tahun')

Pernyataan tersebut dimulai dengan kata kunci IF, diikuti dengan ekspresi Boolean (kondisi yang akan diuji), diikuti oleh kata kunci THEN, diikuti dengan hasil yang akan dieksekusi jika kondisinya BENAR (pernyataan WRITELN). Seperti yang Anda lihat, konstruksi IF adalah satu pernyataan yang diakhiri dengan titik koma. Jika nilai variabel Umur kurang dari 18, bagian setelah kata kunci THEN dijalankan; jika tidak, seluruh pernyataan dilewati, dan eksekusi program melanjutkan aliran aslinya pada pernyataan berikutnya. Jenis kontrol program ini disebut percabangan bersyarat.

Pernyataan IF-THEN berbentuk umum:

JIKA (kondisi  benar ) MAKA

pernyataan;

Susunannya ditulis dalam dua baris hanya agar mudah dibaca, tetapi ini adalah satu pernyataan yang diakhiri dengan titik koma, dan tidak ada kewajiban untuk meninggalkan spasi ekstra. Anda hanya perlu memisahkan kata kunci (seperti IF dan THEN) dari pernyataan lainnya dengan setidaknya satu spasi.

Contoh: Pengambilan Kartu Kredit Pascal

Lihat program berikut, di mana batas kartu kredit diuji untuk pembelian tertentu. Program dimulai dengan deklarasi Limit konstan, yang merepresentasikan batas kartu kredit ($ 1.000), dan variabel Jumlah, yang nilainya akan diterima dari keyboard. Program ini menampilkan pesan "Tagihan Anda diterima" jika Jumlah kurang dari atau sama dengan Batas. Jika kondisinya SALAH, program akan berakhir tanpa respons.

PROGRAM 
PROGRAM FungsiIfKeSatu(INPUT,OUTPUT);
CONST Limit = 1000; VAR Jumlah... :REAL;
BEGIN
WRITE('Masukan Jumlah:'); READLN(Jumlah...); 
IF Jumlah... <= Limit THEN WRITELN('Tagihan Anda diterima.');
WRITELN('Tekan ENTER untuk melanjutkan..'); READLN
END.
Pernyataan READLN digunakan untuk menghentikan sementara layar saat menampilkan pesan "Tekan ENTER untuk melanjutkan." Karena pernyataan ini berada di luar pernyataan IF maka akan dieksekusi apakah kondisinya BENAR atau SALAH. Anda dapat menggunakan dua pernyataan bersyarat untuk mewakili dua kasus, TRUE dan FALSE. Dalam program berikut, pernyataan IF lain ditambahkan untuk menangani kasus lain (jumlahnya lebih dari 1.000). Pesan "Jumlahnya melebihi batas kredit Anda" ditampilkan dalam kasus ini.

PROGRAM FungsiIfKeDua(INPUT,OUTPUT);
CONST Limit = 1000; VAR Jumlah :REAL;
BEGIN
WRITE('Isi Jumlah Jumlah:'); READLN(Jumlah);
IF Jumlah <= Limit THEN
WRITELN('Tagihan di Terima');
IF Jumlah > Limit THEN
WRITELN('Limit tidak mencukupi');
WRITELN('Press ENTER to continue..');
READLN
END.
{-FungsiIfKeDua-}

Using Blocks

Jika Anda ingin menggunakan lebih dari satu pernyataan sebagai hasil dari satu kondisi, Anda dapat menggunakan blok BEGIN-END. Anda sebenarnya dapat menggunakan sejumlah blok di dalam badan utama program, menggunakan BEGIN dan END untuk menandai teritori tiap blok. Sebuah blok akan diperlakukan sebagai satu unit, tidak peduli berapa banyak pernyataan yang disertakan. Lihat contoh berikut:

{-FungsiIfKeTiga-}
PROGRAM FungsiIfKeTiga(INPUT,OUTPUT);
CONST Limit = 1000; VAR Jumlah :REAL;
BEGIN
WRITE('Isi Jumlah:');
READLN(Jumlah); IF Jumlah <= Limit THEN BEGIN
WRITELN('Pembayaran di Terima.');
WRITELN('Total Pembayaran Pajak Menjadi ',1.05*Jumlah:0:2)
END;
IF Jumlah > Limit THEN BEGIN
WRITELN('Saldo tidak mencukupi') ;
WRITELN('Sisa Saldo',Limit) { The semicolon is optional }
END;
WRITELN('Terima Kasih');
WRITELN('Press ENTER to continue..');
READLN
END.
{-FungsiIfKeTiga-}

The IF-THEN-ELSE

Bentuk yang telah Anda gunakan sejauh ini untuk pernyataan IF sebenarnya adalah versi sederhana dari konstruksi lengkap. Pernyataan IF lengkap mencakup dua kasus yang dihasilkan dari pengujian kondisi. Bentuknya:
IF condition THEN statement
ELSE statement;

Jika Anda menambahkan pernyataan lain ke salah satu dari dua kasus, Anda harus menggunakan blok BEGIN-END. Konstruksi baru akan terlihat seperti ini:


{-FungsiIfKeEmpat-}
PROGRAM CreditCard(INPUT,OUTPUT);
CONST Limit = 1000; VAR Jumlah :REAL;
BEGIN
WRITE('Isi Jumlah:'); READLN(Jumlah);
IF Jumlah <= Limit THEN BEGIN
WRITELN('Pembayaran di Teritma');
WRITELN('Pembayaran di tambah Pajak',1.05*Jumlah:0:2)
END 
ELSE 
BEGIN
WRITELN('Saldo tidak mencukupi');
WRITELN('Sisa Saldo adalah ',Limit)
END;
WRITELN('Terima Kasih');
{-FungsiIfKeEmpat-}

Penguji Karakter

Logika yang digunakan dalam program ini bergantung pada pengujian kode ASCII dari karakter input menggunakan fungsi ORD. Karakter diklasifikasikan sebagai berikut: 
Huruf besar sesuai dengan kode dari 65 hingga 90.
Huruf kecil sesuai dengan kode dari 97 hingga 122.
Angka tersebut sesuai dengan kode dari 48 hingga 57

{-FungsiIfKeLima-}
PROGRAM FungsiIfKeLimat(INPUT,OUTPUT); 
VAR InputChar :CHAR;
BEGIN 
WRITE('Please enter an alphabetic character:'); READLN(InputChar);
IF (ORD(InputChar) > 64) AND (ORD(InputChar) < 91) THEN WRITELN('Ini adalah huruf besar.')
ELSE IF (ORD(InputChar) > 96) AND (ORD(InputChar) < 123) THEN WRITELN('Ini adalah huruf kecil.')
ELSE IF (ORD(InputChar) > 47) AND (ORD(InputChar) < 58) THEN WRITELN('Hei, ini angka!')
ELSE WRITELN('Maaf, ini bukan surat.');
WRITELN('Tekan ENTER untuk melanjutkan ..'); 
READLN
END.
{-FungsiIfKeLima-}
Anda dapat menggunakan salah satu variasi yang tersedia dari konstruksi IF-THEN-ELSE dalam aplikasi Anda. Namun, beberapa formulir lebih dapat diandalkan dengan satu aplikasi daripada yang lain. Lihat program ini, yang memproses masalah yang sama dari "skor dan nilai" tetapi menggunakan tangga ELSE-IF. Perhatikan bagaimana program menjadi lebih mudah dan lebih dipahami oleh pembaca dengan menggunakan variabel Boolean A, B, C, D, dan F. Perhatikan juga bahwa nomor ilegal disaring oleh ELSE terakhir.


{-FungsiIfKeEnam-}
PROGRAM MencariNilaiMatakuliah(INPUT,OUTPUT); VAR Score :INTEGER;
BEGIN
WRITE('Please enter the score:');
READLN(Score);
WRITELN;
IF Score > 59 THEN
    IF Score > 69 THEN
        IF Score > 79 THEN
            IF Score > 89 THEN
WRITELN('Excellent. Your grade is ''A''')
    ELSE WRITELN('Very good. Your grade is ''B''') 
        ELSE WRITELN('Good. Your grade is ''C''')
            ELSE WRITELN('Passed. Your grade is ''D''') 
                ELSE WRITELN('Better luck next time. Your grade is ''F''');
WRITELN('Press ENTER to continue..');
READLN
END.
{-FungsiIfKeEnam-}

Fungsi Case

Konstruksi CASE digunakan untuk menangani beberapa alternatif, seperti opsi menu pengguna. Bentuknya umum:
Ekspresi CASE OF
  label-1: pernyataan-1;
label-2: pernyataan-2; 
...
label-n: pernyataan-n;
AKHIR
Ekspresi case, juga disebut selector, bisa dari tipe INTEGER, CHAR, atau BOOLEAN (atau tipe ordinal lainnya, yang akan dijelaskan di Bab 5). Menurut nilai ekspresi ini kontrol program ditransfer ke salah satu label kasus dan pernyataan terkait dijalankan. Label sebenarnya mewakili kemungkinan nilai ekspresi yang berbeda. Lihat contoh berikut.

{-FungsiIfKeEnam-}
{-FungsiCaseKeSatu-}
PROGRAM FungsiCase(INPUT,OUTPUT);
CONST Baju = 25; Celana = 10; Sandal = 5;
VAR CoinWeight, Bayar :INTEGER;
BEGIN
WRITE('Pilih Nomor:'); READLN(CoinWeight);
CASE CoinWeight OF
    35 : Bayar := Baju;
    7 : Bayar := Celana;
    15 : Bayar := Sandal;
END;
WRITELN('Bayar Sebanya ', Bayar, ' Rupiah'); READLN
END.
{-FungsiCaseKeSatu-}
Untuk lebih jelas silahkan lihat vidio berikut:



24 Komentar

  1. Sangat jelas materi yang Bapak tulis dan jelaskan. Semoga saya bisa menjalankan nya.

    BalasHapus
  2. Apakah bisa langsung di praktek kan pak?

    BalasHapus
  3. terimakasih atas materi yang diberikan pak,sangat jelas materinya. akan sya coba praktekan pak...

    BalasHapus
  4. Apakah yang dimaksud dengan program Using Blocks..?dan apa fungsi program tersebut.?

    Trimakasih

    BalasHapus
  5. Mengapa harus menggunakan kondisi if then else dan case of?

    Terimakasih

    BalasHapus
  6. Masih sulit untuk di mengerti pak

    BalasHapus
  7. Terimakasih untuk materinya pak. Akan saya pelajari

    BalasHapus
  8. Saya kurang mengerti pak,bisakah dipraktekkan pak?
    Terima kasih

    BalasHapus
  9. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  10. Masih bingung 🤦🏻‍♂️

    BalasHapus
  11. Maaf pak, saya kurang mengerti dibagian penguji karakter

    BalasHapus
  12. Saya kurang ngerti yang penguji karakter itu pak

    BalasHapus
  13. Apa Fungsi Dari TRUE DAN FALSE
    dalam Pemograman?

    BalasHapus
  14. Saya kurang ngerti pak sama yang penguji karakter

    BalasHapus
  15. Apakah nanti ada prakteknya pak .saya masih belom paham

    BalasHapus
  16. Apa kegunaan sederhana if then else dalam kehidupan sehari hari?

    BalasHapus
  17. bagaimana jika writeln nya lebih dari satu pak?

    BalasHapus
  18. Mengapa harus menggunakan kartu kredit pascal pak

    BalasHapus

Posting Komentar

Lebih baru Lebih lama