Senin, 01 April 2013

Kondisi if di PASCAL

Hampir setiap program yang komplek mengandung suatu penyeleksian kondisi. Dengan menyeleksi suatu kondisi, program sdapat menentukan  tindakan apa yang harus dikerjakan, tergantung dari hasil kondisi yang diseleksi tersebut.
Selection merupakan salah satu proses program disamping sequential( pengerjaan secara berturut) dan repetition / looping. Dalam selecction, program akan memilih bagian yang akan dijalankan ( sehingga terdapat bagian yang tak dijalankan).
Umumnya selection menggunakan IF…THEN….ELSE…, akan tetapi terdapat pula CASE …OF. Penggunaan IF lebih umum digunakan bila terdapat pilihan yang tidak terlalu banyak dan eksekusi baris program yang panjang.
Blok pertama untuk IF dijalankan bila condition yang digunakan bernilai TRUE, sedangkan blok ELSE dijalankan bila nilai condition adalah FALSE.

statetmen IF

Struktur dari statetmen if secara umum dapat berupa if-Then  atau if-Then-else
  •      pernyataan IF sederhana

               IF kondisi THEN Pernyataan
    Pada kondisi ini, Pernyataan hanya akan dijalankan apabila kondisi bernilai True. Bagiankondisi berupa ekspresi
    Contoh mekanisme kerja dari pernyataan IF
    PROGRAMSuhu1;
    Uses wincrt;
    VAR
                Suhu: Real;
    BEGIN
    Write(‘suhu tubuh :’);
    Readln(suhu);
    If suhu >37 then
    Writeln(‘suhu tinggi’);
    Write(‘selesai’);
    End.
    Untuk melihat efek dari pernyataan IF di atas, cobalah untuk mengeksekusinya 
    coba anda masukan angka 36 dan angka 38, ketika anda masukan angka 36 maka hanya akan muncuk  
     suhu tubuh: 37
    selesai
    Contoh eksekusi kedua , kita masukan angka 38, maka akan muncul 
    Suhu tubuh : 38
    Suhu tinggi
    Selesai
    Dari kedua contoh pengeksekusian diatas terlihat bahwa suhu tinggi tidak selalu ditampilkan. Kemudian pernyataan redln  akan menyebabkan komputer meminta data suhu dimasukan dari key board. Setelah pemakai program memasukan data suhu( dan disimpan ke variabel suhu), berdasarkan pernyataan
    IF  suhu > 37 then
    Writeln(‘ suhu tinggi’);
    Pada pernyataan ini, ekspresi suhu >37 memegang kendali terhadap pernyataan writeln(‘suhu tinggi’); bila suhu ini melebihi  37, maka pernyataan writeln tersebut akan dijalankan. Tetapi, jika kondisi suhu kurang dari atau sama dengan 37 maka bernilai false, pernyataan writeln tersebut tidak dijalankan, sedangkan pernyataanya
    Writeln(‘selesai’);

    Pernyataan IF majemuk

    Pada bagian pernyataan majemuk menggunakan tambahan pernyataan Begin End.
    Contoh program IF majemuk
    PROGRAM  Suhu2;
    Uses wincrt;
    VAR
                Suhu: Real;
    BEGIN
    Write(‘suhu tubuh :’);
    Readln(suhu);
    If suhu >37 then
    BEGIN
                Writeln(‘suhu tinggi’);
    Write(‘selesai’);
    END
    END.


    Pernyataan IF ELSE

    Bentuk selanjutnya dari IF adalah sebagai berikut:
    IF kondisi THEN
    Pernyataan_1
    ELSE
    Pernyatan_2
    Pada bentuk ini :
    a)      Pernyataan _1 hanya akan dijalankan jika kondisi bernilai True (benar)
    b)      Pernyataan_2 hanya akan dijalankan jika kondisi bernilai False b(salah)
    Sebagai contoh, dinginkan untuk menampilkan tulisan :
    a)      Suhu tinggi  kalau suhu bernilai lebih dari 37
    b)      Suhu rendah jika suhu kurang dari atau sama dengan 37
    PROGRAM  Suhu3;
    Uses wincrt;
    VAR
                Suhu: Real;
    BEGIN
    Write(‘suhu tubuh :’);
    Readln(suhu);
    If suhu >37 then
                Writeln(‘suhu tinggi’)
    ELSE
    Writeln(‘Suhu rendah’);
    Writeln(‘selesai’)
    END.


         Satu hal penting yang perlu diperhatikan dalam menuliskan pernyataan pernyataan IF ELSE adalah tidak diperkenankan pemakaian tanda titik komadi belakang pernyataan sebelum ELSE 
    Berikut ini merupakan berbagai bentuk yang mungkin terjadi.
    Bentuk 1:
    IF kondisi  THEN
    Pernyataan_1
    ELSE
    Pernyataan_2

    Bentuk 2:
    IF kondisi THEN
    BEGIN
    Pernyataan_11;
    Pernyataan_12;
       ….
       Pernyataan_1n
    END
        Pernyataan _2

    Bentuk 3:
    IF kondisi THEN
      Persyaratan_1
    ELSE
    BEGIN
        Pernyataan_21;
       Pernyataan_22;
       …..
       Pernyataan_2n
    END

    Pernyataan IF bersarang

    Suatau pernyataan IF dapat mengandung pernyataan IF yang lain. Bentuk seperti ini biasa disebut IF bersarang ( nested IF). Hal yang penting di dalam pembuatan IF bersarang adalah pemahaman terhadap IF ELSE. Sebagai contoh:
         IF kondisi1  THEN
             IF kondisi2 THEN
                  Pernyataan_1;
             ELSE
                   Pernyataan_2;
    Dalam hal ini ada beberapa hala yang perlu diperhatikan:
    a)      ELSE berpasangan dengan IF yang tepat di atasnya, yang terletak dalam satu blok.
    b)      Bila IF yang terletak tepat sebelum ELSE terletak di dalam BEGIN END, IF tersebut dikatakan tidak terletak dalam satu blok yang sama.
    Pada kondisi diatas ELSE berpasangan dengan IF kondisi2, tetapi pada contoh berikut:

    IF kondisi  THEN
    BEGIN
    If kondisi2 THEN
    Pernyataan_1;
    END
    ELSE
    Pernyataan_2;
    ELSE berpasangan dengan IF kondisi1
    Contoh  pemakaian IF bersarang adalah untuk menentukan bonus bagi pembeli berdasarkan total pembelian. Kriterianya  adalah sebagai berikut.
    Kriteria
    Bonus
    Total  ≥ 100.000 Diskon 10%
    50.000 ≤ Total < 100.000 1 piring
    10.000 ≤ Total < 50.000 2 Gelas
    Total < 10.000 Tidak ada bonus
    PROGRAM  Bonus; 
    Uses wincrt; 
    VAR Totalpembelian: Longint; 
    BEGIN 
    Writeln(‘total pembelian=’);Readln(totalpembelian); 
    IF totalpembelian>=100000 THEN     
      Writeln(‘Diskon sebesar 10%’)
    ELSEIF totalpembelian >=50000 THEN         
      Writeln(‘bonus: 1 piring’)
    ELSEIF  totalpembelian>=10000 THEN           
      Writeln(‘bonus: 1 gelas ‘)\
    ELSE    
      Writeln(‘tidak ada bonus’) 
    END.
    Penggunaan AND dan OR
    Seringkali sebuah operator relasi tidak cukup untuk mememriksa kondisi – kondisi yang ada. Pada keadaan seperti ini, operator AND atau OR sangatlah berguana. Contohnya dapat dilihat dalam contoh berikut.
    PROGRAM  pilihan1;
    Uses wincrt;
    VAR
    Pil : integer;
    BEGIN
    Writeln(‘ketik pilihan dan akhiri dengan enter’);
    Write(‘pilihan 1…..4 :’);
    Readln(pil);
    IF ( pil >= 1) AND (pil <= 4) THEN
            Writeln(‘pilihan benar’)
    ELSE
          Writeln(‘pilihan salah’);
    END.

Statetmen CASE

Pernyataan CASE merupakan alternatif dari pernyataan IF untuk maslah dengan pilhan berganda. Pada masalah tertentu, CASE lebih memberikan kejelasan daripad IF. Namun perlu diketahui bahwa semua persoalan yang bisa ditangani oleh CASE bisa ditangani oleh IF , tetapi tidak sebaliknya.
Pernyataan CASE biasanya digunakan untuk pilhan berganda. Bentuk pernyataan ini
CASE nilai OF
     Daftar_nilai_1 : pernyataan_1;
     Daftar _nilai_2 : pernyataan_2;
      ……
     Daftar_nilai_m : pernyataan_m;
ELSE
    Pernyataan_n
END

Pada bentuk diatas:
a)      Nilai dapat berupa ekspresi yang bertipe ordinal ( misalnya Char, Byte dan Boolean)
b)      Daftar_nilai dapat berupa satu atau beberapa konstatnta bertipe ordinal, yang sesuai dengan tipe dari daftar nilai
Pengujian dilaksanakan dengan mencocokan nilai dan daftar_nilai, dimulai dari yang teratas. Kalau pada suatu pengujian tidak ada yang cocok , daftar_nilai berikutnya akan diperiksa. Kalau ada yang cocok ,pernyataan  yang terletak sesudah tanda: akan dijalankan dan kemudian eksekusi dilanjutkan ke END. Bagian ELSE hanya akan dijalankan apabila tak ada satupun daftar_nilai yang cocok.
Contoh program pernyataan CASE
PROGRAM kotak1;
USES wincrt;
VAR
    Pil: integer;
BEGIN
   Write(‘ pilihan (1,2 atau 3):’);
Readln(pil);
 CASE pil OF
   1: writeln(‘pilihan anda adalah 1’);
   2: writeln(‘pilihan anda adalah 2’);
   3: writeln(‘pilihan anda adalah 3’);
ELSE
    Writeln(‘salah pilih!’);
END;
  Writeln(‘selesai…’)
END.

Contoh 2
PROGRAM kotak2;
USES wincrt;
VAR
    Kodebulan: integer;
BEGIN
   Write(‘ kode bulan [1….12}:’);
Readln(kodebulan);
CASE kodebulan OF
       1,3,5,8,10,12:
     Writeln(‘jumlah hari =31’);
     4,6,9,11:
    Writeln(‘ jumlah hari = 30’);
    2:
     Writeln(‘jumlah hari 28 atau 29’);
ELSE
Writeln(‘salah memasukan kode bulan’)
END;
END.

CONTOH SOAL 1

buatlah program penghitungan potongan harga belanja dengan kondisi
~ jika jumlah belanja lebih dari Rp 300.000 mendapatkan diskon 40%
~ jika jumlah belanja antara Rp 150.000 hingga Rp 300.000 mendapatkan diskon 20%
~ jika jumlah belanja lebih kecil dari Rp 150.000 mendapatkan diskon 10%

JAWAB



program hitung_diskon_harga;
uses crt;

var harga, diskon, total : real;

begin clrscr;

writeln ('MENGHITUNG DISKON DAN TOTAL HARGA BELANJA');
write   ('Masukkan Jumlah Harga : Rp ' ); readln (harga);

if harga > 300000 then
begin
writeln('Mendapat Diskon 40%');
diskon := harga * 0.4; total := harga - diskon; end
else

if (harga>= 150000) and (harga<=300000) then
begin
writeln('Mendapat Diskon 20%');
diskon := harga * 0.2; total := harga - diskon; end
else

if harga < 150000 then
begin
writeln('Mendapat Diskon 10%');
diskon := harga * 0.1; total := harga - diskon; end;


write ('Jumlah diskon : Rp ', diskon:0:0); readln;
write ('Jumlah Harga Setelah Diskon    : Rp ', total :0:0 ); readln;

end.



CONTOH SOAL 2
hitunglah gaji karyawan dengan kondisi :

Ketentuan Soal :
1. Nama Di input 
2. Jabatan di input , 
Jabatan        Gaji       Tunjangan
Direktur       3000000    10 % dari gaji
Manager        2000000    5% dari gaji
Karyawan       1000000    2% dari gaji
OB             800000     1% dari gaji

3. Dikenakan PPN 10 % dari gaji
4. Gaji Bersih didapat dari : gaji + tunjangan – PPn

  
JAWAB
program hitunggaji;
Uses crt;
Var nama:string[20];jabatan:string;
Gaji:longint;
Tunj,ppn,gajibersih:real;
Begin
Clrscr;
Write(‘Nama Karyawan     : ‘); readln(nama);
Write(‘Masukkan Jabatan  : ‘); readln(jabatan);
If  (jabatan=’Direktur’) or (jabatan=’direktur’) then
     Begin
 Gaji:=3000000;
 Tunj:=0.1* gaji;
     End
Else If  (jabatan=’Manager’) or (jabatan=’manager’) then
     Begin
 Gaji:=2000000;
 Tunj:=0.05* gaji;
     End
Else If  (jabatan=’Karyawan’) or (jabatan=’karyawan’) then
     Begin
 Gaji:=1000000;
 Tunj:=0.1* gaji;
     End
Else 
     Begin
 Gaji:=800000;
 Tunj:=0.1* gaji;
     End;
Writeln(‘Gaji Bersih      : Rp.‘,gaji);
Writeln(‘Tunjangan Jabatan      : Rp.‘,tunj:9:2);
Ppn:=0.1*gaji;
Writeln(‘PPN 10 %      :  Rp.‘,ppn:9:2);
Total:=(gaji+total)-ppn;
Writeln(‘Total Gaji   :  Rp.‘,total:9:2);
Readln;
End.

Tidak ada komentar :

Posting Komentar