Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   repeat-until schleife (https://www.delphipraxis.net/110985-repeat-until-schleife.html)

Grubi90 27. Mär 2008 17:15


repeat-until schleife
 
ich hoff mir kann jemand helfen ich muss für die schule ein Vortrag über Schleifen mit Austrittsbedingung machen, hab aber ehrlich gesagt nicht viel Plan davon. dazu gehört ein Struktogramm und ein grafisches programm. ich hab zwar angefangen aber weiß nicht wie ich die Grafik verwirklichen soll???
Delphi-Quellcode:
var
Form1: TForm1;

implementation

{$R *.dfm}
var
i:Integer;
procedure TForm1.Button1Click(Sender: TObject);
begin
i:=1;
repeat
......{Hier weiß ich nicht wie ich das formulieren soll}

i:=I+1;

until i>5;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
close
end;

end.
bitte helft mir!!!!!!!

[edit=Luckie]Delphi-Tags gesetzt. Beim nächsten Mal bitte selber setzen. Mfg, Luckie[/edit]

DeddyH 27. Mär 2008 17:29

Re: repeat-until schleife
 
Hallo und willkommen in der DP :dp: .
Was genau ist denn nun Dein Problem? Das Struktogramm?

Die Muhkuh 27. Mär 2008 17:33

Re: repeat-until schleife
 
Die Schleife an sich ist ja soweit richtig.

Was Du da einfügen sollst? Was soll das Programm den machen? Und das kommt dann dort rein.

Zitat:

ein Vortrag über Schleifen mit Austrittsbedingung machen
Ohne Austrittsbedingung hättest Du eine Endlosschleife, das wäre nicht so toll. ;)

Klaus01 27. Mär 2008 17:37

Re: repeat-until schleife
 
Guten Abend,

da gibt es fussgesteuerte Schleifen (repeat until)
und kopgesteuerte Schleifen (while do).

Fussgesteuert deswegen weil die Abbruchbedingung am Ende des Schleifendurchlaufs stattfindet.
Der Schleifenkörper wird also mindestens einmal durchlaufen.
Bei kopfgesteuerten Schleifen wird diese Prüfung zu beginn des Schleifendurchlaufs durchgeführt.
Es kann hier also sein, dass der Schleifenkörper nicht durchlaufen wird.

Was in der Schleife steht nennt man Schleifenkörper.

Bei Struktogrammeditoren sind diese Schleifen eigentlich immer dabei.

Grüße
Klaus

Grubi90 27. Mär 2008 17:40

Re: repeat-until schleife
 
naja mein problem ist, dass ich nicht weiß wie ich dasmit der Grafik in meinen Quelltext rein bekomm. Ich dachte an ein Programm das quadrate oder do was zeichnet bis eine bestimmte größe erreicht ist!

DeddyH 27. Mär 2008 18:02

Re: repeat-until schleife
 
Schau Dir mal das Freeware-Programm Strukted an, da gibt es auch Symbole für Kopf- und Fußschleifen ;)

Grubi90 27. Mär 2008 22:29

Re: repeat-until schleife
 
das struktogramm is ja nich so wichtig. Mir gehts hauptsächlich um das Programm und das dies mit einer repeat-until-schleife eine grafik zeichnet. am besten ein quadrat oder sowas das immer größer wird.Ich hab ja auch schon angefangen, nur ich weiß nich wie ich das in Delphi7 umsetzen soll. trotzdem schon mal vielen dank für die zahlreichen und hilfreichen Tipps!!

mkinzler 27. Mär 2008 22:31

Re: repeat-until schleife
 
Was willst du genau umsetzen?

Fussball-Robby 27. Mär 2008 22:32

Re: repeat-until schleife
 
Die Repeat-Until-Schleife sieht ja schonmal nicht schlecht aus. Wenn du ein Rechteck zeichnen willst, schau dir mal Canvas.Rectangle() an.

Mfg

Grubi90 27. Mär 2008 22:45

Re: repeat-until schleife
 
ich wollte genau wissen was zwischen repeat und until geschrieben werden muss, damit ein paar Quadrate oder so gezeichnet werden. das mit rectangle wusst ich ja bloß funktionierte nicht wahrscheinlich wegen eingabefehlern von mir!

mkinzler 27. Mär 2008 22:46

Re: repeat-until schleife
 
Zeig mal den Code, den du versucht hast.

Die Muhkuh 27. Mär 2008 22:49

Re: repeat-until schleife
 
Hi,

da ich Nachhilfe bei mir in der Klasse gebe und wir auch viel mit malen machen, kann ich Dir nur den Tipp geben: Mal es erst auf Papier auf und geh erstmal alles nach und nach im Kopf auf dem Papier durch. Das ist bei den meisten das Problem. Das Umsetzen in Code schaffen sie, aber ohne den theoretischen Bereich, klappt das eben nicht.

Deswegen aufmalen. Mit Koordinaten, wenn es mit Platzhalten noch nicht klappt, nimm absolute, feste Koordinaten und wechsle diese dann nach und nach aus in variable.

Grubi90 27. Mär 2008 22:54

Re: repeat-until schleife
 
naja mir ist glaub ich schon klar wie das malen funktionieren soll.
als code hab ich

var
i:integer;

procedure TForm1.Button2Click(Sender: TObject);
begin
i:=1;
repeat
with canvas.Rectangle(0,0,i,i);
until i<5;
end;

mkinzler 27. Mär 2008 22:59

Re: repeat-until schleife
 
Warum das with?
Die Abbruchbedingung ist falsch, da i von Anfang an <5 ist. Es fehlt die Inkrementierung der Variable i

Grubi90 27. Mär 2008 23:03

Re: repeat-until schleife
 
ich find euer forum eigentlich tiptop bloß teilweise sind für einen leihen wie mich einfach zuviele Fachbegriffe dabei bzw. die beiträge sind zu kurz um sie nach zu voll ziehen.Was ist Inkrementierung der Variable i?

Die Muhkuh 27. Mär 2008 23:06

Re: repeat-until schleife
 
Inkrementieren bedeutet Erhöhen (ist eig. kein Fachbegriff, mein Lieber :) ).

Du kennst doch eine For-Schleife? Dort wird Deine Zählvariable automatisch erhöht, was aber bei einer Repeat-Until-Schleife nicht passiert.

Markus meint z.B. sowas hier:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
i:=1;
repeat
canvas.Rectangle(0,0,i,i); // Hier das With weg.
i := i + 1; // Inkrementieren der Variable
until i < 5;
end;

WS1976 28. Mär 2008 05:13

Re: repeat-until schleife
 
Hallo,

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  i:=1;
  repeat
    with canvas.Rectangle(0,0,i,i);
   until i<5;
end;
Du musst i doch verändern damit die Austrittsbedingung jemals erfüllt wird oder?

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  i:=1;
  repeat
    canvas.Rectangle(0,0,i,i);
    inc(i); // oder i:=i+1 zum Verständnis. Ist aber das Gleiche.
   until i>5; // hier war ein Fehler. Schleife wurde nur einmal durchlaufen.
end;
Nochwas: Auch wenn ich mich damit wieder einmal unbeliebt mache.
Das sind solche absolute Grundlagen, dass ich dir empfehlen würde ein Buch zu kaufen oder in der
Schule (wenns der Lehrer besser kann) besser aufzupassen.

(PS: Wir sind keine Hausaufgabenerledigungsmaschine für faule Schüler )


Grüsse
Rainer

mkinzler 28. Mär 2008 05:31

Re: repeat-until schleife
 
Zitat:

Das sind solche absolute Grundlagen,
Deshalb auch nur eine verbale Beschreibung der Fehler meinerseits und keinen Code.
Hier noch der obligatorische Verweis auf die Grundlagentutorials auf Delphi-Treff

Grubi90 28. Mär 2008 10:14

Re: repeat-until schleife
 
Cool mein Programm funktioniert schon mal. :-D Ich versteh schon das ihr kein Bock habt für irgendwelche Schüler Hausaufgaben zu machen. Ich hab aber wirklich ewig gesessen und unser Lehrbuch durchgelesen ohne einen guten Hinweis zu erkennen!! Unser Lerhrer ist in der Beziehung ein bisschen seltsam und kann uns bei unseren Problemen meist auch nicht weiter helfen. Ich hab z.b. letztens ein einfaches Programm geschrieben zur Eintrittspreis berechnung(funktionierte einwandfrei) und unser Lehrer wollte darin unbedingt ein Fehler finden hatt das programm extra ne Woche mitgenommen und trotzdem nix gefunden. :wall:

nochmal zur schleife zurück, das funktioniert zwar und es entsteht auch ein rechteck aber kann man das auch so programmieren, dass mehrere Rechtecke gezeichnet werden bis die Abbruchbedingung erfüllt ist?
danke!

Klaus01 28. Mär 2008 10:18

Re: repeat-until schleife
 
Hallo,

es werden wahrscheinlich mehrere Rechtecke gemalt,
nur sie werden übereinander gemalt.

Du kannst die Position des Rechtecks mit der Laufvariablen i
verschieben.

Delphi-Quellcode:
canvas.Rectangle(0,0,i*2,i*3);
Grüße
Klaus

Fussball-Robby 28. Mär 2008 11:29

Re: repeat-until schleife
 
Die Rechtecke werden, wie gesagt, wohl übermalt. Du kannst das aber auch so lösen:
Canvas.Brush.Style := bsClear;
Dadurch werden die Rechtecke nicht gefüllt und man die anderen darunter sehen.

Mfg

Grubi90 28. Mär 2008 12:45

Re: repeat-until schleife
 
Das mit den mehreren Rechtecken hat nicht geklappt.Die sind mit Canvas.Brush.Style := bsClear; nur schwarz gefüllt und nicht weiß!Trotzdem nochmal vielen Dank. Jetzt muss ich nur noch mein Struktogramm machen und dann bin ich so gut wie fertig! :)

Fussball-Robby 28. Mär 2008 12:47

Re: repeat-until schleife
 
Ahh.. Da du i immer um 1 erhöhst, liegt jedes Rechteck direkt am nächsten, und da die Linie schwarz ist, ist es im Endeffekt nur noch ein schwarzer Fleck :wink: Zähl in der Schleife mal immer 2 oder 3 drauf, dann sollte es klappen.

Mfg

Grubi90 28. Mär 2008 12:54

Re: repeat-until schleife
 
ja hatte ich auch grad ausprobiert und mit bissel Glück hatte es sogar funktioniert, d.h. mein Programm funktioniert jetzt so wie ich es gehofft hatte! Eure Tipps sind echt sehr hilfreich!!!!! Vielen Dank!!! :-D :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz