Vous trouverez les énoncés des TD sur le moodle du cours ici.
TD 3 : variables impératives, structure de contrôle if et l'itération for
Expressions
Il s'agir ici de regarder la priorité
des opérations à effectuer. De manière générale, s'il n'y a pas d'ambiguïté, les parenthèses peuvent être enlevées.
- Les opérations arithmétiques priment par rapport à l'affectation : l'expression à droite du
=
est d'abord évaluée avant de l'assigner à la variablea
. - La multiplication
*
prime par rapport à l'addition+
. - La division
/
prime par rapport à l'addition+
. - L'incrémentation
++
prime par rapport à la multiplication*
qui lui par la suite par rapport à l'addition+
.
On fait la remarque suivante par rapport à la division /
qui est ici une division entière : si x
et y
sont tous les deux des entiers, alors la division x/y
est une division entière ou division euclidienne (plus de détails ici). Le résultat admis est le quotient euclidien
. Du coup ici, si x = 3
et y = 5
, le résultat de la division x/y
vaut 0
.
À vous de jouer.
Execution conditionnelle d'instructions : if
En programmation impérative, les instructions sont executées ligne par ligne et les unes à la suite des autres. On peut cependant conditionner
l'execution d'une certaine instruction ou d'un certain bloc d'instructions
(en C, les blocs d'instructions sont tout simplement une suite d'instructions délimitée par des accolades { }
). C'est-à-dire que si une certaine condition est vérifiée, on choisira d'executer un bloc plutôt qu'un autre. La structure de contrôle if
permet de faire cela.
Voyons cela de plus près avec notre exercice.
- Ici, si la
age >= 18
est vérifiée, on affichera"vous êtes majeur"
et dans le cas contraire, on affichera"vous êtes mineur"
. - La condition du
if
a une valeurbooléenne
, c'ets-à-dire vrai ou faux. - Dans la condition d'un
if
pour vérifier l'égalité de deux valeur on utilise l'opérateur==
. - On peut combiner plusieurs conditions en utilisant les opérateurs logiques
ET : &&
,OU : ||
et laNEGATION : !
- Il est possible d'
imbriquer des if
: mettre unif
dans le bloc d'un autreif
.
Itération : l'instrucion for
On voudrait maintenant pouvoir répéter un bloc d'instructions, ou en d'autres termes répéter un certain nombre de fois les mêmes instruction. Pour cela, on utilise des boucles
. Par exemple pour afficher 5 fois le mot "Bonjour", on mettra l'instruction printf("Bonjour\n");
à l'intérieur d'une boucle for
.
Une itération
correspond à une execution
, d'un bloc d'instruction dans une boucle : si l'on veut répéter 5 fois, on aura 5 itérations.
- On utilise une variable de boucle pour compter le nombre d'itération à effectuer. On nomme souvent cette variable
i
, mais n'importe quel identificateur marche bien évidement. - Très souvent la première itération est l'
itération 0
, càdi = 0
. - À la fin de chaque itération, on va donc
incrémenter
notre variable de boucle :i++
oui = i + 1
. - Pour ne pas boucler indéfiniment, il nous faut spécifier une condition d'arret. Dans notre exemple si l'on veut 5 itérations, on arrêtera de boucler (on sortira de la boucle) dès que
i >= 5
. On peut également dire que l'on restera dans la boucle tant quei < 5
.
Voyons alors comment utiliser la boucle for
avec tout ce que l'on a appris. Le principe du l'exercice du TD est exactement le même ;).
Ainsi, on est maintenant capable d'expliquer chaque argument de la boucle for
.
- Le premier argument
i = 0
permet d'initialiser notre variable de boucle. - Le deuxième argument
i < 5
est une expression booléenne qui indique que si cette condition est vraie, on reste dans la boucle et on continue avec une nouvelle itération. Sinon on sort de la boucle et on continue l'execution du programme directement après notre boucle (ici à la ligne17
) - Le dernier argument
i++
sert à incrémenter notre variable de boucle : on passe à l'itération numéroi+1
. On va considérer que cette instrucion est executée en dernier dans le bloc de notre boucle càd à la ligne16
.
Trace du programme
Quand i
vaudra 5
, la condition d'arret i < 5
n'est plus vérifiée du coup on sort alors de notre boucle, et la valeur de i
à la sortie est donc 5
.
- On peut évidement initialiser la variable de boucle à
1
. - On peut également avoir un
pas d'incrémentation
quelconque. Càd on peut incrémenter la variable de boucle de2, 3, ...
selon notre convenance : dans ce cas on écrira dans le troisième argument dufor
soiti = i + 2
oui = i + 3
etc. - On peut aussi imbriquer des boucles
for
. Cependant il faudra bien faire attention à bien initialiser et incrémenter chaque variable de boucle.
Pour le reste ce sera à vous de jouer :).