Kamis, 19 Maret 2015

Program Operasi Bangun Ruang dengan Rekursif

  • Nama : Program Operasi Bangun Ruang dengan Rekursif
  • Bahasa : Pascal
  • Software : Free Pascal IDE
  • Deskripsi : Program ini terbagi menjadi 3 submenu, yaitu kubus, balok, dan tabung. Masing-masing submenu mempunyai isi yang hampir sama dan menggunakan rekursif. Pada submenu kubus, user diminta menginputkan sisi untuk mendapatkan hasil berupa volume dan luas permukaan. Sama dengan submenu kubus, pada submenu balok perbedaannya hanyalah pada bagian input sedangkan outputnya sama yaitu volume dan luas permukaan, input pada submenu balok adalah panjang, lebar, dan tinggi. Pada submenu tabung perbedaannya lebih banyak, pada submenu ini digunakan phi yang bernilai 22/7 dan inputannya pun berbeda yaitu jari-jari dan tinggi, sedangkan untuk outputnya adalah volume, luas permukaan, dan luas selimut.
  • Screenshot :
     Gambar 1. Menu awal

    Gambar 2. Penginputan pada menu 1 (kubus)

     Gambar 3. Hasil akhir pada menu 1 (kubus)

     Gambar 4. Penginputan pada menu 2 (balok)

     Gambar 5. Hasil akhir pada menu 2 (balok)
     
     Gambar 6. Penginputan pada menu 3 (tabung)
     
    Gambar 7.Hasil akhir pada menu 3 (tabung)

  • Source Code :

program bangun_ruang;
uses crt;
var pil:char;

procedure v_kubus(a,b:real;var hasil:real)
  begin
    if b>1 then v_kubus(a,b-1,hasil);
    hasil:=hasil*a;
  end;
procedure l_kubus(a,b:real;var hasil:real);
  begin
    if b>1 then l_kubus(a,b-1,hasil);
    hasil:=hasil+(a*a);
  end;

procedure v_balok(a,b,c:real;var hasil:real);
  begin
    if c>1 then v_balok(a,b,c-1,hasil);
    hasil:=hasil+(a*b);
  end;
procedure l_balok(a,b,c,d:real;var hasil:real)
  begin
    if d>1 then l_balok(a,b,c,d-1,hasil);
    hasil:=hasil+(a*b)+(a*c)+(b*c);
  end;

procedure v_tabung(a,b,c:real;var hasil:real);
  begin
    if c>1 then v_tabung(a,b,c-1,hasil);
    hasil:=hasil+(a*b*b);
  end;
procedure lp_tabung(a,b,c,d:real;var hasil:real);
  begin
    if d>1 then lp_tabung(a,b,c,d-1,hasil);
    hasil:=hasil+(a*b*(b+c));
  end;
procedure ls_tabung(a,b,c,d:real;var hasil:real);
  begin
    if d>1 then ls_tabung(a,b,c,d-1,hasil);
    hasil:=hasil+(a*b*c);
  end;

procedure menu1;
  var  s,v,l      :real;
  begin
    v:=1;l:=0;
    clrscr;
    writeln('>> Volume dan Luas Permukaan Kubus <<');
    gotoxy(13,2); writeln('  ._________.');
    gotoxy(13,3); writeln(' / |       /|');
    gotoxy(13,4); writeln('/________./ |');
    gotoxy(13,5); writeln('|  |     |  |');
    gotoxy(13,6); writeln('|  |     |  |');
    gotoxy(13,7); writeln('|  |_____|__|');
    gotoxy(13,8); writeln('| /      | / ');
    gotoxy(13,9); writeln('|/_______|/  ');
    writeln;
    write  ('Input sisi      = ');readln(s);
    v_kubus(s,3,v);
    l_kubus(s,6,l);
    writeln;
    writeln('Volume          = ',v:0:2);
    writeln('Luas permukaan  = ',l:0:2);
    readkey;
  end;

procedure menu2;
  var p,lb,t,v,l :real;
  begin
    v:=0;l:=0;
    clrscr;
    writeln('>> Volume dan Luas Permukaan Balok <<');
    gotoxy(8,2); writeln('  .__________________.');
    gotoxy(8,3); writeln(' / |                /|');
    gotoxy(8,4); writeln('/_________________./ |');
    gotoxy(8,5); writeln('|  |              |  |');
    gotoxy(8,6); writeln('|  |              |  |');
    gotoxy(8,7); writeln('|  |______________|__|');
    gotoxy(8,8); writeln('| /               | / ');
    gotoxy(8,9); writeln('|/________________|/  ');
    writeln;
    write  ('Input panjang   = ');readln(p);
    write  ('Input lebar     = ');readln(lb);
    write  ('Input tinggi    = ');readln(t);
    v_balok(p,lb,t,v);
    l_balok(p,lb,t,2,l);
    writeln;
    writeln('Volume          = ',v:0:2);
    writeln('Luas permukaan  = ',l:0:2);
    readkey;
  end;

procedure menu3;
  var r,t,phi,v,lp,ls:real;
  begin
    phi:=22/7;v:=0;lp:=0;ls:=0;
    clrscr;
    writeln('>> Volume, Luas Permukaan dan Luas Selimut Tabung <<');
    gotoxy(22,2); writeln('  ____  ');
    gotoxy(22,3); writeln('./    \.');
    gotoxy(22,4); writeln('|\____/|');
    gotoxy(22,5); writeln('|      |');
    gotoxy(22,6); writeln('|      |');
    gotoxy(22,7); writeln('| .... |');
    gotoxy(22,8); writeln('|/    \|');
    gotoxy(22,9); writeln(' \____/ ');
    writeln;
    write  ('Input jari-jari = ');readln(r);
    write  ('Input tinggi    = ');readln(t);
    v_tabung(phi,r,t,v);
    lp_tabung(phi,r,t,2,lp);
    ls_tabung(phi,r,t,2,ls);
    writeln;
    writeln('Volume          = ',v:0:2);
    writeln('Luas permukaan  = ',lp:0:2);
    writeln('Luas selimut    = ',ls:0:2);
    readkey;
  end;

begin
  repeat
    clrscr;
    writeln('>> Menu <<');
    writeln;
    writeln('[1] Kubus');
    writeln('[2] Balok');
    writeln('[3] Tabung');
    writeln('[0] Keluar');
    writeln;
    write  ('Pilihan : ');pil:=readkey;
    case pil of
      '1':menu1;
      '2':menu2;
      '3':menu3;
    end;
  until
    pil='0';
end.


1 komentar: