while ... else?

while ... else?

am 21.12.2005 14:59:48 von Hendrik Pilz

Kann man irgendwie direkt eine Alternative zu einer while-Schleife
definieren?

if (...)
{
while (...)
{
}
}

else
{
}

Das wäre ja einfach, aber theoretisch müsste sowas wie

while (...)
{
}

else
{
}

ja auch funktionieren.

Im Manual steht leider nichts dazu, oder ich habs nicht gefunden.

Gruß, Hendrik

Re: while ... else?

am 21.12.2005 15:14:35 von Andreas Lange

Am 21.12.2005, 14:59 Uhr, schrieb Hendrik Pilz :
> Kann man irgendwie direkt eine Alternative zu einer while-Schleife
> definieren?
>
> if (...)
> {
> while (..)
> {
> }
> }
> else
> {
> }

Genau so.

> Das wäre ja einfach, aber theoretisch müsste sowas wie
>
> while (...)
> {
> }
>
> else
> {
> }
>
> ja auch funktionieren.

Nein, denn wo ist dann die Bedingung für den Else Block?

Wenn Du eine Schleife (while) nur unter bestimmten Bedinungen
ausführen möchtest, dann wird das immer nur mit einem übergeordneten
Logikblock gehen.

> Im Manual steht leider nichts dazu, oder ich habs nicht gefunden.

Weils, sorry, auch "Blödsinn" ist. Es sei denn, Du hast Dich unklar
ausgedrückt und ich hab einfach nur nicht verstanden, worauf Du
hinauswillst.

--
Andreas Lange

Re: while ... else?

am 21.12.2005 15:16:52 von Sebastian Wessel

Hendrik Pilz schrieb:
> Das wäre ja einfach, aber theoretisch müsste sowas wie
>
> while (...)
> {
> }
>
> else
> {
> }

Das sieht mir irgendwie nach weiblicher Logik aus ...

Re: while ... else?

am 21.12.2005 15:39:55 von Hendrik Pilz

Andreas Lange wrote:
> Am 21.12.2005, 14:59 Uhr, schrieb Hendrik Pilz :
>
>
>> Das wäre ja einfach, aber theoretisch müsste sowas wie
>>
>> while (...)
>> {
>> }
>>
>> else
>> {
>> }
>>
>> ja auch funktionieren.
>
>
> Nein, denn wo ist dann die Bedingung für den Else Block?
>
> Wenn Du eine Schleife (while) nur unter bestimmten Bedinungen
> ausführen möchtest, dann wird das immer nur mit einem übergeordneten
> Logikblock gehen.
>
>> Im Manual steht leider nichts dazu, oder ich habs nicht gefunden.
>
>
> Weils, sorry, auch "Blödsinn" ist. Es sei denn, Du hast Dich unklar
> ausgedrückt und ich hab einfach nur nicht verstanden, worauf Du
> hinauswillst.
>
Das if prüft, ob die Bedingung für while überhaupt erfüllt werden kann.

Beispiel:

if (mysql_num_rows($result) > 0)
{
while ($row = mysql_fetch_assoc($result))
{
// tue was
}
}

else // keine datensätze gefunden
{
// mache etwas anderes
}

Wenn Die While-Schleife nicht einmal durchlaufen wurde, also keine
Datensätze vorhanden waren, ist es doch das gleich, wie wenn die
if-Bedingung nicht erfüllt wurde, also könnte man das if auch weglassen,
wenn denn PHP meiner Logik folgen würde.

Gruß, Hendrik

Re: while ... else?

am 21.12.2005 15:48:07 von Horst

Sebastian Wessel wrote:

> Das sieht mir irgendwie nach weiblicher Logik aus ...

Und dieser beitrag sieht nicht nur sexistisch aus, sondern ist es auch.


Horst Tellioğlu

Re: while ... else?

am 21.12.2005 16:15:27 von Andreas Lange

Am 21.12.2005, 15:39 Uhr, schrieb Hendrik Pilz :
> Beispiel:
> if (mysql_num_rows($result) > 0)
> {
> while ($row = mysql_fetch_assoc($result))
> {
> // tue was
> }
> }
>
> else // keine datensätze gefunden
> {
> // mache etwas anderes
> }
>
> Wenn Die While-Schleife nicht einmal durchlaufen wurde, also keine
> Datensätze vorhanden waren, ist es doch das gleich, wie wenn die
> if-Bedingung nicht erfüllt wurde, also könnte man das if auch weglassen,
> wenn denn PHP meiner Logik folgen würde.

Du möchtest also einen alternativen Codeblock ausführen, wenn die Schleife
nicht mindestens einmal durchlaufen wird ...

Mir fallen da nur folgende Varianten ein:

=== Snip: Variante 1 ===

$found = false;
while () {
// tue was
$found = true;
}

if (!$found) {
// Nix passiert ...
}

=== Snip: Variante 2 (wie bei Dir) ===

if ( Bedingung ) {
while () {
// tue was
}
} else {
// Nix passiert ...
}

Wenn man eine Vorbedingung hat, die man prüfen kann, sollte man diese
Variante nehmen.

=== Snip: Variante 3 (PHP5) ===

try {
foreach(new SqlQuery($Query) as $Record) {
// Mach was mit dem Record
}
} catch(NotFoundException $e) {
// Keine Datensätze
} catch(Exception $e) {
// Allgemeiner Fehler
}

Das setzt allerdings ein Klassen vorraus, die iterieren können ;-)

> Gruß, Hendrik

--
Andreas Lange

Re: while ... else?

am 21.12.2005 17:23:34 von Ulf Dunkel

Hi Hendrik.

> Wenn Die While-Schleife nicht einmal durchlaufen wurde, also keine
> Datensätze vorhanden waren, ist es doch das gleich, wie wenn die
> if-Bedingung nicht erfüllt wurde, also könnte man das if auch weglassen,
> wenn denn PHP meiner Logik folgen würde.

Warum? Was hat die if()-Bedingung mit der while()-Bedingung zu tun,
außer vielleicht in dem genannten Beispiel?

--
Bis bald / See you soon / A bientôt / Tot ziens / Ghis revido

Ulf Dunkel - invers Software (www.calamus.net)

Re: while ... else?

am 21.12.2005 17:29:39 von Horst

Hendrik Pilz wrote:

> Wenn Die While-Schleife nicht einmal durchlaufen wurde, also keine
> Datensätze vorhanden waren, ist es doch das gleich, wie wenn die
> if-Bedingung nicht erfüllt wurde, also könnte man das if auch weglassen,
> wenn denn PHP meiner Logik folgen würde.

Etwas zu viel Python programmiert? *g*


Grüße,
Horst

Re: while ... else?

am 21.12.2005 18:06:09 von Horst

Ulf Dunkel wrote:

> Warum? Was hat die if()-Bedingung mit der while()-Bedingung zu tun,
> außer vielleicht in dem genannten Beispiel?

http://docs.python.org/ref/while.html


Grüße,
Horst

Re: while ... else?

am 21.12.2005 23:55:06 von Matthias Esken

On Wed, 21 Dec 2005 17:29:39 +0100, Horst Tellio»lu wrote:

> Hendrik Pilz wrote:
>
>> Wenn Die While-Schleife nicht einmal durchlaufen wurde, also keine
>> Datensätze vorhanden waren, ist es doch das gleich, wie wenn die
>> if-Bedingung nicht erfüllt wurde, also könnte man das if auch weglassen,
>> wenn denn PHP meiner Logik folgen würde.
>
> Etwas zu viel Python programmiert? *g*

Gibt's in Python denn dann auch if-Schleifen?

sich über nix mehr wundernd,
Matthias

Re: while ... else?

am 22.12.2005 10:43:00 von Horst

Matthias Esken wrote:

> Gibt's in Python denn dann auch if-Schleifen?

noch nicht

Wobei aber viele menschen an if-schleifen zu glauben scheinen. Google
liefert 28,500 einträge! Peinlich, peinlich.


Grüße,
Horst

Re: while ... else?

am 22.12.2005 10:55:18 von unknown

Post removed (X-No-Archive: yes)

Re: while ... else?

am 22.12.2005 10:55:54 von Johannes Mueller

Horst Tellioğlu schrieb:

>> Das sieht mir irgendwie nach weiblicher Logik aus ...
>
> Und dieser beitrag sieht nicht nur sexistisch aus, sondern ist es
> auch.

Humor ist, wenn man trotzdem lacht.

SCNR
Johannes

--
Emails ohne "[nospam]" im Betreff werden kommentarlos gelöscht.

Re: while ... else?

am 22.12.2005 11:13:35 von unknown

Post removed (X-No-Archive: yes)

Re: while ... else?

am 22.12.2005 11:31:42 von Ulf Kadner

Horst Tellioğlu wrote:

>>Das sieht mir irgendwie nach weiblicher Logik aus ...
>
> Und dieser beitrag sieht nicht nur sexistisch aus, sondern ist es auch.

Dann muss ich zumindest sehr sexistisch sein, da ich gut drüber gelacht
habe. Jedem das seine halt oder?

MfG, Ulf

Re: while ... else?

am 22.12.2005 14:22:34 von unknown

Post removed (X-No-Archive: yes)

Re: while ... else?

am 22.12.2005 22:30:51 von Ulf Dunkel

Hi Ulrich.

>>Im Manual steht leider nichts dazu, oder ich habs nicht gefunden.
>
> Weil's ein unsinniges Konstrukt ist.

Hendrik geht m.E. davon aus, daß ein while() automatisch auch eine
Alternativ-Aktion bieten soll. Das sehe ich aber nicht.

while (i_am_alive == TRUE)
{
have_much_fun();
}

Was danach kommt, interessiert mich ebenso wenig wie es das while()
interessiert, was danach kommt. Oder ist Python jetzt eine religiöse
Programmiersprache? ;-)

Beste Grüße, Iso T. Rick

--
Bis bald / See you soon / A bientôt / Tot ziens / Ghis revido

Ulf Dunkel - invers Software (www.calamus.net)