\documentclass[a4paper]{article}
\setlength{\oddsidemargin}{-1cm} \setlength{\topmargin}{-3cm}
\setlength{\textwidth}{18cm} \setlength{\textheight}{26cm}
\pagestyle{empty}

\def\DJ{\leavevmode\setbox0=\hbox{D}\kern0pt
 \rlap{\kern.04em\raise.188\ht0\hbox{-}}D}
\def\dj{\leavevmode\setbox0=\hbox{d}\kern0pt
 \rlap{\kern.215em\raise.46\ht0\hbox{-}}d}

\usepackage{amssymb}
\usepackage{comment}
\usepackage{color}

\begin{document}
\begin{small}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%-------------------------------------------------------------------------
\begin{center}
\textbf{Prevodioci i interpretatori - januar 2008.}
\end{center}

\begin{enumerate}
\item Napraviti interpretator za mali programski jezik koji
podse\' ca na jezik {\sc ruby}.

Jezik podr\v zava niske karaktera i cele brojeve. Po\v sto se radi o
\v c istom objektno-orijentisanom jeziku, literali se posmatraju kao
objekti i na njima je mogu\' ce je pozivati metode. Metoda \verb"abs"
izra\v cunava apsolutnu vrednost celog broja. Metoda \verb"length"
izra\v cunava du\v zinu niske. Metoda \verb"index" izra\v cunava prvu
poziciju na kojoj se pojavljuje data podniska. Metoda \verb"downcase"
sva slova niske prevodi u mala slova, dok ostale karaktere ne menja.
Metoda \verb"sort" ure\dj uje nisku leksikografski, dok metoda \verb"uniq"
uklanja vi\v sestruka pojavljivanja karaktera. Funkcija \verb"reverse"
vr\v si obrtanje niske. Komentari po\v cinu sa
znakom \verb"#". Funkcija \verb"puts" vr\v si \v stampanje
na standardni izlaz.

\begin{verbatim}
puts -199.abs                                                # 199
puts "ruby is cool".length                                   # 12
puts "Rick".index("c")                                       # 2
puts "Damn! I, Agassi, miss again! Mad!".reverse             # ! daM !niaga ssim , issagA ,I ! nmaD
puts "cabdabdba".sort.uniq                                   # abcd
\end{verbatim}

Jezik dopu\v sta i definisanje promenljivih.

\begin{verbatim}
str = "Nice Day Isn't It?"
puts str.downcase                                            # nice day isn't it?
\end{verbatim}

Jezik tako\dj e podr\v zava i he\v s strukturu podataka.

\begin{verbatim}
hash = { "water" => "wet", "fire" => "hot" }
puts hash["fire"] # Prints:  hot
\end{verbatim}

Sve elemente he\v sa je mogu\' ce od\v stampati kori\v s\' cenjem
petlje slede\' ceg oblika:

\begin{verbatim}
hash.each do |key, value|
        puts "#{key} is #{value}"
end

# Prints:  water is wet
#          fire is hot
\end{verbatim}

\begin{verbatim}
str = ""
hash.each do |k, v|
    str = str + v
    str = str + "\n---"
end
puts str

# Prints:
wet
---
hot
---
\end{verbatim}

Vrednost je mogu\' ce ukloniti iz he\v sa na slede\' ci na\v cin:

\begin{verbatim}
hash.delete_if {|key, value| key == "water"}
 # Deletes "water" => "wet"
\end{verbatim}

\item Datoteka \verb"studenti.txt" sadr\v zi brojeve indeksa studenata i njihova imena i prezimena razdvojena
tabulatorom. Datoteka \verb"predmeti.txt" sadr\v zi \v sifre predmeta i njihova puna imena razdvojena tabulatorom.
Datoteka \verb"ispiti.txt" sadr\v zi podatke o polaganjima ispitima. Svaki podatak o polaganju ispita je oblika:
\verb"index sifpred datum ocena", pri \v cemu se datum zadaje u obliku \verb"yyyy/mm/dd" ili \verb"dd/mm/yy". Napisati
{\sc perl} skript(ove) koji generi\v se spisak studenata sortiran na osnovu prezimena i imena studenata. Tako\dj e,
za svakog studenta generi\v se se zasebna {\sc html} stranu sa podacima o ispitima koje je polagao.
Stranica sadr\v zi tabelu sa podacima o polo\v zenim ispitima i tabelu sa podacima o ispitima koje je pao. Uz polo\v zene
ispite se prikazuje i prose\v cna ocena, a uz ispite koje je student pao, ispisuje se broj takvih ispita. Datumi
polaganja se prikazuju u obliku  "Monday, Feb 04, 2008." Tako\dj e, sastaviti i stranicu koja sadr\v zi podatke o
predmetima, pri \v cemu se uz svaki predmet, prikazuje broj polaganja, broj uspe\v snih polaganja kao i prose\v cna ocena,
pri \v cemu se kod izra\v cunavanja prose\v cne ocene u obzir uzimaju samo uspe\v sna polaganja.
Ovaj izve\v staj bi trebalo da bude sortiran po procentu prolaznosti.
\end{enumerate}

\end{small}


\end{document}
