\documentclass[a4paper]{article}
\usepackage{multicol}
\textwidth 18cm \textheight 26cm \topmargin -3cm
\parindent 0.46in
\headsep 0.2in \oddsidemargin -2cm \evensidemargin 0cm
\hoffset0.8cm \voffset 1.8cm \pagestyle{empty}
\begin{document}
\begin{center}
\textbf{Prevodioci i interpretatori - Mart 2004.}\\
prakti\v cni deo
\end{center}
Defini\v simo jezik za opisivanje geometrijskih objekata u
ravni u kome su poznata \v cetiri tipa objekata : \verb"dim" - brojne vrednosti (racionalne),
\verb"point" - ta\v cke, \verb"line" - prave, \verb"segment" - du\v zi i \verb"circle" - kru\v znice.
Jezik poseduje mogu\' cnost definisanja jednoslovnih promenjivih
navedenih tipova, pri \v cemu se prilikom deklaracije promenjive
mogu i inicijalizovati odredjenim vrednostima navodjenjem
inicijalizacionih vrednosti u zagradama. Jezik poseduje i klasi\v cnu naredbu dodele izraza promenjivim.

Jezik je opremljen slede\' cim ugradjenim funkcijama:
\begin{enumerate}
    \item \verb"med(a)" - medijatrisa du\v zi
    \item \verb"distance(A,B)" - rastojanje izmedju ta\v caka
    \item \verb"intersect(a,b)" - ta\v cka preseka pravih
    \item \verb"draw(a)" - ``iscrtavanje'' ta\v cke, du\v zi ili kru\v
    znice. Iscrtavanje se vr\v si tako \v sto se na standardni izlaz
    napi\v se poziv funkcije \verb"plot" sa koordinatama objekta kao \v sto je pokazano u primeru.
\end{enumerate}

Napisati program koji na osnovu ulazne datoteke daje opis svih nacrtanih objekata.

\vskip 1cm


\begin{center}
\textbf{Prevodioci i interpretatori - Mart 2004.}\\
prakti\v cni deo
\end{center}
Defini\v simo jezik za opisivanje geometrijskih objekata u
ravni u kome su poznata \v cetiri tipa objekata : \verb"dim" - brojne vrednosti (racionalne),
\verb"point" - ta\v cke, \verb"line" - prave, \verb"segment" - du\v zi i \verb"circle" - kru\v znice.
Jezik poseduje mogu\' cnost definisanja jednoslovnih promenjivih
navedenih tipova, pri \v cemu se prilikom deklaracije promenjive
mogu i inicijalizovati odredjenim vrednostima navodjenjem
inicijalizacionih vrednosti u zagradama. Jezik poseduje i klasi\v cnu naredbu dodele izraza promenjivim.

Jezik je opremljen slede\' cim ugradjenim funkcijama:
\begin{enumerate}
    \item \verb"med(a)" - medijatrisa du\v zi
    \item \verb"distance(A,B)" - rastojanje izmedju ta\v caka
    \item \verb"intersect(a,b)" - ta\v cka preseka pravih
    \item \verb"draw(a)" - ``iscrtavanje'' ta\v cke, du\v zi ili kru\v
    znice. Iscrtavanje se vr\v si tako \v sto se na standardni izlaz
    napi\v se poziv funkcije \verb"plot" sa koordinatama objekta kao \v sto je pokazano u primeru.
\end{enumerate}

Napisati program koji na osnovu ulazne datoteke daje opis svih nacrtanih objekata.

\vskip 1cm

\begin{center}
\textbf{Prevodioci i interpretatori - Mart 2004.}\\
prakti\v cni deo
\end{center}
Defini\v simo jezik za opisivanje geometrijskih objekata u
ravni u kome su poznata \v cetiri tipa objekata : \verb"dim" - brojne vrednosti (racionalne),
\verb"point" - ta\v cke, \verb"line" - prave, \verb"segment" - du\v zi i \verb"circle" - kru\v znice.
Jezik poseduje mogu\' cnost definisanja jednoslovnih promenjivih
navedenih tipova, pri \v cemu se prilikom deklaracije promenjive
mogu i inicijalizovati odredjenim vrednostima navodjenjem
inicijalizacionih vrednosti u zagradama. Jezik poseduje i klasi\v cnu naredbu dodele izraza promenjivim.

Jezik je opremljen slede\' cim ugradjenim funkcijama:
\begin{enumerate}
    \item \verb"med(a)" - medijatrisa du\v zi
    \item \verb"distance(A,B)" - rastojanje izmedju ta\v caka
    \item \verb"intersect(a,b)" - ta\v cka preseka pravih
    \item \verb"draw(a)" - ``iscrtavanje'' ta\v cke, du\v zi ili kru\v
    znice. Iscrtavanje se vr\v si tako \v sto se na standardni izlaz
    napi\v se poziv funkcije \verb"plot" sa koordinatama objekta kao \v sto je pokazano u primeru.
\end{enumerate}

Napisati program koji na osnovu ulazne datoteke daje opis svih nacrtanih objekata.


\newpage
\noindent Npr. za  uneto
\begin{multicols}{2}
\begin{verbatim}
dim d=2; /* Duzina strane trougla */

/* Temena trougla */
point A(0,0);
point B(d,0);
point C(d/2,d);


/* Stranice trougla */
segment a,b,c;
a=segment(B,C);
b=segment(A,C);
c=segment(A,B);

/* Srediste opisane kruznice */
point  P=intersect(med(a),med(c));

/* Opisana kruznica */
circle k(P,distance(P,A));

/* Iscrtavanje crteza */
draw(A,B,C);
draw(a,b,c,segment(A,P));
draw(k);
\end{verbatim}

\noindent program generi\v se:

\begin{verbatim}
plot(0,0);
plot(2,0);
plot(1,2);
plot([2,1],[0,2]);
plot([0,1],[0,2]);
plot([0,2],[0,0]);
plot([0,1],[0,0.75]);
x=1+1.25*cos(fi);y=0.75+1.25*sin(fi);plot(x,y);
\end{verbatim}
\end{multicols}

\noindent Npr. za uneto
\begin{multicols}{2}
\begin{verbatim}
dim d=2; /* Duzina strane trougla */

/* Temena trougla */
point A(0,0);
point B(d,0);
point C(d/2,d);


/* Stranice trougla */
segment a,b,c;
a=segment(B,C);
b=segment(A,C);
c=segment(A,B);

/* Srediste opisane kruznice */
point  P=intersect(med(a),med(c));

/* Opisana kruznica */
circle k(P,distance(P,A));

/* Iscrtavanje crteza */
draw(A,B,C);
draw(a,b,c,segment(A,P));
draw(k);
\end{verbatim}

\noindent program generi\v se:

\begin{verbatim}
plot(0,0);
plot(2,0);
plot(1,2);
plot([2,1],[0,2]);
plot([0,1],[0,2]);
plot([0,2],[0,0]);
plot([0,1],[0,0.75]);
x=1+1.25*cos(fi);y=0.75+1.25*sin(fi);plot(x,y);
\end{verbatim}
\end{multicols}


\noindent Npr. za uneto
\begin{multicols}{2}
\begin{verbatim}
dim d=2; /* Duzina strane trougla */

/* Temena trougla */
point A(0,0);
point B(d,0);
point C(d/2,d);


/* Stranice trougla */
segment a,b,c;
a=segment(B,C);
b=segment(A,C);
c=segment(A,B);

/* Srediste opisane kruznice */
point  P=intersect(med(a),med(c));

/* Opisana kruznica */
circle k(P,distance(P,A));

/* Iscrtavanje crteza */
draw(A,B,C);
draw(a,b,c,segment(A,P));
draw(k);
\end{verbatim}

\noindent program generi\v se:

\begin{verbatim}
plot(0,0);
plot(2,0);
plot(1,2);
plot([2,1],[0,2]);
plot([0,1],[0,2]);
plot([0,2],[0,0]);
plot([0,1],[0,0.75]);
x=1+1.25*cos(fi);y=0.75+1.25*sin(fi);plot(x,y);
\end{verbatim}
\end{multicols}


\end{document}
