\documentclass[12pt,a4paper,titlepage,openany, oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[top=1.5cm, bottom=4cm]{geometry}
\usepackage{fancyhdr, graphicx, array, hyperref}

\pagestyle{fancy}

\title{\textsc{\textbf{Spécifications détaillées\\Interpréteur du langage LIR}}}
\date{}
\author{Nicolas \textsc{Caminade} \and Sylvan \textsc{Courtiol} \and
    Pierre \textsc{Debas} \and Heïa \textsc{Dexter} \and Lucàs
    \textsc{Vabre} }
\begin{document}
    \lhead{\leftmark}
    \rhead{
        \includegraphics[width=2cm]{./img/logoiut}
    }

    \cfoot{\thepage}
    \headheight = 2cm
    \headsep = 0.5cm

    \begin{titlepage}
        \fontfamily{pag}\selectfont

        \begin{center}\normalsize
            \MakeUppercase{IUT de Rodez \hfill Département informatique
                \hfill INFO1 2020-2021}
        \end{center}
        \vspace*{0.1cm}
        \hrule
        \vspace*{0.2cm}
        \begin{flushright}
            \includegraphics[width=4cm]{./img/logoiut}
        \end{flushright}
        \vspace*{2cm}
        \begin{flushright}\Huge
            \textsc{\textbf{Spécifications détaillées
                    \\Interpréteur du langage LIR}}
        \end{flushright}
        \hrule
        \begin{flushleft}
            \MakeUppercase{Projet proposé par Frédérique Barrios}
        \end{flushleft}
        \vspace*{2cm}
        \begin{center}\Large
            Nicolas \textsc{Caminade}, Sylvan \textsc{Courtiol},\\
            Pierre \textsc{Debas}, Heïa \textsc{Dexter}, \\
            Lucàs \textsc{Vabre}
        \end{center}
        \vfill
        \begin{center}\normalsize
            \MakeUppercase{Projet tuteuré --- Semestre 2}
        \end{center}
    \end{titlepage}

    \renewcommand\rmdefault{pag}
    \fontfamily{pag}\selectfont
    \renewcommand{\sfdefault}{pag}

    % Sommaire
    \renewcommand{\contentsname}{Sommaire}
    \tableofcontents

    \chapter*{Introduction}
    \Large
    Le projet interpréteur LIR a été réalisé selon un modèle de cycle
    de vie itératif. Dans ce document des spécifications détaillées du
    projet seront présentés les fonctionnalités ajoutées à l'interpréteur
    au cours de chaque itération avec les récits d'utilisation des
    fonctionnalités ajoutées ou des éléments nécessaires au bon
    fonctionnement de l'interpréteur LIR.


    \large
    \chapter{Première itération}

    \section*{Contenu de la première itération}
    Dans cette première itération, l'objectif est d'avoir un
    prototype de l'interpréteur avec des fonctionnalités de base.
    Ces premières fonctionnalités sont les commandes et instructions suivantes :
    \begin{itemize}
        \item Commande \verb|debut| qui efface toutes les lignes de
              programme mémorisées ainsi que tous les identificateurs
              mémorisés.
        \item Commande \verb|fin| qui quitte l'interpréteur.
        \item Commande \verb|defs| qui affiche le contexte de
              l'interpréteur, i.e. affiche la liste des identificateurs
              définis durant la session avec leur valeur.
        \item Instruction \verb|affiche| qui évalue la valeur de
              l'expression et l'affiche sur la sortie texte courante ou
              alors provoque un saut de ligne sur la sortie texte
              courante.
        \item Instruction \verb|var| qui affecte la valeur de
              l'expression à la variable nommée par l’identificateur.
    \end{itemize}


    \footnotesize
    \chapter*{Récits d'utilisation proposés lors de l'itération 1}
    \input{./iteration1/userStoryCommande.tex}
    \newpage
    \input{./iteration1/userStoryCommandeDebut.tex}
    \input{./iteration1/userStoryCommandeFin.tex}
    \input{./iteration1/userStoryCommandeDefs.tex}
    \input{./iteration1/userStoryCommandeAffiche.tex}
    \input{./iteration1/userStoryCommandeAfficheExpression.tex}
    \input{./iteration1/userStoryCommandeVarChaine.tex}
    \input{./iteration1/userStoryCommandeVarEntier.tex}
    \input{./iteration1/userStoryConcatenation.tex}
    \input{./iteration1/userStoryExpressionLogique.tex}
    \input{./iteration1/userStoryExpressionArithmetique.tex}

    \large
    \chapter{Deuxième itération}
    \section*{Contenu de la deuxième itération}
    Dans cette deuxième itération, l'objectif est d'ajouter des
    fonctionnalités permettant l'écriture de programmes simple
    en LIR, à savoir :
    \begin{itemize}
        \item Commande \verb|efface| qui efface toutes les lignes
              de programme dont le numéro d’étiquette est dans la
              plage comprise entre \verb|<etiquette_debut>| et
              \verb|<etiquette_fin>|.
        \item Commande \verb|lance| qui démarre l’exécution d’un
              programme à partir de son plus petit numéro d’étiquette
              ou du numéro d'étiquette indiqué par l'utilisateur.
        \item Commande \verb|liste| qui affiche toutes les lignes de
              programme mémorisées dans l'ordre croissant des numéros
              de ligne.
        \item Instruction \verb|stop| qui arrête l'exécution du programme.
        \item Instruction \verb|vaen| qui continue l'exécution à partir
              du numéro spécifié par étiquette.
        \item Instruction \verb|procedure| qui transfère l'exécution du
              programme au numéro d’étiquette spécifié et qui reprendra
              en séquence lorsque la procédure sera terminée.
        \item Instruction \verb|retour| qui, rencontrée après un appel
              de procédure, provoque un retour à l'instruction qui suit
              son appel.
    \end{itemize}

    \footnotesize
    \chapter*{Récits d'utilisation proposés lors de l'itération 2}
    \input{./iteration2/userStoryCommandeEfface.tex}
    \newpage
    \input{./iteration2/userStoryCommandeLance.tex}
    \input{./iteration2/userStoryCommandeStop.tex}
    \input{./iteration2/userStoryEtiquette.tex}
    \input{./iteration2/userStoryInstruction.tex}
    \input{./iteration2/userStoryInstructionVaen.tex}
    \input{./iteration2/userStoryLanceEtiquette.tex}
    \input{./iteration2/userStoryProcedure.tex}
    \input{./iteration2/userStoryRetour.tex}
    \input{./iteration2/userStroryListeArgument.tex}
    \input{./iteration2/userStroryListeVoid.tex}

    \large
    \chapter{Troisième itération}
    \section*{Contenu de la première itération}
    Dans cette troisième itération, l'objectif est de couvrir toutes
    les fonctionnalités attendues. Ces dernières  concernent la
    lecture et l'écriture de fichier et l'ajout d'une structure de
    contrôle à l'interpréteur :
    \begin{itemize}
        \item Commande \verb|sauve| qui sauvegarde les lignes de
              programme dans le fichier texte indiqué en argument.
        \item Commande \verb|charge| qui charge dans le contexte
              les lignes de programme sauvegardées dans le fichier
              texte indiqué en argument.
        \item Instruction \verb|si... vaen| : si la condition est
              vraie alors l'exécution continuera à partir du numéro
              de ligne spécifié par l’étiquette, sinon l'exécution
              continuera en séquence.
    \end{itemize}

    \footnotesize
    \chapter*{Récits d'utilisation proposés lors de l'itération 3}
    \input{./iteration3/userStoryCommandeSauve.tex}
    \newpage
    \input{./iteration3/userStoryCommandeCharge.tex}
    \input{./iteration3/userStoryInstructionSiVaen.tex}

\end{document}
