Literały, napisy, konwersja
Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowaPerl: programowanie - Literały, napisy, konwersja
- Wypisz na ekran za pomocą polecenia print lub znanego ci z języka C printf następujące liczby:
- 1/3 z precyzją 12 na 20 pozycjach dziesiętnych
- wartość dzielenia 1/81 z dokładnością do pięciu miejsc po przecinku
- liczby 0x20 oraz 0x30 w formacie dziesiętnym
- liczbę 1234 w formacie ósemkowym
- liczbę 200300100400 w formacie szesnastkowym
- liczbę binarną 0b01010101, 0b100, 0b10000000000 jako liczbę dziesiętną
- Liczbę ósemkową 01234 jako liczbę szestnastkową i binarną
- Liczby od 0 do 20 jako liczby szestnastkowe na 5 pozycjach dziesiętnych
- Napis "abc" wyrównany do lewej na 10 pozycjach
- Liczbę 0x100 na dwunastu pozycjach, binarnie, z wiodącym zerem
- Liczby od 2 do -2 z wiodącymi zerami w formacie ósemkowym na pięciu pozycjach dziesiętnych
- Sprawdź, ilu cyfrowa jest największa liczba szesnastkowa, jaką można bez dodatkowych zabiegów wypisać w perlu. Wskazówka: przypomnij sobie o bitach i dopełnieniu bitowym.
- Sprawdź, czy sekwencja \a generuje sygnał dźwiękowy. Niezależnie od tego, upewnij się, czy można sygnał ten włączyć lub wyłączyć przez polecenie xset.
- Sprawdź, czy sekwencja \n generuje jeden, czy dwa znaki. Wymyśl sposób sprawdzenia, jakie to znaki.
- Sprawdź, co uzyskasz, po wypisaniu słów "abc\r123\n". Jaka jest przyczyna obserwowanego efektu?
- Zbadaj, jakimi programami do generowania dokumentacji POD dysponujesz w swoim systemie.
- Wykorzystaj programy do generowania dokumentów POD, aby stworzyć dokument w którym wpiszesz swoje uwagi odnośnie perla lub pytania, które ci się nasuwają. Zadbaj o odpowiedni tytuł, nagłówki oraz formatowanie tekstu. Dokument POD po jego przetworzeniu na HTML wyślij prowadzącemu zajęcia.
- Sprawdź, czy po jakiejkolwiek linii w postaci __COKOLWIEK__ perl będzie analizował program. W ten sposób dowiesz się, czy tylko literały __FILE__, __END__, __LINE__ i __DATA__ są interpretowane.
- Przekonaj się, czy perl potrafi wypisać tekst wielowierszowy. Użyj na przykład następującego kodu:
$tekst = "To jest tekst próbny";
Po wypisaniu takiej zmiennej zaobserwuj, czy tekst zawiera nowy wiersz czy nie. - Sprawdź, co otrzymasz wypisując znak o kodzie \x0394. Czy notacja taka działa prawidłowo? Porównaj z \x{0394}.
- Aby wypisać znaki UTF, można użyć nazw znaków. Aby zobaczyć, jak to działa, zastosuj kod:
use charnames qw(greek); print "\N{Sigma}, \N{sigma}\n";
- Sprawdź efekt działania funkcji reverse w odniesieniu do napisów.
- Używając operatora || (lub) sprawdź, jaka będzie różnica w zawartości zmiennych po wykonaniu poleceń:
$a = 0 || "abc"; $b = 1 || "efg";
O czym może świadczyć zawartość zmiennych? Zastanów się, jak zadziała polecenie:$x = $a || $b || $c || "bla";
To,co obserwujesz, jest często stosowanym sposobem definiowania zmiennych z ewentualną wartością domyślną. Jeżeli zmienne nie są zdefiniowane, operator LUB (||) powoduje, ze perl oblicza kolejne podwyraźenie, i tak aż do momentu, gdy osiągnięta zostanie ostatnia wartość lub wynik, który można zakwalifikować jako prawdę. - Napisz program, który wczytuje dowolny ciąg znaków z klawiatury i zamienia go na ciąg w którym tylko pierwsza litera jest wielka, a reszta liter jest mała.
- Nie używając instrukcji warunkowej if napisz program, który wczyta dwa wyrazy z klawiatury i napisze na standardowe wyjście wyraz "OK" jeżeli wczytane wyrazy będą sobie równe. Wyzwanie: program ten można napisać nie używając operatora trójargumentowego.
- Napisz program, który wczytuje dowolny tekst i informuje, czy są w nim wielkie litery czy nie. W tym programie także nie trzeba korzystać z instrukcji warunkowej.
- Napisz program, który wczyta dwa wyrazy i wypisze je w kolejności alfabetycznej.
- Napisz program, który wczytuje temperaturę w stopniach Celsjusza i wypisuje temperaturę w stopniach Kelvina.
- Zdefiniuj zmienną $bla, nadaj jej wartość 1 i spróbuj wypisać ciąg "1b" używając jednej instrukcji print oraz jednego łańcucha interpolowanego. To znaczy - sprawdź, czy zadziała polecenie print "$blab". W razieproblemów, wypróbuj zastosowanie nawiasów klamrowych.
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.