195 lines
11 KiB
TeX
195 lines
11 KiB
TeX
\begin{exercise}[subtitle={QCM}, step={1}, origin={Annales}, topics={ }, tags={ }]
|
||
\begin{multicols}{2}
|
||
\begin{enumerate}[leftmargin=*, wide]
|
||
\item En voulant programmer une fonction qui calcule la valeur minimale d'une liste d'entiers, on a écrit :
|
||
\begin{center}
|
||
\begin{minipage}{0.5\linewidth}
|
||
\inputminted[bgcolor=base3]{python}{./annexes/QCM_mini.py}
|
||
\end{minipage}
|
||
\end{center}
|
||
Cette fonction a été mal programmée. Pour quelle liste ne donnera-t-elle pas le résultat attendu, c'est-à-dire son minimum ?
|
||
\begin{tasks}(1)
|
||
\task \mintinline{python}{[-1,-8,12,2,23]}
|
||
\task \mintinline{python}{[0,18,12,2,3]}
|
||
\task \mintinline{python}{[-1,-1,12,12,23]}
|
||
\task \mintinline{python}{[1,8,12,2,23]}
|
||
\end{tasks}
|
||
|
||
\item La fonction maxi ci-dessous a pour but de renvoyer la valeur maximale présente dans la liste qui lui est passée
|
||
en argument.
|
||
\begin{center}
|
||
\begin{minipage}{\linewidth}
|
||
\inputminted[bgcolor=base3]{python}{./annexes/QCM_maxi.py}
|
||
\end{minipage}
|
||
\end{center}
|
||
Cette fonction a été mal programmée. On souhaite réaliser un test pour le démontrer. Parmi les propositions suivantes, laquelle mettra la fonction maxi en défaut ?
|
||
\begin{tasks}(1)
|
||
\task \mintinline{python}{assert maxi([1, 2, 3, 4]) == 4}
|
||
\task \mintinline{python}{assert maxi([4, 3, 2, 1]) == 4}
|
||
\task \mintinline{python}{assert maxi([1, 3, 3, 2]) == 3}
|
||
\task \mintinline{python}{assert maxi([1, 1, 1, 1]) == 1}
|
||
\end{tasks}
|
||
|
||
\item On exécute le script suivant :
|
||
\begin{center}
|
||
\begin{minipage}{\linewidth}
|
||
\inputminted[bgcolor=base3]{python}{./annexes/QCM_moyenne.py}
|
||
\end{minipage}
|
||
\end{center}
|
||
Quelle affirmation est \textbf{fausse} parmi les suivantes ?
|
||
\begin{tasks}(1)
|
||
\task le corps de la boucle a été exécuté 10 fois
|
||
\task à la fin de l'exécution la valeur de i est 9
|
||
\task resultat contient la moyenne des éléments de liste
|
||
\task len est une fonction
|
||
\end{tasks}
|
||
|
||
\item T est un tableau de nombres entiers non vide. Que représente la valeur de s renvoyée par cette fonction ?
|
||
|
||
\begin{center}
|
||
\begin{minipage}{0.5\linewidth}
|
||
\inputminted[bgcolor=base3]{python}{./annexes/QCM_somme.py}
|
||
\end{minipage}
|
||
\end{center}
|
||
|
||
\begin{tasks}(1)
|
||
\task la somme des valeurs du tableau T
|
||
\task la somme des valeurs positives du tableau T
|
||
\task la somme des valeurs impaires du tableau T
|
||
\task la somme des valeurs paires du tableau T
|
||
\end{tasks}
|
||
|
||
\item Lors de l'exécution du code suivant, combien de fois l'opération \mintinline{python}{a = 2*a} sera-t-elle effectuée ?
|
||
|
||
\begin{center}
|
||
\begin{minipage}{0.5\linewidth}
|
||
\inputminted[bgcolor=base3]{python}{./annexes/QCM_cpt.py}
|
||
\end{minipage}
|
||
\end{center}
|
||
\begin{tasks}(4)
|
||
\task 0
|
||
\task 1
|
||
\task 7
|
||
\task 8
|
||
\end{tasks}
|
||
\end{enumerate}
|
||
\end{multicols}
|
||
|
||
\begin{enumerate}
|
||
\setcounter{enumi}{5}
|
||
\item
|
||
\begin{minipage}{0.6\linewidth}
|
||
La fonction suivante doit calculer le produit de tous les éléments de la liste passée en paramètre. Avec quelles expressions doit-on la compléter pour que cette fonction soit correcte ?
|
||
\end{minipage}
|
||
\hfill
|
||
\begin{minipage}{0.3\linewidth}
|
||
\inputminted[bgcolor=base3]{python}{./annexes/QCM_produit.py}
|
||
\end{minipage}
|
||
\begin{tasks}(4)
|
||
\task 1 puis \mintinline{python}{p = p * elt}
|
||
\task 0 puis \mintinline{python}{p = p * elt}
|
||
\task 1 puis \mintinline{python}{p = elt}
|
||
\task 0 puis \mintinline{python}{p = elt}
|
||
\end{tasks}
|
||
|
||
\item Quelle valeur permet de compléter l’affirmation suivante : « Le nombre d’opérations nécessaires pour rechercher un élément séquentiellement (l'autre méthode que la recherche par dichotomie) dans un tableau de longueur $n$ est de l’ordre de ... » ?
|
||
\begin{tasks}(4)
|
||
\task 1
|
||
\task $n$
|
||
\task $n^2$
|
||
\task $n^3$
|
||
\end{tasks}
|
||
|
||
\item Une page HTML comporte ce bout de code :
|
||
\begin{center}
|
||
\begin{minipage}{\linewidth}
|
||
\inputminted[bgcolor=base3]{html}{./annexes/QCM_alert.html}
|
||
\end{minipage}
|
||
\end{center}
|
||
Quel sera le résultat d’un clic sur le bouton "Appuyer ici" ?
|
||
\begin{tasks}(1)
|
||
\task Rien
|
||
\task La page du navigateur se fermera
|
||
\task La page affichera à la place du bouton "Appuyer ici" le message "Auteurs anonymes"
|
||
\task Cela provoquera l’ouverture d’une fenêtre comportant le message "Auteurs anonymes"
|
||
\end{tasks}
|
||
\item Un élément form (un formulaire) d'une page HTML contient un élément button de type submit. Un clic sur ce bouton
|
||
\begin{tasks}(1)
|
||
\task envoie les données du formulaire vers la page définie par l'attribut action de l'élément form
|
||
\task efface les données entrées par l'utilisateur dans le formulaire
|
||
\task envoie les données du formulaire vers la page définie par l'attribut method de l'élément form
|
||
\task ne fait rien du tout si un script javascript n'est pas associé au bouton
|
||
\end{tasks}
|
||
|
||
\item Dans une page HTML, lequel de ces codes permet la présence d'une div qui appelle la fonction javascript \mintinline{js}{spoil()} lorsque l'utilisateur passe la souris dessus ?
|
||
\begin{tasks}(1)
|
||
\task \mintinline{html}{<div href="spoil()">Passe ta souris</div> }
|
||
\task \mintinline{html}{<div if_mouseover="spoil()">Passe ta souris</div> }
|
||
\task \mintinline{html}{<div value="Passe ta souris"><div> spoil()</div></div> }
|
||
\task \mintinline{html}{<div oncmouseover="spoil()">Passe ta souris ici</div>}
|
||
\end{tasks}
|
||
|
||
\end{enumerate}
|
||
\pagebreak
|
||
\end{exercise}
|
||
|
||
\begin{exercise}[subtitle={Javascript}, step={1}, origin={Bac}, topics={Complexité}, tags={}, mode={}]
|
||
Dans le dossier partager, vous trouverez un dossier \texttt{mon beau site}. Copiez-le dans votre répertoire personnel.
|
||
\begin{enumerate}
|
||
\item Quels éléments HTML ont été associé à un évènement? Préciser le type d'évènement.
|
||
\item Modifier le comportement des boutons \texttt{Bleu} et \texttt{Rouge} pour que l'évènement soit activé au survole de la souris.
|
||
\item Ajoute un évènement au bouton \texttt{ A toi de jouer} pour que sur un click de l'utilisateur, il soit écrit \texttt{Bravo!} dans le span en dessous.
|
||
\end{enumerate}
|
||
|
||
Une fois votre travail terminé, vous ferez une archive avec les fichiers de votre page que vous nommerez \texttt{nom-prenom-ex2.7z} puis vous placerez cette archive dans le dossier \texttt{devoir}.
|
||
\end{exercise}
|
||
|
||
\begin{exercise}[subtitle={Sous liste}, step={1}, origin={Bac}, topics={Complexité}, tags={}, mode={}]
|
||
\bigskip
|
||
\textit{Attention, cette exercice est long et des questions ne sont pas évidentes, il ne faut pas hésitez à les sauter car elles sont toutes indépendantes.}
|
||
\bigskip
|
||
|
||
Étant donné un tableau non vide de nombres entiers relatifs, on appelle sous-séquence une suite non vide d’éléments voisins de ce tableau. On cherche dans cet exercice à déterminer la plus grande somme possible obtenue en additionnant les éléments d’une sous-séquence.
|
||
|
||
Par exemple, pour le tableau ci-dessous, la somme maximale vaut 18. Elle est obtenue en additionnant les éléments de la sous-séquence encadrée en gras ci-dessous (6;8;−6;10).
|
||
|
||
\begin{center}
|
||
\includegraphics[scale=0.5]{./fig/sous_suite}
|
||
\end{center}
|
||
|
||
\begin{enumerate}
|
||
\item
|
||
\begin{enumerate}
|
||
\item Quelle est la solution du problème si les éléments du tableau sont tous positifs?
|
||
\item Quelle est la solution du problème si tous les éléments sont négatifs?
|
||
\end{enumerate}
|
||
\item Dans cette question, on examine toutes les sous-séquences possibles
|
||
\begin{enumerate}
|
||
\item Écrire le code Python d’une fonction \mintinline{python}{somme_sous_sequence(lst,i, j)} qui prend en argument une liste et deux entiers i, j et renvoie la somme de la sous-séquence délimitée par les indices i et j (inclus).
|
||
\item La fonction \mintinline{python}{pgsp} ci-dessous permet de déterminer la plus grande des sommes obtenues en additionnant les éléments de toutes les sous-séquences possibles du tableau lst
|
||
\begin{center}
|
||
\begin{minipage}{\linewidth}
|
||
\inputminted[bgcolor=base3]{python}{./annexes/sous_liste1.py}
|
||
\end{minipage}
|
||
\end{center}
|
||
Parmi les quatre choix suivants, quel est le nombre de comparaisons effectuées par cette fonction si le tableau lst passé en paramètre contient 10 éléments? Vous justifierez votre réponse.
|
||
\begin{center}
|
||
10 \qquad 55 \qquad 100 \qquad 1055
|
||
\end{center}
|
||
\item Expliquer pourquoi la complexité de cet algorithme est en $\mathcal{O}(n^2)$.
|
||
\item Recopier et modifier la fonction pgsp pour qu’elle renvoie un tuple contenant la somme maximale et les indices qui délimitent la sous-séquence correspondant à cette somme maximale.
|
||
\end{enumerate}
|
||
\item Ici, on propose une solution plus astucieuse qui consiste à la liste des sommes maximales des sous séquences qui se terminent par les valeurs de la liste à étudier. On a programmé la fonction suivante
|
||
\begin{center}
|
||
\begin{minipage}{\linewidth}
|
||
\inputminted[bgcolor=base3]{python}{./annexes/sous_liste2.py}
|
||
\end{minipage}
|
||
\end{center}
|
||
\begin{enumerate}
|
||
\item Écrire la fonction \mintinline{python}{maximum} qui prend en argument une liste et qui renvoie la valeur maximal de la liste.
|
||
\item Quelle est la compléxité de votre fonction \mintinline{python}{maximum}?
|
||
\item Faire une estimation de la complexité de la fonction \mintinline{python}{pgsp2}. Que peut-on dire par rapport à la fonction \mintinline{python}{pgsp}?
|
||
\end{enumerate}
|
||
\end{enumerate}
|
||
\end{exercise}
|