Masar
Masar
Bac Tunisie
Entraîner la reconnaissance
SD-GStructures de données et modularité

Procédures, paramètres et rôles — lecture d'algorithmes

Idée directrice

Lire un programme modulaire : distinguer variables globales/locales, paramètres formels/effectifs, passage par valeur ou par référence (`@`), et déduire le rôle d'une procédure à partir de sa trace sur un tableau.

Signature de reconnaissance — l'énoncé se trahit ainsi

« Paramètres passés par référence »

« rôle de la procédure Inconnu1 »

« Procedure Inconnu2 (@V :tab »

Sujet principal

Exercice — dans l'esprit des sujets d'informatique

3 questionsCorrigé masqué

On donne un programme « Inconnu » avec les procédures `Inconnu1(@Ta, @X)`, `Inconnu2(@V, X)` et `Affiche(T, X)` (esprit i-s2-01).

  1. Compléter mentalement le tableau : pour `@Ta` dans `Inconnu1`, s'agit-il d'un paramètre passé par valeur ou par référence ? Pourquoi le `@` ?
  2. `Inconnu1` lit XX puis, pour i=0,2,4,i=0,2,4,\ldots, lit zz et fait `Ta[i]←z ; Ta[i+1]←Ta[i]`. Quel est le rôle de cette procédure sur le tableau ?
  3. Pourquoi `Affiche(T, X)` peut-elle recevoir TT par valeur alors que `Inconnu2` modifie VV via `@V` ?
Voir la correction commentéeAprès avoir posé votre démarche

1. `@Ta` : paramètre passé par référence — la procédure peut modifier le tableau effectif du programme principal (i-s2-01 : colonne « passés par référence »).

2. `Inconnu1` remplit le tableau par paires d'éléments égaux (chaque valeur lue est dupliquée sur deux cases consécutives) après contrôle de XX. Rôle : saisie structurée / initialisation particulière du tableau (à préciser d'après la trace demandée au devoir).

3. `Affiche` ne modifie pas TT : passage par valeur suffit. `Inconnu2` doit altérer VV : passage par référence obligatoire (`@V`).

Exercices d'entraînement — une nuance à la fois

Entraînement 01 / 01

Drill SD-G.1 — Passage par référence

1 questionCorrigé masqué

Une procédure doit réordonner un tableau `T` « sur place » (échanges d'éléments). Faut-il écrire `Proc P(T:tab)` ou `Proc P(@T:tab)` en pseudo-code style i-s2-01 ? Justifiez (paramètre par valeur vs par référence).

Voir la correction commentéeAprès avoir posé votre démarche

`Proc P(@T:tab)` : le tableau doit être un paramètre passé par référence pour que les modifications d'éléments persistent chez l'appelant. Sans `@`, seule une copie locale serait modifiée (même logique que `Inconnu1`/`Inconnu2` avec `@` dans le devoir i-s2-01 : colonne « paramètres passés par référence »).

Méthode / Automatismes
  • `@` / `var` = référence ; sans `@` = valeur (copie).
  • Rôle d'une procédure = ce qu'elle produit sur les données (pas seulement « elle lit »).
Pièges classiques

Confondre paramètre formel et effectif ; dire qu'un tableau passé par valeur est modifié chez l'appelant.