Saturday, 10 January 2015

LATIHAN PERULANGAN PADA PASCAL (Bagian 1)

Berikut ini beberapa latihana - latihan perulagan pada pascal dengan kasus - kasus sebagai berikut

Kasus 1
Buatlah program untuk mencetak bilangan bulat sbb: 15  13  11  9  7  5  3  1 menggunakan struktur perulangan Repeat-Until, While dan For!

      1.  Perulangan repeat-until
          Ketikkan listing di bawah ini di pascal

     uses crt;
     var i:integer;
     begin
     clrscr;
     writeln(' ----------------------- ');
     writeln(' PERULANGAN REPEAT UTNIL ');
     writeln(' ----------------------- ');
     writeln;
     i := 15;
     repeat
     begin
     if i mod 2 = 1 then
     write(i:3);
     i:=i-1;
     end;
     until i<1;
     readln;
     end.

     Jika sudah maka gambarnya seperti di bawah ini




 Hasilnya :




      2.  Perulangan while 
           Ketikkan listing di bawah ini di pascal

            uses crt;
            var i:integer;
            begin
              clrscr;
              writeln(' ----------------------- ');
              writeln('     PERULANGAN FOR      ');
              writeln(' ----------------------- ');
              writeln;
              for i:= 15 downto 1 do
              begin
                if i mod 2 = 1 then
                write(i:3);
              end;
            readln;
            end.

           Jika sudah maka gambarnya seperti di bawah ini



Hasilnya :


        2.  Perulangan while 
             Ketikkan listing di bawah ini di pascal
           
          uses crt;
          var i:integer;
          begin
           clrscr;
           writeln(' ----------------------- ');
           writeln('    PERULANGAN WHILE     ');
           writeln(' ----------------------- ');
           writeln;
           i:=15;
           while i >=1 do
           begin
            if i mod 2 = 1 then
            write(i:3);
            i:=i-1;
           end;
           readln;
           end.

              Jika sudah maka gambarnya seperti di bawah ini



Hasilnya



Kasus 2
Ada katak masuk kedalam sumur sedalam 31.2 m. 5 hari pertama katak bias naik 3 m tiap pagi dan merosot 1 meter tiap malam, 10 hari berikutnya katak bias naik 2 meter tiap pagi dan merosot 1.25 m tiap malam, selanjutnya naik 2 m tiap pagi dan merosot 1.5 m tiap malam, berapa hari katak tersebut dapat keluar dari sumur?

Bingung....? Langsung saja ketik listing dibawah ini di pascalnya masing-masing

uses crt;
var merosot, kedalaman, selisih : real;
    hari, naik    : integer;
begin
clrscr;
     write('Masukkan Kedalaman Sumur : '); readln(kedalaman);
     writeln('----------------------------------------------------------');
     writeln('Jumlah Hari    Naik    Merosot    Jumlah Naik    Kedalaman');
     writeln('                                    Per Hari');
     writeln('----------------------------------------------------------');
     hari    := 1;
     naik    := 3;
     merosot := 1;
     selisih := naik - merosot;
     while kedalaman>0 do
     begin
       kedalaman := kedalaman-selisih;
       writeln(hari:7, naik:10, merosot:12:2, selisih:12:2, kedalaman:14:2);
       hari := hari+1;
       if (hari>5) and (hari<=15) then
          begin
               naik    := 2;
               merosot := 1.25;
               selisih := naik-merosot;

          end;
    end;
readln;
end.

Jika sudah maka gambarnya seperti di bawah ini


Hasilnya :








Friday, 9 January 2015

PERULANGAN (LOOPING) REPEAT..UNTIL

PERULANGAN (LOOPING)

     Perulangan (looping) merupakan bentuk yang sering ditemui dalam suatu program aplikasi. Di dalam bahasa Pascal, dikenal tiga macam perulangan, yaitu dengan menggunakan statemen For, While-Do dan Repeat….Until. Perulangan Repeat..until dapat berbentuk perulangan repeat..until dan repeat..until tersarang.



PERNYATAAN REPEAT..UNTIL

   Pernyataan perulangan ini hampir sama dengan pernyataan pengulangan while, dan biasanya digunakan bila jumlah belum dapat ditentukan pada saat program ditulis. Perbedaan pernyataan reeat... until dan while terletak pada pengecekkan kondisi.

  Jika pada pernyataan while, kondisi di cek pada awal kalang, sedangkan pada pernyataan repeat..until, kondisi di cek pada akhr kalang.

    Perbedaan yang lain, bila pernyataan selama kondisi masih terpenuhi, sedangkan pernyataan repeat ..until mengulang pernyataan selama kondisi belum terpenuhi. Bentuk umum pernyataan repeat..until adalah sebagai berikut

repeat 
(pernyataan - pernyataan yang akan di ulang)
until kondisi 


Contoh :

    Program Perulangan_Repeat_Until;
    uses crt;
    Var i : byte;
    Begin
    clrscr;
    i := 1;
    Repeat
    Write ('No ');
    Writeln (i);
    i := i + 1;
    Until i > 5;
    Readln;

    End.

   Hasilnya

     No 1
     No 2
     No 3
     No 4
     No 5


PERNYATAAN REPEAT..UNTIL TERSARANG

   Repeat until bersarang adalah suatu perulangan repeat..until yang satu berada di dalam perulangan repeat unti yang lainnya.

contoh

uses crt;
var
  a,b,c : real;
  begin
  clrscr;
  writeln('================================');
  writeln(' sisi a     sisi b      sisi c  ');
  writeln('================================');
  a := 1;
  repeat
  b := 0;
    repeat
     c := sqrt (a * a + b * b);
     writeln (a:6:2, b:11:2, c:12:2);
     b := b + 5;
     until b > 25;
       a := a+1;
       until a > 3;
 writeln('=================================');
 readln;

 end.


 Programnya :

   Hasilnya


PERULANGAN (LOOPING) WHILE - DO

PERULANGAN (LOOPING)

     Perulangan (looping) merupakan bentuk yang sering ditemui dalam suatu program aplikasi. Di dalam bahasa Pascal, dikenal tiga macam perulangan, yaitu dengan menggunakan statemen For, While-Do dan Repeat-UntilPerulangan while - do dapat berbentuk perulangan while - do dan while - do tersarang.

PERNYATAAN WHILE - DO 

  Pernyataan perulangan ini memiliki bentuk sebagai berikut : Perulangan dengan statemen While-Do digunakan untuk melakukan perulangan suatu statemen atau blok statemen terus-menerus selama kondisi ungkapan_logika pada while masih bernilai logika benar. Bentuk umum pernyataan perulangan wile do adalah sebagai berikut.

    while kondisi do
    begin
    pernyataan - pernyatan yang akan di ulang)
    end;

kondisi sendiri merupakan suatu ekspresi bertipe boelan, artinya hanya dapat bernailai benar (true) atau salah (false). Contoh sederhananya :

    while (x > 0) do
    begin
    x := x - 1;
    y := y - 1;
    end;

Program akan megnulang dua pernyataan : (x := x -1) dan (y := - 1) selama nilai x masih positif.

Contoh :

    Program Perulangan_While_Do;
    uses crt;
    Var i : byte;
    Begin
    i := 1;
    While i <= 5 Do
    Begin
    Write ('No ');
    Writeln (i);
    i := i + 1;
    End;
    Readln;
    End.

  Hasilnya :

    No 1
    No 2
    No 3
    No 4
    No 5



PERNYATAAN WHILE - DO BERSARANG

  While Bersarang adalah bagian yang akan diulang oleh WHILE juga bisa mengandung WHILE yang lainnya. Jadi bisa juga di artikan while dalam while.

Contoh :

uses crt;
var
  a, b:integer;
begin
  clrscr;
  a:=1;
  b:=1;
  while a < 4 do
  begin
    a:= a + 1;
  while b < 3 do
  begin
  write (a:3, b:2);
    b :=b+1;
    end;
  end;
  readln;
  end.

Hasilnya :
    2 1  2 2




Demikian sekilas informasi tentang perulangan while pada pascal... 

PERULANGAN (LOOPING) FOR

PERULANGAN (LOOPING)

     Perulangan (looping) merupakan bentuk yang sering ditemui dalam suatu program aplikasi. Di dalam bahasa Pascal, dikenal tiga macam perulangan, yaitu dengan menggunakan statemen For, While-Do dan Repeat….Until. Struktur Perulangan Perulangan dengan statemen For digunakan untuk mengulang statemen atau satu blok statemen berulang kali sejumlah yang ditentukan. 


Bila statemen lebih dari satu perintah, maka blok perintah-perintah tersebut harus diawali dengan begin dan diakhiri dengan end. Perulangan for dapat berbentuk perulangan positif, negatif dan tersarang.

1. Perulangan Positif
    Merupakan perulangan dengan penghitung (counter) dari kecil ke besar. Bentuk umum pernyataan for positif adalah sebagai berikut.

     for pencacah := nilai_awal to nilai_akhir do
     begin
    (pernyataan yang akan di ulang)
     end.
Nilai awal dan nilai akhir harus mempunyai tipe yang sama, yaitu bertipe integer.

Contoh 1 :

        Program Perulangan_For_Positif;
        Uses crt;
        Var i : byte;
        Begin
        For i := 1 To 5 Do
        Writeln ('Belajar Pemrograman');
        Readln;
        End.

        Hasilnya :
          Belajar Pemrogrman
          Belajar Pemrogrman
          Belajar Pemrogrman
          Belajar Pemrogrman
          Belajar Pemrogrman

Contoh 2 :
     
        Program Perulangan_For_Positif;
        uses crt;
        Var i : byte;
        Begin
        For i := 1 To 5 Do
        Begin
        Write ('No ');
        Writeln (i);
        End;
        Readln;

        End.

        Hasilnya :
          No 1
          No 2
          No 3
          No 4
          No 5


2.  Perulangan Negatif
     Merupakan perulangan dengan penghitung (counter) dari besar ke kecil. Pendeklarasian perulangan ini adalah sebagai berikut :

     for pencacah := nilai_awal downto nilai_akhir do
     begin
    (pernyataan yang akan di ulang)
     end.

Contoh 1 :
        Program Perulangan_For_Negatif;
        Begin
        For i := 5 DownTo 1 Do
        Begin
        Write ('No ');
        Writeln (i);
        End;

        Readln;

        Hasilnya :
          No 5 
          No 4
          No 3
          No 2
          No 1


3. Perulangan Tersarang (Nested Loop)
   Merupakan perulangan yang berada di dalam perulangan yang lainnnya. Pada sistem perulangan ini, perulangan yang lebih dalam akan diproses terlebih dahulu sampai habis, kemudian perulangan yang lebih luar baru akan bertambah, kemudian mengerjakan perulangan yang lebih dalam lagi mulai dari nilai awalnya, dan seterusnya. Berikut contoh sederhana mengenai for bersarang

    for x := 1 to 3 do
         for y := 1 to 2 do
              writeln (x,' ', y);

Penjelasannya:
for yang luar (dengan pencacah variabel x) akan menjalankan for yang dalam (dengan pencacah y) akan dituliskan nilai x dan y. Berikut ini adalah keluaran dari program di atas 

     1 1
     1 2
     2 1
     2 2
     3 1
     3 2  

Pada saat x benilai 1, y diulang sebanyak 2 kali. jadi pada layar akan tertulis 1 1 dan 1 2. demikian juga pada saat x bernilai 2 y diulang sebanyak 2 kali. Jadi pada layar akan tertulis 2 1 dan 2 2. Hal yang sama terjadi pada saat x bernilai 3, y diulang sebanyak 2 kali. Sehingga pada layar tertulis 3 1 dan 3 2.       





LATIHAN -LATIHAN PENYELEKSIAN KONDISI PADA PASCAL (Bagian 4)


Sebelumnya saya sudah posting mengenai LATIHAN -LATIHAN PENYELEKSIAN KONDISI PADA PASCAL (Bagian 3)Kali ini saya akan menlanjutkan beberapa latihan - latihan lagi. Langsung saja berikut latihan-latihannya :


Kali ini latihannya, kita akan buat program dengan beberapa cerita dibawah ini.


1. Buatlah program untuk menentukan bonus pegawai, berdasarkan ketentuan yang diberikan oleh bagian personalia dan keuangan sebagai berikut: Pegawai perusahaan digongkan menjadi dua golongan, yaitu staf dan non staf. Staf akan mendapatkan bonus sebesar 1 juta rupiah dengan syarat bahwa ia telah bekerja paling tidak 5 tahun dan umurnya sudah mencapai 50 tahun; staf yang bekerja kurang dari 5 tahun dan berapapun umurnya, hanya mendapat bonus sebesar Rp. 500.000. Pegawai non staf yang telah bekerja lebih dari 5 tahun akan mendapat bonus sebesar Rp. 400.000 jika berumur lebih dari 50 tahun sedangkan pegawai non staf yang berumur kurang dari 50 tahun hanya mendapat bonus Rp. 250.000. Pegawai staf umurnya kurang dari 50 tahun akan mendapat bonus Rp. 300.000.

Ndak usah lama-lama berikut scribnya

       program menghitung_bonus_pegawai;
   uses crt;
   var
     Nama,jab     : string;
     umur         : integer;
     LK           : byte;
     bonus        :real;
   begin
     clrscr;
     writeln('        MENGHITUNG BONUS PEGAWAI        ');
     writeln('----------------------------------------');
     write('Masukkan Nama           = ');readln(nama);
     write('Masukkan Jabatan [s/ns] = ');readln(jab);
     write('Masukkan Umur           = ');readln(umur);
     write('masukkan lama kerja     = ');readln(lk);
     writeln('----------------------------------------');
     if (jab='s') or (jab='S') then
     begin
        if (umur>=50)and (LK>=5)then
        begin
          bonus:=1000000;
          end
        else if (LK<=5) then
        begin
          bonus:=500000;
        end
        else if (umur < 50 ) then
        begin
          bonus:=300000;
        end;
     end
     else if (jab='ns') or (jab='NS') then
     begin
        if (umur>=50) and(LK>=5) then
        begin
        bonus:=400000;
        end
        else if (umur<=50) and (LK>=5) then
        begin
        bonus:=250000;
        end;
     end;
   writeln('Bonus ', nama ,' = Rp. ',bonus:5:0);
   readln;
   end.


   Berikut tampilan program dan hasilnya





                         Hasilnya



2.  Dibaca suatu nilai bertipe integer.
Jika dimasukkan harga 1 maka tulis dilayar ‘SATU’
Jika dimasukkan harga 2 maka tulis dilayar ‘DUA’
Jika dimasukkan harga 3 maka tulis dilayar ‘SATU’
........
Jika dimasukkan harga 9 maka tulis dilayar ‘SEMBILAN’
Jika dimasukkan harga 0 maka tulis dilayar ‘NOL’
Jika dimasukkan harga selain 0 s/d 9 maka tulis dilayar ‘BILANGAN SELAIN 0 s/d 9’


Scribnya

   program PEMBILANG;
   uses crt;
   var
     hrga:integer;
     tls:string [35];
   begin
     clrscr;
     writeln('             PEMBILANG           ');
     writeln('---------------------------------');
     writeln;
     write('Masukkan Angka 0 s/d 9: ');readln(hrga);
     writeln('---------------------------------');
     writeln;
     case hrga of
     0 : writeln('   NOL');
     1 : writeln('   SATU');
     2 : writeln('   DUA');
     3 : writeln('   TIGA');
     4 : writeln('   EMPAT');
     5 : writeln('   LIMA');
     6 : writeln('   ENAM');
     7 : writeln('   TUJUH');
     8 : writeln('   DELAPAN');
     9 : writeln('   SEMBILAN');
     end;
     if(hrga >= 10) then
     begin
        writeln('    BILANGAN SELAIN 0 s/d 9');
     end;
     writeln;
     writeln('---------------------------------');
     readln;
   end.

   
   
   Tampilan program dan hasilnya













LATIHAN -LATIHAN PENYELEKSIAN KONDISI PADA PASCAL (Bagian 3)

Sebelumnya saya sudah posting mengenai LATIHAN -LATIHAN PENYELEKSIAN KONDISI PADA PASCAL (Bagian 2). Kali ini saya akan menlanjutkan beberapa latihan - latihan lagi. Langsung saja berikut latihan-latihannya :


1. Program untuk menghitung gaji Karyawan pada PT. XYZ jika yang diinput adalah namadan Kode jabatan dan mengeluarkan jabatan dan perincian gajinya ditetapkan berdasarkan jabatan denga ketentuan sebagai berikut:
           
Kode Jabatan
Jabatan
Gaji Pokok
Tunj. Transport
Tunj. Makan
DR
Direktur
Rp 3000000
Rp 850000
Rp 500000
WD
Wakil Direktur
Rp 2500000
Rp 800000
Rp 500000
MN
Manajer
Rp 2000000
Rp 800000
Rp 450000
AS
Asisten
Rp 1500000
Rp 700000
Rp 400000
KW
Karyawan
Rp 1000000
Rp 500000
Rp 300000

    Berikut scribnya ketikkan di turbo pascalnya.

   program PT_XYZ;
   uses crt;
   var
     kj:String;
     GP,TT,TM:longint;
     Total:longint;
     nama:string[30];
     Jabatan:string [20];
   begin
     clrscr;
     writeln('           PROGRAM GAJI PEGAWAI           ');
     writeln('------------------------------------------');
     writeln;
     write('Masukkan Nama Karyawan: ');readln(nama);
     write('Masukkan Kode Jabatan [DR,WD,MN,AS,KW]: ');readln(kj);
     if kj= 'DR' then
       begin
       Jabatan:= 'Direktur';
       GP:= 3000000;
       TT:= 850000;
       TM:= 500000;
       end
     else if kj='WD' then
       begin
       Jabatan:= 'Wakil Direktur';
       GP:= 2500000;
       TT:= 800000;
       TM:= 500000;
       end
     else if kj='MN' then
       begin
       Jabatan:= 'Manajer';
       GP:= 2000000;
       TT:= 800000;
       TM:= 450000;
       end
     else if kj='AS' then
       begin
       Jabatan:= 'Asisten';
       GP:= 1500000;
       TT:= 700000;
       TM:= 400000;
       end
     else if kj='KW' then
       begin
       Jabatan:= 'Karyawan';
       GP:= 1000000;
       TT:= 500000;
       TM:= 300000;
       end;
       Total:=GP + TT + TM;
       writeln('------------------------------------------');
       writeln;
       writeln('Jabatan             = ', Jabatan);
       writeln('Gaji Pokok          = Rp. ', GP);
       writeln('Tunjangan Transaksi = Rp. ',TT);
       writeln('Tunjangan Makan     = Rp. ', TM);
       writeln('Total Gaji          = Rp. ',Total);
       writeln;
       writeln('------------------------------------------');;
       readln;
   end.

   Agak panjang ya.... nah jika sudah di ketik maka tampilannya seperti di bawah ini





       Kemudian di run maka tampilannya akan seperi di bawah ini


2. Kali ini adalah kita akan membuat program dengan cerita sebagai berikut.

    "PDAM Kota Makassar menetapkan tariff pemakaian air bersih per m3-nya ditentukan secara per golongan dimana golongan ditentukan otomatis berdasarkanjumlah pemakaian. Untuk pemakaian 50 m3  pertama dikenakan biaya Rp 1500. 51-75 m3  dikenakan biaya Rp. 1750. 76-100 m3  dikenakan biaya Rp 2000 dan lewat dari 100 m3   dikenakan biaya Rp. 2250. Buatlah program untuk menghitung jumlah yang harus di bayar pelanggan jika volume air diinput dari keyboard ?"

Bingung bagaimana programnya...? Baiklah untuk membuat program seperti cerita di atas, ketikkan scrib di bawah ini di pascalnya yaa..

       program PDAM_Kota_Makassar;
   uses crt;
   label mulai;
   var
     pmkn:longint;
     jumlah:longint;
     hrg1,hrg2,hrg3,hrg4:longint;
     mau:char;
   begin
     clrscr;
     writeln('    PROGRAM PDAM KOTA MAKASSAR    ');
     writeln('----------------------------------');
     writeln;
     mulai:
     write('Masukkan Jumlah Pemakaian  = ');readln(pmkn);
     writeln('----------------------------------');
     if pmkn<= 50 then
          hrg1:=1500 * pmkn
     else if  pmkn<=75 then
     begin
          hrg1:=1500*50;
          hrg2:=1750* (pmkn-50);
     end
     else if pmkn<=100 then
     begin
          hrg1:=1500*50;
          hrg2:=1750*25;
          hrg3:=2000*(pmkn-75);
     end
     else if pmkn>100 then
     begin
         hrg1:=1500*50;
         hrg2:=1750*25;
         hrg3:=2000*25;
         hrg4:=2250*(pmkn-100);
     end;
     jumlah:=hrg1+hrg2+hrg3+hrg4;
     writeln('Tarif');
     writeln('    Golongan I   = Rp. ',hrg1:7);
     writeln('    Golongan II  = Rp. ',hrg2:7);
     writeln('    Golongan III = Rp. ',hrg3:7);
     writeln('    Golongan IV  = Rp. ',hrg4:7);
     writeln('----------------------------------');
     writeln('    Total Bayar  = Rp. ',jumlah:7);
     write('Masih Mau Menghitung [y/t]: ');
     readln(mau);
     if(mau='y') or (mau='Y') then goto mulai
   
   end.

   Jika sudah berikut tampilannya





         Berikut tampilan hasil programnya ketika di jalankan



         setelah itu akan ada pilhan y/t. Jika kita pilih "y" akan dilakukan perhitungan lagi dan jika, jika kita pilih "t" tidak akan dilakukan perhitungan lagi dan akan langsung keluar. Di bawah ini tampilanya jika kita pilih pilihan "y".




SEKIAN....









ADS