Cour 5 : la pile d’appel (et aussi char et double)

Flyer par Cristina Bejarano (et Cole Goins ?) en cc-by.

, par Pierre

Algorithmique et programmation : les supports du cinquième cours, où vous avez découvert la notion de pile d’appel, pour vous repérer dans le déroulement de l’exécution de vos programmes, ainsi que : le mot-clé void pour les procédures ; deux types, char et double ; l’usage de la bibliothèque math ; des limitations de scanf et un menu.

Voici les supports du cinquième cours, où vous avez surtout découvert la notion de pile d’appel, qui je l’espère vous sera profitable pour vous repérer dans le déroulement de l’exécution de vos programmes.

I3 cours 5 version écran
I3 cours 5 version papier
I3 TDTP5

Nous en avons profité pour insister sur le passage de paramètres aux fonctions.

  1. /* Declaration de fonctionnalites supplementaires */
  2. #include <stdlib.h> /* EXIT_SUCCESS */
  3. #include <stdio.h> /* printf() */
  4.  
  5. /* Declarations constantes et types utilisateurs */
  6.  
  7. /* Declarations de fonctions utilisateurs */
  8. void permute_valeurs(int a,int b);
  9.  
  10. /* Fonction principale */
  11. int main()
  12. {
  13.     /* Declaration et initialisation des variables */
  14.     int x = 1;
  15.     int y = 2;
  16.    
  17.     permute_valeurs(x, y); /* fail */
  18.     printf("x = %d et y = %d\n",x,y);
  19.    
  20.     /* Valeur fonction */
  21.     return EXIT_SUCCESS;
  22. }
  23.  
  24. /* Definitions de fonctions utilisateurs */
  25. void permute_valeurs(int a,int b)
  26. {
  27.     int aux; /*var aux pour permutation */
  28.    
  29.     aux = a;
  30.     a = b;
  31.     b = aux;
  32. }

Télécharger

Pour ouvrir un peu l’horizon des applications de vos nouveaux talents, nous avons aussi vu comment manipuler des caractères et des nombres à virgule (les types char et double du C), ainsi que comment utiliser les fonctions d’une bibliothèque (math). Le mot-clé void pour déclarer des fonctions qui n’ont pas de valeur (ne retournent pas de résultat), que nous appelerons plutôt procédures a aussi fait sa première apparition officielle en cours.

Nous avons également passé un peu de temps à critiquer scanf et à souhaiter l’introduction dans un prochain cours d’un majordome, fgets, qui aidera scanf dans sa propre maison. Enfin une petite démo a ouvert la voie de l’écriture de programmes dialoguant avec l’utilisateur en affichant des menus (façon années 70’ mais sans boule disco).

  1. /* Declaration de fonctionnalites supplementaires */
  2. #include <stdlib.h> /* pour EXIT_SUCCESS */
  3. #include <stdio.h> /* pour printf() */
  4.  
  5. /* Declaration des constantes et types utilisateur */
  6. #define TRUE 1
  7. #define FALSE 0
  8.  
  9. /* Declaration des fonctions utilisateur */
  10. void afficher_menu();
  11. int saisie_utilisateur();
  12. void faire_patin();
  13.  
  14. /* Fonction principale */
  15. int main()
  16. {
  17.     /* Declaration et initialisation des variables */
  18.     int continuer = TRUE;
  19.     int choix = 0;
  20.  
  21.     while(continuer) {
  22.         afficher_menu();
  23.         choix = saisie_utilisateur();
  24.         if (1 == choix) {
  25.             faire_patin();
  26.         }
  27.         if (0 == choix) {
  28.             printf("Sayonara\n");
  29.             continuer = FALSE;
  30.         }      
  31.     }
  32.  
  33.     /* Valeur fonction */
  34.     return EXIT_SUCCESS;
  35. }
  36.  
  37. /* Definition des fonctions utilisateur */
  38. void faire_patin() {
  39.     printf("Desole la patinoire est fermee\n");
  40. }
  41.  
  42. void afficher_menu() {
  43.     printf("*********************\n");
  44.     printf("* WELCOME           *\n");
  45.     printf("* 1) play on ice    *\n");
  46.     printf("* 0) quit           *\n");
  47.     printf("************");
  48. }
  49. int saisie_utilisateur() {
  50.     int saisie = 0;
  51.     printf("choix : ");
  52.     scanf("%d", &saisie);
  53.     return saisie;
  54. }

Télécharger

Portfolio

spip_logo
Bluehats & UnivMobile , Présentation de la démarche design employée pour UnivMobile faite à la rencontre bluehats du 11 décembre 2019. [pdf, jpg]
Mon université en 2030, Texte d'une intervention que j'ai faite dans le cadre d'une soirée Cap 2030, organisée par le EdFab à Cap Digital le 27 février (...)
Revenu et logement, Je livre ici quelques éléments de comparaison concernant mon niveau de vie, pour couper court à quelques idées reçues, et un condensé de nombreuses (...)
Revenu et travail d’un enseignant-chercheur, Cet article complète l'article Revenu et logement, en détaillant un peu le budget de mon ménage, mon parcours d'enseignant-chercheur en terme de (...)
Cybersyn (el systemo synco), Au café, mardi 5 avril 2011, j'ai bien vu que, mis à part Antoine Allombert, personne ne connaissait l'histoire de l'extraordinaire projet chilien (...) [jpg, jpg, png]