Programm Prozedur

B

Bizepsbenny

Gast
Hallo, ich habe das folgende Programm (siehe Bild) geschrieben, aber ich verstehe nicht wo der Fehler liegt, wenn das Programm kompiliert.

Hat jemand eine Idee? :)

Gruß
BB Bildschirmfoto vom 2017-10-31 21-57-01.png

Das komplette Programm:
Code:
program LoesungsSuchen (input, output);
{ bestimmt die Loesungen der Gleichung 
* a*x*x + b*x + c = 0.0 fuer einzulesende a, b, c;
* Vorbedingung: a <> 0.0 }

 
   var
   KoeffA,
   KoeffB,
   KoeffC,
   L1,
   L2 : real;
   exist : boolean;
   
   
   procedure LoesungBestimmen (
               in a, b, c : real;
               out Loesung1, Loesung2 : real;
               out gibtLoesung : boolean);
   { bestimmt die Loesungen der Gleichung
   * a*x*x + b*x + c = 0.0
   * unter der Vorbedingung: a <> 0.0 }
   
      var
      d : real; { Hilfsvariable }
      
   begin
     d := b * b - 4.0 * a * c;
     if (d < 0.0) or (a = 0.0) then
        { nicht loesbar oder Vorbedingung nicht erfuellt }
        gibtLoesung := false
     else
     begin
       gibtLoesung := true;
       d := sqrt (d);
       Loesung1 := -(b - d) / (2.0 * a);
       Loesung2 := -(b + d) / (2.0 * a)
     end
   end; { LoesungBestimmen }
   
begin { LoesungSuchen }
  writeln ('Loesungen einer quadratischen Gleichung');
  writeln ('Geben Sie die Koeffizienten ein: ');
  write ('a: ');
  readln (KoeffA);
  write ('b: ');
  readln (KoeffB);
  write ('c: ');
  readln (KoeffC);
  {Prozeduraufruf }
  LoesungBestimmen (KoeffA, KoeffB, KoeffC,
                    L1, L2, exist);
  if exist then
    writeln ('Loesungen: ', L1:2:2, 'und ', L2:2:2)
  else
    writeln ('KEINE Loesung!')
end. {LoesungSuchen }
 
Hi, der Fehler wundert mich nur, weil ich das Programm 1 zu 1 aus dem Skript abgeschrieben habe.
Und woran genau liegt es jetzt?
Die Parameterliste ist doch richtig von der Syntax her?

Gruß
BB
 
Ich kenne Pascal nicht. Laut FreePascal Hilfe ist die Syntax falsch.

Ist das Skript für FreePascal 3.0?
 
ach sorry mein Fehler!

Auf der Seite vorher steht geschrieben, dass drei Arten der Parameterübergabe vorgestellt werden, die in dieser Form in Standart Pascal nicht funktionieren.

Verstehe ich auch nicht so ganz aber ok :)

Danke dir!

Gruß
BB
 
Zu welchem Pascal-Dialekt ist den das Skript. In FreePascal gibt es kein "in". Die Einfache Parameterliste dient ausschließlich zur Wertübergabe an die Procedure/Function. Nur wenn man einen Wert zurückgeben will, muß vor der Variable "var" bzw. "out" stehen.

"in" und "out" gehören nicht zu Standard-Pascal.
 
Zuletzt bearbeitet:
Hi,

also es ist nur von Standard-Pascal die Rede.

Und im einleitenden Text zu "Prozeduren" steht:

" Wir werden Ihnen in diesem Abschnitt drei Arten der Parameterübergabe vorstellen, die in dieser Form in Standard-Pascal nicht existieren. Wir wollen diesen fiktiven daher nicht kompilierbaren Pascal-Dialekt als ParaPascal bezeichnen. Er ist im Hinblick auf die Parameterübergabe angelehnt an die Programmiersprache ADA, die diese modernen Konzepte anbietet. Die Realisierung von Teilen dieser Konzepte in Standard-Pascal lernen sie im nächsten Kapitel kennen."

Hat dann wohl so seine Richtigkeit.

Gruß
BB
 
Zuletzt bearbeitet:
Zurück
Oben