Frage zu einfacher schleife in Pascal

Slikz

Newbie
Dabei seit
Okt. 2018
Beiträge
4
Hallo.
Da ich in diesem Forum festgestellt habe das, auf Einsteiger-Fragen freundlich reagiert wird, hätte ich auch eine. Und eigentlich ist mir diese auch etwas unangenehm.

Ich bin noch ganz am Anfang in der Pascal-Programmierung und versuche "Schleifen zu verstehen.
Jetzt hängt es aber bei mir und komme nicht weiter.

Eigentlich ist es ganz Simple (zumindest ließt es sich so in meinen "Pascal" Büchern)

Ich möchte einen Dreizeiler schreiben und folgendes erreichen;

program schleifentest;
Uses crt;
begin
(var zahl : integer; )
zahl := 100; )
writeln('Zahl eingeben') ;
readln(Zahl);
{bis hier soweit klar}
wenn Zahl unter >100 dann
writeln('Richtig')
wenn nicht dann fange von vorne an (also bei dem ersten writeln('Zahl eingeben'))

Also bei Eingabe von (z. B) 150 ...fange von vorn an, 135 ...fange von vorn an, 90 ... Richtig, Beende das "Programm"



Das sollte doch möglich sein oder?
Und wenn ja, ist es dann auch ohne "Repeat... until" möglich.

Bei mir sah (sieht das seid gestern Abend) so aus;

program schleifen....
uses crt;
begin
write('Zahl eingben');
readln(zahl);
while zahl >100 do begin
write('richtig')
end;
readkey;
end.

{ist aber komplett falsch da bei Eingabe unter 100 immer
wieder Richtig ausgegeben wird, was ich nicht möchte.}

und auch schon mal so;

begin
writeln('Zahl eingeben');
readln(zahl);
if zahl <=100 then
writeln('Richtig')
else; .......hier komm ich nicht weiter

Ich hoffe, mit dieser Frage keinen Rahmen zu sprängen und würde mich über Hilfe freuen.
Mit Dank und grüßen
Steffen
 

shaadar

Lt. Commander
Dabei seit
Aug. 2010
Beiträge
1.674
begin
writeln('Zahl eingeben');
readln(zahl);
if zahl <=100 then !!!
writeln('Richtig')
else;

Jahre her dass ich Pascal programmiert habe. Aber wenn bei mehr als 100 "Richtig" geschrieben werden soll, dann muss beim Letzten beim Fettgedruckten an der Stelle "if zahl..." ein ">" oder ">=" sein.
 
Zuletzt bearbeitet:

Mordhorst3k

Lt. Junior Grade
Dabei seit
Juni 2008
Beiträge
315
Du gibst doch immer "Richtig" aus wenn die Zahl kleiner gleich 100 ist.

Die while-Schleife reicht, weil sie solange ausgeführt wird wie der Wert unter 100 ist, oder du sie abbrichst.

readln(zahl);
while zahl <= 100
do
begin
writeln("richtig");
break;
end;

else
begin
writelin("falsch");
end;


Ob das mit begin/end stimmt, weiß ich nicht (mehr).

Lass das mit Pascal/Delphi sein und such dir eine vernünftige Sprache wie Java, C# oder C/C++.

Außerdem gibt es keine blöden Fragen, nur dumme Antworten.
 

Demon_666

Lt. Commander
Dabei seit
Dez. 2017
Beiträge
1.302
Das ist nicht direkt "Schleifen-Problem", sondern es geht um Vergleiche mit "kleiner", "kleiner-gleich", etc.
Die Bedingung, bei der abgebrochen wird ist falsch.
Wenn Eingabe kleiner gleich 100 dann Abbruch
Sehe gerade, shaadar hat es schon gepostet
Ergänzung ()

@Mordhorst3k : Pascal ist immer noch gut geeignet, um strukturiertes Programmieren zu lernen und zudem recht zugängig. ;)
 

Mordhorst3k

Lt. Junior Grade
Dabei seit
Juni 2008
Beiträge
315

alxa

Lt. Commander
Dabei seit
Jan. 2018
Beiträge
1.378
Du must am Ende der Schleife prüfen (Pascal is bei mir länger her, war glaub mit „repeat ... until ...“) und das readln(zahl) muss in die Scheife rein, sonst wertest du immer nur den zuallererst eingegebenen, alten Wert erneut aus.

begin

writeln('Programm endet, sobald eine Zahl kleiner 100 eingegeben wird');

repeat
write('Zahl eingeben');
readln(zahl);
until (zahl <100);

write('fertig');

end.



und wenn der Lehrer :D es ohne repeat ... until ..., stattdessen mit Bedingungsprüfung am Schleifen-Anfang haben will, brauchst du halt ein zusätzliches readln vorab, damit die Variable zum Prüfzeitpunkt einen initialen Wert hat. Und du prüftst nicht mehr, wann du aus der Schleife rausgehst, sondern wann du reingehst:

begin

writeln('Programm endet, sobald eine Zahl kleiner 100 eingegeben wird');

write('Zahl eingeben');
readln(zahl);
while (zahl >=100)
begin
write('Zahl eingeben');
readln(zahl);
end;

write('fertig');

end.
 
Zuletzt bearbeitet:

Slikz

Newbie
Ersteller dieses Themas
Dabei seit
Okt. 2018
Beiträge
4
Hallo euch.
Ich danke euch für die netten Antworten.
Ich weiß nicht warum "Pascal", ich mochte die "Sprache" einfach und daher dachte ich, ich beginne mit ihr.
Zudem kann ich dann mit "Delphi" weiter machen bevor ich weiter gehe.
ursprünglich wollte ich mit "Python" und/oder "Java" anfangen.

Zum zweiten wollte ich, das sich das Programm nicht beendet, wenn also über 100 dann wiederholen.

Alxa hat ein schönes Beispiel mit der "Repeat..Until" variante gezeigt, genau so wollte ich es. Nur eben nicht mit "Repeat...Until"

Und das zweite Beispiel war das, was ich suchte. Es hat zwar nach "while".... ein "do" gefehlt, das aber hab ich durch probieren selbst herausbekommen.

Das andere Beispiel (von Mordhorst3k) funktioniert so leider nicht. Soweit hatte ich es auch schon, bekam aber immer den selben Fehler;

readln(zahl);
while zahl <= 100
do
begin
writeln("richtig");
break;
end;

else
begin
writelin("falsch");
end;

; expected but else found.

Und da ging es bei mir auch nicht weiter.

Ich danke euch schon mal und schaue morgen noch mal rein.

Gute Nacht
Steffen
 
Top