Feat(NSI): fait le DS4
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Bertrand Benjamin 2023-03-30 18:42:50 +02:00
parent 04c90a07c2
commit cd31d3293c
16 changed files with 348 additions and 0 deletions

View File

@ -0,0 +1,7 @@
<article>
<h1>Les auteurs de ce site</h1>
<button onclick="auteurs()">Appuyer ici</button>
</article>
<script src="java_script/ScriptJava.js"></script>
<script> function auteurs() { alert("Auteurs anonymes"); } </script>

View File

@ -0,0 +1,5 @@
a = 1
cpt = 1
while cpt < 8:
a = 2*a
cpt = cpt+1

View File

@ -0,0 +1,9 @@
def maxi(L):
dernier_indice = len(L) - 1
valeur_max = L[0]
for i in range(1,dernier_indice):
if L[i] > valeur_max:
valeur_max = liste[i]
return valeur_max

View File

@ -0,0 +1,6 @@
def minimum(L):
mini = 0
for e in L:
if e < mini:
mini = e
return mini

View File

@ -0,0 +1,7 @@
liste = [17, 12, 5, 18, 2, 7, 9, 15, 14, 20]
somme = 0
i = 0
while i < len(liste):
somme = somme + liste[i]
i = i + 1
resultat = somme / len(liste)

View File

@ -0,0 +1,5 @@
def produit (L):
p = ...
for elt in L:
.......
return p

View File

@ -0,0 +1,6 @@
def mystere(T):
s = 0
for k in T:
if k % 2 == 0:
s = s+k
return s

View File

@ -0,0 +1,9 @@
def pgsp(lst:list):
n = len(lst)
somme_max = lst[0]
for i in range(n):
for j in range(i, n):
s = somme_sous_sequence(lst, i, j)
if s > somme_max :
somme_max = s
return somme_max

View File

@ -0,0 +1,8 @@
def pgsp2(lst:list):
sommes_max = [lst[0]]
for i in range(1, len(lst)):
if lst[i] > (sommes_max[-1] + lst[i]):
sommes_max.append(lst[i])
else:
sommes_max.append(sommes_max[-1] + lst[i])
return maximum(sommes_max)

View File

@ -0,0 +1,19 @@
function affiche_menu() {
let menu = document.getElementById("menu")
if (menu.style.display == "block") {
menu.style.display = "none"
} else {
menu.style.display = "block"
}
}
let titreMenu = document.getElementById("titreMenu")
titreMenu.addEventListener("click", affiche_menu)
function preview() {
let prev = document.getElementById("preview")
prev.style.width = "200px"
}
let prev = document.getElementById("preview")
prev.addEventListener("click", preview)

View File

@ -0,0 +1,45 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Compteur de clics </title>
<meta charset="utf-8">
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Mon beau site </h1>
<nav>
<h2 id="titreMenu">Menu</h2>
<ul id="menu">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
</nav>
<section id="content">
<div id="preview"></div>
</section>
<p>
<button id="atoi">A toi de jouer</button>
<span id="felicitation"></span>
</p>
<p>
<button onclick="enBleu()">Bleu</button>
<button onclick="enRouge()">Rouge</button>
</p>
<script>
function enBleu(){
document.body.style.backgroundColor = "#0000FF";
}
function enRouge(){
document.body.style.backgroundColor = "#AA0000";
}
</script>
<script src="script.js"></script>
</body>
</html>

View File

@ -0,0 +1,9 @@
#preview {
width: 100px;
height: 100px;
background-color: coral;
}
#menu {
display: None;
}

View File

@ -0,0 +1,187 @@
\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}
\item 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 ?
\begin{center}
\begin{minipage}{0.5\linewidth}
\inputminted[bgcolor=base3]{python}{./annexes/QCM_produit.py}
\end{minipage}
\end{center}
\begin{tasks}(1)
\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 laffirmation suivante : « Le nombre dopé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 lordre de ... » ?
\begin{tasks}(4)
\task 1
\task $n$
\task $n^2$
\task $n^3$
\end{tasks}
\end{enumerate}
\end{multicols}
\begin{enumerate}
\setcounter{enumi}{7}
\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 dun 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 louverture dune 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}
\end{exercise}
\begin{exercise}[subtitle={Sous liste}, step={1}, origin={Bac}, topics={Complexité}, tags={}, mode={}]
É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 dune 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 dune 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 (dure) Quelle est la complexité d'un tel algorithme?
\item Recopier et modifier la fonction pgsp pour quelle 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}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

View File

@ -0,0 +1,26 @@
\documentclass[a4paper,12pt]{article}
\usepackage{myXsim}
\usepackage{minted}
% Title Page
\title{ DS4 \hfill }
\tribe{1NSI}
\date{31 mars 2023}
\duree{1h}
\DeclareExerciseCollection[step=1]{banque}
\xsimsetup{collect}
\pagestyle{empty}
\begin{document}
\maketitle
\input{exercises.tex}
\printcollection{banque}
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "master"
%%% End: