Listy i tablice

  1. Ten program czyta listę napisów, każdy w osobnym wierszu i następnie drukuje je w odwrotnej kolejności. Zauważ, że operator
    <STDIN>
    użyty jest w kontekście listowym, to znaczy w miejscu (przypisanie do tablicy), w którym oczekiwana jest lista. Powoduje to zastąpienie go przez listę, której wartościami są wszystkie (pozostałe) wiersze ze standardowego wejścia. Funkcja
    reverse
    odwraca listę
    @lista
    , zaś
    @print
    drukuje całą odwróconą listę.

     
    #!/usr/bin/perl
    
    print "Wprowadz liste lancuchow:\n";
    @lista = <STDIN>;
    @odwrocona_lista = reverse @lista;
    print @odwrocona_lista;
    
    
    
    

  2. To samo w jednej linijce, bez użycia pomocniczych tablic:

     
    #!/usr/bin/perl
    
    print "Wprowadz liste lancuchow:\n";
    print reverse <STDIN>;
    
    
    
    

  3. Program czyta liczbę i listę napisów, a następnie drukuje napis o danym numerze. Zauważ, że
    <STDIN>
    działa raz w kontekście skalarnym (czyta wiersz zawierający liczbę), a raz w listowym (czyta pozostałe wiersze z wejścia). Nie dałoby się najpierw zapełnić tablicy
    @b
    , a następnie zmiennej skalarnej
    $a
    , gdyż czytanie tablicy wczytałoby także wiersz z liczbą i nic nie zostałoby dla następnej operacji czytania. Tablica nie jest poddawana działaniu funkcji
    chomp
    , więc jej element będzie wydrukowany łącznie ze znakiem nowego wiersza, który zawiera. Elementy tablicy numerowane są od zera, stąd
    -1
    . Element tablicy jest zmienną skalarną, dlatego jego nazwę poprzedza
    $
    , a nie
    @
    .

     
    #!/usr/bin/perl
    
    print "Wprowadz numer wiersza: "; chomp($a = <STDIN>);
    print "Wprowadz wiersze i zakoncz naciskajac ^D:\n"; @b = <STDIN>;
    print "Odpowiedz: $b[$a-1]";
    
    
    
    

  4. To samo, ale drukowany jest napis (wiersz) o losowym numerze. Funkcja zwraca liczbę losową z przedziału od zera do swojego argumentu, traktowanego jako liczba. Nazwa tablicy
    @b
    użyta w miejscu, w którym oczekiwany jest skalar (liczba) zastępowana jest przez liczbę elementów tablicy. Następnie wylosowana liczba obcinana jest automatycznie do części całkowitej, co daje indeks z przedziału
    0, .. @b-1
    .

     
    #!/usr/bin/perl
    
    srand;
    print "Lista lancuchow: "; @b = <STDIN>;
    print "Odpowiedz: $b[rand(@b)]";
    
    
    
    

Last modified: poniedziałek, 10 sierpnia 2015, 10:49