Pascal Redundanzen vermeiden!
Hallo,
Ich habe da ein ganz primitives Pascal-Programm, das in der Dos-Konsole, je nachdem ob die rauf/runter/esc taste gedrückt wird, eine zeile heraufgeht/heruntergeht/beendet oder Höher/Tiefer geht's nicht anzeigt.
Jetzt soll ich durch herausheben Redundanzen vermeiden, hab aber keine Ahnung wie,weil ich keine Pascal spreche.
Hier mal so wie es funktionieren soll:
Und jetzt soll mittels einführen einer Variable namens meldung die redundanz entfernt werden.Dazu habe ich dieses Grundgerüst:
Hat jemand eine Idee? Wäre echt ganz toll ;)
Thx,
EDV-Guru
Ich habe da ein ganz primitives Pascal-Programm, das in der Dos-Konsole, je nachdem ob die rauf/runter/esc taste gedrückt wird, eine zeile heraufgeht/heruntergeht/beendet oder Höher/Tiefer geht's nicht anzeigt.
Jetzt soll ich durch herausheben Redundanzen vermeiden, hab aber keine Ahnung wie,weil ich keine Pascal spreche.
Hier mal so wie es funktionieren soll:
uses crt,dos;
var
znr : byte; {Zeilennr.}
t : byte;
zt : string;
znr_str : string;{Zeilennr. als String}
meldung : string;
begin
clrscr;
t := 0;
znr:=1;
meldung='';
{Ascii-Wert von Escape-Taste ==> 27}
while t <> 27 do begin
str(znr,znr_str);
zt:=' Zeile '+znr_str;
gotoxy(1,znr);
write(zt,meldung);
{warten auf eingabe}
while not keypressed do;
while keypressed do begin
t:=ord(readkey);
end;
if t=72 then begin
{str(znr,znr_str);
zt:=' Zeile '+znr_str;}
if znr=1 then begin
zt:=zt+' Hoeher gehts nicht ';
{Setze an Zeilenanfang}
gotoxy(1,znr);
write(zt,meldung);
end else begin
gotoxy(1,znr);
zt:=' ';
write(zt,meldung);
znr:=znr-1;
str(znr,znr_str);
zt:=' Zeile '+znr_str;
gotoxy(1,znr);
write(zt,meldung);
end;
end;
if t=80 then begin
{str(znr,znr_str);
zt:=' Zeile '+znr_str;}
if znr=25 then begin
zt:=zt+' Tiefer gehts nicht ';
{Setze an Zeilenende}
gotoxy(1,znr);
write(zt,meldung);
end else begin
gotoxy(1,znr);
zt:=' ';
write(zt,meldung);
znr:=znr+1;
str(znr,znr_str);
zt:=' Zeile '+znr_str;
gotoxy(1,znr);
write(zt,meldung);
end;
end;
end;
end.
Und jetzt soll mittels einführen einer Variable namens meldung die redundanz entfernt werden.Dazu habe ich dieses Grundgerüst:
uses crt,dos;
var
znr : byte; {Zeilennr.}
t : byte;
zt : string;
znr_str : string;{Zeilennr. als String}
meldung : string;
begin
clrscr;
t := 0;
znr:=1;
meldung='';
while t <> 27 do begin
str(znr,znr_str);
zt:=' Zeile '+znr_str;
gotoxy(1,znr);
write(zt,meldung);
{warten auf eingabe}
while not keypressed do;
while keypressed do begin
t:=ord(readkey);
end;
if t=72 then begin
if znr=1 then begin
zt:=zt+' Hoeher gehts nicht ';
end else begin
gotoxy(1,znr);
write(' ');
znr:=znr-1;
end;
end;
if t=80 then begin
if znr=25 then begin
zt:=zt+' Tiefer gehts nicht ';
end else begin
gotoxy(1,znr);
write(' ');
znr:=znr+1;
end;
end;
end;
end.
Hat jemand eine Idee? Wäre echt ganz toll ;)
Thx,
EDV-Guru
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 29597
Url: https://administrator.de/contentid/29597
Ausgedruckt am: 22.11.2024 um 07:11 Uhr
2 Kommentare
Neuester Kommentar
Hi EDV-Guru,
ich bin mir nicht sicher, ob ich verstanden habe, was du meinst, aber ich denke dein Zauberwort heisst Array! Ein Array ist ein Datenfeld, welches mehrere Werte eines Types (in Deinem Falle String) aufnehmen kann. Diese Werte werden dann über ihren Index angesprochen. Sprich, du benötigst noch eine Zählvariable und bei jedem Durchgang eine weitere Schleife, die das Array nach Übereinstimmungen durchsucht.
Im Klartext könnte das ungefähr so aussehen:
Variable n bei Programmstart auf 0 setzen
Bei jedem Lesen einer Zeile den Wert in das Array lesen: Feld[n] := Zeile;
Dann n inkrementieren: inc(n)
Nun eine Zählschleife, die das gesamte Array nach dem aktuellen Wert von Zeile "durchsucht". Das könnte ungefähr so aussehen:
For i := 0 To n Do Begin
If Zeile = Feld[i] Then ...
End
Falls das noch nicht hilft, mußt du dich nochmal melden, ich muß dann auf meinen Sohn warten, der gerade eine entsprechende Ausbildung macht und Pascal auf seinem Rechner hat
Psycho
ich bin mir nicht sicher, ob ich verstanden habe, was du meinst, aber ich denke dein Zauberwort heisst Array! Ein Array ist ein Datenfeld, welches mehrere Werte eines Types (in Deinem Falle String) aufnehmen kann. Diese Werte werden dann über ihren Index angesprochen. Sprich, du benötigst noch eine Zählvariable und bei jedem Durchgang eine weitere Schleife, die das Array nach Übereinstimmungen durchsucht.
Im Klartext könnte das ungefähr so aussehen:
Variable n bei Programmstart auf 0 setzen
Bei jedem Lesen einer Zeile den Wert in das Array lesen: Feld[n] := Zeile;
Dann n inkrementieren: inc(n)
Nun eine Zählschleife, die das gesamte Array nach dem aktuellen Wert von Zeile "durchsucht". Das könnte ungefähr so aussehen:
For i := 0 To n Do Begin
If Zeile = Feld[i] Then ...
End
Falls das noch nicht hilft, mußt du dich nochmal melden, ich muß dann auf meinen Sohn warten, der gerade eine entsprechende Ausbildung macht und Pascal auf seinem Rechner hat
Psycho