\documentclass[a4paper]{article}

\setlength{\textwidth}{18cm}
\setlength{\oddsidemargin}{-1cm}
\setlength{\topmargin}{-2cm}
\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}

\begin{document}
\begin{small}
\begin{enumerate}
    \item Kori\v s\' cenjem alata \texttt{tr}, \texttt{sort},
    \texttt{uniq}, \texttt{paste}, \texttt{head}, \texttt{tail} i
    operatora \verb"|", \verb"<", \verb">", odrediti 10 parova
    reci koji se naj\v ce\v s\' ce javljaju zajedno u okviru date
    tekstualne datoteke.\hfill[8]
    \item Direktorijum \texttt{studenti} sadr\v zi studentske
    dosijee imenovane uobi\v cajeno (npr. \texttt{mr01678}) koji sadr\v ze
    datoteke sa zadacima koje su studenti tokom leta
    radili. Studenti su mogli da biraju jedan od \v cetiri
    programska jezika i radili su 10 zadataka. Datoteke koje su
    predali su oblika \texttt{broj.ext}, \texttt{broj} predstavlja broj
    zadatka koji je re\v savan, a \texttt{ext}
    predstavlja oznaku programskog jezika u kome je zadatak ra\dj
    en (\texttt{c}, \texttt{cpp}, \texttt{java}, \texttt{pas}).
    Napisati \textsc{perl} skript koji na osnovu sadr\v zaja
    direktorijuma \verb"studenti" kreira \textsc{html} tabelu koja
    pregledno prikazuje rad studenata. Svaka vrsta se odnosi na
    po jednog studenta i po\v cinje njegovim brojem dosijea,
    a zatim, za svaki od 10 zadataka, sadr\v zi oznaku jezika u kome je
    zadatak ra\dj en, odnosno, oznaku \verb"-" ukoliko student nije radio
    taj zadatak. Npr.\hfill[12]

    \begin{tt}
    \begin{tabular}{lcccccccccc}
        & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\\
        mr01567 & c & c & cpp & java & pas & - & - & cpp & java & pas\\
        mr01678 & c & cpp & java & java & - & c & - & cpp & pas & cpp\\

    \end{tabular}
    \end{tt}
    \item Napisati interpretator za minijaturni programski jezik opisan u nastavku.
    \begin{itemize}
        \item Jezik podr\v zava rad sa neozna\v cenim 32-bitnim celim brojevima. Brojevne konstante se mogu
        navoditi zapisane u dekadnom, binarnom i heksadekadnom brojevnom sistemu.
        Dekadne konstante se zapisuju uobi\v cajeno, heksadekadne sa prefiksom
        \verb"0x", a binarne sa prefiksom \verb"0b".
        \item Jezik raspola\v ze aritmeti\v ckim i bitskim operatorima po uzoru na jezik \textsc{c}.
        \item Ugra\dj ena funkcija \verb"print(x, b)" ispisuje brojne, odnosno nizovske vrednosti u datoj osnovi.
        \item Jezik podr\v zava rad sa vektorima neozna\v cenih celih brojeva, \v ciji se elementi
        navode izmedju uglastih zagrada, razdvojeni zapetama. Dva vektora se nadovezuju operatorom \verb".".
        \item Mogu\' ce je kori\v s\' cenje promenljivih, bez deklarisanja, pri \v cemu imena brojevnih promenljivih
        po\v cinju znakom \verb"$", a vektorskih po\v cinju znakom \verb"@".
    \end{itemize}
    \begin{verbatim}
    $d = 123; $b = 0b1010; $c = 0x3F;
    print(~$d | $b, 10);
    @A = [$d, $b, $c] . [$c, $b, $d];
    print($A[2] + $b & (2 + 0xF));
    \end{verbatim}

    \begin{enumerate}
    \item Implementirati deo interpretator koji omogu\' cava ispisivanje celobrojnih vrednosti u datoj osnovi. Npr.\hfill[10]
    \begin{verbatim}
    print(0b111, 10); print(0xAF, 2); print(12, 8);

    7    10101111   14
    \end{verbatim}
    \item Omogu\' citi definisanje skalarnih promenljivih \hfill[4]
    \begin{verbatim}
    $d = 127; $b = 0b1010;
    print($d, 2); print($b, 10);

    1111111 10
    \end{verbatim}

    \item Omogu\' citi kori\v s\' cenje aritmeti\v ckih operatora \verb"+", \verb"-", \verb"*", \verb"/" i
    bitskih operatora \verb"&", \verb"|", \verb">>", \verb"<<" i \verb"~" sa prioritetom i asocijativno\v s\' cu koja odgovara programskom
    jeziku \textsc{c}.\hfill[8]
    \begin{verbatim}
    $n = 3; $p = 7;
    $last_n_1 = ~(~0 << $n);
    $middle_n_0 =  ~($last_n_1 << $p+1-$n);
    print($middle_n_0, 2);

    11111111111111111111111100011111
    \end{verbatim}


    \item Omogu\' citi definisanje i kori\v s\' cenje vektora.\hfill[8]
    \begin{verbatim}
    $d = 123; @A = [2, $d, 0xFF+1]; @B = @A . [0b00, 0b01, 0b10, 0b11];
    print($B[2]);

    256
    \end{verbatim}
    \end{enumerate}

\end{enumerate}
\end{small}
\end{document}
