Anda di halaman 1dari 22

Berikut ini adalah beberapa contoh soal dan jawaban dari

perulangan For, Repeat, While pada Pascal.


http://andilutfiyanrahmat.blogspot.com/2015/01/latihan-dan-contoh-perulangan-pascal.html

1.      Buatlah sebuah program untuk menampilkan bilangan kelipatan 3, dengan range berupa inputan
dari user. Gunakan struktur repeat…until
Contoh inputan :
Awal : 1
Akhir : 10
Kelipatan 3 : 3 6 9
Awal : 15
Akhir : 30
Kelipatan 3 : 15 18 21 24 27 30

uses crt;
var
        naw, nak, kel: integer;

begin
clrscr;
    write('Masukkan nilai Awal   : '); readln(naw);
    write('Masukkan nilai Akhir  : '); readln(nak);

        if naw mod 3 = 0 then


                naw := naw
        else
                 repeat
                 begin
                  naw := naw + 1;
                 end;
                 until naw mod 3 = 0;

    write('Kelipatan             : ');


   
    repeat
    begin
         write(naw, '  ');
     naw := naw + 3;
    end;

    until naw > nak;


        readln;
end.

2.     Buatlah tabel perkalian menggunakan For. Kemudian buat juga dengan menggunakan While.
Input: Masukkan angka untuk tabel perkalian: 5
Akan dikalikan dari 1 s.d: 20
Output :
5*1=5
5 * 2 = 10
5 * 3 = 15
.....dst
5 * 19 = 95
5 * 20 = 100

uses crt;
var
 a, n, h: integer;

begin
clrscr;

 write('Masukkan angka yang ingin dikalikan    : '); readln(a);

 n := 1;
 while n <= 20 do
 begin
    h := n * a;
    writeln(a, ' x ', n, ' = ', h);
    n := n + 1;
 end;
 readln;

end.

3.     Buatlah program untuk menghitung nilai faktorial suatu bilangan yang diinputkan oleh user.
Rumus faktorial adalah sebagai berikut :
n! = n*(n-1)*(n-2)*…*(n-(n-1))
n merupakan inputan dari user.
Boleh menggunakan struktur pengulangan manapun.
Contoh inputan
Faktorial dari : 3
3! = 3*2*1=6
Faktorial dari : 5
5! = 5*4*3*2*1 = 120

uses crt;
var
 n, x, j, f: integer;

begin
clrscr;
 write('Masukkan nilai n    : '); readln(n);

 j := 1;
 x := n;
 write(n, '! = ');

 while (x > 0) do
 begin
    if (x = 1) then
         begin
        write(x, ' = ', j);
         end
    else
         begin
        write(x, ' x ');
         end;

        j := j * x;
    x := x - 1;
 end;
 readln;

end.

4.     Buatlah deret goyang beserta penjumlahannya.


Input: Masukkan angka: 10
Output: Deret goyang: 1 -2 3 -4 5 -6 7 -8 -9 -10
Jumlah deret goyang: -5
uses crt;
var
 x, j, a, n: integer;

begin
clrscr;
 write('Masukkan angka        : '); readln(x);

 a := 1;
 j := 0;
 n := 1;

 repeat
 begin
  if a mod 2 = 0 then
   begin
    a := a * (-1);
    write(a, ' ');
   end
  else
   begin
    a := a;
    write(a, ' ');
   end;

   j := j + a;
   n := n + 1;

  if a < 0 then
    a := a * (-1) + 1
  else
    a := a + 1;
 end;
 until n > x;

 writeln;

 write('Jumlah deret goyang   : ', j);


 readln;
end.
5.     Buatlah sebuah program untuk menghitung gaji n karyawan, n merupakan sebuah bilangan bulat
yang akan diinputkan oleh user, kemudian akan dihitung gaji perkaryawan dengan ketentuan
sebagai berikut :
Gaji per jam : Rp 10.000,-
Bila jam kerja > 7 jam, maka sisa jam kerja dihitung sebagai lembur yg besarnya 1.5 * gaji per
jam
Kemudian ditampilkan total gaji karyawan yang harus dibayarkan oleh perusahaan.
Jumlah jam kerja tiap karyawan akan diinputkan oleh user
Contoh inputan
Jumlah karyawan : 3 [inputan user]
Jam kerja karyawan 1 : 8 [inputan
user]
Total Gaji : 85000
Jam kerja karyawan 2 : 6 [inputan
user]
Total Gaji : 60000
Jam kerja karyawan 3 : 12 [inputan
user]
Total Gaji : 145000

Total Gaji karyawan : 290000

uses crt;
var
 kar, juk, jak: integer;
 gaj, tob: real;
begin
clrscr;
 write('Masukkan Jumlah Karyawan   : '); readln(kar);

 tob := 0;
 juk := 1;
 repeat
  begin
   write('Masukkan Jam Kerja Karyawan ', juk, '  : '); readln(jak);
   if (jak > 7) then
    begin
     gaj := (((jak - 7) * 10000 * 1.5) + (7 * 10000));
    end
   else
    begin
     gaj := jak * 10000;
    end;

    tob := tob + gaj;


        juk := juk + 1;
   write('Total Gaji   : ', gaj:0:0); writeln;

  end;
 until juk > kar;

 write('Total Gaji Karyawan   : ', tob:0:0); readln;


end.

6.     Buatlah program pengulangan bersarang dengan sintaks FOR untuk menampilkan output sebagai
berikut:
*
**
***
****

uses crt;
var
 n, c, i: integer;

begin
clrscr;
 write('Masukkan Batasan Bintang   : '); readln(n);

 for c := 1 to n do
 begin
  for i := 1 to c do
   begin
    write('*');
   end;
  writeln;
 end;
 readln;

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

Jawab :

Perulangan Repeat-Until

uses crt;

var

i : integer;

begin

clrscr;

writeln(' PERULANGAN REPEAT-UNTIL ');

writeln('-------------------------');

writeln;

i:=15;

repeat

begin

if i mod 2 = 1 then

write(i:3);

i:=i-1;

end;

until i<=1;

readln;

end.

Hasil:
Perulangan While

uses crt;

var

i : integer;

begin

clrscr;

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.

Hasil:

Perulangan For

uses crt;
var

i : integer;

begin

clrscr;

writeln(' PERULANGAN FOR ');

writeln('-------------------------');

writeln;

for i:= 15 downto 1 do

begin

if i mod 2 = 1 then

write(i:3);

end;

readln;

end.

Hasil:

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?

Jawab :

uses crt;
var

merosot,kedalaman,selisih : real;

naik,hari : integer;

begin

clrscr;

write('Masukkan Jumlah 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:10:2, selisih:11:2, kedalaman:14:2);

hari := hari + 1;

if (hari>5) and (hari<=15) then

begin

naik := 2;

merosot := 1.25;

selisih := naik - merosot;

end
else if (hari>15) then

begin

naik := 2;

merosot := 1.5;

selisih := naik - merosot;

end;

end;

readln;

end.

Hasil:

PROCEDURE
program prosedure;
uses crt;
procedure biodata;
begin
writeln('+++++++++++++');
end;

var ket:string;

begin
clrscr;
biodata;
writeln('----DATA MAHASISWA----');
write('nama : ');readln(ket);
write('npm : ');readln(ket);
write('jurusan : ');readln(ket);
write('kelas : ');readln(ket);
write('fakultas : ');readln(ket);
write('alamat : ');readln(ket);
biodata;
readln;
end.

Outputnya akan menjadi seperti ini :

++++++++++++++++++++++
----DATA MAHASISWA----
nama        : (input dari keyboard)
npm         : (input dari keyboard)
jurusan     : (input dari keyboard)
kelas        : (input dari keyboard)
fakultas    : (input dari keyboard)
Alamat     : (input dari keyboard)
++++++++++++++++++++++ 

program prosedure;
uses crt;
procedure konversi(f:integer);
var e:real;
begin
e:=9/5*f+32;
writeln('hasil konversi suhu : ' ,e:2:0);
end;

var cel:integer;

begin
clrscr;
writeln('konverai suhu celcius ke fahrenheit ');
write('masukkan angka suhu celcius : ');readln(cel);
konversi(cel);
readln;
end.
ket :

program prosedure;
uses crt;
procedure dolarkurs(g:integer);
var h:real;
begin
h:=g*14000;
writeln('hasil kurs dolar ke rupiah : Rp. ' ,h:8:2);
end;

var dolar:integer;

begin
clrscr;
writeln('Kurs dollar ke rupiah');
write('masukkan angka dollar : $.');readln(dolar);
dolarkurs(dolar);
readln;
end.
ket :
Prosedur dan fungsi adalah sebuah program terpisah (diluar program utama) dalam blok
tersendiri yang berfungsi sebagai subprogram. Itu artinya...

update: Pengertian Prosedur dan Fungsi Beserta Contoh & Perbedaanya

...Kita dapat menggunakan konsep modular yaitu: dengan memecah sebuah program yang rumit
menjadi beberapa subprogram yang lebih sederhana.

Dari segi efisiensi, prosedur dan fungsi cukup dituliskan sekali namun dapat dipanggil kapan saja
atau digunakan berulang-ulang.

Karena keduanya memiliki kesamaan yang cukup besar yaitu sebagai subprogram, maka banyak
dari kita masih sulit membedakan antara prosedur dan fungsi.

Bahkan saya bisa menebak bahwa anda mungkin bingung apakah kita akan membuat program
menggunakan prosedur atau malah menggunakan fungsi.

Jangan khawatir, diakhir pembahasan saya berjanji anda akan memahami perbedaanya. Baiklah
mari kita mulai dari yang pertama yaitu prosedur.

1. Prosedur (sintaks: procedure)

Prosedur memiliki dua bentuk, yang pertama dinamakan procedure sederhana karena tidak
menerima argumen (nilai atau data) ketika dieksekusi.

Program Judul_Program;
Procedure Judul_Prosedur;
Begin
........
........
End;
Begin
.........
.........
End.

Dalam penerapannya, procedure sederhana dipakai untuk menampilkan pilihan menu, dsb.
Berikut contoh programnya:

Program Procedure_Sederhana ;
uses crt;
PROCEDURE MENU;
begin
writeln('Pilihan Menu');
writeln(' 1: Statemen Percabangan');
writeln(' 2: Statemen Perulangan');
writeln(' 3: Statemen Array');
end;
Begin
writeln('Sebelum prosedur');
MENU;
writeln('Sesudah prosedur');
readln;
end.

Untuk memanggil procedure sederhana anda hanya perlu mengetikan nama prosedur lalu
diakhiri dengan tanda titik koma (;)

Yang kedua bernama procedure Kompleks karena menerima nilai yang diproses ketika
dieksekusi. Silahkan perhatikan contoh berikut:

Program KenalanYuk;
uses crt;
var hasil: integer;
Procedure Perkenalan(var nama:string;umur:integer);
Begin
writeln('Hai nama saya ', nama, ' dan umur saya ', umur);
End;
Begin
Perkenalan('Andi', 21);
Perkenalan('Budi', 23);
readln;
end.

Dalam program diatas, saya menggunakan prosedur kompleks dimana kita membutuhkan sebuah
parameter untuk mendapatkan nilai nama dan umur.
Procedure Namaprosedur (parameter:tipedata);

Jadi kita memanggil prosedur Perkenalan dengan menyertakan parameter nama dan umur,
kemudian nilai tersebut akan disimpan pada variabel nama dan umur untuk ditampilkan ke layar
menggunakan perintah writeln.

2. Fungsi (sintaks: Function)

Deklarasi Function (fungsi) dalam pascal hampir sama dengan deklarasi procedure, namun
fungsi harus dideklarasikan dengan tipenya.

Bentuk deklarasi fungsi adalah sebagai berikut :

Function judul_fungsi(daftar_parameter): type;

Fungsi juga memakai variabel saat dieksekusi, namun mempunyai kemampuan untuk
menghasilkan nilai pada procedure atau program yang memanggilnya.

Perhatikan contoh berikut ini:

Program FungsiPenjumlahan;
uses crt;
Function hitung(Var A,B : integer):integer;
begin
hitung:=A+B;
end;

Var x,y : integer;


Begin
Writeln('Silahkan masukan Angka (1-10):');
write('Nilai X : ');readln(x);
write('Nilai Y : ');readln(y);
writeln;
write(x,' + ',y,' = ',hitung(x,y));
readln;
end.

Pada program diatas saya menggukan fungsi hitung bertipe integer dengan parameter A dan B
sebagai variabel lokal. Kemudian saya juga menggunakan variabel x dan y sebagai variabel
global untuk menyimpan nilai input.

Cara pemanggilan fungsi pun sama dengan prosedur yaitu dengan cara mengetikan nama fungsi
diikuti parameter dan diakhiri dengan titik koma.
Lalu, apa yang membedakan prosedur dan fungsi?

Jadi yang membedakan antara prosedur dan fungsi adalah:

Prosedur diawali dengan keyword Procedure sedangkangkan fungsi diawali dengan keyword
Fungtion. Kemudian prosedur dapat terbentuk dengan parameter maupun tanpa paramenter
sedangkan fungsi wajib menggunakan parameter.

Terakhir nilai yang dihasilkan dari fungsi akan disimpan pada nama fungsi itu sendiri dan dapat
dipindah alihkan sedangkan prosedur tidak.

Perbedaan paling utama adalah anda bisa menyimpan nilai pada nama fungsi, anda dapat
mencobanya dengan cara menyimpan nilai fungsi ke sebuah variabel, contoh:

namaVariabel:=hitung(x,y)

Program Fungsi;

(judul program)

uses crt;

(unit yang digunakan dalam program)

function besar (a,b : integer): integer;

(memulai proses function dengan nama ‘besar’, dimana nilai variabel a dan b yang ada dip roses tersebut

bertipe integer / bilangan bulat)

begin

(awal dari blok statement function ‘besar’)

if a>b then

(memulai printah kondisi, dimana jika nilai dari variabel a lebih besar dari nilai variabel b, maka akan

menjalankan perintah di bawah)

besar := a

(nilai procedure ‘besar’ akan sama dengan nilai variabel a)


else

(selain kondisi di atas, maka akan menjalankan perintah di bawah)

besar := b;

(nilai procedure ‘besar’ akan sama dengan nilai variabel b)

end;

(akhir dari blok statement function ‘besar’)

var

(pendeklarasian variabel)

a,b: integer;

(Pendeklarasian data variabel bertipe integer / bilangan bulat)

begin

(awal dari blok statement)

clrscr;

(membersihkan layar)

write(‘Nilai Bilangan 1 = ‘); readln(a);

(mencetak kalimat ‘Nilai Bilangan 1 = ’ lalu meletakan pointer ke sebelah kanan kalimat, setelah itu compiler

akan membaca inputan yang kita masukan sebagai nilai variabel ‘a’)

writeln;

(menempatkan pointer di bawah baris berikutnya / berfungsi sebagai enter 1 x)

write(‘Nilai Bilangan 2 = ‘); readln(b);

(mencetak kalimat ‘Nilai Bilangan 2 = ’ lalu meletakan pointer ke sebelah kanan kalimat, setelah itu compiler

akan membaca inputan yang kita masukan sebagai nilai variabel ‘b’)

writeln;

(menempatkan pointer di bawah baris berikutnya / berfungsi sebagai enter 1 x)


write(‘Bilangan Terbesar = ‘, besar (a,b):5);

(mencetak kalimat ‘Nilai Terbesar = ‘ lalu memasukan nilai procedure ‘besar’, dimana nilainya didapat dari nilai

variabel a dan b yang telah dimasukan sebelumnya dengan penempatan nilai variabel setelah 5 x spasi )

readln;

(menunggu penekanan enter)

end.

program funttion2;
uses crt;
                                    {fungsi menentukan nilai tambah}

function tambah(a,b:real):real;
var hasil:real;
begin
hasil:=a+b;
tambah:=hasil;
end;
var a,b:real;      {variabel global}
begin                           {program utama}
write('masukan bilangan I: ');readln(a);
write('masukan bilangan II: ');readln(b);
write(tambah(a,b));
end.    

uses crt;
var p,l,t,luas_permukaan:integer; {VARIABEL GLOBAL}

function lp_balok(p,l,t:integer):integer;
begin
lp_balok:=(4*p*l)+(2*p*t);
end;
{PROGRAM UTAMA}
begin
write('panjang= ');readln(p);
write('lebar= ');readln(l);
write('tinggi= ');readln(t);
luas_permukaan:=lp_balok(p,l,t);
writeln('luas permukaan balok:= ',luas_permukaan);
end.

recursion
Rekursi (recursion) adalah proses dari suatu sub program baik fungsi maupun prosedure
yang memanggil dirinya sendiri.Tapi Sebelumnya Saya Kasih contoh Sederhana

Contoh 1 :

Program Rekursi_pascal;
uses Crt;
procedure rekursi(A:integer);
begin
if A < 10 then
begin
write(’Pascal’);
A:=A+1;
rekursi(A);
end;
end;

var
x:integer;
begin
clrscr;
x:=3; ———> nilai X dapat kita tentukan sendiri
rekursi(x);
readln;
end.
akan menghasilkan :

Contoh faktorial menggunakan rekursi :

Program Faktorial_pascal;
function Faktorial(a:integer):longint;
begin
if (A=1)then
Faktorial:=1
else
Faktorial:=a*faktorial(a-1);
end;
var
x:integer;
begin
writeln(’Faktorial sequence’);
write(’Berapa Faktorial :’);readln(x);
writeln(x,’faktorial ‘,’=’,faktorial(x));
readln;
end.

Hasil Tampilan :

Contoh untuk indefinite dalam pascal merupakan proses rekursi yang dilakukan tanpa
berhenti atau rekursi yang tidak berujung.

Program rekursi_indefinite;
procedure rekursi;
begin
write(’Pascal’);write;
rekursi;
end;
begin
rekursi;
readln;
end.

Tampilan hasil :

Selamat Mencoba…..Tugas !!!!1. Tampilkan Tulisan M dari kiri ke kanan Sebanyak 7


KaliLayoutM M M M M M M M2. Buat Contoh Rekursi Prosedur Deret untuk menampilkan
sustu deret bilangan bulat N dari 0 s/d 10Layout0  1  2  3  4  5  6  7  8  9  10

Jawaban Tugas 1
uses  crt;
procedure rekursi;
begin 
if wherex < 8 then
  begin  
  write(‘M’);  
  rekursi; 
end;
end;
begin
  clrscr; 
rekursi;
Readln;
end.

Jawaban Tugas 2 ;

Procedure Deret(N: Integer);


Begin
Write(n:3);
If  n < 10 then
Deret (n+1);
End;
Var
N: integer;
Begin
N:=0;
Deret (n);
Readln;

End.

array
Program Array_1_dimensi;
uses crt;
var
    nilaiprak    : array[1..20] of real;
    I,jumlahdata : Byte;
begin
    clrscr;
    write ('masukkan banyaknya data : ');
    Readln(jumlahdata);
    For I :=1 to jumlahdata do
    Begin
          write ('Nilai ke ‘,I,2:');
          readln(Nilaiprak[I]);
          End;
          Readln;
End.

Hasil Runningnya

Anda mungkin juga menyukai