\documentclass[a4paper]{article}
\usepackage[hmargin=1cm,vmargin=1cm]{geometry}
\usepackage[T1]{fontenc}
\pagestyle{empty}
\begin{document}
\begin{center}
\textbf{Prevodioci i interpretatori}
\end{center}
\begin{enumerate}

\item Konverzijom \textit{pdf} dokumenta sa rasporedom ispita dobijena
je datoteka \texttt{ispiti.txt} slede\' ceg oblika:
\begin{verbatim}
Leksicka analiza              Petak, 04. 10. 2009. u 09.00       3R
Prevodioci i interpretatori   Cetvrtak, 27. 09. 2009. u 14.00    3Rstari
Analiza 1                     Cetvrtak, 27. 09. 2009. u 14.00    1R
Kompilacija                   Ponedeljak, 31. 09. 2009. u 14.00  3R
Analiza 1                     Cetvrtak, 27. 09. 2009. u 14.00    1M
...
\end{verbatim}

Napraviti perl skript koji ispisuje raspored ispita koji je ure\dj en po
terminu polaganja:
\begin{verbatim}
Cetvrtak, 27. 09. 2009. u 14.00
-------------------------------
Prevodioci i interpretatori (3Rstari)
Analiza 1 (1R, 1M)

Ponedeljak, 31. 09. 2009. u 14.00
---------------------------------
Kompilacija (3R)

Petak, 04. 10. 2009. 
--------------------
Leksicka analiza (3R)
\end{verbatim}


\item Napisati interpretator za funkcionalni programski jezik koji
podse\' ca na jezik \textsc{haskell}.

Interpretator omogu\' cava sra\v cunavanje vrednosti aritmeti\v ckih izraza. 
Npr. 
\begin{verbatim}
3+4*5                     23
\end{verbatim}

Mogu\' ce je vezivanje imena za izraze kori\v s\' cenjem \verb|let| izraza.
\begin{verbatim}
let x = 3 in 2 + x        5
\end{verbatim}

Izraz \verb|if-then-else| se mo\v ze koristiti za uslovno izra\v cunavanje.
\begin{verbatim}
if 1 > 0 then 3 else 5    3
\end{verbatim}

Funkcije se defini\v su kori\v s\' cenjem jednakosti.
\begin{verbatim}
f x = x * x
f 3                       9
\end{verbatim}

Funkcije mogu biti i rekurzivne.
\begin{verbatim}
g n = if n == 0 then 1 else n * g (n - 1) 
g 5                       120
\end{verbatim}

Funkcije se mogu definisati i kori\v s\' cenjem razdvajanja slu\v
cajeva \verb|0| i \verb|n|.
\begin{verbatim}
g 0 = 1
g n = n * f (n - 1)
f 5                       120
\end{verbatim}

Pored brojeva, elementarni tip podataka su i liste brojeva. Liste se
navode tako \v sto se elementi navedu u okviru [] zagrada, razdvojeni
zapetama. Izraz oblika \verb|h:t| ozna\v cava razdvajanje neprazne
liste na njenu glavu \verb|h| i rep \verb|t|. Funkcije na listama se
tako\dj e mogu definisati rekurzivno, uz razdvajanje slu\v cajeva
prazne i neprazne liste.
\begin{verbatim}
len [] = 0
len (x:xs) = 1 + len xs
len [5, 3, 7, 2]          4
\end{verbatim}
\end{enumerate}
\end{document}
