\documentclass[11pt]{article}
\usepackage{a4}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage[french]{babel}
\usepackage{epsfig}
\renewcommand{\baselinestretch}{1}
\newcommand{\bm}[1]{\mbox{\boldmath $ #1 $ }}
\newcommand{\model}[1]{\mbox{\boldmath$#1$\unboldmath}}
\newcommand{\emmodel}[1]{\mbox{\em {\bf #1}}}
\newcommand{\vs}{\vspace{1cm}}
\newcommand{\hs}{\hspace{1cm}}
\newcommand{\pp}{\vspace{6 mm}}
\newcommand{\ov}{\overline}

\newcommand{\N}{\mathbb N}
\newcommand{\Z}{\mathbb Z}
\newcommand{\Q}{\mathbb Q}
\newcommand{\R}{\mathbb R}
\newcommand{\C}{\mathbb C}

\begin{document}
%=09\pagestyle{empty}
\noindent {\bf Institut Galil\'ee - Universit\'e Paris 13}
\hfill{\bf Ann\'ee 1999-2000}\\
{\bf DEUG STPI 1\`ere ann\'ee}
\hfill {\bf D\'ecouverte : Informatique}\\

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{center}
{\large {\bf Examen d'informatique\\
}}
Jeudi 20 janvier 2000\\
(dur\'ee : 3 heures)
\end{center}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{itemize}
\item[$\bullet$] Les notes de cours/TD/TP et les calculatrices sont interdites !
\item[$\bullet$] La note globale tiendra compte de la qualit\'e de la pr\'esentation !
\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Exercice~1~: cours}
\begin{enumerate}
\item Indiquer en deux lignes en quoi {\em consiste} la compilation d'un
programme. Donner le {\em nom} des \'etapes importantes de la compilation.
\item Il existe diff\'erents types de langages de programmation, et
plusieurs langages par type. Citer deux {\em types} de langages de programmation, 
 pour chaque type donner le nom d'au moins un {\em langage} de programmation.
\end{enumerate}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section*{Exercice~2~: quelques logiciels...}
Pour chacun des logiciels de la colonne de gauche,
dire \`a quelle famille de logiciels de la colonne de droite il appartient.

\quad\\
\noindent
\begin{tabular}{|c  |c |}
\hline
Word  &    syst\`eme d'exploitation \\
MS DOS &   langage de programmation \\
Excel & traitement de texte \\
Mamias & compacteur \\ 
GNU C & tableur \\
Turbo Pascal & calcul formel \\ 
Windows NT & dessin assist\'e par ordinateur\\
Gzip & navigateur\\
Maple&  d\'eplaceur de fichier\\
GNU Emacs & logiciel de biologie\\
\hline
\end{tabular}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newpage
\section*{Exercice~3~: cycles d'ex\'ecution}
\noindent
Consid\'erons le programme r\'esidant en m\'emoire principale de la
figure ci-dessous~: \\
\begin{center}
\epsfig{file=examen-uct.eps, width=8cm}
\end{center}
{\bf Note~:} les instructions MAMIAS sont rappel\'ees en annexe.
\begin{enumerate}
%=09\item
%=09Traduisez-le en langage machine (code binaire sur $8$ bits). \\
%=09{\bf Note~:} vous pouvez vous aider des instructions MAMIAS rappel\'ees en annexe.
\item
Ex\'ecutez-le ``\`a la main'' pour compl\'eter le tableau suivant~:
\begin{center}
\begin{tabular}{|c|c|c|c|c|c|c|}
\hline
fin du cycle $n^o$& Instruction & CP & Acc & case modifi\'ee \\
\hline
\dotfill & \dotfill & \dotfill & \dotfill & \dotfill  \\
\dotfill & \dotfill & \dotfill & \dotfill & \dotfill  \\
\vdots & \vdots   & \vdots   & \vdots  & \vdots     \\
\dotfill & \dotfill & \dotfill & \dotfill & \dotfill  \\
\hline
\end{tabular}
\end{center}
\item[]
\item 
Donner les \'etats de la m\'emoire (\underline{code binaire sur $8$
bits}) avant et apr\`es l'ex\'ecution.

\end{enumerate}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Exercice~4~: un peu de programmation}
Pour les trois questions suivantes, on ignorera les probl\`emes de
d\'epacement de capacit\'e.
\begin{enumerate}
\item
\'Ecrire un programme MAMIAS (en code mn\'emonique) qui permet de lire
les valeurs des entiers $a$ (stock\'e \`a l'adresse $30$) et $b$ 
(stock\'e \`a l'adresse $31$)
puis de ranger leur somme dans la case m\'emoire num\'ero $29$.
\item
En d\'eduire un programme MAMIAS (en code mn\'emonique) qui permette de lire
les valeurs des entiers $a$ (stock\'e \`a l'adresse $30$) 
et $b$ (stock\'e \`a l'adresse $31$)
puis de ranger leur produit dans la case m\'emoire num\'ero $29$.
\item
\'Ecrire un programme MAMIAS (en code mn\'emonique) qui permet de lire
les valeurs des entiers $a$ (stock\'e \`a l'adresse $30$) et $b$ 
(stock\'e \`a l'adresse $31$)
puis de ranger la valeur de $a^b$ dans la case m\'emoire num\'ero $29$.
\end{enumerate}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%=09\section*{Exercice~3~: changement de base}
%=09\noindent
%=09\begin{enumerate}
%=09\item=20
%=09Remplissez les cases vides du tableau suivant~:=20
%=09\begin{center}
%=09\begin{tabular}{|c|c|c|c|c|c|c|}
%=09\hline
%=09base 2=09 & base 5   & base 8   & base 10  & base 12  & base 16  & base 64  \\ \hline
%=0910=09 & \dotfill & \dotfill & \dotfill & \dotfill & \dotfill & \dotfill \\
%=09\dotfill & 10=09    & \dotfill & \dotfill & \dotfill & \dotfill & \dotfill \\
%=09\dotfill & \dotfill & 10       & \dotfill & \dotfill & \dotfill & XXXXXX   \\
%=09\dotfill & \dotfill & \dotfill & 10       & \dotfill & \dotfill & XXXXXX   \\
%=09\dotfill & \dotfill & \dotfill & \dotfill & 10       & \dotfill & XXXXXX   \\=20
%=09\dotfill & \dotfill & \dotfill & \dotfill & \dotfill & \dotfill & 10=09=  \\ \hline
%=09\end{tabular}
%=09\end{center}
%=09\item ...
%=09\end{enumerate}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Exercice~5~: codage et op\'erations arithm\'etiques}
\begin{enumerate}
\item
Skywalker vient de d\'erober un document donnant les
coordonn\'ees $(x,y,z)$ de l'\'Etoile Noire. Il donne le document \`a
d\'ecoder au robot R2D2. Quelles valeurs ce tas de ferraille 
attribuera-t-il aux coordonn\'ees  $(1111, 1010, 0101)$
suivant qu'elles sont cod\'ees comme~:
\begin{enumerate}
\item des entiers non sign\'es~?
\item des entiers en compl\'ement \`a 1~?
\item des entiers en compl\'ement \`a 2~?
\item des entiers en signe et valeur absolue~?
\end{enumerate}
%=09Par ailleurs, il sait que le nombre d'habitants de l'\'Etoile
%Noire est $(1666)_7$,
%c'est-\`a-dire (en d\'ecimal)~?
\item
Donner la valeur d\'ecimale de $BE400000_{16}$ en supposant que c'est le code~:
\begin{enumerate}
\item d'un r\'eel en format IEEE 754 simple pr\'ecision.
\item d'un entier sign\'e en compl\'ement \`a 2.
\end{enumerate}
\item
Convertir les r\'eels suivants en format IEEE 754~:
\begin{enumerate}
\item 0,37
\item -31,175
\item $(20,[12]\dots)_3$
\end{enumerate}
\item
On suppose que les entiers sign\'es sont cod\'es en compl\'ement \`a 2.
Effectuer les op\'erations suivantes (sur le m\^eme nombre de bits que
les op\'erandes) et indiquer \`a chaque fois s'il y a un d\'epacement 
de capacit\'e ou pas~:
\begin{enumerate}
\item $011101 + 011111$
\item $11101100 -  00011111$
\item $BE400000 + BF200000$
\end{enumerate}
\end{enumerate}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Exercice~6}
\noindent
Soit la conversion num\'erique~: $(2501)_a = (5302)_b$. 
Sachant que~  $a<10$ et $b < 10$, quelles sont les bases $a$ et $b$~?
% seule reponse a=9, b=7
% pour fun 1263,931 aussi solution
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newpage
\section*{Exercice~7~: programmes en C}

On rappelle qu'en langage C,
  $=$ est l'affectation, $==$ le test d'\'egalit\'e
et $!=$ le test de diff\'erence. On rappelle de plus 
que $n\%2$ renvoie $n$ modulo 2.

\begin{enumerate}
\item
Que va afficher le programme suivant ? \\
\noindent
\#include $<$stdio.h$>$\\
main()\\
\{int $n$;\\
$n=15;$\\
while $(n!=1)$ \{if $(n\%2==1)$ $n$=$n$+1; else $n$=$n-$1; \}\\
printf(``\%d'',$n$);\\
\}\\
\item  Que va afficher le programme suivant ?\\
\noindent
\#include $<$stdio.h$>$\\
main()\\
\{int $n$;\\
$n=15$;\\
while $(n!=1)$ \{if $(n\%2==1)$ $n$=3$*n$+1; else $n=n/2$; \}\\
printf(``\%d'',$n$);\\
\}\\
\end{enumerate}


\section*{Annexe : instructions en MAMIAS}
\noindent
\begin{center}
\begin{tabular}{|l|l|l|}
\hline
code & mn\'emonique & signification \\
\hline \hline
000 & INIT $x$ & Acc $\leftarrow x$ \\
\hline
001 & CHARGE $n$ & Acc $\leftarrow (n)$ \\
\hline
010 & RANGE $n$ & $(n) \leftarrow$ Acc \\
\hline
011 & ET $n$ & Acc $\leftarrow$ Acc ET $(n)$ (op\'eration binaire) \\
\hline
100 & SAUTE $n$ & si Acc $=0$ alors aller \`a l'adresse $n$ \\
\hline
101 & ADD $n$ & $(n)\leftarrow \mbox{Acc} + (n)$ \\
\hline
110 & DEC $x$ & d\'ecale le contenu de Acc de $x$ positions~: \\
    &         &  - vers la gauche si $x\geq 0$ \\
    &         &  - vers la droite si $x<0$ \\
\hline
111 & STOP & arr\^ete l'ex\'ecution. \\
\hline
\end{tabular}
\\
\end{center}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Bar\^eme indicatif}
\noindent
%{\bf La note globale tiendra compte de la qualit\'e de la
%pr\'esentation !}\\\\
\begin{tabular}{l l}
{\bf Exercice 1~: } 3 pts (= 2 + 1) & {\bf Exercice 2~: } 1 pt \\
{\bf Exercice 3~: } 2 pts (= 1 + 1) & {\bf Exercice 4~: } 4 pts (= 1 + 2 + 1) \\
{\bf Exercice 5~: } 6 pts (= 2 + 1 + 1,5 + 1,5) & {\bf Exercice 6~: } 2 pts \\
{\bf Exercice 7~: } 2 pts (=1 + 1) &\\
\end{tabular}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{document}



