Dans les quatre versions de maximum , relever ce qui est commun aux…
Exercice d'entraînement · niveau 2 · NSI (première), chapitre 3 — Langages et programmation · Lire, comparer et traduire des langages
Énoncé
Dans les quatre versions de maximum, relever ce qui est commun aux quatre langages, puis ce qui est propre à chacun. Pourquoi la version C exige-t-elle un argument supplémentaire ?
Corrigé
Ce qui est commun aux quatre. Exactement les constructions du cours, dans le même ordre : une affectation initiale (m = t[0]), une boucle bornée sur les éléments ou les indices, une conditionnelle qui compare, une affectation dans le corps, un retour. Le squelette algorithmique est identique ; seule l'orthographe change.
Ce qui est propre à chacun.
| bloc | déclaration | trait notable | |
|---|---|---|---|
| Python | indentation | aucune | itère sur les éléments |
| C | accolades | `int` obligatoire | la longueur est passée à part |
| OCaml | `do… done` | `let`, `ref` | `:=` écrit, `!m` lit |
| JavaScript | accolades | `let` | `t.length` connu du tableau |
Pourquoi la version C exige un argument supplémentaire. En C, un tableau passé à une fonction se réduit à l'adresse de sa première case. La taille n'est stockée nulle part : elle n'accompagne pas la donnée. La fonction n'a donc aucun moyen de savoir où le tableau s'arrête, et l'appelant doit la lui dire. En Python, en OCaml et en JavaScript, le tableau connaît sa longueur — len(t), Array.length t, t.length.
La conséquence, très concrète : si l'appelant C se trompe de longueur, la fonction lit au-delà du tableau, sans erreur ni message, et renvoie un maximum calculé sur de la mémoire quelconque. C'est l'une des sources d'erreur les plus coûteuses de l'histoire du logiciel — et elle n'existe pas dans les trois autres langages.
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.