Adloun

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.

blocdéclarationtrait notable
Pythonindentationaucuneitère sur les éléments
Caccolades`int` obligatoirela longueur est passée à part
OCaml`do… done``let`, `ref``:=` écrit, `!m` lit
JavaScriptaccolades`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.