\documentclass[a4paper,10pt,pdftex,usenames,dvipsnames]{article}
\usepackage[cm]{aeguill}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{textcomp}
\usepackage[french]{babel}
\usepackage{graphicx}
\usepackage{subfigure}
\usepackage{array}
\usepackage{arydshln}
\usepackage{multirow}
\usepackage{multicol}
\usepackage{siunitx}
\usepackage{color}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{latexsym}
\usepackage{wasysym}
\usepackage{pifont}
\usepackage{fancybox}
\usepackage{pdfpages}
\usepackage{verbatim}
\usepackage{lastpage}
\usepackage{soul}
\usepackage{lineno}
\usepackage[version=3]{mhchem}
\usepackage{chemfig}
\usepackage[all]{xy}
%\usepackage[inline]{asymptote}
\usepackage{geometry}
\usepackage{csquotes}
\usepackage{hyperref}

\usepackage[francais,bloc,completemulti,ensemble]{automultiplechoice}


\begin{document}

\AMCrandomseed{1237893}

\setdefaultgroupmode{withoutreplacement} % permet le mélange des questions. Préparation des groupes

\element{general}{
  \begin{question}{Types-de-variables}
    Quels sont les types de base du Fortran90?
    \begin{reponses}
      \mauvaise{Integer, Real, Double Precision, Character}
      \bonne{Integer, Character, Real, Logical}
      \mauvaise{Integer, Complex, Character, Logical}
      \mauvaise{Integer, Logical, Structure, Character, Complex}
      \mauvaise{Real, Double precision, Logical, String}
    \end{reponses}
  \end{question}
}

\element{general}{
  \begin{questionmult}{Commentaire}
    Par quel(s) signe(s) un commentaire est-il introduit?
    \begin{reponses}
      \mauvaise{\verb/#/}
      \mauvaise{\verb/-->/}
      \bonne{\verb/!/}
      \bonne{\verb/!!/}
      \mauvaise{\verb/@/}
    \end{reponses}
  \end{questionmult}
}

\element{general}{
  \begin{question}{Continuation-de-ligne}
    Lorsqu'une ligne est trop longue, il est possible de la continuer sur la ligne suivante. Quel signe permet de faire cette continuation?
     \begin{reponses}
       \mauvaise{\verb/#/}
       \mauvaise{\verb/%/}
       \mauvaise{\verb/@/}
       \bonne{\verb/&/}
       \mauvaise{\verb/*/}
     \end{reponses}
  \end{question}
}

\element{general}{
  \begin{questionmult}{Parameter}
    Lorsqu'à un type de données est associé l'attribut \textsl{Parameter}
    \begin{reponses}
      \bonne Dans la déclaration, on peut réaliser un calcul arithmétique pour obtenir la valeur du paramètre
      \mauvaise On peut changer la valeur du paramètre à tout moment dans le programme
      \bonne On peut le passer en paramètre d'une subroutine ou d'une fonction
      \mauvaise On ne peut pas le passer en paramètre d'une subroutine ou d'une fonction
      \bonne On ne peut pas changer la valeur du paramètre dans le programme
    \end{reponses}
  \end{questionmult}
}


\element{general}{
  \begin{question}{Calcul-1}
    Dans un programme des valeurs sont données à des variables, tel que: $x=2.0$, $a=4.0$ et $b=4.0$. Quel est le résultat de l'opération $a*x-b**2/x$?
    \begin{reponses}
      \mauvaise -2.0
      \mauvaise -1.0
      \bonne 0.0
      \mauvaise 2.0
      \mauvaise 3.0
    \end{reponses}
  \end{question}
}

\element{general}{
  \begin{question}{Calcul-2}
    Dans un programme des valeurs sont données à des variables, tel que: $x=1.0$, $y=2.0$ et $w=3.0$. Quel est le résultat de l'opération $2.0(x(y+3.0)+w)$?
    \begin{reponses}
      \mauvaise 16.0
      \mauvaise 12.0
      \bonne Indéterminée car erreur de synthaxe
      \mauvaise 10.0
      \mauvaise 14.0
    \end{reponses}
  \end{question}
}

\element{general}{
  \begin{questionmult}{Commande-executable}
    Dans un programme quelles sont les commandes exécutables, c'est-à-dire qu'elles sont exécutées uniquement lorsque le programme est lancé (et non à la compilation)?
    \begin{reponses}
      \mauvaise Dimension
      \bonne Allocate
      \mauvaise Parameter
      \bonne Close
      \mauvaise Structure
    \end{reponses}
  \end{questionmult}
}

\element{general}{
  \begin{question}{Where}
    Dans un programme, la fonction \textsl{Where} permet:
    \begin{reponses}
      \mauvaise de récupérer la ligne du fichier d'entrée que le programme est en train de lire
      \mauvaise de retourner le nom de la subroutine ou de la fonction en court d'exécution
      \bonne d'exécuter une action sur une portion de tableau définie par la condition  \textsl{Where}
      \mauvaise de savoir dans quel répertoire se trouve le fichier exécutable du programme
      \mauvaise de savoir où en est l'indice dans une boucle \textsl{do \ldots enddo}
    \end{reponses}
  \end{question}
}

\element{general}{
  \begin{questionmult}{Attribut-intent}
    L'attribut intent(in) permet:
    \begin{reponses}
      \bonne d'utiliser le contenu d'une variable dans une expression mais de ne pas la modifier
      \mauvaise d'utiliser une variable et d'en changer la valeur si besoin
      \bonne de protéger une variable pour éviter d'en changer le contenu
      \bonne de détecter des erreurs lors de la compilation
      \mauvaise de ne pas devoir systématiquement déclarer des "variables" comme paramètre
    \end{reponses}
  \end{questionmult}
}

\element{general}{
  \begin{question}{Commande-linux}
    Si je veux effacer un répertoire contenant des données je dois utiliser la commande:
    \begin{reponses}
      \mauvaise delete
      \mauvaise rmdir
      \mauvaise mkdir
      \bonne rm -r
      \mauvaise rm
    \end{reponses}
  \end{question}
}

\element{ouverte}{
  \begin{question}{suite}
    On souhaite calculer la somme des termes de la suite $U_n=2^n$. Le début du programme est donné ci-dessous. Compléter le programme de manière à calculer la somme et à l'écrire à l'écran. La somme s'arrêtera au 20ème terme de la suite.
\begin{verbatim}
program somme_d_une_suite

implicit none

integer :: i, somme  ! i= compteur de la boucle do...enddo

                               ! somme=somme des termes

somme=0

...
\end{verbatim}

\AMCOpen{lines=20}{\wrongchoice[F]{f}\scoring{0}\wrongchoice[P]{p}\scoring{2.5}\correctchoice[J]{j}\scoring{5}}
  \end{question}
}

\element{ouverte}{
  \begin{question}{erreur}
  Le programme suivant contient une erreur. Trouver cette erreur, expliquer pourquoi c'est une erreur et corriger le programme en conséquence.
\begin{verbatim}
Program arithmetique

  implicit none

  integer :: a, b, c, r, x

  a=2
  b=4
  c=5
  r=((b+a)*(b-a))/c**2
  x=a/r

  print*, x

end program arithmetique
\end{verbatim}

\AMCOpen{lines=20}{\wrongchoice[F]{f}\scoring{0}\wrongchoice[P]{p}\scoring{2.5}\correctchoice[J]{j}\scoring{5}}
  \end{question}
}


\exemplaire{13}{

%%% debut de l'en-tête des copies :

\noindent{\bf QCM  \hfill TEST}

\vspace*{.5cm}
\begin{minipage}{.4\linewidth}
  \centering\large\bf Test\\ Examen du ??/??/2020
\end{minipage}

\begin{center}\em
Durée : 60 minutes.

Les questions faisant apparaître le symbole \multiSymbole{} peuvent
  présenter zéro, une ou plusieurs bonnes réponses. Les autres ont
  une unique bonne réponse.

  Des points négatifs seront affectés aux mauvaises réponses. Cocher
  toutes les réponses donne zéro à la question.
\end{center}
\vspace{1ex}

%%% fin de l'en-tête

\restituegroupe{general}
\restituegroupe{ouverte}

\AMCcleardoublepage

\AMCdebutFormulaire

%%% début de l'en-tête de la feuille de réponses

{\large\bf Feuille de réponses :}
\hfill \champnom{\fbox{
    \begin{minipage}{.5\linewidth}
      Nom et prénom :

      \vspace*{.5cm}\dotfill
      \vspace*{1mm}
    \end{minipage}
  }}

\begin{center}
  \bf\em Les réponses aux questions sont à donner exclusivement sur cette feuille :
  les réponses données sur les feuilles précédentes ne seront pas prises en compte.
\end{center}

%%% fin de l'en-tête de la feuille de réponses

\formulaire

}

\end{document}
