Bergervei/Pascal-Objekte

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Pascal</language>
<code id="513285d006ee2">
type tbruch=object
            private
              z, n: integer;
            public
              constructor erzeuge(z0, n0: integer);
              function    zaehler: integer;
              function    nenner: integer;
              procedure   addition(summand: tbruch);
              procedure   subtraktion(subtrahend: tbruch);
              procedure   multiplikation(faktor: tbruch);
              procedure   reziprok;
              procedure   division(dividend: tbruch);
              function    dezimal: real;
              function    sign: char;
              procedure   ausgabe; virtual;
             end;

constructor tbruch.erzeuge(z0, n0: integer);
 begin
  z:=z0; n:=n0;
 end;

function tbruch.zaehler: integer;
 begin
  zaehler:=z;
 end;

function tbruch.nenner: integer;
 begin
  nenner:=n;
 end;

procedure tbruch.addition(summand: tbruch);
 begin
  z:=z*summand.n+n*summand.z;
  n:=n*summand.n;
 end;

procedure tbruch.subtraktion(subtrahend: tbruch);
 begin
  z:=z*subtrahend.n-n*subtrahend.z;
  n:=n*subtrahend.n;
 end;

procedure tbruch.multiplikation(faktor: tbruch);
 begin
  z:=z*faktor.z;
  n:=n*faktor.n;
 end;

procedure tbruch.division(dividend: tbruch);
 begin
  z:=z*dividend.n;
  n:=n*dividend.z;
 end;

procedure tbruch.reziprok;
 var z0: integer;
 begin
  z0:=z; z:=n; n:=z0;
 end;

function tbruch.dezimal: real;
 begin
  dezimal:=z/n;
 end;

function tbruch.sign: char;
 begin
  if z*n<0 then sign:='-' else sign:=' ';
 end;

procedure tbruch.ausgabe;
 var zs, ns   : string;
     x, y     : integer;
     laenge, i: integer;
 begin
  x:=wherex; y:=wherey;
  str(abs(z),zs); str(abs(n),ns);
  laenge:=length(zs); if laenge<length(ns) then laenge:=length(ns);
  write('  '+abs(z)); writeln;
  write(sign+' '); for i:=1 to laenge do write('-'); writeln;
  write('  '+abs(n)); writeln;
 end;
</code>

<code id="513285d006f3f">
var bruch1: tbruch;
</code>

<run id="513285d006fa2">
bruch1.erzeuge(2, 3);
bruch1.ausgabe;
</run>