For loop i+3

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

For loop i+3

Beitrag von slai »

Hallo zusammen

Da ich noch nie einen for loop benötigte der die zählervariable beliebig inkrementiert weis ich nicht wie ich das lösen kann.

java beispiel:

for (int i = 0;i<=12;i+=3){
System.out.println(i);
}
Hier wäre die ausgabe vom system:
0
3
6
9
12


Wie kann ich das in freepascal machen?

danke für antworten
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: For loop i+3

Beitrag von Euklid »

Hallo slai,
slai hat geschrieben: Wie kann ich das in freepascal machen?
Entweder mit einer Repeat-Until-Schleife oder mit einer while-Schleife:

Code: Alles auswählen

//...
var n:integer;
//...
n:=0;
while n<=12 do 
begin
  writeln(n);
  inc(n,3);
end;
oder:

Code: Alles auswählen

n:=0;
repeat
  writeln(n);
  inc(n,3);
until n=12;
Viele Grüße, Euklid

Linkat
Lazarusforum e. V.
Beiträge: 560
Registriert: So 10. Sep 2006, 23:24
OS, Lazarus, FPC: Linux Mint 22; Lazarus 4.0 FPC 3.2.2; RaspiOS
CPU-Target: AMD 64, ARM 64
Wohnort: nr Stuttgart

Re: For loop i+3

Beitrag von Linkat »

Hallo slai,
da in Pascal die for-Schleife zum hoch- oder runterzählen nur mit ordinalen Typen genutzt werden kann, musst du entweder in der Schleife multiplizieren, oder du benutzt gleich die while oder repeat until Schleife.

Hier einige Beispiele:

für alle Beispiele gilt:

Code: Alles auswählen

var i    :byte;     (oder integer ...)
for - Schleife:

Code: Alles auswählen

for i:=0 to 3 do writeln(3*i);

while - Schleife:

Code: Alles auswählen

i:=0;
while i<=12 do begin
  writeln(i);
  inc(i,3);     {oder: i:=i+3;}
end;
reapeat-until - Schleife

Code: Alles auswählen

i:=0;
repeat
  writeln(i);
  inc(i,3);
until i>12;

Ich hoffe, ich konnte die weiter helfen.

Gruß, Linkat
Linux Mint 21.3; Lazarus 3.4 FPC 3.2.2; RaspiOS

Linkat
Lazarusforum e. V.
Beiträge: 560
Registriert: So 10. Sep 2006, 23:24
OS, Lazarus, FPC: Linux Mint 22; Lazarus 4.0 FPC 3.2.2; RaspiOS
CPU-Target: AMD 64, ARM 64
Wohnort: nr Stuttgart

Re: For loop i+3

Beitrag von Linkat »

Hallo Euklid,
da haben wir wohl gleichzeitig fast das Gleiche geantwortet. Aber ich war eben langsamer (abgelenkt durch die Familie). Aber in deiner Lösung (repeat-until) wird n nur bis 9 angezeigt.

Gruß, Linkat
Linux Mint 21.3; Lazarus 3.4 FPC 3.2.2; RaspiOS

slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Re: For loop i+3

Beitrag von slai »

Hallo Linkat und euklid

ich danke euch für eure antworten, an den while und repeat ansatz hab ich gar nicht gedacht :-)

gruss
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: For loop i+3

Beitrag von Euklid »

Linkat hat geschrieben:Hallo Euklid,
da haben wir wohl gleichzeitig fast das Gleiche geantwortet. Aber ich war eben langsamer (abgelenkt durch die Familie). Aber in deiner Lösung (repeat-until) wird n nur bis 9 angezeigt.

Gruß, Linkat

Ja, du hast recht. So ist es richtig:

Code: Alles auswählen

n:=-3;
repeat
  inc(n,3);
  writeln(n);
until n=12;

Dets
Beiträge: 61
Registriert: Di 11. Sep 2007, 16:59
OS, Lazarus, FPC: Ubuntu Maverick (L 0.9.28.2-10, FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Lage
Kontaktdaten:

Re: For loop i+3

Beitrag von Dets »

Warum nicht so?

Code: Alles auswählen

for i:=0 to 4 do
  writeln(i*3); 
Dets ...

slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Re: For loop i+3

Beitrag von slai »

Meiner Meinung nach benötigt

Code: Alles auswählen

for i:=0 to 4 do
        writeln(i*3);
mehr systemleistung, sobald man mehr als 1 mal auf das i*3 Element zugreifen muss.
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: For loop i+3

Beitrag von Christian »

spekulation aber bitte

Code: Alles auswählen

#
for i:=0 to 4 do
  begin
     a := i*3;
      writeln(a);  
  end;
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Re: For loop i+3

Beitrag von slai »

hy Christian

in deinem Fall hat man aber 2 variablen zum einen das i und dann noch das a, was man ja bei der repeat nicht hat :-)
aber eben, schlussendlich kommts nicht wirklich drauf an...
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: For loop i+3

Beitrag von theo »

Warum spekulieren, wenn man messen kann?
Sieht so aus als ob slai recht hat, dass die repeat Variante schneller ist. Aber messt selbst.

Antworten