Példaprogramok
Itt néhány mintaprogramot fogunk megnézni hogy kapjunk egy elképzelést arról, hogy hogyan ketyegnek -- hogyan lehet összerakni a darabokat hogy működjenek. Amit eddig csináltam az csupán annyi hogy mutattam egy rakás LEGO kockát --most pedig mutatok pár javaslatot hogyan lehet őket összerakni.
Kér programot fogunk megnézni -- az
egyik nyomon követi a barátaid kisállatait, a
másik pedig kiszámítja a megadott számok mozgó átlagát.
Azt szeretném ha elolvasnád, átnéznéd a magyarázatokat, megértenéd őket -- azután megnéznéd mit is lehet velük tenni. Módosíthatod őket? Tudsz egy vázlat alapján valami hasonlót összerakni? Próbáld ki!
Lásd még:
Barátok és állatkák -
Mozgó átlag
Barátok és állatkák
Most lesz egy olyan programunk, ami a barátaidról és az állatkáikról kérdez, és emlékszik rájuk amíg fut. Engedd meg nekem, hogy adjak egy listát. Megpróbálok mindent alaposan dokumentálni a
megjegyzések segítségével. Meg tudnád mondani, mi is az? Ha nem, akkor keresd meg azt a részt ahol ezzel foglalkoztunk, és nézd meg újra.
#!/usr/bin/perl -w
#
# Barátok és állatkák -- egy program ami nyomon követi a barátaid és az ő állatkáikat.
#
# Utoljára módosította Jonathan Hayward, 12-29-01
#
# Amikor azt válaszolod, hogy folytatod, akkor egy újabb barátod nevét fogja kérdezni,
# majd ezután megkérdezi a kisállata nevét is. Ez után felsorolja az összes barátodat,
# akit említettél, valamint az ő állatkáikat.
#
# Ezt egy while ciklussal teszi.
# A barátaidat egy listában tárolja, az
# állatkáikat pedig egy hash-ben.
#
# Használunk majd egy csomó függvényt.
#
#
# Amit az elején csinálunk, azt inicializálásnak hívjuk.
#
# Szubrutinok és Függvények listája.
sub Confirm();
#
# A Confirm egy függvény, ami igen vagy nem választ vár a felhasználótól.
#
# Megjegyezzük, hogy ez a függvény használ egy másik függvényt -- a ReadLine függvényt. Ez természetesen
# lehetséges, és persze nagyon hasznos, amikor egyik szubrutin vagy függvény
# képes másik szubrutint vagy függvényt használni.
#
sub Confirm()
{
$UserAnswer = &ReadLine();
if ((not($UserAnswer eq "n")) and # Ellenőrizzük hogy a válasz igen vagy nem
(not($UserAnswer eq "i")) and
(not($UserAnswer eq "N")) and
(not($UserAnswer eq "I")))
{
while ((not($UserAnswer eq "n")) and # Addig folytassuk amíg a válasz igen
(not($UserAnswer eq "i")) and # vagy nem.
(not($UserAnswer eq "N")) and
(not($UserAnswer eq "I")))
{
print "Nyomj \"i\"-t ha igen, \"n\"-t ha nem a válaszod.\n";
$UserAnswer = &ReadLine();
}
}
# Ha eljutottunk idáig, akkor a felhasználó igen vagy nem választ adott.
return (($UserAnswer eq "I") or ($UserAnswer eq "i"));
}
# A barátok listáját és a kisállatokat tároló hash-t kiürítjük, hogy biztosan ne legyen benne
# semmi sem.
@Friends = ();
%Pets = ();
# Vannak olyan skalárok, melyek az igaz (true) vagy a hamis (false) értéket tudják tárolni.
$True = 1;
$False = 0;
# Üdvözöljük a felhasználót..
print "Üdv a Barátok és állatkák programban.\n";
$ShouldContinue = $True;
#
# A fő ciklus. Ez az ahol a program lelke van.
#
while ($ShouldContinue)
{
# Olvassuk be a barát nevét.
print "Írd be a barátod nevét:\n";
$NewFriend = &ReadLine();
# Adjuk hozzá a nevet a névlistához.
@Friends = (@Friends, $NewFriend);
# Olvassuk be a barátok állatkáit.
print "Írd be $NewFriend állatkájának fajtáját:\n";
$NewPet = &ReadLine();
# Adjuk hozzá a barátod állatkáját a hash listához.
$Pets{$NewFriend} = $NewPet;
# Írassunk kis egy üres sort, hogy a kimenet ne legyen túl zsúfolt:
print "\n";
# Most pedig írassuk kia barátokat az ő állatkáikkal együtt.
foreach $CurrentFriend (@Friends)
{
$CurrentPet = $Pets{$CurrentFriend};
print $CurrentFriend ." állatkája egy $CurrentPet.\n";
}
# Végül kérdezzünk rá a felhasználóra hogy akarja-e folytatni.
print "Szeretnéd folytatni (i/n)?\n";
$ShouldContinue = &Confirm();
# És itt elértük a ciklus végét.
}
# Ha ide érünk a programban, akkor a felhasználó már nem akarja tovább folytatni.
# Akkor mondjuk "Viszlát!", és lépjünk ki.
print "Viszlát!\n";
exit 0;
#
# A program magától ide már soha nem fog eljutni, mert ez már az
# exit (kilépés) utasítás után van. De az eljárásokat és függvényeket még ide kell tennünk. Ide teszünk tehát
# két függvényt:
#
#
# ReadLine egy olyan függvény, ami beolvas egy sort, majd eltünteti a végéről
# az újsor karaktert. Ez pont úgy olvassa be a sort ahogyan azt korábban már megbeszéltük.
#
sub ReadLine()
{
$UserInput = <>;
chomp $userinput;
return $userinput;
}
Ennek a programnak a kimenete valami ilyesmi lehet:
Üdv a Barátok és állatkák programban.
Írd be a barátod nevét::
Fred
Írd be Fred állatkájának fajtáját:
szőrgombóc
Fred állatkája egy szőrgombóc.
Akarod folytatni (i/n)?
i
Írd be a barátod nevét:
Dávid
Írd be Dávid állatkájának fajtáját:
kutya
Fred állatkája egy szőrgombóc.
Dávid állatkája egy kutya.
Akarod folytatni (i/n)?
n
Viszlát!
Lásd még:
Példaprogramok -
Mozgó átlag
Mozgó átlag
Ez a program beolvassa a számokat, és megmondja azok mozgó átlagát:
#!/usr/bin/perl -w
$total = 0;
$number_of_items = 0;
$result = 0;
while(1) # 1 mindig igaz.
{
print "Következő elem: ";
$input_line = <>;
chomp $input_line;
$total = $total + $input_line;
++$number_of_items;
$result = $total / $number_of_items;
print "Az átlag most épp " + $result + ".\n";
}
Lásd még:
Példaprogramok -
Barátok és állatkák