Hallo,
in einem Programm für den inf unterricht, taucht ständig folgende syntaxsequenz auf, allerdings verändert sich die Bedingung der FOR-Schleife.
Bsp.
for i:= 1 to 3 do gibvor;
wende_rechts;
for i:= 1 to 3 do gibvor;
gib;
wende_links;
for i:= 1 to 4 do gibvor;
wende_rechts;
for i:= 1 to 4 do gibvor;
gib;
wende_links;
Also, jedesmal, wenn diese sequenz auftaucht, nimmt der FOR bereich um 1 zu. Kann ich das ganze nicht folgendermaßen als unterprozedur schreiben??:
Procedure name;
begin
x:= 3
for i:= 1 to x do gibvor;
wende_rechts;
for i:= 1 to x do gibvor;
gib;
wende_links;
x:= x+1
end;
das Problem für mich ist
1. Geht das Überhaupt? und
2. Wie weise ich einer Variablen einen numerischen wert zu?
upsidedown
23.09.2002, 22:09
...das ich mit Pascal gebastelt hab.
Also, numerische Zuweisungen gehen analog zum Zuweisen von Werten anderer Variablen:
x:=3;
Das mit dem Hochzählen der Anzahl wie oft die Schleifen ausgeführt werden sollen ist natürlich ne elegante Idee, aber dein letzter Schritt x:=x+1; verpufft weil danach die Prozedur dann auch gleich beendet wird. Du musst das Ganze also noch in eine weitere schleife einbetten. Auch auf die Gefahr hin, dass das jetzt syntktisch nicht ganz einwandfrei wird mach ich maln Vorschlag, dann müsstest du eigentlich sehen was ich meine.
Procedure name;
begin
x:= 3;
do
begin
for i:= 1 to x do gibvor;
wende_rechts;
for i:= 1 to x do gibvor;
gib;
wende_links;
x:= x+1
end;
while x<5;
end;
Gruß,
UpsideDown
nobody
23.09.2002, 22:10
Ist das WinNiki oder wie das Ding von Cornelsen heißt? Die Funktionsnamen erinnern mich irgendwie daran...
zu 1: ich glaub's nicht.
zu 2: Wie meinst du das? x:=1; x:=y; ?
Oops, upsidedown war schneller :madanimate: ;) :D
hippie
24.09.2002, 18:56
und zwar folgendermaßen:
procedure zwei_reihen;
begin
for i:= 1 to x do gibvor;
wende_rechts;
for i:= 1 to x do gibvor;
gib;
wende_links;
x:=x+2;
end;
BEGIN
rechts;
x:=1;
for k:= 1 to 5 do zwei_reihen;
END;
@Chris:
Der Code ist für ein Programm namens Hamster, man soll darin einen Hamster mit Algorithmen aus 4 Befehlen (vor, links, korn geben, korn nehmen) durch eine "Welt" schicken und ihn Aufgaben erfüllen lassen. (Z.B. wie hier körner in reihen auslegen)
Danke!
hippie
24.09.2002, 19:28
hier noch die graphische umsetzung des codes durch den hamster (das rote dreieck ist der hamster).
nobody
24.09.2002, 21:29
ja, so ein ähnliches programm gibt's von cornelsen.
da ist es halt kein Hamster sondern ein Roboter der irgendwelche Sachen aufnehmen und wieder ablegen muss ;)
mrknowitall
05.10.2002, 19:13
Tssstsss...ich kennd as ganze ncoh als "Niki der Roboter" für TurboPascal 3 :-)
ArneE
13.11.2002, 21:36
Nabend,
mir ist der Thread gerade eben erst aufgefallen ...
Problem mittlerweile eigentlich gelöscht oder noch nicht?
P.S.:
Pascal: FOR-Schleife mit Variablen
Wenn du's genau nimmst, Delphi Vorschleife mit Variablen (deinem Screenshot nach ) ;-)
hippie
14.11.2002, 14:03
Problem ist gelöst (s.o.)
Ist Delphi nicht nur die Entwicklerumgebung für die Sprache Pascal?
ArneE
14.11.2002, 16:23
Hi hippie,
unter TurboPascal musstest du die Farbe jedes Punktes quasi selbst bestimmt.
Delphi hingegen ist eine Objektorientierte Programmiersprache (OOP).