Verified Commit 8a38dda4 authored by Quentin Duchemin's avatar Quentin Duchemin
Browse files

Typo, uniformisation exercices boucles

parent b4ee5188
......@@ -144,10 +144,10 @@ done
\begin{alertblock}{Exercice: les années bissextiles}
Écrire un script qui:
\begin{itemize}
\item Demande deux années à l'utilisateur : celle de départ ou celle d'arrivée. Elles pourront être fournies en paramètre (dans cet ordre). La ou les valeurs manquantes seront demandées par le prompt lors de l'exécution du programme.
\item Affiche toutes les années bissextiles comprises entre les celles données (incluses)
\item Demande deux années à l'utilisateur : celle de départ ou celle d'arrivée. Elles pourront être fournies en paramètres (dans cet ordre). La ou les valeurs manquantes seront demandées par le prompt lors de l'exécution du programme le cas échéant.
\item Affiche toutes les années bissextiles comprises entre l'année de départ et d'arrivée.
\end{itemize}
On utilisera uniquement des boucles \texttt{for} et pas de boucle \texttt{while}
On utilisera uniquement des boucles \texttt{for} (pas de boucle \texttt{while}) !
\end{alertblock}
\begin{exampleblock}{Rappel}
Une année est bissextile si elle est un multiple de 4. Exception : elle ne l'est pas si elle est un multiple de 100. Exception à l'exception : elle l'est si elle est un multiple de 400.
......@@ -157,13 +157,15 @@ done
\begin{frame}[fragile]{Indices}
\begin{block}{Indices}
\begin{itemize}
\item Pour générer les valeurs pour la boucle \texttt{for}, allez voir du côté de \sout{chez Swann} \texttt{seq}
\item La commande \texttt{let} ne renvoie pas directement la valeur du calcul. On utilisera une autre syntaxe pour faire les calculs dans les if: \texttt{\$((calcul))}
\item Pour générer les valeurs pour la boucle \texttt{for}, allez voir du côté de \sout{chez Swann} \texttt{seq}.
\item La commande \texttt{let} ne renvoie pas directement la valeur du calcul. On utilisera une autre syntaxe pour faire les calculs dans les if: \texttt{\$((calcul))}.
\end{itemize}
\end{block}
\end{frame}
\begin{frame}[fragile]{Solution}
Proposition de solution:
Proposition de solution :
\medskip
\begin{beamercolorbox}[rounded=true, shadow=true]{terminal}
\begin{Verbatim}
#!/bin/bash \Pause
......@@ -173,19 +175,19 @@ arrivee=$2 \Pause
if [ -z $2 ] \Pause
then \Pause
if [ -z $1 ] \Pause
then \Pause
read -p 'Année de départ ? ' depart \Pause
fi \Pause
read -p "Année d'arrivée ? " arrivee \Pause
if [ -z $1 ] \Pause
then \Pause
read -p "Année de départ ? " depart \Pause
fi \Pause
read -p "Année d'arrivée ? " arrivee \Pause
fi \Pause
for annee in `seq $depart $arrivee` \Pause
do \Pause
if [ $(($annee % 4)) -eq 0 ] && [ $(($annee % 100)) -ne 0 ] || [ $(($annee % 400)) -eq 0 ] \Pause
then \Pause
echo $annee \Pause
fi \Pause
if [ $(($annee % 4)) -eq 0 ] && [ $(($annee % 100)) -ne 0 ] || [ $(($annee % 400)) -eq 0 ] \Pause
then \Pause
echo $annee \Pause
fi \Pause
done
\end{Verbatim}
\end{beamercolorbox}
......@@ -196,17 +198,19 @@ done
Tout à l'heure, on a vu que les paramètres n'étaient accessibles que via 9 variables.
Mais il est bien possible d'avoir plus de 9 paramètres sur un script.
On utilisera alors la commande \texttt{shift} pour \enquote{décaler} les paramètres.
(\verb+$2 -> $1, $3 -> $2 ... [...] -> $9+)
(\verb+$2 $1, $3 $2 [...] $9+).
\end{block}
Exemple : écrire un script qui liste tous les paramètres avec leur place: \Pause
Exemple : écrire un script qui liste tous les paramètres avec leur place : \Pause
\medskip
\begin{beamercolorbox}[rounded=true, shadow=true]{terminal}
\begin{Verbatim}
#!/bin/bash
for i in `seq 1 $#`
do
echo "Le paramètre $i vaut $1"
shift
echo "Le paramètre $i vaut $1"
shift
done
\end{Verbatim}
\end{beamercolorbox}
......
......@@ -6,7 +6,8 @@
Maintenant, comment faire si l'on veut pouvoir répéter une suite d'instructions plusieurs fois, à des endroits différents du programme ? Comment mieux organiser son code pour le rendre plus lisible, en créant des blocs réalisant une fonctionnalité particulière ?
\end{block}
\medskip
\begin{alertblock}{Définition}
Une fonction, c’est un ensemble d’instructions, permettant d'effectuer une tâche spécifique, en fonction de paramètres d'entrée.
\end{alertblock}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment