\documentclass[12pt, a4paper]{article}
 
\newcounter{conta}
\newcounter{conta2}

\hyphenation{geo-gra-fia es-pe-cia-li-za-das e-xem-plo pro-je-to
com-ple-xi-da-de de-sa-pa-re-ce a-bor-da-gem co-mo}

\begin{document}

\vspace*{4cm}
\begin{flushleft} \LARGE\bf
Cap\'{\i}tulo 3: Listas, Operadores, Aritm\'etica
\end{flushleft}

\vspace*{.5cm}
\begin{itemize} \LARGE
 \item Representa\c c\~ao de listas
 \item Algumas opera\c c\~oes sobre listas
 \item Nota\c c\~ao de operador
 \item Aritm\'etica
\end{itemize}
\vfill
\ 

\pagebreak
\noindent{\Huge\bf Representa\c c\~ao de listas}

\vspace*{2cm}
\noindent {\bf\LARGE Nota\c c\~ao para lista:}

\begin{enumerate} \Large
 \item \verb|[]| \'e uma lista (vazia);
 \item se $t$ \'e termo e $L$ \'e lista, ent\~ao
       \verb|.(|$t$\verb|,|$L$\verb|)| \'e lista.
\end{enumerate}

\vspace*{.5cm}
\noindent {\bf\LARGE Exemplo:}

\begin{itemize}\Large
 \item \verb|.(ann,.(tennis,.(tom,.(skiing,[]))))]|
\end{itemize}

\vfill
\hfill Cap\'{\i}tulo 3: Listas, Operadores, Aritm\'etica

\pagebreak
\noindent {\bf\LARGE Uma nota\c c\~ao mais usada:}

\begin{enumerate} \Large
 \item \verb|[]| \'e uma lista (vazia);
 \item se $t_1, t_2,\ldots,t_n$ s\~ao termos e/ou listas,
       \verb|[|$t1$\verb|,|$t2$\verb|,|\ldots\verb|,|$t_n$\verb|]|
       \'e lista.
\end{enumerate}

\vspace*{.5cm}
\noindent {\bf\LARGE Exemplos:}

\begin{itemize}\Large
 \item \verb|[ann,tennis,tom,skiing]|
 \item \verb|[ann,[tennis,music],tom,[skiing,food]]|
\end{itemize}

\vspace*{2cm}
\noindent {\bf\LARGE Outra nota\c c\~ao muito usada:}

\begin{enumerate} \Large
 \item \verb|[]| \'e uma lista (vazia);
 \item se $t_1, t_2,\ldots,t_n$ s\~ao termos, $n\geq 1$ e $L$ \'e lista, ent\~ao
       \verb|[|$t1$\verb|,|$t2$\verb|,|\ldots\verb|,|$t_n$\verb#|#$L$\verb|]|
       \'e lista
\end{enumerate}

\vspace*{.5cm}
\begin{itemize}\Large
 \item \verb#[ann,tennis,|[tom,skiing]]#
 \item \verb#[ann,[tennis,music],tom,|[[skiing,food]]]#
\end{itemize}

\vspace*{1cm}
\noindent{\Large\bf $\Rightarrow$ Tais nota\c c\~oes podem ser misturadas.}

\vfill
\hfill Cap\'{\i}tulo 3: Listas, Operadores, Aritm\'etica

\pagebreak
\noindent{\Huge\bf Algumas opera\c c\~oes sobre listas}

\vspace*{2cm}
\begin{itemize} \Large
 \item \verb#member(X,L)# : \verb#X# ocorre em \verb#L#.
 \item \verb#append(L1,L2,L3)# : \verb#L3# \'e \verb#L1# concatenada com
       \verb#L2#. 
 \item \verb#del(X,L,L1)# : \verb#L1# \'e \verb#L# com \verb#X# removido. 
 \item \verb#insert(X,L,L1)# : \verb#L1# \'e \verb#L# com \verb#X# inserido. 
 \item \verb#sublist(L1,L2)# : \verb#L1# \'e sublista de \verb#L2#.
 \item \verb#permutation(L1,L2)# \verb#L2# \'e permuta\c c\~ao de \verb#L1#.
\end{itemize}

\vfill
\hfill Cap\'{\i}tulo 3: Listas, Operadores, Aritm\'etica

\pagebreak

\end{document}
\noindent{\Huge Significado declarativo de programas Prolog}

\vspace*{2cm}
\begin{itemize} \Large
 \item {\bf Inst\^ancia} de uma cl\'ausula: obtida substituindo-se suas vari\'aveis por termos.

        \vspace*{3mm}
        Inst\^ancias de \verb|hasachild(X) :- parent(X,Y).|:
        \begin{enumerate}
         \item[\ \ ] \verb|hasachild(A) :- parent(A,B).| (variante)
         \item[\ \ ] \verb|hasachild(ann) :- parent(ann,B).|
         \item[\ \ ] \verb|hasachild(pat) :- parent(pat,small(carol)).|
        \end{enumerate}

 \vspace*{1cm}
 \item Uma meta $G$ \'e {\em verdadeira\/} se, e somente se:
         \begin{enumerate}
          \item[(1)] h\'a uma cl\'ausula $C$ tal que
          \item[(2)] h\'a uma inst\^ancia $I$ de $C$ tal que
                        \begin{enumerate}
                         \item[(a)] a cabe\c ca de $I$ \'e id\^entica a $G$, e
                         \item[(b)] as metas do corpo de  $I$ s\~ao verdadeiras.
                       \end{enumerate}
         \end{enumerate}
\end{itemize}

\vfill
\hfill Cap\'{\i}tulo 2: Sintaxe e Significado de Programas Prolog

\pagebreak
\noindent{\Huge\bf Significado procedural}


\vfill
\hfill Cap\'{\i}tulo 2: Sintaxe e Significado de Programas Prolog

\pagebreak
\

\vfill
\hfill Cap\'{\i}tulo 2: Sintaxe e Significado de Programas Prolog

\pagebreak
\noindent{\Huge\bf Exemplo: macaco e bananas}

\vspace*{2cm}
\noindent {\LARGE\bf Estado inicial do ``mundo do macaco''}:

\vspace*{3mm}
\begin{itemize}\Large

 \item Macaco est\'a na porta.

 \item Macaco est\'a no ch\~ao.

 \item Caixa est\'a na janela.

 \item Macaco est\'a sem banana.

\end{itemize}


\vspace*{8cm}
\noindent {\LARGE\bf Estado meta}: {\Large\verb|state(_,_,_,has)|}

\vfill
\hfill Cap\'{\i}tulo 2: Sintaxe e Significado de Programas Prolog

\pagebreak
\noindent {\LARGE\bf Movimentos}:

\begin{itemize}\Large

 \item Formaliza\c c\~ao: \verb|move(State1,Move,State2)|

 \item {\LARGE\bf 4 operadores}:

       \begin{enumerate}\Large

        \item[(1)] pegue banana ({\em grasp}).

                   \verb|move(state(middle,onbox,middle,hasnot),| \\
                   \hspace*{1.6cm}\verb|grasp,| \\
                   \hspace*{1.6cm}\verb|state(middle,onbox,middle,has))|

        \item[(2)] suba na caixa ({\em climb}).

                   \verb|move(state(P,onfloor,P,H),| \\
                   \hspace*{1.6cm}\verb|climb,| \\
                   \hspace*{1.6cm}\verb|state(P,onbox,P,H))|

        \item[(3)] empurre a caixa ({\em push}).

                   \verb|move(state(P1,onfloor,P1,H),| \\
                   \hspace*{1.6cm}\verb|push(P1,P2),| \\
                   \hspace*{1.6cm}\verb|state(P2,onfloor,P2,H))|

        \item[(4)] ande ({\em walk}).

                   \verb|move(state(P1,onfloor,B,H),| \\
                   \hspace*{1.6cm}\verb|walk(P1,P2),| \\
                   \hspace*{1.6cm}\verb|state(P2,onfloor,B,H))|

       \end{enumerate}
\end{itemize}

\vspace*{1cm}
\noindent {\LARGE\bf A consulta}:

\begin{enumerate}\large

 \item[\ ] \verb|?- canget(state(atdoor,onfloor,atwindow,hasnot)).|
       

\end{enumerate}

\vfill
\hfill Cap\'{\i}tulo 2: Sintaxe e Significado de Programas Prolog

\pagebreak
\noindent {\LARGE\bf O programa}:

\vfill
\hfill Cap\'{\i}tulo 2: Sintaxe e Significado de Programas Prolog

\pagebreak
\noindent{\Huge\bf Ordem das cl\'ausulas e metas}

\vspace*{1cm}
\noindent {\Large Se a cl\'ausula}

\begin{enumerate} \Large
 \item[\ \ \ ]     \verb|move(state(P1,onfloor,B,H),| \\
                   \hspace*{1.6cm}\verb|walk(P1,P2),| \\
                   \hspace*{1.6cm}\verb|state(P2,onfloor,B,H))|
\end{enumerate}

\noindent {\Large for a primeira,}

\begin{enumerate} \Large
 \item[\ ] \verb|?- canget(state(atdoor,onfloor,atwindow,hasnot)).|
\end{enumerate}

\noindent {\Large causa {\em loop\/}}:

\begin{enumerate} \large
 \item[(1)] \verb|canget(state(atdoor,onfloor,atwindow,hasnot)).|
 \item[(2)] \verb|move(state(atdoor,onfloor,atwindow,hasnot),M',S2'),| \\
            \verb|canget(S2')|
 \item[(3)] \verb|canget(state(P2',onfloor,atwindow,hasnot))|
 \item[(4)] \verb|move(state(P2',onfloor,atwindow,hasnot),M'',S2''),| \\
            \verb|canget(S2'')|
 \item[(5)] \verb|canget(state(P2'',onfloor,atwindow,hasnot))|
 \item[(6)] \verb|move(state(P2'',onfloor,atwindow,hasnot),M''',S2'''),| \\
            \verb|canget(S2''')|
 \item[(7)] \verb|canget(state(P2''',onfloor,atwindow,hasnot))|
\end{enumerate}

\vfill
\hfill Cap\'{\i}tulo 2: Sintaxe e Significado de Programas Prolog

\pagebreak

\end{document}

