Von Thomas Grasel Hallo, ich hoffe ihr habt noch nicht zu viel aus den letzten 2 Kursen vergessen. Das folgende Demo wird nämlich einige der neuen Befehle benutzen. Es ist ein Programm zur Umfangsberechnung von Rechtecken , Kreisen und Dreiecken. Die Formeln für diese Figuren dürfen ja aus der Schule bekannt sein. program umfang type shape = (RECHTECK,KREIS, DREIECK) figur = record case form: shape of RECHTECK: (laenge, breite: real) KREIS : (radius: real) DREIECK : (s1, s2, winkel: real) end var figuren: set of char info : figur i : char (*-----------------------------------*) procedure eingabe(var daten:figur) begin with daten do begin case form of RECHTECK: begin write ('Laenge : ') readln (laenge) write ('Breite : ') readln (breite) end KREIS : begin write ('Radius : ') readln (radius) end DREIECK : begin write ('1.Seite : ') readln (s1) write ('2.Seite : ') readln (s2) write ('Winkel : ') readln (winkel) end end (* case *) end (* with *) end (*-----------------------------------*) function umfang(var f: figur):real var pi, s3, b: real begin pi:=4*arctan(1) with f do begin case form of RECHTECK: begin umfang:=2*(laenge+breite) end KREIS : begin umfang:=2*pi*radius end DREIECK : begin b:=pi*winkel/180 s3:=sqrt(sqr(s1 +sqr(s2)-2*s1*s2*cos(b)) umfang:=s1+s2+s3 end end (* case *) end (* with *) end (*-----------------------------------*) procedure titel begin writeln(' ':10,'Umfangsberechnung') writeln writeln('Fuer den Pascal-Kurs des User-Mags') writeln(' ':8,'(c) 1992 Th.Grasel') end (*************************************) begin writeln(chr(125)) titel writeln writeln (' ':10,'R - Rechteck') writeln (' ':10,'K - Kreis') writeln (' ':10,'D - Dreieck') writeln write ('Figur : ') readln (i) writeln f guren:=+('r','R','k','K','d','D'+) if i in figuren then begin with info do begin if (i='R') or (i='r') then form:=RECHTECK if (i='K') or (i='k') then form:=KREIS if (i='D') or (i='d') then form:=DREIECK end eingabe(info) writeln write ('Der Umfang betraegt : ') writeln (umfang(info):6:2) end else writeln('Falsche Eingabe !!!') end. Der Umstand mit dem Set 'shape' ist nötig da die case-Schleife leider nicht mit Strings zusammenarbeitet. Wieso habe ich in der letzten Ausgabe beschrieben! So, nun aber zum schon lange ange- kündigten Utility. Es handelt sich dabei um ein Programm zur Berechnung von Funktionswerten aus Polynomen. Das sind Gleichungen die x und höhere Potenzen von x enthalten. Das Programm verlangt zunächst die Eingabe des Grades. Das ist die höchste Potenz in der x vorkommt. Für die Gleichung f(x)=3*x^3-7*x-4 wäre dies 3. Danach wird gefragt welchen Wert x haben soll. Anschließend müssen alle Terme eingegeben werden. Terme die nicht vorkommen, z.B. wie oben x^2 müssen mit 0 angegeben werden. Der Term x^0 ist übrigens der Term ohne x (x^0=1)! program polynom var x, p: real i, n: integer a : array+(0..20+) of real (*-----------------------------------*) procedure titel begin writeln(' ':8,'Polynomwertberechnung') writeln writeln(' Mit Hilfe des Horner-Schemas') writeln writeln(' Fuer den Pascal-Kurs des User-Mags') writeln(' ':8,'(c) 1992 Th.Grasel') writeln end (*************************************) begin writeln(chr(125)) titel write('Grad des Polynoms : ') readln(n) write('Stelle der Ber. X = ') readln(x) writeln writeln('Eingabe der Koeffizienten:') (* Eingabe *) for i:=n downto 0 do begin write('X^',i,' : ') readln(a+(i+)) end (* Berechnung *) p:=a+(n+) for i:=n-1 downto 0 do p:=p*x+a+(i+) (* Ausgabe *) writeln writeln('p(',x:6:2,') = ',p:6:2) end. Noch ein Tip am Rande. Wenn man eine Gleichung mit vielen Brüchen hat ist es sinnvoll sie so durch zu multiplizieren das nur noch ganze Zahlen vorkommen. Hast du vielleicht eine Idee für ein kurzes Mathehilfsprogramm? Dann schreib es doch! Oder falls du dich noch nicht so fit fühlt, schreibt mir, vielleicht kann ich dir ja helfen. Meine Adresse wurde bereits im Kurs #12 veröffent- licht! Also, noch viel Spaß bis zum nächsten Mal.