\begin{questions}
\item \textit{La programmation dynamique.}

\begin{questions}
\item \textit{Faux}. La mémoïsation, ou Top Down, est une forme récursive.

\item \textit{Faux}. La technique décrite dans la question est celle du Bottom Up. La programmation dynamique, quant à elle, consiste à découper un problème en plusieurs sous-problèmes de tailles inférieures et en utilisant l'une des techniques Bottom Up ou Top Down pour les résoudre.

\item \textit{Faux}. La programmation dynamique ne sert que lorsque la variable est entière.

\item \textit{Faux}. Nous avons vu dans le cours qu'il existait d'autres façons que la programmation dynamique pour résoudre le problème du rendu de monnaie, comme l'approche gloutonne ou diviser pour régner. Cependant, la programmation dynamique a pour objectif d'optimiser le code. C'est donc cette technique qui est préférable aux autres car elle nécessite moins d'opérations de calcul et de traitement que les autres.
\end{questions}

\item \textit{La Programmation Orientée Objet (POO).}

\begin{questions}
\item \textit{Faux}. Une \textit{méthode} est une \textit{fonction} d'une classe. Les \textit{attributs} sont les variables de la classe.

\item \textit{Vrai}. On peut tout à fait définir une classe sans la méthode \verb+_+\verb+_+\texttt{init}\verb+_+\verb+_+. En voici un exemple :
\begin{listing}{}{04-vf.py}\end{listing}
\Par
qui renvoie \og 50 \fg.

Le constructeur \_\_\texttt{init}\_\_ est rendu obligatoire dès lors qu'un paramètre est passé lors de l'appel de la classe (par exemple,\linebreak \texttt{d = toto(7)}) ou qu'il est nécessaire d'initialiser certains attributs dès la création de l'objet.
\end{questions}

\end{questions}
