Showing posts with label Pascal. Show all posts
Showing posts with label Pascal. Show all posts
Program konversi;
Uses crt;
Var
angka:longint;
Begin
clrscr;
Writeln('Konversi Angka Desimal ke Romawi');
Writeln('--------------------- -----------');
Writeln;
repeat
Write('Masukkan bilangan [1..3999] : ');Readln(angka);
Writeln;
until angka>0;
Writeln;
Writeln('Hasil Konversi');
Writeln('--------------');
Writeln;
If (angka>3999) or (angka<=0) then Writeln('Tidak Sesuai ! Masukkan hanya bilangan [1..3999] !')
Else
Begin
repeat
if angka>=1000 then
Begin
angka:=angka-1000;
Write('M');
End
Else If (angka>=900) and (angka<1000) then
Begin
angka:=angka-900;
write('CM');
End
Else if (angka>=800) and (angka<900) then
Begin
angka:=angka-800;
Write('DCCC');
End
Else if (angka>=700) and (angka<800) then
Begin
angka:=angka-700;
Write('DCC');
End
Else if (angka>=600) and (angka<700) then
Begin
angka:=angka-600;
Write('DC');
End
Else if (angka>=500) and (angka<600) then
Begin
angka:=angka-500;
Write('D');
End
Else if (angka>=400) and (angka<500) then
Begin
angka:=angka-400;
Write('CD');
End
Else if (angka>=300) and (angka<400) then
Begin
angka:=angka-300;
Write('CCC');
End
Else if (angka>=200) and (angka<300) then
Begin
angka:=angka-200;
Write('CC');
End
Else if (angka>=100) and (angka<200) then
Begin
angka:=angka-100;
Write('C');
End
Else if (angka>=90) and (angka<100) then
Begin
angka:=angka-90;
Write('XC');
End
Else if (angka>=80) and (angka<90) then
Begin
angka:=angka-80;
Write('LXXX');
End
Else if (angka>=70) and (angka<80) then
Begin
angka:=angka-70;
Write('LXX');
End
Else if (angka>=60) and (angka<70) then
Begin
angka:=angka-60;
Write('LX');
End
Else if (angka>=50) and (angka<60) then
Begin
angka:=angka-50;
Write('L');
End
Else if (angka>=40) and (angka<50) then
Begin
angka:=angka-40;
Write('XL');
End
Else if (angka>=30) and (angka<40) then
Begin
angka:=angka-30;
Write('XXX');
End
Else if (angka>=20) and (angka<30) then
Begin
angka:=angka-20;
Write('XX');
End
Else if (angka>=10) and (angka<20) then
Begin
angka:=angka-20;
Write('X');
End
Else if (angka=9) then
Begin
angka:=angka-9;
Write('IX');
End
Else if (angka=8) then
Begin
angka:=angka-8;
Write('VIII');
End
Else if (angka=7) then
Begin
angka:=angka-7;
Write('VII');
End
Else if (angka=6) then
Begin
angka:=angka-6;
Write('VI');
End
Else if (angka=5) then
Begin
angka:=angka-5;
Write('V');
End
Else if (angka=4) then
Begin
angka:=angka-4;
Write('IV');
End
Else if (angka=3) then
Begin
angka:=angka-3;
Write('III');
End
Else if (angka=2) then
Begin
angka:=angka-2;
Write('II');
End
Else if (angka=1) then
Begin
angka:=angka-1;
Write('I');
End;
Until angka=0;
End;
Readln;
End.
Uses crt;
Var
angka:longint;
Begin
clrscr;
Writeln('Konversi Angka Desimal ke Romawi');
Writeln('---------------------
Writeln;
repeat
Write('Masukkan bilangan [1..3999] : ');Readln(angka);
Writeln;
until angka>0;
Writeln;
Writeln('Hasil Konversi');
Writeln('--------------');
Writeln;
If (angka>3999) or (angka<=0) then Writeln('Tidak Sesuai ! Masukkan hanya bilangan [1..3999] !')
Else
Begin
repeat
if angka>=1000 then
Begin
angka:=angka-1000;
Write('M');
End
Else If (angka>=900) and (angka<1000) then
Begin
angka:=angka-900;
write('CM');
End
Else if (angka>=800) and (angka<900) then
Begin
angka:=angka-800;
Write('DCCC');
End
Else if (angka>=700) and (angka<800) then
Begin
angka:=angka-700;
Write('DCC');
End
Else if (angka>=600) and (angka<700) then
Begin
angka:=angka-600;
Write('DC');
End
Else if (angka>=500) and (angka<600) then
Begin
angka:=angka-500;
Write('D');
End
Else if (angka>=400) and (angka<500) then
Begin
angka:=angka-400;
Write('CD');
End
Else if (angka>=300) and (angka<400) then
Begin
angka:=angka-300;
Write('CCC');
End
Else if (angka>=200) and (angka<300) then
Begin
angka:=angka-200;
Write('CC');
End
Else if (angka>=100) and (angka<200) then
Begin
angka:=angka-100;
Write('C');
End
Else if (angka>=90) and (angka<100) then
Begin
angka:=angka-90;
Write('XC');
End
Else if (angka>=80) and (angka<90) then
Begin
angka:=angka-80;
Write('LXXX');
End
Else if (angka>=70) and (angka<80) then
Begin
angka:=angka-70;
Write('LXX');
End
Else if (angka>=60) and (angka<70) then
Begin
angka:=angka-60;
Write('LX');
End
Else if (angka>=50) and (angka<60) then
Begin
angka:=angka-50;
Write('L');
End
Else if (angka>=40) and (angka<50) then
Begin
angka:=angka-40;
Write('XL');
End
Else if (angka>=30) and (angka<40) then
Begin
angka:=angka-30;
Write('XXX');
End
Else if (angka>=20) and (angka<30) then
Begin
angka:=angka-20;
Write('XX');
End
Else if (angka>=10) and (angka<20) then
Begin
angka:=angka-20;
Write('X');
End
Else if (angka=9) then
Begin
angka:=angka-9;
Write('IX');
End
Else if (angka=8) then
Begin
angka:=angka-8;
Write('VIII');
End
Else if (angka=7) then
Begin
angka:=angka-7;
Write('VII');
End
Else if (angka=6) then
Begin
angka:=angka-6;
Write('VI');
End
Else if (angka=5) then
Begin
angka:=angka-5;
Write('V');
End
Else if (angka=4) then
Begin
angka:=angka-4;
Write('IV');
End
Else if (angka=3) then
Begin
angka:=angka-3;
Write('III');
End
Else if (angka=2) then
Begin
angka:=angka-2;
Write('II');
End
Else if (angka=1) then
Begin
angka:=angka-1;
Write('I');
End;
Until angka=0;
End;
Readln;
End.
kali ini saya akan membahas mengenai Overload Prosedur dan Fungsi yang di gunakan dalam bahasa pemograman pascal.
overload merupakan dua atau beberapa prosedur yang memiliki nama sama
tetapi parametemya berbeda. Kata 'berbeda’ di sini mengandung arti berikut.
1. Berbeda tipe datanya
2. Berbeda jumlah parameternya
3. Gabungan dari nomor 1 dan 2 (berbeda jumlah dan tipenya)
contoh lsiting program overload function
program mid;
uses crt;
function luas (a:real):real;
begin
luas:= 3.14 * sqr(a);
end;
function luas (a1,a2:integer):integer;
begin
luas:=a1 * a2;
end;
var
hs1,hs2:real;
w:integer;
begin
clrscr;
write('Input nilai =');readln(w);
hs1:=luas(w);
hs2:=luas(w,w);
writeln('Luas lingkaran = ',hs1:0:2);
writeln('luas persegi = ',hs2:0:0);
readln;
end.
layout
overload merupakan dua atau beberapa prosedur yang memiliki nama sama
tetapi parametemya berbeda. Kata 'berbeda’ di sini mengandung arti berikut.
1. Berbeda tipe datanya
2. Berbeda jumlah parameternya
3. Gabungan dari nomor 1 dan 2 (berbeda jumlah dan tipenya)
contoh lsiting program overload function
program mid;
uses crt;
function luas (a:real):real;
begin
luas:= 3.14 * sqr(a);
end;
function luas (a1,a2:integer):integer;
begin
luas:=a1 * a2;
end;
var
hs1,hs2:real;
w:integer;
begin
clrscr;
write('Input nilai =');readln(w);
hs1:=luas(w);
hs2:=luas(w,w);
writeln('Luas lingkaran = ',hs1:0:2);
writeln('luas persegi = ',hs2:0:0);
readln;
end.
layout
Kali ini saya posting script pascal mengenai "Rekursi Perpangkatan Bilangan", semoga script ini membantu sobat semua
program rekursiperpangkatan;
uses crt;
function pangkat(basis,eksp:integer):integer;
begin
if (eksp=0) then
begin
pangkat:=1;
end
else
pangkat:= basis * pangkat (basis, eksp-1);
end;
var
a,b,hasil: integer;
c,cr:integer;
begin
clrscr;
write('Nilai Basis = ' );readln(a);
write('Nilai Pangkat = ');readln(b);
hasil := pangkat (a,b);
write (a.'*',b,' = ');write(a);
for c:=1 to b-1 do
begin
write('*',a);
end;
writeln;
writeln (' = ',hasil);
readln;
end.
layoutnya seperti ini :
Nilai Basis = 2
Nilai Pangkat = 5
2^5 = 2 * 2 * 2 * 2 *2
= 32
program rekursiperpangkatan;
uses crt;
function pangkat(basis,eksp:integer):integer;
begin
if (eksp=0) then
begin
pangkat:=1;
end
else
pangkat:= basis * pangkat (basis, eksp-1);
end;
var
a,b,hasil: integer;
c,cr:integer;
begin
clrscr;
write('Nilai Basis = ' );readln(a);
write('Nilai Pangkat = ');readln(b);
hasil := pangkat (a,b);
write (a.'*',b,' = ');write(a);
for c:=1 to b-1 do
begin
write('*',a);
end;
writeln;
writeln (' = ',hasil);
readln;
end.
layoutnya seperti ini :
Nilai Basis = 2
Nilai Pangkat = 5
2^5 = 2 * 2 * 2 * 2 *2
= 32
Cara manual mengubah bilangan desimal ke biner adalah dengan membagi bilangan desimal tersebut dengan 2 kemudian sisa dari hasil pembagiannya diambil sebagai bilangan biner. Misalnya bilangan desimal tersebut adalah 24. Bilangan 24 ini dibagi dua kemudian sisanya dicatat, hasilnya dibagi lagi dengan 2 terus hingga tidak bisa dibagi lagi. Lebih jelasnya seperti ini :
24 : 2 -> Sisa nya 0
Hasilnya 12.
12 : 2 -> Sisanya 0
Hasilnya 6.
6 : 2 -> Sisanya 0
Hasilnya 3
3 : 2 -> Sisanya 1
Haslnya 1.
Jadi Bilangan desimal 24 memiliki biner 1 1 0 0 0. Diambil dari bawah ke atas.
Nah itu manualnya kalo kita mau buat programnya kita buat dulu algoritmanya. Bisa berupa flowchart seperti dibawah ini :

Nah dari flowchart ini jelas. Kalau belum jelas juga saya akan mencoba untuk menjelaskan. Awalnya kita siapkan dua buah variabel yaitu Des dan Bin. Des dengan tipe data integer dan Bin dengan tipe data string. Kemudian langkah selanjutnya adalah melakukan input data berupa bilangan biner yang akan disimpan ke variabel Des. Kemudian kita deklarasikan nilai awal dari variabel Bin yaitu Bin = ‘ ‘. Disini Bin adalah string yang memiliki nilai spasi. Atau jika ditampilkan variabel Bin akan tampil kosong.
Kemudian kita buat repeat-until. Until hingga Des bernilai 0. Didalam repeat-until ini ada program yang bertugas mengkonversikan bilangan desimal ke biner tersebut. Jika variabel Des Mod 2 = 0, maka deklarasikan Variabel Bin = ‘0′ + Bin (Ingat bawah variabel bin ini adalah string, sehingga nilainya tidak akan dijumlahkan tetapi ditambahkan misalnya ‘0′ + ‘1′ menjadi ‘01′ bukan 1).
dan jika Des mod 2 tidak sama dengan 0 makan deklarasikan Variabel Bin = ‘1′ + Bin.
Kemudian deklarasikan Variabel Des = Des div 2 (div adalah hasil pembagian bulat, misalnya 3 div 2 sama dengan 1 bukan 1,5). Program akan berulang hingga mendapati nilai dari Varibel Des = 0. Setelah itu dicetak Variabel Bin.
Untuk lebih jelas lagi saya coba buatkan programnya dengan Pascal sebagai berikut :
Uses wincrt;
Var Des : Integer;
Bin : String;
Begin
Write (‘Masukan Bilangan Desimal : ‘);
ReadLn (Des);
Bin := ‘ ‘;
Repeat
Begin
{Menghitung Biner Dari Sisa Hasil Bagi}
If Des mod 2 = 0 Then Bin := ‘0′ + Bin
Else Bin := ‘1′ + Bin;
{Membagi Bulat Bil Desimal}
Des := Des div 2;
End;
Until Des = 0;
WriteLn (‘Bilangan Biner : ‘,Bin);
End.
Hasil dari program tersebut dapat dilihat pada gambar dibawah ini :

24 : 2 -> Sisa nya 0
Hasilnya 12.
12 : 2 -> Sisanya 0
Hasilnya 6.
6 : 2 -> Sisanya 0
Hasilnya 3
3 : 2 -> Sisanya 1
Haslnya 1.
Jadi Bilangan desimal 24 memiliki biner 1 1 0 0 0. Diambil dari bawah ke atas.
Nah itu manualnya kalo kita mau buat programnya kita buat dulu algoritmanya. Bisa berupa flowchart seperti dibawah ini :

Nah dari flowchart ini jelas. Kalau belum jelas juga saya akan mencoba untuk menjelaskan. Awalnya kita siapkan dua buah variabel yaitu Des dan Bin. Des dengan tipe data integer dan Bin dengan tipe data string. Kemudian langkah selanjutnya adalah melakukan input data berupa bilangan biner yang akan disimpan ke variabel Des. Kemudian kita deklarasikan nilai awal dari variabel Bin yaitu Bin = ‘ ‘. Disini Bin adalah string yang memiliki nilai spasi. Atau jika ditampilkan variabel Bin akan tampil kosong.
Kemudian kita buat repeat-until. Until hingga Des bernilai 0. Didalam repeat-until ini ada program yang bertugas mengkonversikan bilangan desimal ke biner tersebut. Jika variabel Des Mod 2 = 0, maka deklarasikan Variabel Bin = ‘0′ + Bin (Ingat bawah variabel bin ini adalah string, sehingga nilainya tidak akan dijumlahkan tetapi ditambahkan misalnya ‘0′ + ‘1′ menjadi ‘01′ bukan 1).
dan jika Des mod 2 tidak sama dengan 0 makan deklarasikan Variabel Bin = ‘1′ + Bin.
Kemudian deklarasikan Variabel Des = Des div 2 (div adalah hasil pembagian bulat, misalnya 3 div 2 sama dengan 1 bukan 1,5). Program akan berulang hingga mendapati nilai dari Varibel Des = 0. Setelah itu dicetak Variabel Bin.
Untuk lebih jelas lagi saya coba buatkan programnya dengan Pascal sebagai berikut :
Uses wincrt;
Var Des : Integer;
Bin : String;
Begin
Write (‘Masukan Bilangan Desimal : ‘);
ReadLn (Des);
Bin := ‘ ‘;
Repeat
Begin
{Menghitung Biner Dari Sisa Hasil Bagi}
If Des mod 2 = 0 Then Bin := ‘0′ + Bin
Else Bin := ‘1′ + Bin;
{Membagi Bulat Bil Desimal}
Des := Des div 2;
End;
Until Des = 0;
WriteLn (‘Bilangan Biner : ‘,Bin);
End.
Hasil dari program tersebut dapat dilihat pada gambar dibawah ini :

program bintang (belah ketupat);
uses wincrt;
var n, a, b : integer;
begin
clrscr;
write ('Masukkan angka : '); readln (n);
for a := 1 to n do
begin
for b := 1 to (2*n)-a do
begin
write (' ');
end;
for b:= 1 to (2*a)-1 do
begin
write ('*');
end;
writeln;
end;
for a := 1 to n do
begin
for b := 1 to n-a do
begin
write (' ');
end;
for b := 1 to a do
begin
write ('*');
end;
for b := 1 to (2*n)-1 do
begin
write (' ');
end;
for b := 1 to a do
begin
write ('*');
end;
writeln;
end;
for a := 1 to n-1 do
begin
for b := 1 to a do
begin
write (' ');
end;
for b := 1 to n-a do
begin
write ('*');
end;
for b := 1 to (2*n)-1 do
begin
write (' ');
end;
for b := 1 to n-a do
begin
write ('*');
end;
writeln;
end;
for a := 0 to n-1 do
begin
for b := 1 to n+a do
begin
write (' ');
end;
for b := 2 to (2*n)-(a*2) do
begin
write ('*');
end;
writeln;
end;
readln;
end.
layout
uses wincrt;
var n, a, b : integer;
begin
clrscr;
write ('Masukkan angka : '); readln (n);
for a := 1 to n do
begin
for b := 1 to (2*n)-a do
begin
write (' ');
end;
for b:= 1 to (2*a)-1 do
begin
write ('*');
end;
writeln;
end;
for a := 1 to n do
begin
for b := 1 to n-a do
begin
write (' ');
end;
for b := 1 to a do
begin
write ('*');
end;
for b := 1 to (2*n)-1 do
begin
write (' ');
end;
for b := 1 to a do
begin
write ('*');
end;
writeln;
end;
for a := 1 to n-1 do
begin
for b := 1 to a do
begin
write (' ');
end;
for b := 1 to n-a do
begin
write ('*');
end;
for b := 1 to (2*n)-1 do
begin
write (' ');
end;
for b := 1 to n-a do
begin
write ('*');
end;
writeln;
end;
for a := 0 to n-1 do
begin
for b := 1 to n+a do
begin
write (' ');
end;
for b := 2 to (2*n)-(a*2) do
begin
write ('*');
end;
writeln;
end;
readln;
end.
layout