Fallschirmsprung Turbo Pascal (Programmieren)

Fallschirmsprung Turbo Pascal (Programmieren)

Hallo!

Ich habe mal ein kleines Programm geschrieben. Jedoch habe ich ein Problem: Wenn die Fallzeit kleiner oder gleich 650 ist soll die Meldung "Bei dieser Absprunghöhe gibt es eine Bruchlandung" kommen. Jedoch bekomm ich entweder immer eine Fehlermeldung bei der Ausgabe oder ich bekommen die Meldung aber dann mit der Fallzeit 0,0 Sekunden.
Ich würde mich freuen, wenn ihr mir helfen könntet.
Hier der Quellcode:

PROGRAM Fallschirmsprung;

Uses Wincrt;

CONST g=9.81;

VAR absprunghoehe, fallhoehe, fallzeit:REAL;

Procedure Eingabe;
Begin;
Clrscr;
Writeln('--- Bitte geben sie die Absprunghöhe in Metern ein! ---');
Writeln;
Write('Absprunghöhe: ');
Readln(Absprunghoehe);

If absprunghoehe <=650

Then
Begin;
Writeln;
Writeln('------------------------------------------------------');
Writeln;
Writeln('Bei dieser Absprunghöhe gibt es eine Bruchlandung!');
End;

End;

Procedure Exit;
Begin;
If absprunghoehe <= 650
Then
exit else
End;

Procedure Verarbeitung;
Begin;
fallhoehe:=absprunghoehe-650;
fallzeit:=SQRT(2*fallhoehe/g);
End;

Procedure Ausgabe;
Begin;
Writeln;
Writeln('------------------------------------------------------');
Writeln;
Write('Sie müssen in ',Fallzeit:2:2);
Write(' Sekunden ihren Fallschirm öffnen!');
End;

Begin;
Eingabe;
Exit;
Verarbeitung;
Ausgabe;
End.
Habe seit Ewigkeiten kein Turbo Pascal programmiert, daher unter Vorbehalt:

- Exit ist der Name eines TP-Befehls; man sollte seine Prozedur nicht so benennen. Vermutlich ist das der Grund für das Problem. Denn in Deiner Prozedur Exit rufst Du - so denkst Du - den Befehl Exit auf. Tatsächlich wird aber wieder Deine Prozedur gestartet, was eine Endlosschleife ergibt.

- Die Prozedur ist ohnehin überflüssig, da sie den bereits erfolgten Vergleich absprunghoehe <= 650 nur wiederholt. Du könntest bereits beim ersten Vergleich das Programm beenden, also nach dem Bruchlandungs-Satz Exit; machen und die Prozedur Exit löschen.

- TP hat einen feinen Debugger, der Einzelschrittbearbeitung erlaubt und zeigt, in welcher Zeile welcher Fehler auftritt. Das hilft ungemein.
Ja wunderbar!

Ich danke dir der Fehler lag tatsächlich in der Prozedur Exit.
Damit ist das Problem ja behoben!

Danke :)
Logge dich ein um einen Beitrag zu schreiben.