On exécute le programme de boucle donné en remarque dans le cours…
Exercice de TD · niveau 2 · NSI (première), chapitre 9 — Machines, systèmes et réseaux · Von Neumann et langage machine
Énoncé
On exécute le programme de boucle donné en remarque dans le cours, avec et .
- Combien de fois chacune des six lignes est-elle exécutée ? Combien de pas au total ?
- Que contient à la fin ? Cette valeur vous semble-t-elle utile ?
- Que se passe-t-il si contient au lieu de ? Distinguer et .
Corrigé
1. Chaque CHARGE du début : une fois. Le test SAUTESI : fois ( fois pour entrer dans le corps, une sixième pour en sortir). SOUSTRAIT et SAUTE : fois chacun. RANGE : une fois. Total pas.
Contrôle : le test est toujours exécuté une fois de plus que le corps — c'est le test qui fait sortir. Avec , le corps n'est jamais exécuté et il reste pas.
2. . Le compteur a été décrémenté jusqu'à zéro, et c'est zéro qu'on range. La valeur n'apprend rien : ce programme ne calcule rien, il consomme un compteur. Une boucle utile ferait quelque chose dans son corps — accumuler, comparer, écrire.
3. Avec , le compteur descend de deux en deux.
- : . Le test réussit, le programme s'arrête, , en pas.
- : Le compteur saute par-dessus zéro et ne l'atteint jamais.
SAUTESIteste l'égalité à , pas le signe : la boucle ne se termine jamais, etRANGEn'est jamais atteint.
Piège central : lire « tant que le compteur est positif » là où l'instruction dit « si le compteur vaut exactement zéro ». C'est le variant du chapitre 7 : il ne suffit pas qu'une quantité décroisse, il faut qu'elle atteigne la valeur testée. Un test d'inégalité aurait rendu le programme sûr pour tout pas.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.