Programovací jazyk Perl

Úkoly pro 2. cvičení

Pokud se zadání odvolává na funkci či proměnnou, nejspíš ji seženete ve směsce pro 2. cvičení.

Ke stažení jsou zabalená možná řešení jednotlivých úkolů.

  1. „Hello world“ je ohrané. Vypište na standardní výstup nějaký kreativní pozdrav.
  2. Pořiďte si ve svém kódu globální proměnnou DEBUG a následně si obstarejte funkci ma_funkce.
    1. Pořiďte si ve svém kódu tři pole obsahující nějaká čísla.
    2. Na všechna tři pole postupně zavolejte funkci ma_funkce.
    3. Zařiďte, aby při druhém volání funkce nevypisovala ladicí výstupy.
  3. Pořiďte si nějaké pole čísel.
    1. Všechna čísla v tomto poli zvětšete o 1.
    2. Teď pro všechna čísla proveďte následující:
      • Je-li číslo dělitelné 10, vynásobte ho třemi.
      • Je-li číslo větší než 100, zmenšete ho o 50.
      • Je-li číslo v rozmezí 20–100, přičtěte k němu 42.
      • Je-li číslo menší než 20, umocněte ho na druhou.
  4. Pořiďte si pole vzdálenosti.
    1. Všechna čísla v poli převeďte z mil na kilometry. Počítejte ovšem s tím, že původní pole může někdo dál využívat, tedy v něm se hodnoty změnit nesmí.
  5. Předejte funkci ma_funkce pouze ty prvky pole, které se nacházejí na pozicích ij.
    1. Za i a j si zvolte nějaké konstanty.
    2. Načítejte hodnoty i a j ze standardního vstupu.
  6. Předejte funkci ma_funkce pouze prvky čísla splňující podmínku ma_podminka.
  7. Prozkoumejte funkce info a zavolejte ji s vhodnými proměnnými.
  8. Prozkoumejte, jaká jména jste jako skupina své cvičící poslali. K tomu využijte seznam poslaných jmen.
    • Jaké jméno jste poslali nejčastěji?
    • Kolik unikátních jmen jste poslali?
    • Kolik jmen bylo posláno pouze jedním člověkem?
  9. Zkopírujte si slovník vysledky_test. Ten obsahuje výsledky řešitelů nějakého testu, klíčem je vždy unikátní kód daného řešitele, hodnotou je jeho výsledek.
    1. Spočítejte průměrný výsledek.
    2. Nepočítejte do průměru zvláštní řešitele (mají kód < 100000).
    3. Vypisujte, kolik záznamů (výsledků) jste zpracovali.
    4. Do zpracovaných záznamů počítejte i zvláštní řešitele.
  10. Zkopírujte si pole vysledky. V něm jsou uložena další pole (resp. reference na další pole) skládající se z názvu předmětu a hashe (resp. reference na hash) obsahující výsledky opět ve formátu kód řešitele jako klíč, jeho výsledek jako hodnota.
    1. Spočítejte průměr pro každý předmět a celkový průměr ze zadaných předmětů.
    2. Spočítejte průměrný výsledek každého řešitele.
    3. Nepočítejte do průměru zvláštní řešitele (mají kód < 100000) ani učitele (kód > 900000).
    4. Narazíte-li na výsledek, který není v rozmezí 0–100, ukončete zpracování předmětu.
    5. Narazíte-li na neplatný kód řešitele (nekladný), ukončete celé zpracování.
    6. Vypište upozornění, pokud učitel (mají kód > 900000) dosáhl výsledku < 80.
  11. Stáhněte si kód bláznivého programu. Program operuje s jakousi páskou, limitem a oddělovačem. Příkaz LIMIT číslo nastavuje limit. Příkaz ADD číslo připíše číslo na pásku, a to buď na její začátek, je-li číslo menší než limit, nebo na její konec. Příkaz UNDO smaže posledně přidané číslo. Příkaz SEP znak nastavuje oddělovač na znak. Příkaz PRINT pak způsobí vypsání všech čísel na pásce oddělených aktuálním oddělovačem.
    1. Napište program v Perlu, který bláznivý program interpretuje.
  12. Stáhněte si zahmyzený program počítající 2D prefixové součty.
    1. Zařiďte, aby tento program prošel kompilací.
    2. Dobře, a teď méně destruktivně než smazáním celého programu :)
  13. Stáhněte si nepříliš tajuplný program a v libovolném pořadí si rozmyslete
    • co dělá
    • co má dělat
    1. Zařiďte, aby tento program začal dělat to, co dělat má.

Bonusový úkol pro ty, kteří se nudí: Vymyslete co nejzajímavější (tj. užitečný, elegantní, …) program v Perlu, který využívá pouze zatím probrané konstrukce :)

Stránku spravuje Martin Mareš