Hallo zusammen,
ich habe gerade mit Perl begonnen und laufe schon in ziemlich blöde Fehlermeldungen rein. Kann mir jemand bei dem folgenden Problem helfen?
Funktional ist alles OK. Nur zwei Warnmeldungen stören mich:
D:\sort\_001.pl
Useless use of a variable in void context at D:\sort\_001.pl line 18.
1
Use of uninitialized value in numeric gt (>:wink: at D:\sort\_001.pl line 23.
98
34
2
Groesster Wert: 98
Die „Useless use of a variable …“-Meldung kann ich eleminieren, wenn ich auf die Deklaration verzichte. Will ich aber nicht, da ich auch zukünftig alle Variablen am Source-Anfang definieren möchte.
Die „Use of uninitialized value …“-Meldung kann ich eleminieren, wenn ich der Variable irgend einen (sehr kleinen) Wert zuweise. Dadurch kann ich mir aber die Korrektheit des Programms zerstören.
Damit dürften beide Probleme gelöst sein, zumindest dann,
wenn die Liste grundsätzlich positive Zahlen enthält.
Falls auch negative Werte vorkommen können, solltest Du
entsprechend einen negativen Wert zuweisen, der unter der
kleinsten möglichen Zahl liegt.
Hallo,
zuerst einmal vielen dank für deine Unterstützung.
Ich habe leider eine grundsätzliche Abneigung gegen das unnötige definieren von Grenzen, da diese i.d.R. einer problemlosen Wiederverwendbarkeit der Source im Wege stehen.
Damit dürften beide Probleme gelöst sein, zumindest dann,
wenn die Liste grundsätzlich positive Zahlen enthält.
Falls auch negative Werte vorkommen können, solltest Du
entsprechend einen negativen Wert zuweisen, der unter der
kleinsten möglichen Zahl liegt.
Es ist immer etwas problematisch, wenn man implizite Annahmen ueber den verwendendeten Zahlenraum macht.
Also:
entweder explizit sagen, welche Voraussetzungen das Programm hat („dieses Programm liefert aus einer Liste positiver Zahlen die groesste…“)
oder mit dem ersten Wert der Liste starten und ggf. einen Vergleich zuviel in Kauf nehmen.
In etwas so:
...
my @list\_of\_numbers = (1,98,34,2);
my $greatest\_number = $list\_of\_numbers[0];
foreach (@list\_of\_numbers)
{
... # usw. wie gehabt
Ich habe leider eine grundsätzliche Abneigung gegen das
unnötige definieren von Grenzen, da diese i.d.R. einer
problemlosen Wiederverwendbarkeit der Source im Wege stehen.
Naja, dann kannst Du es so machen, wie von Bernhard vorgeschlagen,
den einen unnötigen Vergleich kann man wohl verschmerzen. Alternativ
könntest Du den Vergleichswert ja auch variabel halten, so dass er
von Fall zu Fall leicht angepasst werden kann. Wenn’s wiederverwendbar
sein soll, würde sich die Verwendung als Subroutine für den Codeschnipsel
anbieten, dann könnte der Vergleichswert als Argument übergeben werden.
Trotzdem - was wäre den der kleinstmögliche Wert?
Keine Ahnung. Auch die Man-Pages haben mich in dieser Frage nicht
sonderlich weitergebracht…
Es ist immer etwas problematisch, wenn man implizite Annahmen
ueber den verwendendeten Zahlenraum macht.
Nicht, wenn der mögliche Zahlenraum vorher definitiv bekannt ist.
Ich habe deshalb ja auch ausdrücklich auf die Einschränkungen aufmerksam
gemacht.
Du ahnst gar nicht, wieviel Beispiele ich mir spontan ausdenken kann,
in denen niemals ein Wert kleiner als Null auftritt. Deine Lösung
finde ich aber trotzdem besser, weil sie universell verwendbar ist.
Hallo zusammen,
ich habe gerade mit Perl begonnen und laufe schon in ziemlich
blöde Fehlermeldungen rein. Kann mir jemand bei dem folgenden
Problem helfen?
Danke an alle.
Vielen Dank für eure Unterstützung. Da ich erst am Anfang stehe werdet ihr bestimmt bald wieder von mir hören (und ich hoffentlich von euch).