Jumat, 11 Desember 2009

KUMPULAN SOAL REKURSI

1. Faktorial

Program Faktorial_Suatu_bilangan;
uses wincrt;

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');
writeln;
write('Berapa Faktorial ? ');readln(x);
writeln(x ,' ! ',' = ',faktorial(x));
end.

2. Faktorial

Program FACTORIAL;
uses wincrt;
var
DATA:integer;

Procedure factorial_bilangan (n:integer);
var
i:integer;
fac:integer;
begin
if n<0 then
begin
writeln ('Bilangan bernilai negatif tidak ada factorialnya');
end else
begin
fac:=1;
for i:=1 to n do
begin
fac:=fac*i;
end;
writeln (n:0,'!= ', fac);
end;
end;

begin
clrscr;
write ('Masukkan data bilangan bulat: ');
readln (data);
factorial_bilangan (data);
end.

3. Fibonanci

Program Fibonacci;
uses wincrt;
Var fibo: array [1..10] of integer;
A,i,hasil:integer;
begin
clrscr;
write('Masukkan suku keberapa dalam deret fibonacci : ');readln(A);
if (A=1) or (A=2) then hasil:=1 else
begin
fibo[1]:=1; fibo[2]:=1;
for i:=3 to A do
begin
fibo[i]:=fibo[i-1]+fibo[i-2];
hasil:=fibo[i];
end;
end;
writeln;
for i:=1 to A do
write(fibo[i],' ');
writeln;
writeln('Suku Ke-',A,' dari deret fibonacci adalah ',hasil);
end.

4. Perpangkatan

Program pangkat;
uses wincrt;
var A,x,i,hasil:longint;
begin
write('masukkan bilangan yang akan dipangkatkan = ');readln(A);
write('masukkan bilangan pangkat = ');readln(x);
hasil:=1;
for i:=1 to x do
hasil:=hasil*A;
writeln('hasil dari ',A,' pangkat ',x,' adalah ',hasil);
end.

5. Rekursi Pascal

Program Rekursi_pascal;
uses wincrt;
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;
rekursi(x);
end.

6. Tampilkan Tulisan M dari kiri ke kanan Sebanyak 10 kali.
Layout MMMMMMMMMM

Program Deret;
uses wincrt;
procedure rekursi;
begin
if wherex < 11 then
begin
write('M');
rekursi;
end;
end;
begin
clrscr;
rekursi;
end.

KUMPULAN SOAL SUB PROGRAM

1. Buatlah program penjumlahan bilangan 10 dan 30!

Program Fungsi;
uses wincrt;
var x,y:integer;
FUNCTION Tambah (A,B:real):real;
var
Hasil:real;
begin
Hasil:=A+B;
Tambah:=Hasil;
end;
begin
clrscr;
writeln (Tambah(10,30):1);
end.


2. Buatlah program penjumlahan suatu bilangan x dan y !

Program Fungsi;
uses wincrt;
var x,y:integer;
FUNCTION Tambah (A,B:real):real;
var
Hasil:real;
begin
Hasil:=A+B;
Tambah:=Hasil;
end;
begin
write('masukkan nilai x = ');readln (x);
write('masukkan nilai y = ');readln (y);
writeln (Tambah(x,y):1);
end.

3. Buatlah program tukar bilangan !

Program Tukar;
uses wincrt;
FUNCTION Tukar_nilai(a,b,c:integer):integer;
{a,b,c adalah parameter,
parameter = var yg dipanggil ketika pemanggilan fungsi}
var
temp:integer;
{temp adalah var dalam fungsi,bukan parameter}
begin
temp:=A;
A:=C;
C:=temp;

writeln('a:',a);
writeln('b:',b);
writeln('c:',c);
end;

var a,b,c:integer;
begin
a:=100;
b:=200;
c:=300;
writeln('Nilai sebelum ditukar');
writeln('A:',a);
writeln('B:',b);
writeln('C:',c);
writeln('nilai sesudah ditukar');
Tukar_nilai(a,b,c);
end.

4. Buatlah program kuadrat suatu bilangan !

Program procedur1;
uses wincrt;
procedure kuadrat;
var
x,y:real;
begin
write ('nilai x = ');readln(x);
y:=x*x;
writeln ('nilai y =',y:6:2);
end;
begin
kuadrat;
end.

5. Buatlah program operasi penjumlahan, pengurangan, dan perkalian bilangan !

Program operasi;
uses wincrt;
var a:integer;
b:char;
procedure penjumlahan;
var x,y,z:real;
begin
writeln ('Penjumlahan');
write ('nilai x = ');readln(x);
write ('nilai y = ');readln(y);
z:=x+y;
writeln ('nilai z =',z:6:2);
end;

procedure pengurangan;
var
x,y,z:real;
begin
writeln ('Pengurangan');
write ('nilai x = ');readln(x);
write ('nilai y = ');readln(y);
z:=x-y;
writeln ('nilai z =',z:6:2);
end;

procedure perkalian;
var
x,y,z:real;
begin
writeln ('Perkalian');
write ('nilai x = ');readln(x);
write ('nilai y = ');readln(y);
z:=x*y;
writeln ('nilai z =',z:6:2);
end;

begin
b:='y';
while b='y' do
begin
writeln('Pilih Operasi');
writeln('1. Penjumlahan');
writeln('2. Pengurangan');
writeln('3. Perkalian');

writeln('Masukkan Pilihanmu !');readln(a);
case a of
1: begin
clrscr;
Penjumlahan
end;
2: begin
clrscr;
Pengurangan
end;
3: begin
clrscr;
Perkalian
end;
else writeln('Pengen lagi ?');
end;
write('apa anda pengen lagi(y/n)?');readln(b);
clrscr;
end;
end.

KUMPULAN SOAL ARRAY

1. Buatlah program matriks !

Program Matriks;
uses wincrt;
var tabel:array[1..3,1..2] of integer;
i,j:integer;
begin
tabel [1,1]:=50;
tabel [1,2]:=55;
tabel [2,1]:=21;
tabel [2,2]:=26;
tabel [3,1]:=10;
tabel [3,2]:=1;
for i:=1 to 3 do
begin
for j:=1 to 2 do
write(tabel[i,j],' ');
writeln;
end;
end.

2. Buatlah program penjumlahan matriks !

Program Penjumlahan_Matriks;
uses wincrt;
var a,b,c:array[1..25,1..25] of integer;
i,j,k,l,m,n:byte;
begin
writeln(' PENJUMLAHAN MATRIKS ');
writeln(' ================= ');
write ('Baris Matriks Pertama = Baris Matriks Kedua = ');readln(m);
write ('Kolom Matriks pertama = Kolom Matriks Kedua = ');readln(n);
writeln;
writeln('Komponen matriks yang pertama');
for i:=1 to m do
begin
for j:=1 to n do
begin
write ('Nilai[',i,',',j,']=');readln(a[i,j]);
end;
writeln;
end;
writeln('Komponen matriks yang kedua');
for i:=1 to m do
begin
for j:=1 to n do
begin
write ('Nilai[',i,',',j,']=');readln(b[i,j]);
end;
writeln;
end;
for i:=1 to m do
begin
for j:=1 to n do
begin
c[i,j]:=a[i,j]+b[i,j];
end;
end;
writeln;
writeln('Hasil Penjumlahan Matriks');
writeln;
for i:=1 to m do
begin
writeln;
for j:=1 to n do
write(c[i,j]:4);
end;
end.

3. Buatlah program memasukkan nilai matriks !

Program Memasukkan_Nilai_Matriks;
uses wincrt;
var tabel:array[1..100,1..100] of integer;
i,j:integer;
begin
write('masukkan baris = ');readln(i);
write('masukkan kolom = ');readln(j);
writeln('matriks anda berukuran = ',i,'x',j);
for i:=1 to i do
for j:=1 to j do
begin
write('nilai : ','');readln(tabel[i,j]);
end;
writeln;
writeln('Matriksnya:','');
for i:=1 to i do
begin
for j:=1 to j do
write(tabel[i,j]:3);writeln;
end;
end.

4. Buatlah program menghitung rata-rata !

Program Menghitung_Rata_Rata;
uses wincrt;
var x:array[1..10] of integer;
i,n:integer;
jumlah,u:real;
begin
write('berapa kali data yang anda masukkan ? ');readln(n);
for i:=1 to n do
begin
write ('masukkan data = ');readln(x[i]);
end;
begin
clrscr;
for n:= 1 to i do
writeln('data = ' ,(x[n]));
end;
jumlah:=0;
for i:=1 to n do
jumlah:=jumlah+(x[i]);
u:=jumlah/n;
writeln ('u = ' ,u:2:2);
end.

KUMPULAN SOAL PENYELEKSIAN KONDISI

1. Hasil ujian mahasiswa ditentukan dengan ketentuan jika mahasiswa mendapat nilai ujian>60, maka dinyatakan lulus. Buat program untuk menentukan kelulusan berdasarkan nilai ujian yang diperoleh mahasiswa!

Program Kelulusan_Hasil_Ujian;
uses wincrt;
var
nilai:integer;
keterangan:string[25];
begin
Keterangan:='Selamat Anda Lulus !';
write('Nilai Mahasiswa = ');readln(nilai);
If Nilai<60 then keterangan:='Maaf Anda Belum Lulus !';
write(keterangan);
end.

2. Buat program untuk menentukan apakah bilangan n merupakan bilangan positif, negatif, atau netral !

Program Bilangan_Positif_Negatif_Netral;
uses wincrt;
var bilangan:integer;
begin
write('Masukkan bilangan = '); readln (bilangan);
if bilangan>0 then write ('Bilangan Positif') else
if bilangan=0 then write ('Bilangan Netral') else
write ('Bilangan Negatif');
end.

3. Buat program untuk nilai terbesar!

Program Nilai_Terbesar;
Uses Wincrt;
Var
a,b,c:longint;
Begin
Write ('Masukkan 1: ');Readln(a);
Write ('Masukkan 2: ');Readln(b);
Write ('Masukkan 3: ');Readln(c);
If (a>b) and (a>c) then Write(a);
If (b>a) and (b>c) then Write(b);
If (c>a) and (c>b) then Write(c);
End.


4. Buat program untuk pilihan menu makanan menggunakan if-then…else!

Program Menu_Makanan;
uses wincrt;
var x:integer;
menu:string;
begin
writeln('========================');
writeln('Menu Makanan Rumah Makan');
writeln('========================');
writeln('1. Nasi Goreng');
writeln('2. Mie Goreng');
writeln('3. Nasi Gudeg');
write('Pilih Menu Favoritmu! ');readln(x);
if x=1 then write ('>>Nasi Goreng = Rp 6.000,00') else
if x=2 then write ('>>Mie Goreng = Rp 5.000,00') else
if x=3 then write ('>>Nasi Gudeg = Rp 4.500,00') else
writeln ('Pilihan anda tidak ada dalam menu kami')
end.

5. Buat program untuk pilihan menu makanan menggunakan case…of!

Program Menu_Makanan;
uses wincrt;
var x:integer;
menu:string;
begin
gotoxy(10,1);writeln('========================');
gotoxy(10,2);writeln('Menu Makanan Rumah Makan');
gotoxy(10,3);writeln('========================');
gotoxy(10,5);writeln('1. Ayam Bakar');
gotoxy(10,6);writeln('2. Ayam Goreng');
gotoxy(10,7);writeln('3. Ayam Panggang');
gotoxy(10,10);writeln('Pilih Menu Favoritmu!');
gotoxy(10,12);readln(x);
case x of
1: begin
clrscr;
gotoxy(10,4);writeln('>> Ayam Bakar = Rp 7.000,00 <<');
end;
2: begin
clrscr;
gotoxy(10,4);writeln('>> Ayam Goreng = Rp 7.000,00 <<');
end;
3: begin
clrscr;
gotoxy(10,4);writeln('>> Ayam Panggang = Rp 7.000,00 <<');
end;
end;
end.

6. Buat program untuk mengeja bilangan 1 s.d. 100!

Program Terbilang;
Uses Wincrt;
Var
a,b,c:longint;
Begin
Write('Masukkan Angka: ');readln(a);
b:=a div 10;
c:=a mod 10;
Writeln;
Begin
If (b=1) and (c=0) then write('sepuluh');
If (b=1) and (c=1) then write('sebelas');
If (b=1) and (c=2) then write('dua belas');
If (b=1) and (c=3) then write('tiga belas');
If (b=1) and (c=4) then write('empat belas');
If (b=1) and (c=5) then write('lima belas');
If (b=1) and (c=6) then write('enam belas');
If (b=1) and (c=7) then write('tujuh belas');
If (b=1) and (c=8) then write('delapan belas');
If (b=1) and (c=9) then write('sembilan belas');
Begin
If (b=0) and (c=1) then write('satu');
If (b=0) and (c=2) then write('dua');
If (b=0) and (c=3) then write('tiga');
If (b=0) and (c=4) then write('empat');
If (b=0) and (c=5) then write('lima');
If (b=0) and (c=6) then write('enam');
If (b=0) and (c=7) then write('tujuh');
If (b=0) and (c=8) then write('delapan');
If (b=0) and (c=9) then write('sembilan');
End;
Case b of
2: Write('dua puluh ');
3: Write('tiga puluh ');
4: Write('empat puluh ');
5: Write('lima puluh ');
6: Write('enam puluh ');
7: Write('tujuh puluh ');
8: Write('delapan puluh ');
9: Write('sembilan puluh ');
End;
If b>1 then
Case c of
1: Write('satu');
2: Write('dua');
3: Write('tiga');
4: Write('empat');
5: Write('lima');
6: Write('enam');
7: Write('tujuh');
8: Write('delapan');
9: Write('sembilan');
End;
End;
End.

Kumpulan Soal Turbo Pascal

1. Luas daerah persegi panjang dan kelilingnya.

Program Luas_Persegi_Panjang_dan_Kelilingnya;
uses wincrt;
var
panjang, lebar, luas, keliling : real;
begin
write('masukkan panjang =');readln(panjang);
write('masukkan lebar =');readln(lebar);
luas:=panjang*lebar;
keliling:=2*(panjang+lebar);
writeln('Luas=',luas:10:2);
writeln('Keliling=',keliling:10:2);
end.

2. Volum Kubus dan luas permukaan kubus.

Program Volume_Kubus_dan_Luas_Permukaan_Kubus;
uses wincrt;
var
alas, volume, luas_permukaan:real;
begin
write('masukkan alas =');readln(alas);
volume:=alas*alas*alas;
luas_permukaan:=6*(alas*alas);

writeln('volume=',volume:5:2);
writeln('luas_permukaan=',luas_permukaan:5:2);
end.

3. Luas daerah lingkaran dan keliling lingkaran.

Program Luas_Lingkaran_dan_Keliling_Lingkaran;
uses wincrt;
const
phi=3.142857;
var
r, Luas, Keliling:real;
begin
write ('masukkan jari-jari lingkaran: ');readln(r);
Luas:=(phi*r*r);
Keliling:=(phi*2*r);

writeln ('luas:', Luas:10:3);
writeln ('keliling:', Keliling:10:3);
end.

4. Mempertukarkan nilai A dan B, nilai A dan B diinput.

Program Mempertukarkan_Nilai;
uses wincrt;
var
A:integer;
B:integer;
temp:integer;
begin
write('masukkan nilai A =');readln(A);
write('masukkan nilai B =');readln(B);
temp:=A;
A:=B;
B:=temp;

writeln('A =',A);
writeln('B =',B);
end.

5. Luas permukaan tabung dan kerucut.

Program Luas_Permukaan_Tabung_dan_Kerucut;
uses wincrt;
const
phi=3.142857;
var
r, t, s, luas_permukaan_tabung, luas_permukaan_kerucut:real;
begin
write('masukkan jari-jari =');readln(r);
write('masukkan tinggi =');readln(t);
write('masukkan selimut_kerucut =');readln(s);
luas_permukaan_tabung:=((2*phi*r*r)+(2*phi*r*t));
luas_permukaan_kerucut:=((phi*r*r)+(phi*r*s));
writeln('luas_permukaan_tabung=',luas_permukaan_tabung:5:2);
writeln('luas_permukaan_kerucut=',luas_permukaan_kerucut:5:2);
end.

6. Penjumlahan, pengurangan, perkalian, pembagian, pembagian bulat, dan sisa hasil bagi dalam sebuah program.

Program Operasi_Bilangan;
uses wincrt;
var
a,b,c,d,e,h:integer;
f,g:real;
begin
write('masukkan nilai pertama = ');readln(a);
write('masukkan nilai kedua = ');readln(b);

c:=a+b;
d:=a-b;
e:=a*b;
f:=a/b;
g:=a div b;
h:=a mod b;

writeln('hasil penjumlahan = ',c);
writeln('hasil pengurangan = ',d);
writeln('hasil perkalian = ',e);
writeln('hasil pembagian = ',f:0:2);
writeln('hasil pembagian bulat = ',g:0:2);
writeln('sisa hasil bagi = ',h);
end.

7. Meghitung gaji karyawan apabila diinput nama orang, gaji pokok, tunjangan istri 15 % dari gaji pokok, tunjangan tiap anak 20 % dari gaji pokok, pajak 15 % dari gaji keseluruhan.

Program Gaji_Karyawan;
uses wincrt;
var
nama_orang:string;
gaji_pokok:real;
tunjangan_istri:real;
tunjangan_tiap_anak:real;
n:integer;
pajak:real;
total_gaji:real;
begin
write ('masukkan nama orang =');readln(nama_orang);
write ('masukkan gaji pokok =');read(gaji_pokok);
write ('masukkan banyaknya anak =');readln(n);
tunjangan_istri:=(0.15*gaji_pokok);
tunjangan_tiap_anak:=(0.2*n*gaji_pokok);
pajak:=(0.15*(gaji_pokok+tunjangan_istri+tunjangan_tiap_anak));
total_gaji:=(gaji_pokok+tunjangan_istri+tunjangan_tiap_anak-pajak);
writeln('tunjangan_istri=',tunjangan_istri:10:2);
writeln('tunjangan_tiap_anak=',tunjangan_tiap_anak:10:2);
writeln('pajak=',pajak:10:2);
writeln('total_gaji=',total_gaji:10:2);
end.

8. Koordinat titik tengah dari kedua titik yang diketahui.

Program Koordinat_Titik_Tengah;
uses wincrt;
var
x1, x2, y1, y2, a, b, titik_tengah_x, titik_tengah_y:real;
begin
write('masukkan nilai x1 =');readln(x1);
write('masukkan nilai x2 =');readln(x2);
write('masukkan nilai y1 =');readln(y1);
write('masukkan nilai y2 =');readln(y2);
titik_tengah_x:=((x1+x2)/2);
titik_tengah_y:=((y1+y2)/2);
writeln('titik_tengah_x=',titik_tengah_x:10:2);
writeln('titik_tengah_y=',titik_tengah_y:10:2);
end.

9. Konversi dari jam ke detik.

Program Konversi_Jam_ke_Detik;
uses wincrt;
var jam, detik:real;
begin
write('masukkan jam :');readln(jam);
detik:=jam*3600;
writeln('detik =',detik:10:2);
end.

10. Konversi detik ke jam.

Program Konversi_Detik_ke_Jam;
uses wincrt;
var detik, jam:real;
begin
write('masukkan detik :');readln(detik);
jam:=detik / 3600;
writeln('jam =',jam:10:2);
end.

11. Apabila diketahui waktu mulai telepon(jam,menit,detik) dan waktu selesai telepon(jam,menit,detik), berapakah lamanya telepon dalam detik.

Program Durasi_Telepon;
uses wincrt;
var j1, j2, m1, m2, d1, d2, j, m, d, sisa, durasi:integer;
begin
write ('jam mulai=');read(j1,m1,d1);
write ('jam selesai =');readln(j2,m2,d2);
Durasi:=(j2-j1)*3600+(m2-m1)*60+(d2-d1);
j:=Durasi div 3600;
sisa:=Durasi mod 3600;
m:=sisa div 60;
d:=sisa mod 60;
writeln ('durasi jam=',j);
writeln ('durasi menit=',m);
writeln ('durasi detik=',d);
end.

12. Biaya telepon apabila diinput mulai telepon dan selesai telepon, dan biaya pulsa per Rp 200,- dan 1 pulsa adalah 5 detik ( sisa < 5 detik diabaikan).

Program Menghitung_Biaya_Telepon;
Uses Wincrt;
Var
hh1,mm1,ss1,hh2,mm2,ss2,Total_Detik,Biaya_Telepon:longint;
Begin
Writeln ('Waktu mulai telepon:');
Write ('Jam =');read (hh1);
Write ('Menit=');read (mm1);
Write ('Detik=');read (ss1);
Writeln ('Waktu selesai telepon:');
Write ('Jam =');read (hh2);
Write ('Menit=');read (mm2);
Write ('Detik=');read (ss2);
Total_Detik:=(hh2-hh1)*3600+(mm2-mm1)*60+(ss2-ss1);
Biaya_Telepon:=(Total_Detik div 5)*200;
Writeln ('Lama Waktu Telepon dalam Detik adalah ',(Total_Detik), (' detik.'));
Writeln ('Biaya Telepon adalah Rp ',Biaya_Telepon);
End.

13. Konversi Suhu dari Celcius ke Kelvin dan Fahrenhet.

Program suhu;
uses wincrt;
var
celcius,kelvin:integer;
fahrenheit:real;
begin
write('Masukkan suhu dalam celcius = ');readln(celcius);
fahrenheit:=(9/5*celcius)+32;
kelvin:=celcius+273;
writeln('Suhu dalam fahrenheit = ',fahrenheit:5:2);
writeln('Suhu dalam kelvin = ',kelvin);
end.

14. Menghitung umur seseorang apabila diasumsikan dalam 1 bulan ada 30 hari dan dalam 1 tahun ada 365 hari.

Program Menghitung_Umur_Seseorang;
uses wincrt;
var
d1,d2,m1,m2,y1,y2,H,I,J,K,L:integer;
begin
writeln('Menghitung umur seseorang');
write('Masukkan tanggal lahir = ');readln(d1,m1,y1);
write('Masukkan tanggal sekarang = ');readln(d2,m2,y2);
H:=(y2-y1)*365+(m2-m1)*30+(d2-d1);
I:=H div 365;
J:=H mod 365;
K:=J div 30;
L:=J mod 30;
write('umur anda sekarang adalah = ',I,' tahun ',K,' bulan ',L,' hari');
end.

KUMPULAN SOAL PERULANGAN(LOOP)

1. Buatlah program untuk mengulang kalimat “Aku Suka Indonesia” sebanyak b kali menggunakan for...do !

Program Pengulangan_for_do;
Uses Wincrt;
Var
a,b:longint;
Begin
Write ('Kita akan mengulang berapa kali : '); read (b);
For b:=1 to b do
a:=1;
For a:=1 to b do
Writeln (a,'.','Aku Suka Indonesia');
End.

2. Buatlah program untuk mengulang kalimat “Pemrograman Komputer” sebanyak 5 kali menggunakan for…do !

Program For…do;
Uses Wincrt;
Var
a:longint;
Begin
For a:=1 to 5 do
Writeln (a,' . Pemrograman Komputer');
End.

3. Buatlah program untuk mengulang kalimat “Pemrograman Komputer” sebanyak 5 kali menggunakan repeat…until !

Program Repeat_until;
Uses Wincrt;
Var
a:longint;
Begin
a:=0;
Repeat
a:=a+1;
Writeln (a,' . Pemrograman Komputer');
Until a>4;
End.

4. Buatlah program untuk mengulang kalimat “Pemrograman Komputer” sebanyak 5 kali menggunakan while…do !

Program While_do;
Uses Wincrt;
Var
a:longint;
Begin
a:=0;
While a<5 do
Begin
a:=a+1;
Writeln (a,' . Pemrograman Komputer');
End;
End.

5. Buatlah program untuk menampilkan bilangan ganjil kurang dari 12 !

Program Cetak_BilGanjil;
Uses wincrt;
Var
I : Integer;
Begin
I:=1;
While I < 10 Do
begin
I:=I +2;
Write(I:6);
end;
End.

6. Buatlah program untuk menampilkan bilangan dalam segitiga asyik !

Program Segitiga_Asyik;
Uses Wincrt;
Var
a,b,c:longint;
Begin
Write ('Berapa baris segitiga asyik yang kamu inginkan: '); read (a);
For c:=1 to a do
Begin
For b:=1 to c do
Write (c:3);
Writeln;
Writeln;
End;
End.

7. Buatlah program untuk menampilkan penjumlahn bilangan dalam segitiga asyik !

Program Jumlah_Segitiga_Asyik;
Uses Wincrt;
Var
a,b,c,d:longint;
Begin
Write ('Berapa baris segitiga asyik yang kamu inginkan: '); read (a);
For c:=1 to a do
Begin
For b:=1 to 1 do
Write (c:2);
For b:=2 to c do
Write (' +',c:2);
For b:=1 to c do
d:=c*b;
Write (' = ');
Write (d);
Writeln;
Writeln;
End;
End.

8. Buatlah program untuk menampilkan penjumlahn bilangan dalam segitiga asyik !

Program Jumlah_Segitiga_Asik;
Uses Wincrt;
Var
a,b,c,d:longint;
Begin
Write ('Berapa baris segitiga asik yang kamu inginkan: '); read (a);
For c:=1 to a do
Begin
For b:=1 to c do
Begin
Write (c:2);
If b End;
For b:=1 to c do
d:=b*b;
Write (' = ');
Write (d);
Writeln;
Writeln;
End;
End.

9. Buatlah program untuk menampilkan bilangan genap!

Program Menampilkan_Bilangan_Genap;
Uses Wincrt;
Var
x,angka_awal:longint;
Begin
angka_awal:=2;
Repeat
Write (angka_awal,' ');
angka_awal:=angka_awal+2;
Until angka_awal>50
End.

10. Buatlah program untuk menampilkan penjumlahan deret bilangan bulat 1 s.d. n!

Program Penjumlahan_Deret_Bilangan_Bulat_1_Sampai_n;
Uses Wincrt;
Var
bilangan_akhir,bilangan_awal,jumlah:longint;
Begin
bilangan_awal:=1;
jumlah:=0;
Write ('Masukkan bilangan akhir yang diinginkan = '); readln (bilangan_akhir);
Repeat
Write (bilangan_awal);
If bilangan_awal jumlah:=jumlah+bilangan_awal;
bilangan_awal:=bilangan_awal+1;
Until bilangan_awal>bilangan_akhir;
Write (' = ',jumlah);
End.

11. Buatlah program untuk menampilkan penjumlahan deret bilangan bulat 1 s.d. 12!

Program Penjumlahan_Deret_Bilangan_1_sd_12;
Uses Wincrt;
Var
bilangan_awal,bilangan_akhir,jumlah:integer;
Begin
bilangan_akhir:=12;
jumlah:=0;
bilangan_awal:=1;
Repeat
Write (bilangan_awal,' + ');
jumlah:=jumlah+bilangan_awal;
bilangan_awal:=bilangan_awal+1;
Until bilangan_awal>bilangan_akhir;
Writeln ('=',jumlah);
End.

12. Buatlah program untuk menampilkan penjumlahan deret bilangan bulat !

Program Penjumlahan_Deret_Bilangan_Bulat;
Uses Wincrt;
Var
bilangan_awal,bilangan_akhir,bilangan_setelah_awal,bilangan_penolong1,bilangan_penolong2:longint;
jumlah1,jumlah2,jumlah_akhir:longint;
Begin
Write ('Masukkan bilangan awal yang diinginkan = '); readln (bilangan_awal);
Write ('Masukkan bilangan akhir yang diinginkan = '); readln (bilangan_akhir);
If bilangan_akhir=bilangan_awal then write (bilangan_awal)
else begin
jumlah_akhir:=0;
jumlah1:=0;
jumlah2:=0;
bilangan_setelah_awal:=bilangan_awal+1;
bilangan_penolong1:=0;
bilangan_penolong2:=0;
Write (bilangan_awal);
Repeat
jumlah2:=jumlah2+bilangan_penolong2;
bilangan_penolong2:=bilangan_penolong2+1;
Until bilangan_penolong2>=bilangan_awal;
Repeat
jumlah1:=jumlah1+bilangan_penolong1;
bilangan_penolong1:=bilangan_penolong1+1;
Until bilangan_penolong1>bilangan_akhir;
Repeat
Write (' + ',bilangan_setelah_awal);
bilangan_setelah_awal:=bilangan_setelah_awal+1;
jumlah_akhir:=jumlah1-jumlah2;
Until bilangan_setelah_awal>bilangan_akhir;
Write (' = ',jumlah_akhir);
end
End.

13. Buatlah program untuk menampilkan menu makanan beserta harganya !

Program Menu_Makanan;
uses wincrt;
var x:integer;
menu:string;
a:char;
begin
a:='y';
while a='y' do
begin
gotoxy(10,1);writeln('========================');
gotoxy(10,2);writeln('Menu Minuman Rumah Makan');
gotoxy(10,3);writeln('========================');
gotoxy(10,5);writeln('1. Jus Apel');
gotoxy(10,6);writeln('2. Jus Durian');
gotoxy(10,7);writeln('3. Jus Mangga');

gotoxy(10,10);writeln('Pilih Menu Favoritmu!');
gotoxy(10,12);readln(x);

case x of
1: begin
clrscr;
gotoxy(10,8);writeln('>> Jus Apel = Rp 5.000,00 <<');
end;
2: begin
clrscr;
gotoxy(10,8);writeln('>> Jus Durian = Rp 7.000,00 <<');
end;
3: begin
clrscr;
gotoxy(10,8);writeln('>> Jus Mangga = Rp 5.000,00 <<');
end;
else gotoxy(10,13);writeln('Menu anda tidak ada dalam menu kami');
end;
gotoxy(10,15);write('Anda mau pesen lagi(y/n)?');readln(a);
clrscr;
end;
end.

14. Buatlah program kalkulator yang memuat operasi penjumlahan, pengurangan, perkalian, pembagian, pembagian bulat, dan sisa hasil pembagian !

Program Kalkulator;
Uses Wincrt;
Var
a,b,i:longint;
c,d,e,f,g,h:real;
Begin
Gotoxy (25,3); Writeln ('Menu Opersai Dua Bilangan');
Gotoxy (25,5); Writeln ('1. Penjumlahan');
Gotoxy (25,6); Writeln ('2. Pengurangan');
Gotoxy (25,7); Writeln ('3. Perkalian');
Gotoxy (25,8); Writeln ('4. Pembagian');
Gotoxy (25,9); Writeln ('5. Pembagian Bulat');
Gotoxy (25,10); Writeln ('6. Sisa Hasil Pembagian');
Gotoxy (25,12); Write ('Masukkan Pilihan Anda= '); readln (i);
Clrscr;
Gotoxy (20,3); If i=1 then
Begin
Writeln ('Operasi yang anda pilih adalah Penjumlahan');
Gotoxy (20,5); Write ('Masukkan bilangan pertama=');readln (a);
Gotoxy (20,6); Write ('Masukkan bilangan kedua=');readln (b);
c:=a+b;
Gotoxy (20,7); Writeln ('Hasil Penjumlahan adalah ',(c):5:0);
End
else If i=2 then
Begin
Writeln ('Operasi yang anda pilih adalah Pengurangan');
Gotoxy (20,5); Write ('Masukkan bilangan pertama=');readln (a);
Gotoxy (20,6); Write ('Masukkan bilangan kedua=');readln (b);
d:=a-b;
Gotoxy (20,7); Writeln ('Hasil Pengurangan adalah ',(d):5:0);
End
else If i=3 then
Begin
Writeln ('Operasi yang anda pilih adalah Perkalian');
Gotoxy (20,5); Write ('Masukkan bilangan pertama=');readln (a);
Gotoxy (20,6); Write ('Masukkan bilangan kedua=');readln (b);
e:=a*b;
Gotoxy (20,7); Writeln ('Hasil Perkalian adalah ',(e):5:0);
End
else If i=4 then
Begin
Writeln ('Operasi yang anda pilih adalah Pembagian');
Gotoxy (20,5); Write ('Masukkan bilangan pertama=');readln (a);
Gotoxy (20,6); Write ('Masukkan bilangan kedua=');readln (b);
f:=a/b;
Gotoxy (20,7); Writeln ('Hasil Pembagian adalah ',(f):5:0);
End
else If i=5 then
Begin
Writeln ('Operasi yang anda pilih adalah Pembagian Bulat');
Gotoxy (20,5); Write ('Masukkan bilangan pertama=');readln (a);
Gotoxy (20,6); Write ('Masukkan bilangan kedua=');readln (b);
g:=a div b;
Gotoxy (20,7); Writeln ('Hasil Pembagian Bulat adalah ',(g):5:0);
End
else If i=6 then
Begin
Writeln ('Operasi yang anda pilih adalah Sisa Hasil Pembagian');
Gotoxy (20,5); Write ('Masukkan bilangan pertama=');readln (a);
Gotoxy (20,6); Write ('Masukkan bilangan kedua=');readln (b);
h:=a mod b;
Gotoxy (20,7); Writeln ('Sisa Hasil Pembagian adalah ',(h):5:0);
End
else Writeln ('Pilihan Anda Salah');
End.

REKURSI

• Rekursi yaitu procedure atau function yang memanggil dirinya sendiri. Gunanya untuk melakukan proses berulang yang sulit diketahui kapan akan berakhir.
• Contoh rekursi:

1. Faktorial
Program Faktorial;
uses wincrt;
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');
writeln;
write('Berapa Faktorial ?');readln(x);
writeln(x ,' faktorial ',' = ',faktorial(x));
end.

2. Fibonanci

Program Fibonacci;
uses wincrt;
Var fibo: array [1..10] of integer;
A,i,hasil:integer;
begin
clrscr;
write('Masukkan suku keberapa dalam deret fibonacci : ');readln(A);
if (A=1) or (A=2) then hasil:=1 else
begin
fibo[1]:=1; fibo[2]:=1;
for i:=3 to A do
begin
fibo[i]:=fibo[i-1]+fibo[i-2];
hasil:=fibo[i];
end;
end;
writeln;
for i:=1 to A do
write(fibo[i],' ');
writeln;
writeln('Suku Ke-',A,' dari deret fibonacci adalah ',hasil);
end.

3. Perpangkatan

Program pangkat;
uses wincrt;
var A,x,i,hasil:longint;
begin
write('masukkan bilangan yang akan dipangkatkan = ');readln(A);
write('masukkan bilangan pangkat = ');readln(x);
hasil:=1;
for i:=1 to x do
hasil:=hasil*A;
writeln('hasil dari ',A,' pangkat ',x,' adalah ',hasil);
end.

Rabu, 09 Desember 2009

SUB PROGRAM

Subprogram digunakan untuk:
• Menyederhanakan persoalan dengan memecahnya menjadi sub-persoalan.
• Membagi program menjadi elemen-elemen yang lebih kecil.
• Diperlukan mekanisme pemanggilan subprogram dari program utama.




• Subprogram dalam turbo pascal ada 2 macam:

1. Fungsi

- Semua fungsi mempunyai sifat memberikan nilai (disebut hasil fungsi) pada saat dipanggil.
- Contoh penggunaan fungsi yang benar adalah sebagai berikut:

X:=sqrt(100)
Sqrt berkedudukan sebagai operand dari operator penugasan (:=).

- Suatu fungsi umumnya mempunyai argument atau parameter. Parameter ditulis di dalam tanda kurung. Namun fungsi bisa saja tidak memiliki parameter, contohnya dalah pi dan random.

-Bentuk deklarasinya adalah sebagai berikut:

FUNCTION nama_fungsi (daftar_parameter):Tipe;
Bagian_deklarasi
Bagian_pernyataan;

Contoh judul deklarasi judul fungsi:

FUNCTION Tambah (A:real; B:real):Real;
Contoh ini menunjukkan bahwa fungsi tambah mempunyai dua buah parameter yang masing-masing bertipe real. Selain itu, hasil fungsi juga bertipe real.

Parameter Formal dan Aktual, Variabel Lokal dan Global

Parameter formal (terdapat pada subprogram): parameter yang terdapat pada pendeklarasian judul subprogram, baik pada fungsi maupun prosedur.

Contoh: FUNCTION Tambah (A, B:Real)
A, B merupakan parameter formal.

Parameter aktual (terdapat pada program utama): parameter yang terdapat pada pemanggilan fungsi atau prosedur.
Contoh: Tambah (10,30)
10 dan 30 merupakan parameter aktual.

Contoh:



2. Prosedur

• Prosedur adalah suatu program yang terpisah dalam blok sendiri yang berfungsi sebagai subprogram (programbagian). Prosedur diawali dengan kata cadangan procedure.

• Prosedur dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan judul prosedurnya.

• Deklarasi prosedur terdiri dari tiga bagian, yaitu:
1. Judul prosedur
2. Bagian deklarasi
3. Bagian pernyataan

• Bentuk deklarasinya adalah sebagai berikut:

PROCEDURE nama(daftar_parameter)
Bagian_deklarasi
Bagian_pernyataan;

Contoh Program Prosedur:



ARRAY (LARIK)

• Array (larik) merupakan tipe data terstruktur yang berguna untuk menyimpan sejumlah data yangbertipe sama.

• Fungsi Array
Sebagai langkah efisiensi penggunan memori komputer, sebab data elemen array dialokasikan pada suatu deretan sel memori tertentu. Hal ini jauh lebih efisien dibandingkan dengan jika kita mendefinisikan masing-masing data pada suatu variabel tersendiri yang pastinya akan banyak menyita memori.
• Array dibedakan menjadi 2, yaitu:

1. Array Berdimensi Satu

Bentuk umum:

Nama tipe = Array [tipe ordinal] Of tipe elemen

Contoh:

Program Menghitung_Rata_Rata;
uses wincrt;
var x:array[1..10] of integer;
i,n:integer;
jumlah,u:real;
begin
write('berapa kali data yang anda masukkan ? ');readln(n);
for i:=1 to n do
begin
write ('masukkan data = ');readln(x[i]);
end;
begin
clrscr;
for n:= 1 to i do
writeln('data = ' ,(x[n]));
end;

jumlah:=0;
for i:=1 to n do
jumlah:=jumlah+(x[i]);
u:=jumlah/n;
writeln ('u = ' ,u:2:2);
end.


2. Array Berdimensi Banyak (multidimensi)

Bentuk umum:

Nama tipe = Array [tipe-indeks 1] Of Array [tipe-indeks 2] Of tipe larik
Contoh:
Program Matriks;
uses wincrt;
var tabel:array[1..3,1..2] of integer;
i,j:integer;
begin
tabel [1,1]:=50;
tabel [1,2]:=55;
tabel [2,1]:=21;
tabel [2,2]:=26;
tabel [3,1]:=10;
tabel [3,2]:=1;
for i:=1 to 3 do
begin
for j:=1 to 2 do
write(tabel[i,j],' ');
writeln;
end;
end.

Apabila program dijalankan, maka akan menghasilkan tampilan sebagai berikut:



PERULANGAN (LOOP)

1. FOR

Pernyataan for biasanya digunakan untuk melakukan pengulangan yang jumlahnya telah diketahui sebelumnya.

For variable := to/downto do

• Pengulangan Positif : pengulangan dengan penghitung (counter) dari kecil ke besar atau dengan kata lain pertambahannya positif.
• Pengulangan Negatif : pengulangan dengan penghitung (counter) dari besar ke kecil atau dengan kata lain pertambahannya positif.

Contoh pengulangan positif:

Program segitiga_pascal;
uses wincrt;
var n,i,j:integer;
begin
write('Masukkan angka untuk segitiga asyik: ');readln(n);
for j:=1 to n do
begin
for i:=1 to j do
write (5:4);
writeln;
end;
end.

Apabila program dijalankan, maka akan menghasilkan tampilan sebagai berikut:
Masukkan angka untuk segitiga asyik: 3 (Masukkan angka, misal 3)
5
5 5
5 5 5

Contoh pengulangan negatif:

Program segitiga_pascal;
uses wincrt;
var n,i,j:integer;
begin
write('masukkan angka untuk segitiga asyik: ');readln(n);
for j:=n downto 1 do
begin
for i:=1 to j do
write (15:4);
writeln;
end;
end.


Apabila program dijalankan, maka akan menghasilkan tampilan sebagai berikut:
Masukkan angka untuk segitiga asyik: 3 (Masukkan angka, misal 3)
5 5 5
5 5
5

2. WHILE DO

Pernyataan while-do biasanya digunakan untuk melakukan pengulangan yang jumlahnya tidak diketahui dan diulang hingga kondisi salah.

While do
Contoh:
Program while_do;
uses wincrt;
var x:integer;
begin
x:=1;
while (x<6) do
begin
writeln(x,'. Pemrograman komputer');
x:=x+1;
end;
end.

Apabila program dijalankan, maka akan menghasilkan tampilan sebagai berikut:
1. Pemrograman Komputer
2. Pemrograman Komputer
3. Pemrograman Komputer
4. Pemrograman Komputer
5. Pemrograman Komputer

3. REPEAT…UNTIL

Repeat biasa dipakai untuk menangani pengulangan yang jumlahnya belum pasti, diulang hingga kondisi benar.

Repeat
Pernyatan_1;
Pernyatan_2;

Pernyatan_n;
Until

Contoh:
Program Repeat_until;
uses wincrt;
var x:integer;
begin
x:=1;
repeat
writeln (x,'. Pemrograman Komputer');
x:=x+1;
until x>5;
end.

Apabila program dijalankan, maka akan menghasilkan tampilan sebagai berikut:
1. Pemrograman Komputer
2. Pemrograman Komputer
3. Pemrograman Komputer
4. Pemrograman Komputer
5. Pemrograman Komputer

PENYELEKSIAN KONDISI

 Untuk menyeleksi suatu kondisi, di dalam bahasa pascal dapat dipergunakan statemen If dan Case.

 Statemen (pernyataan) If dapat dibagi menjadi tiga, yaitu:

1. Statemen If-Then (struktur keputusan satu kasus)
If < kondisi/ungkapan > Then
Contoh:
Program Kelulusan_Hasil_Ujian;
uses wincrt;
var
nilai:integer;
keterangan:string[25];
begin
Keterangan:='Selamat Anda Lulus !';
write('Nilai Mahasiswa = ');readln(nilai);
If Nilai<60 then keterangan:='Maaf Anda Belum Lulus !';
write(keterangan);
end.

Apabila program dijalankan akan menghasilkan tampilan sebagai berikut:
Nilai Mahasiswa = 89 (masukkan nilai mahasiswa, misal 89)
Selamat Anda Lulus !

Jika nilai yang dimasukkan kurang dari 60, maka statemen yang muncul adalah 'Maaf Anda Belum Lulus !'.


2. Statemen If-then…Else (Struktur keputusan multi kasus)

If Then Else
Contoh:
Program Kelulusan_Hasil_Ujian;
uses wincrt;
var a:integer;
begin
write('Nilai Mahasiswa = ');readln(a);
If a>60 then writeln('Selamat Anda Lulus!')
else writeln('Maaf Anda Tidak Lulus')
end.

Apabila program dijalankan akan menghasilkan tampilan sebagai berikut:
Nilai Mahasiswa =56 (masukkan nilai mahasiswa, misal 89)
Maaf Anda Tidak Lulus!

Jika nilai yang dimasukkan kurang dari 60, maka statemen yang muncul adalah 'Maaf Anda Tidak Lulus !'.

3. Statemen If bersarang (Nested): Bentuk statemen if yang mengandung pernyataan if yang lain.

If Then
Begin
If Then
Else
End.


Contoh:
Program Menu_Makanan;
uses wincrt;
var
x:integer;
menu:string;

begin
writeln('========================');
writeln('Menu Makanan Rumah Makan');
writeln('========================');
writeln('1. Nasi Goreng');
writeln('2. Mie Goreng');
writeln('3. Nasi Gudeg');
write('Pilih Menu Favoritmu! ');readln(x);
if x=1 then write ('>>Nasi Goreng = Rp 6.000,00') else
if x=2 then write ('>>Mie Goreng = Rp 5.000,00') else
if x=3 then write ('>>Nasi Gudeg = Rp 4.500,00') else
writeln ('Pilihan anda tidak ada dalam menu kami')
end.

Statemen case dapat dibagi menjadi dua, yaitu:
1. Statemen Case-Of
Struktur case-of mempunyai suatu ungkapan logika yang disebut dengan selector dan sejumlah statemen yang diawali dengan suatu label permasalahan (case label) yang mempunyai tipe sama dengan selector.
Case of
Daftar case-label1:statemen1;
Daftar case-label2:statemen2;
Daftar case-labe3:statemen3;
.
.
.
Daftar case-labeln:statemenn;
End;

Contoh:
Program Hari;
uses wincrt;
var x:integer;
begin
writeln('NamaHari');
writeln('========================');
writeln('1. Minggu');
writeln('2. Senin');
writeln('3. Selasa');
writeln('4. Rabu');
writeln('5. Kamis');
writeln('6. Jumat');
writeln('7. Sabtu');
writeln('Pilih Hari!');readln(x);
case x of
1:begin
writeln('Minggu');
end;
2:begin
writeln('Senin');
end;
3:begin
writeln('Selasa');
end;
4:begin
writeln('Rabu');
end;
5:begin
writeln('Kamis');
end;
6:begin
writeln('Jumat');
end;
7:begin
writeln('Sabtu');
end;
end;
end.

2. Statemen Case-Of…Else
Statemen Case-Of…Else merupakan pengembangan dari struktur case of dan juga pengembangan dari standar Pascal. Dengan struktur Case-Of…Else, bila tidak ada kondisi yang terpenuhi, maka statemen yang akan diproses di dalam lingkunagn Case-Of adalah statemen yang ada di Else.
Contoh:
Program Menu_Makanan;
uses wincrt;
var x:integer;
menu:string;
a:char;
begin
writeln('Menu Minuman');
writeln('1. Jus Mangga');
writeln('2. Jus Strawbery');
writeln('3. Jus Alpukat');
writeln('Pilih Menu Favoritmu!');readln(x);
case x of
1: begin
writeln('>> Jus Mangga = Rp 3.000,00 <<');
end;
2: begin
writeln('>> Jus Strawbery = Rp 3.000,00 <<');
end;
3: begin
writeln('>> Jus Alpukat = Rp 4.000,00 <<');
end;
else writeln('Menu belum ada');
end;
end.

PEMROGRAMAN DALAM TURBO PASCAL

Struktur suatu program pascal dapat terdiri:
1. Judul Program
2. Blok Program
a. Bagian deklarasi
b. Bagian pernyataan

Bagian deklarasi digunakan bila dalam program anda menggunakan pengenal(identifier).
a. Deklarasi label
Apabila program menggunakan statemen Go to untuk meloncat ke suatu statemen yang tertentu, maka dibutuhkan suatu label pada statemen yang dituju dan label tersebut harus dideklarasikan terlebih dahulu pada bagian deklarasi.
Deklarasi variabel diawali dengan kata cadangan label dengan dipisahkan oleh koma dan diakhiri dengan titik koma.



b. Deklarasi konstanta
Penggunaan identifier yang berisi nilai-nilai konstanta harus didefinisikan terlebih dahulu pada bagian ini.
Deklarasi konstanta diawali dengan kata cadangan const diikuti oleh kumpulan identifier yang diberi suatu nilai konstanta.
Contoh:
Const pi=3.14;

c. Deklarasi tipe
Pascal menyediakan beberapa macam tipe dari data, terdiri dari:
• Data tipe sederhana (simple-type data)
• Data tipe terstruktur (structured-type data)
• Data tipe sederhana (pointer-type data)

Contoh mendeklarasikan tipe data sederhana:

Type
Pecahan = real;
Logika = boolean;
Bulat = integer;
Huruf = string [25];
Begin
End.

d. Deklarasi variabel
Variabel adalah identifier yang berisi data yang dapat berubah-ubah nilainya di dalam program.
Deklarasi variabel menggunakan kata cadangan var.

Contoh:
Var
p, l, t : real;
keterangan : string;

e. Deklarasi prosedur
f. Deklarasi fungsi

Tipe data dalam turbo pascal dapat terdiri:



Contoh pemrograman dalam turbo pascal:

1. Gunakan bahasa pascal untuk mencari volume kubus dan luas permukaan kubus dengan memasukkan alas!

Program Volume_Kubus_dan_Luas_Permukaan_Kubus;
uses wincrt;
var
alas:real;
Volume:real;
Luas_permukaan:real;
begin
write('Masukkan alas =');readln(alas);
Volume:=alas*alas*alas;
Luas_permukaan:=6*(alas*alas);
writeln('Volume = ',Volume:5:2);
writeln('Luas_permukaan = ',Luas_permukaan:5:2);
end.

Apabila program dijalankan akan menghasilkan:
Masukkan alas = 2
Volume = 8.00
Luas_permukaan = 24.00

2. Gunakan bahasa pascal untuk menukarkan nilai A dan B!

Program Mempertukarkan_Nilai;
uses wincrt;
var
A:integer;
B:integer;
temp:integer;
begin
write('Masukkan nilai A =');readln(A);
write('Masukkan nilai B =');readln(B);
temp:=A;
A:=B;
B:=temp;

writeln('A =',A);
writeln('B =',B);
end.

Apabila program dijalankan akan menghasilkan:
Masukkan nilai A = 80
Masukkan nilai B = 76
A = 76
B = 80

3. Penjumlahan, pengurangan, perkalian, pembagian, pembagian bulat, dan sisa hasil bagi dalam sebuah program!

Program Operasi_Bilangan;
uses wincrt;
var
a,b,c,d,e,h:integer;
f,g:real;
begin
write('masukkan nilai pertama = ');readln(a);
write('masukkan nilai kedua = ');readln(b);

c:=a+b;
d:=a-b;
e:=a*b;
f:=a/b;
g:=a div b;
h:=a mod b;
writeln('hasil penjumlahan = ',c);
writeln('hasil pengurangan = ',d);
writeln('hasil perkalian = ',e);
writeln('hasil pembagian = ',f:0:2);
writeln('hasil pembagian bulat = ',g:0:2);
writeln('sisa hasil bagi = ',h);
end.

Apabila program dijalankan akan menghasilkan:
masukkan nilai pertama = 10
masukkan nilai kedua = 3
hasil penjumlahan = 13
hasil pengurangan = 7
hasil perkalian = 30
hasil pembagian = 3.33
hasil pembagian bulat = 3.00
sisa hasil bagi = 1

Sabtu, 05 Desember 2009

ALGORITMA DAN DIAGRAM ALIR

  • Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis.

Contoh:

Diberikan dua buah ember, A dan B.

Ember A berisi air berwarna merah, ember B berisi air berwarna biru.

Pertukarkan isi kedua ember itu sehingga ember A akan berisi air berwarna biru dan ember B berisi air berwarna merah.

ALGORITMA:

1. Tuangkan air dari ember A ke dalam ember B.

2. Tuangkan air dari ember B ke dalam ember A.

Perhatikan bahwa algoritma Tukar_Isi di atas tidak akan menghasilkan pertukaran yang benar. Langkah-langkahnya tidak logis.

Agar dapat melakukan pertukaran yang benar, kita memerlukan sebuah ember tambahan yang diperlukan sebagai tempat penampungan sementara. Namakan ember tambahan tersebut ember C. Dengan menggunakan ember C ini, algoritma mempertukarkan isi dua buah ember yang benar adalah sebagai berikut ini:

Program Tukar_Isi

ALGORITMA:

1. Tuangkan air dari ember A ke dalam ember C.

2. Tuangkan air dari ember B ke dalam ember A.

3. Tuangkan air dari ember C ke dalam ember B.


  • Untuk penulisan algoritma dapat menggunakan 2 cara, yaitu:

a. Pseudocode (kode semu)

Penyajian algoritma dalam bentuk tulisan biasanya

menggunakan deskripsi kata-kata biasa, bahasa yang digunakan bebas, asalkan deskripsinya jelas.

Contoh: menghitung luas persegi panjang dengan menggunakan pseudocode

1. [masukkan/input panjang dan lebar persegi panjang]

read (panjang, lebar)

2. [menghitung luas persegi panjang]

Luas:=panjang*lebar

3. [mencetak hasil]

Write (‘ Luas Persegi Panjang : ‘, Luas)

4. [mengakhiri algoritma]

exit


b. Flowchart (diagram alir)

Bagan alir (flowchart) adalah suatu b

agan yang menggambarkan arus logika dari data yang akan diproses dalam suatu progra m dari awal sampai akhir.

Simbol-simbol flowchart:

Contoh flowchart: Menghitung Luas Persegi Panjang