Log inRegister

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