Zadania, które dotyczą zakresu materiału, jaki będzie poruszany na lab. 2. Rozwiązanie tych zadań nie jest wymagane. Stanowią wyłącznie pomoc w przygotowaniu się do zajęć.
Zadanie #1:
W kolejnych wierszach pliku znajdują się wyrażenia arytmetyczne zapisane w odwrotnej notacji polskiej (ale bez wykorzystania nawiasów). Napisz program, który będzie odczytywał wiersz i obliczał wartość, a jeżeli w wyrażeniu jest błąd składni, to rzucał wyjątek. Wyjątek zostaje przechwycony na końcu programu i obsłużony w postaci wyświetlenia komunikatu o rodzaju błędu. Dostosuj wartość wyjątku do rodzaju błędu.
Zadanie #2:
Napisz grę, która będzie losowała dowolne litery z alfabetu i wyświetlała je na ekranie, a zadaniem gracza jest podać szybko kod ascii odpowiadający danej literze. Fragment programu odpowiedzialny za zadawanie pytań i sprawdzanie odpowiedzi użytkownika jest zamknięty w funkcji, która zwraca liczbę całkowitą – sumaryczną liczbę sekund, jakiej użytkownik potrzebował, żeby udzielać odpowiedzi na serię pytań. Może zdarzyć się, że użytkownik poda niewłaściwy kod ascii, ale to nie powoduje przerwania gry. Dopiero w przypadku popełnienia przez użytkownika drugiej pomyłki zamiast kolejnego pytania rzucany jest wyjątek, który jest przechwycony dopiero w funkcji main
. W ramach obsługi wyjątku użytkownik dostaje pytanie, czy chce spróbować jeszcze raz i jeżeli tak – funkcja zadająca pytania jest ponownie wywoływana.
Zadanie #3:
Język „Markdown” jest jednym z najprostszych języków znaczników, mimo to jednak znajduje wiele zastosowań, m.in. w plikach readme. W tym języku można formatować tekst, który później zostanie odpowiednio zwizualizowany w oknie przeglądarki.
W języku „Markdown” wskazywanie czcionek, które mają być użyte w poszczególnych fragmentach dokumentu, odbywa się wg następującej składni: najpierw znak otwierający formatowanie, np. _
, *
, __
, **
lub `
, potem tekst podlegający formatowaniu, a na koniec ten sam znak, ale tym razem oznaczający koniec formatowanego fragmentu tekstu. Przykłady: _italic_
, *italic*
, __bold__
, **bold**
, `monospace`
.
Napisz parser, który będzie sprawdzał poprawność formatowania czcionek w tekście zawartym w pliku. Przyjmij, że poprawne formatowanie wymaga, aby liczba znaków otwierających i zamykających była sobie równa, oraz aby formatowane obszary nie przecinały się ani nie zagnieżdżały. W przypadku wykrycia błędu składni rzucany jest wyjątek, który zostanie przechwycony na końcu programu i obsłużony w postaci wyświetlenia komunikatu o błędzie. Dostosuj wartość wyjątku do rodzaju błędu.