[Pascal] Help

laskif

Lt. Junior Grade
Registriert
Jan. 2004
Beiträge
388
Hallo,

kennt jemand eine kurze referenz die online steht? Ich schreibe in 2 Tagen Programmierung I
für Wirtschaftsinformatiker. Kann mir jemand die READKEY funktion erklären? Ich schnall nicht ganz wie das funktioniert das die eingegeben Wörter umgedereht werden??
Code:
PROGRAM REKURS_00;
USES
  CRT;                      { Einbinden für READKEY }


  PROCEDURE Umschalten;
  VAR
    C:CHAR;

  BEGIN
    C:=READKEY;              { Ein Zeichen von KBD lesen }
    WRITE(C);                { Ausgabe des gelesenen Zeichens }
    IF C<>#13               { Wiederholbedingungen/Abbruchbedingung }
      THEN Umschalten  { rekursiver Aufruf Umschalten }
      ELSE WRITELN(#10'Schluss');  { Ende anzeigen }
    WRITE(C);                { Ausgabe aller Zeichen vom Rekursionsstack }
  END;

BEGIN
  CLRSCR;
  WRITELN('Program REKURS_1.');
  WRITELN;
  WRITELN('Textzeile eingeben: ');
  Umschalten;

  WRITELN;
  WRITE  ('Programmende mit <RETURN>...');
  READLN
END.
Danke schonmal laskif
 
Die Funktion READKEY liest nur "ein" Zeichen ein, das über die Tastaur eingegeben wird...

Die Ausgabe der umgedrehten Zeichenfolge erfolgt durch den rekursiven Aufruf der Proczedur durch sich selbst und anschliessender Ausgabe des kompletten Zeichen-Stacks, sprich aller bisher eingegebenen Zeichen.
 
ähh vieleicht liegt es ander Uhrzeit aber das kapiere ich immer noch nicht...
vieleicht bin ich grad nur zu dämlich aber mal schrit für schrit:
C:=Readkey ließt in C einen Buchstaben den ich grade auf der Tastatur drücke oder?
WRITE(C) gibt dann das Zeichen wieder aus
IF <>#13 wenn ungleich return wird die Prozedur von vorne gestartet....
soweit klar nur wie ist es möglich mehr als ein zeichen zu speicehrn ohne array oder so? Und wieso dreht sich der Kram um? Wenn es doch jetzt wieder von Vorne beginnt ließt das prog wieder ein zeichen un überschreibt das alte? ICh bin glaube ich ziemlich planlos aber ich brauch ne erklärung für dumme glaub ich :D
 
Zuletzt bearbeitet:
Das ganze ist recht simpel: Jedesmal wenn du eine Prozedur aufrufst werden alle Variablen und die Rücksprungadresse gePUSH'ed (auf den Stack geschoben). Immer wenn er eine Prozedur abgearbeitet hat springt er zu der jeweiligen Rücksprungadresse zurück und POP'ed die Variablen wieder vom Stack. Dadurch brauchst du nichts in einer globalen Variablen speichern. Bei DOS-Programmen sollte man aber aufpassen dass es nicht zu einem Stacküberlauf kommt - der ist nämlich auf 64KB begrenzt glaub ich. Bei Windows kann der Stack riesig werden - bis der Speicher alle ist ;)
 
Pascal hilfe

Was mache ich Falsch?

Program Max_Bewerbung
USES Crt;
VAR Nachname, Vorname, Lebenslauf, Alter, Datum, Bewerbungauf: Extended ;
Begin
WriteLn ('geben sie hier Folgende Daten ein:');
Write ('Ihr Vorname:'); ReadLn (Vorname);
Write ('Ihr Nachname:'); ReadLn (Nachname);
Write ('Ihr Alter:'); ReadLn (Alter);
Write ('Lebenslauf (ausfhrlich):'); ReadLn (Lebenslauf);
Write ('Das Heutige Datum:'); ReadLn (Datum);
Write ('Auf welchen Posten bewerben sie sich:'); ReadLn (Bewerbungauf);
clrscr;
WriteLn ('Meine sehr geherten Damen und Herren, ich' , Vorname , Nachname
'bewerbe mich hiermit am' , Datum 'auf ihren Posten' , Bewerbungauf);
WriteLn ('Ich bin' , Alter ' Jahre alt
WriteLn ('Mein Lebenslauf:' , Lebenslauf);
End.

Bitte antwortet so schnell wie möglich
 
^^benutz mal string statt extended als typ für die variablen
 
Hallo Zied,

was unabhängig vom Programm wichtig wäre.

Bei einer Bewerbung sollte die Grammatik stimmen.
Prüfe mal Deine Gross- und Kleinschreibung :-).
Sowie das hier "'Meine sehr geherten Damen und Herren".

Mein Pascal ist inzwischen leider schon etwas länger her :-).

MfG

Arnd
 
Zurück
Oben