Struktury sterujące
- Instrukcja warunkowa w Perlu. Zwróć uwagę na obligatoryjne nawiasy klamrowe:
#!/usr/bin/perl print "Ile dzisiaj stopni? "; chomp($temperatura = <STDIN>); if ($temperatura > 25) { print "Zbyt goraco!\n"; } else { print "Zbyt zimno!\n"; }
- Druga wersja programu sprawdzającego temperaturę ilustrująca
wykorzystanie instrukcji elsif(która jednak trochę ogranicza liczbę nawiasów):
#!/usr/bin/perl print "Ile dzisiaj stopni? "; chomp($temperatura = <STDIN>); if ($temperatura > 25) { print "Zbyt goraco!\n"; } elsif ($temperatura < 20) { print "Zbyt zimno!\n"; } else { print "Idealnie!\n"; }
- Pętla sumująca liczby. Zmienna $sumama przed wejściem do pętli wartośćundefi dopiero pierwsza operacja dodawania ustawia jej poprzednia wartość na zero (i sumowanie działa poprawnie). Program daje jednak zły wynik, gdy jako pierwszą liczbę podamy 999 (zatem nawet w Perlu warto czasem inicjalizować zmienne).
#!/usr/bin/perl print "Wprowadz liczbe (999 oznacza koniec): "; chomp($n = <STDIN>); while ($n != 999) { $suma += $n; print "Wprowadz kolejna liczbe (999 oznacza koniec): "; chomp($n = <STDIN>); } print "Suma tych liczb wynosi $suma\n";
- Odwracanie kolejności wierszy tekstu bez użycia funkcji
reverse. Najpierw tekst jest wczytywany do tablicy@lancuchy: jej elementy odpowiadają kolejnym wierszom tekstu. Następnie pętlawhilewykonuje się dopóki tablica@lancuchyjest niepusta. Wewnątrz pętli wywoływana jest funkcjapop, która usuwa ostatni element tablicy@lancuchyi zwraca go jako swoją wartość. Ta wartość jest następnie drukowana. Nazwa tablicy@lancuchyjest użyta w warunku końca pętli w kontekście skalarnym i ma wartość równą liczbie elementów pozostałych jeszcze w tablicy@lancuchy.
#!/usr/bin/perl print "Wprowadz kilka lancuchow (zakoncz nacisnieciem klawiszy ^D:\n"; @lancuchy = <STDIN>; while (@lancuchy) { print pop @lancuchy; }
- Obliczanie kwadratów liczb od 0 do 32 przy użyciu pętli
for. Jej składnia w Perlu jest identyczna jak w języku C.
#!/usr/bin/perl for ($liczba = 0; $liczba <= 32; $liczba++) { $kwadrat = $liczba*$liczba; printf "%5g %8g\n", $liczba, $kwadrat; }
- To samo, ale z pętlą foreach(nie powinieneś może tego wiedzieć, ale tak naprawdę słowa kluczoweforiforeachsą synonimami ;-)). Pętlaforeachma dwa argumenty: zmienną skalarną i tablicę (listę). Pętla ta nadaje kolejno zmiennej skalarnej wartości z listy i dla każdej z tych wartości wykonuje blok kodu. W przykładzie poniżej lista jest generowana przy użyciu operatora zakresu... Wyrażenie(0..32)jest równoważne liście (0, 1, 2, ... 32).
#!/usr/bin/perl foreach $liczba (0..32) { $kwadrat = $liczba * $liczba; printf "%5g %8g\n", $liczba, $kwadrat; }
Last modified: poniedziałek, 10 sierpnia 2015, 10:49