Perl/Zahlenraten
Aus Ubuntu-Forum Wiki
Allgemeines
Hier befindet sich ein Lösungsvorschlag für die Perl-Aufgabe von der Seite: Perl.
#!/usr/bin/perl use strict; use warnings; sub addieren { my ($random, $wahl, $count) = @_; if ($wahl < $random) { print "Die Zahl ist groesser!\n"; } elsif ($wahl > $random) { print "Die Zahl ist kleiner!\n"; } else { print "Glueckwunsch, Sie haben die Zahl nach $count Versuchen herausgefunden!\n"; } } my $random = int(rand(100)); my $count = 1; my $wahl = undef; print "\tZ A H L E N R A T EN\n\n"; print "Versuchen Sie die Zahl zwischen 0 und 99 in moeglischt wenigen Versuchen herauszufinden!\n"; do { print "Geben Sie Ihren Tipp ab: "; $wahl = <STDIN>; &addieren($random,$wahl, $count); $count++; } while ($random != $wahl);
Das Programm startet mit der Variableninitialisierung:
my $random = int(rand(100));
Dabei wird der Variable $random eine zufällige Zahl, von 0 bis 99 zugewiesen. (Die Zahl 100 kann mit diesem Aufruf niemals erreicht werden)
Der Befehl rand(); erzeugt ohne weitere Argumente eine Gleitkommazahl zwischen 0 und 1. Da wir aber in unserem Programm nur Integerzahlen (Ganze Zahlen) erzeugen wollen, müssen wir ein int() dem rand()-Befehl voranstellen.
Den Zähler $count setzen wir auf 1 und der Variable $wahl geben wir den Wert undef (undefiniert).
Danach startet die do / while -Schleife die ja immer mindestens einmal durchlaufen werden muss! Nach der Tastaturabfrage in die Variable $wahl, wird in diesem Programm die Subroutine addieren aufgerufen. Dabei übergeben wir der Funktion die Variablen $random (Die zufällige generierte zahl zwischen 1 und 100), $wahl (Die vom Benutzer geratene Zahl) und $count (Die Zählervariable, welche die Anzahl der Versuche enthält).
In der Funktion selbst machen wir uns die drei Variablen mit dem Codeteil:
my ($random, $wahl, $count) = @_;
verfügbar. Es folgen drei IF-Anweisungen die angeben was geschieht, wenn die geratene Zahl größer / kleiner oder gleich der zufälligen Zahl ist.