Fonctions et pile d'appels – paramètres, valeurs de retour et portée

InformatiqueAlgorithmique et résolution de problèmes15–16 ans

Utiliser avec ma classe ✨ Personnaliser avec l'IA Signaler un problème

Exécutez pas à pas des programmes qui appellent des procédures et des fonctions et voyez chaque appel empiler un cadre : arguments liés aux paramètres, variables locales et valeur de retour renvoyée à la ligne appelante. Comparez variables locales et globales, passage par valeur et par référence, et récursivité en Python ou en pseudo-code. Un mode bibliothèque permet d'appeler des routines prédéfinies pour explorer les signatures et l'abstraction.

Leçon : Sous-programmes : procédures, fonctions, paramètres et portée

Ce qu’elle montre

Un sous-programme est un bloc de code nommé que l'on peut appeler plusieurs fois. À chaque appel, l'ordinateur empile un cadre contenant ses paramètres et ses variables locales ; les arguments sont liés aux paramètres, et return renvoie une valeur puis dépile le cadre. Les variables locales n'existent que pendant l'appel et peuvent masquer des variables globales de même nom. La récursivité empile de nombreux cadres de la même fonction. Les routines de bibliothèque cachent leur code derrière une signature : c'est ainsi qu'on découpe un programme en modules et en API.

Mode d’emploi

Choisissez un Exemple et un Langage, puis cliquez sur Pas pour exécuter une ligne à la fois ou sur Exécuter pour dérouler le programme à la Vitesse choisie. Observez la pile d'appels, les notes de Ce qui s'est passé à ce pas et le graphique de profondeur. Cliquez sur Modifier pour changer le code. Passez à Routines de bibliothèque, choisissez une Routine, tapez les arguments et cliquez sur Appeler.

Paramètres modifiables

  • Mode Suivre un programme, Routines de bibliothèque
  • Exemple Paramètres et valeurs de retour, Variables locales et globales, Fonctions qui appellent des fonctions, Procédures et fonctions, Récursivité (factorielle), Passage par valeur et par référence
  • Langage Python, Pseudo-code
  • Vitesse 0,5–10 pas/s

Questions à explorer

  1. Dans l'appel area(w, 3), quelles valeurs sont les arguments et quels noms sont les paramètres ?
  2. Pourquoi print(count) dans le programme principal affiche-t-il encore 10 après l'exécution de double(3) ?
  3. Combien de cadres la pile d'appels contient-elle quand factorial(4) atteint son cas de base ?