Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   if schleife in einer konsohle (https://www.delphipraxis.net/131349-if-schleife-einer-konsohle.html)

justloosit 23. Mär 2009 18:28


if schleife in einer konsohle
 
hallo leute nun arbeiten auch wir mit der konsolenanwendung nun hab ich folgende Frage
wie kann ich eine IF-schleife erstellen bei der ich z.b.
wenn ich eingebe "yes" das program vortgesetzt wird und wenn ich sage "no" es von vorne begint


würde mich über schnelle antworten freuen mfg justloosit

Meflin 23. Mär 2009 18:34

Re: if schleife in einer konsohle
 
1. Es gibt keine if-Schleifen
2. wie Eingabe geht weist du?
Delphi-Quellcode:
strvar = ReadLn();
Dann kannst du einfach mittels
Delphi-Quellcode:
if strvar = 'yes' then
  ...
weitermachen.

BAMatze 23. Mär 2009 18:35

Re: if schleife in einer konsohle
 
irgendwie ist das glaube ich die 2. Post, in der eine if-Schleife angesprochen wird :lol: :lol:

quendolineDD 23. Mär 2009 18:38

Re: if schleife in einer konsohle
 
Wie wäre es mit Kopfgesteurerten bzw. fußgesteuerten Zyklen? Diese zyklen laufen mit Abbuchbedingungen und würden deiner "if-Schleife" gleich kommen ;-)

Helmi 23. Mär 2009 18:39

Re: if schleife in einer konsohle
 
Konsole bitte ohne h
hat nichts mit der Schuhsohle zu tun

DP-Maintenance 23. Mär 2009 18:41

DP-Maintenance
 
Dieses Thema wurde von "mkinzler" von "Freeware" nach "Object-Pascal / Delphi-Language" verschoben.
Ist kein Vorschlag zur CL

justloosit 23. Mär 2009 18:50

Re: if schleife in einer konsohle
 
aso es gibts keine if schleifen?
wie wird das dan bezeichnet?

bigben37 23. Mär 2009 18:52

Re: if schleife in einer konsohle
 
If-Schleife

justloosit 23. Mär 2009 19:00

Re: if schleife in einer konsohle
 
hm ok wieder was gelernt aber i-wie funktioniert das nich recht so siehts zurzeit bei mir aus:

Delphi-Quellcode:
var a, b, c:integer;
strvar = readln();
begin
writeln('Hallo dieses Programm berechnet ihnen die Summe, die Subtraktion, das Produkt');
writeln(', sowie die Division aus zwei Zahlen!');
writeln('Nun gib bitte deine erste Zahl ein.');
readln(a);
writeln('Deine erste Zahl ist also ',a,' gib nun bitte deine zweite Zahl an!');
readln(b);
writeln('Deine Zahlen sind also ',a,' und ',b,' möchtest du fortfahren?');
readln(strvar);
if strvar 'Yes' then
writeln('Deine beiden Zahlen sind also ',a,' und ',b,'');
writeln('die Summe der beiden Zahlen ist ',a+b,'');
readln;
end.

quendolineDD 23. Mär 2009 19:03

Re: if schleife in einer konsohle
 
Kannst du bitte die Delphi-Tags setzen, damit dein Code lesbar wird?
Und es wäre hilfreich, wenn du uns mitteilst, was nicht funktioniert bzw. worin sich ein Fehler äußert. :glaskugel:

Edit2:

Zeile 12 ist schonmal ein Fehler. Es müsste
Delphi-Quellcode:
if strvar = 'Yes' then
heißen. Die von der IF-Bedingung abhängigen Blöcke solltest du mit begin und end umgeben. Ansonsten ist nur die auf die IF-Abfrage folgende Zeile davon abhängig.

mkinzler 23. Mär 2009 19:05

Re: if schleife in einer konsohle
 
Mehrere Befehle (Sequenz) schliesst man in begin..end ein.

Teekeks 23. Mär 2009 19:08

Re: if schleife in einer konsohle
 
Delphi-Quellcode:
var a, b, c:integer;
strvar = readln();
begin
writeln('Hallo dieses Programm berechnet ihnen die Summe, die Subtraktion, das Produkt');
{...}
müsste so aussehen:
Delphi-Quellcode:
var a, b, c:integer;
    strvar:string;
begin
writeln('Hallo dieses Programm berechnet ihnen die Summe, die Subtraktion, das Produkt');
{...}

justloosit 23. Mär 2009 19:09

Re: if schleife in einer konsohle
 
ja das weiß ich ja auch das is ja nich das prob ich hab nur da problehm über haupt dieses tsrvar zu deffinieren das geht nich wenn ich das bei den variablen so rein schreib strvar=readln(); schon allein vom = her


danke das hat ich auch schon gemerkt es geht mir erst mal eher um /^\ das oben

justloosit 23. Mär 2009 19:13

Re: if schleife in einer konsohle
 
oh cool danke es geht nur bringts mir so ja nun ersmal nichts jetz brauch ich ja noch den rest für else.... das es dann von vorne startet wie mach ich denn das? am besten wäre es noch wenn man das i-wie machen könnte mit ner 2. draufliegenden if-abfrage if strvar='No' then
writeln('sie wollen das programmneustarten')
und dann halt das das programm neu starten geht das überhaupt?

Teekeks 23. Mär 2009 19:15

Re: if schleife in einer konsohle
 
schaue bitte mal in der von mir gennanten version des oberen Teiles deines Programmes die 2. Zeile an. Bei dir steht:
Delphi-Quellcode:
strvar = readln();
Richtig wäre aber:
Delphi-Quellcode:
strvar:string

justloosit 23. Mär 2009 19:16

Re: if schleife in einer konsohle
 
jo thx jetzt hats geklappt aber gibts denn eine lösung auf mein oberes problem?siehe beitrag #14

Klaus01 23. Mär 2009 19:17

Re: if schleife in einer konsohle
 
Zitat:

Zitat von justloosit

Delphi-Quellcode:
var a, b, c:integer;
strvar : String;
begin
  writeln('Hallo dieses Programm berechnet ihnen die Summe, die Subtraktion, das Produkt');
  writeln(', sowie die Division aus zwei Zahlen!');
  writeln('Nun gib bitte deine erste Zahl ein.');
  readln(a);
  writeln('Deine erste Zahl ist also '+IntToStr(a)+' gib nun bitte deine zweite Zahl an!');
  readln(b);
  writeln('Deine Zahlen sind also '+IntToStr(a)+' und '+IntToStr(b)+' möchtest du fortfahren?');
  readln(strvar);
  if strvar 'Yes' then
    writeln('Deine beiden Zahlen sind also '+IntToStr(a)+' und '+IntToStr(b));
  writeln('die Summe der beiden Zahlen ist: '+IntToStr(a+b));
  readln;
end.

Typenkonvertierung beachten.
readln(a) liest ein Integer ein - ausgeben kannst Du nur Strings

Grüße
Klaus

justloosit 23. Mär 2009 19:20

Re: if schleife in einer konsohle
 
eh wie jetz was bringt das denn ?? das funktioniert doch alles ich will nur das das programm neustartet wenn is die bedingung von if nicht erfüllt

Meflin 23. Mär 2009 19:21

Re: if schleife in einer konsohle
 
Ach herrje, hab ichs auch noch falsch Vorgesagt. Readln Is ja garkeine Funktion :mrgreen:

Teekeks 23. Mär 2009 19:21

Re: if schleife in einer konsohle
 
Schaue dir eine repeat-until-Schleife an...
Syntax:
Delphi-Quellcode:
repeat
{code}
until strvar='yes';{wenn strvar='yes' dan geht er aus der schleife raus, ansonsten springt er zum repeat zurück und durchläuft alles nocheinmahl...}
@klaus: das ist vermutlich Turbo Pascal, da geht das ^^

justloosit 23. Mär 2009 19:27

Re: if schleife in einer konsohle
 
alter wieviel ihr alle wisst :) aber was muss ich da bei (code ) eingeben?

mkinzler 23. Mär 2009 19:29

Re: if schleife in einer konsohle
 
Deinen Code von oben

justloosit 23. Mär 2009 19:32

Re: if schleife in einer konsohle
 
Delphi-Quellcode:
var a, b, c:integer;
strvar:string;
begin
writeln('Hallo dieses Programm berechnet ihnen die Summe, die Differnz, das Produkt');
writeln(', sowie den Quotienten aus zwei Zahlen!');
writeln('Nun gib bitte deine erste Zahl ein.');
readln(a);
writeln('Deine erste Zahl ist also ',a,' gib nun bitte deine zweite Zahl an!');
readln(b);
writeln('Deine Zahlen sind also ',a,' und ',b,' möchtest du fortfahren?');

readln(strvar);
repeat
(strvar)
until strvar = 'Yes'
begin
writeln('Deine beiden Zahlen sind also ',a,' und ',b,'');
writeln('die Summe der beiden Zahlen ist ',a+b,'');
writeln('Die Differenz der beiden Zahlen ist ',a-b,'');
writeln('Das Produkt der beiden Zahlen ist ',a*b,'');
writeln('Die Quotient aus den beiden Zahlen ist ',a/b,'');
readln;
end
und wo is da jetz der code und is das überhaupt richtig so?

bigben37 23. Mär 2009 19:36

Re: if schleife in einer konsohle
 
Zitat:

Zitat von justloosit
Delphi-Quellcode:
repeat
(strvar)
until strvar = 'Yes'

Das muss so sein:
Delphi-Quellcode:
repeat
  readln(strvar)
until strvar = 'Yes';
Das begin nach der repeat-Schleife braust du nicht mehr

justloosit 23. Mär 2009 19:41

Re: if schleife in einer konsohle
 
ah gut jetzt geht das programm zu mindest zu starten aber es geht nur weiter wenn man Yes eingibt ich dachte wenn man i-was anderes eingibt startet das programm von vorn in dem fall macht es jedoch nur einen absatz?

Klaus01 23. Mär 2009 19:42

Re: if schleife in einer konsohle
 
Zitat:

Zitat von justloosit
und wo is da jetz der code und is das überhaupt richtig so?

Du solltest auch das in die Schleife packen was Du wiederholen möchtest.

Delphi-Quellcode:
repeat
  begin
    ... Dein Code
  end
until strVar = 'Yes';
Grüße
Klaus

Teekeks 23. Mär 2009 19:42

Re: if schleife in einer konsohle
 
1.) nein so ist es nicht wirklich richtig.
Ich habe aber geade gesehen das du eigentlich nur eine If-Abfrage brauchst.
Also: Nach dem Readln(strvar); ein
Delphi-Quellcode:
if strvar='no' then exit; {hier kommt das hinn was du ausführen möchtest wenn strvar='yes' ist}
der befehl exit; beendet dein Programm wenn strvar='no' ist.

2.) Glaub mir: das ist Standardwissen was man können muss wenn man sich ernsthaft mit Delphi (in deinem Fall wohl eher Turbo Pascal (oder nicht?)) arbeiten möchte.

justloosit 23. Mär 2009 19:44

Re: if schleife in einer konsohle
 
na ich wollte ja das das programm von vorne started und nicht beendet geht das bzw wisst ihr wies geht?

Klaus01 23. Mär 2009 19:46

Re: if schleife in einer konsohle
 
Zitat:

Zitat von justloosit
na ich wollte ja das das programm von vorne started und nicht beendet geht das bzw wisst ihr wies geht?

Schleife benutzen, siehe mehrere Beiträge oben.
Und das Hirn einschalten und vielleicht mal in ein Programmierhandbuch schauen
und sich schlau machen was Schleifen sind und wie sie arbeiten.

Grüße
Klaus

Teekeks 23. Mär 2009 19:48

Re: if schleife in einer konsohle
 
ok. Dann doch repeat:
Delphi-Quellcode:
var a, b, c:integer;
strvar:string;
begin
readln(strvar);
repeat
writeln('Hallo dieses Programm berechnet ihnen die Summe, die Differnz, das Produkt');
writeln(', sowie den Quotienten aus zwei Zahlen!');
writeln('Nun gib bitte deine erste Zahl ein.');
readln(a);
writeln('Deine erste Zahl ist also ',a,' gib nun bitte deine zweite Zahl an!');
readln(b);
writeln('Deine Zahlen sind also ',a,' und ',b,' möchtest du fortfahren?');
readln(strvar);
until strvar = 'Yes';
writeln('Deine beiden Zahlen sind also ',a,' und ',b,'');
writeln('die Summe der beiden Zahlen ist ',a+b,'');
writeln('Die Differenz der beiden Zahlen ist ',a-b,'');
writeln('Das Produkt der beiden Zahlen ist ',a*b,'');
writeln('Die Quotient aus den beiden Zahlen ist ',a/b,'');
readln;
end.
Edit: Ich stimme Klaus01 voll und ganz zu...

justloosit 23. Mär 2009 19:50

Re: if schleife in einer konsohle
 
na das mit der repeat-until schleife klappt doch i-wie gar nich ist diese schleife nicht eher dafür dar das man nur eine bedingung erfüllen kann das das programm weiter läuft aber ich möchte doch das das program z.b. wenn ich no sage von vorne startet und wenn ich yes sage einfach weiter läuft????? :?:

Teekeks 23. Mär 2009 19:52

Re: if schleife in einer konsohle
 
F1 ist dein Freund...
oder: hast du TP? da ist das mit der Hilfe anders...

mkinzler 23. Mär 2009 19:52

Re: if schleife in einer konsohle
 
Dann dreh doch die Bedingung um:
Delphi-Quellcode:
until strvar = 'No';

justloosit 23. Mär 2009 19:53

Re: if schleife in einer konsohle
 
Leute ich liebe euch ihr seid echt sooooo genial


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 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