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);
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;
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.
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;
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;
end;
until juk > kar;
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('-------------------------');
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('--------------------------');
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('-------------------------');
writeln;
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;
writeln('------------------------------------------------------ --');
writeln('------------------------------------------------------ --');
hari := 1;
naik := 3;
merosot := 1;
begin
hari := hari + 1;
begin
naik := 2;
merosot := 1.25;
end
else if (hari>15) then
begin
naik := 2;
merosot := 1.5;
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.
++++++++++++++++++++++
----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...
...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.
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.
Deklarasi Function (fungsi) dalam pascal hampir sama dengan deklarasi procedure, namun
fungsi harus dideklarasikan dengan tipenya.
Fungsi juga memakai variabel saat dieksekusi, namun mempunyai kemampuan untuk
menghasilkan nilai pada procedure atau program yang memanggilnya.
Program FungsiPenjumlahan;
uses crt;
Function hitung(Var A,B : integer):integer;
begin
hitung:=A+B;
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?
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;
(memulai proses function dengan nama ‘besar’, dimana nilai variabel a dan b yang ada dip roses tersebut
begin
if a>b then
(memulai printah kondisi, dimana jika nilai dari variabel a lebih besar dari nilai variabel b, maka akan
besar := a
besar := b;
end;
var
(pendeklarasian variabel)
a,b: integer;
begin
clrscr;
(membersihkan layar)
(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;
(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;
(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;
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 :
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 :
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 ;
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