Cyberprotol Indonesia

Pusat informasi dunia cyber dan teknologi
Follow Me
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.
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 

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
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 :
pro_des_biner
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


Program firman;
Uses wincrt;
Var
  Prima :Integer;
  i,j: Integer;
  bil : Integer;
Begin
  i:=1;
  repeat
  Begin
  i:=i+1;
    Prima:=i;
    For j:= 2 to i-1 Do
    Begin
      bil := (i mod j);
      If bil = 0 then Prima:=0;
          End;
    If Prima <> 0 Then Write(Prima,' ');
    end;
until i=29;
  Readln;
End.

Layout

Program firman;
Uses wincrt;
Var
  Prima :Integer;
  i,j: Integer;
  bil : Integer;
Begin
  i:=1;
  while i<=29 do
  Begin
  i:=i+1;
    Prima:=i;
    For j:= 2 to i-1 Do
    Begin
      bil := (i mod j);
      If bil = 0 then Prima:=0;
          End;
    If Prima <> 0 Then Write(Prima,' ');
    end;
  Readln;
End.

Layout

Program firman;
Uses wincrt;
Var
  Prima :Integer;
  i,j: Integer;
  bil : Integer;
Begin
  i:=2;
  for  i:=2 to 30 do
  Begin
    Prima:=i;
    For j:= 2 to i-1 Do
    Begin
      bil := (i mod j);
      If bil = 0 then Prima:=0
          End;
    If Prima <> 0 Then Write(Prima,' ');
  End;
  Readln;
End.

Layout


Program gambar_segitiga_firman;
Uses Wincrt;
Var i,j:integer;
Begin
     For i:= 1 to 7 do
     Begin
          Gotoxy(10-1*i,1+i);
          For j:= 1 to i do
          write('+':2);
     End;
End.


Program firman;
Uses Wincrt;
Var i,tot:integer;
Begin    
     For i:= 1 to 10 do
     Begin
          if (i mod 2 = 1) then
          Begin
               tot:=tot+i;
               write(' ',i);
          End;
     end;
     Writeln;
     Writeln('Total bilangan ganjil: ',tot);
End.

layout

Contact Form

Name

Email *

Message *

Labels

Translate