1 / 24

Notion de TRACE : suivre l’évolution des valeurs des variables

a b c d. Notion de TRACE : suivre l’évolution des valeurs des variables. procédure exemple() variables : a, b, c, d : entiers Début a ← 1 b ← 100 d ← a+b c ← 3*a+d d ← -d+c*2 Fin. ? ? ? ?. 1 ? ? ?. 1 100 ? ?.

nate
Download Presentation

Notion de TRACE : suivre l’évolution des valeurs des variables

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. a b c d Notion de TRACE : suivre l’évolution des valeurs des variables procédure exemple() variables : a, b, c, d : entiers Début a ← 1 b ← 100 d ← a+b c ← 3*a+d d ← -d+c*2 Fin ? ? ? ? 1 ? ? ? 1 100 ? ? 1 100 ? 101 1 100 104 101 1 100 104 107 ? ? ? ?

  2. Un exemple de programme en C /* fichier finance.c conçu le 8/9/99 pour le cours de première année d'IUT par B. Bouchou définition et utilisation du calcul d'intérêts */ #include <stdio.h> #include <math.h> // Fct de calcul d’intérêts : retourne le solde du compte après Annees années, pour un dépôt de Depot francs et un taux de Taux %. float Interets(float Depot, float Taux, int Annees) { return Depot * pow(1+Taux/100, Annees) ; }

  3. int main() { • float Dep, Taux, Inter ; //Dep est le dépôt, Taux est le taux, Inter • int An ; //est l’intérêt cumulé sur An, le nombre d’années • printf("Donnez la somme initiale ") ; • scanf("%f", &Dep) ; • printf("Donnez le taux d'intérêt annuel (exemple : 8 pour 8%) ") ; • scanf("%f", &Taux) ; • printf("Donnez le nombre d'années ") ; • scanf("%d", &An) ; • Inter = Interets(Dep, Taux, An) ; //APPEL DE LA FONCTION «Interets» • printf("\nAprès %d années, vos %.2f Francs donneront %.2f Francs\n", An, Dep, Inter) ; • printf("soit un gain de %.2f Francs", Inter - Dep) ; • fflush(stdin) ; //vide le tampon clavier • getchar(); //attend une saisie • Return 0 ; }

  4. Progression de l'enseignement • Types et actions élémentaires • Variables : déclaration, utilisation • Affectation ; expressions, application de fonction - procédure • Combinaisons d’actions (blocs) • Séquence, choix, itérations • Fonctions • Visibilité des déclarations (portée des variables) • Combinaisons de types • Ensembles d’éléments de même type : « tableaux », « fichiers » • Ensembles d’éléments de types différents : « structures » • Travailler avec les adresses en mémoire : « pointeurs »

  5. début Début N1  N2 N2  N1 Fin ? fin La séquence N1 N2 Échange des valeurs de N1 et N2 : 10 20 20 20 N1  N2 20 20 N2  N1

  6. N N1 N2 début ? 10 20 fin Échange des valeurs de N1 et N2 : Début N  N1 N1  N2 N2  N Fin Utiliser une variable intermédiaire, N. 10 10 20 N  N1 10 20 20 N1  N2 10 20 10 N2  N Les blocs d ’instructions à exécuter en séquence sont délimités par des « début-fin » (les accolades en langage C).

  7. Les choix si CONDITION alors ACTIONS fin si Exp. A > 0 Expressions à valeur booléenne si CONDITION alors ACTIONS 1 sinon ACTIONS 2 fin si Blocs d’instructions

  8. Exemple : rang du plus petit de deux entiers (0 si égaux) fonctionplus_petit (données N1, N2 : entiers) résultat : entier variable : Res : entier début si N1 = N2 alors Res ¬ 0 sinon si N1 < N2 alors Res ¬ 1 sinon Res ¬ 2 fin si fin si le résultat est Res fin

  9. début si oui si oui si non si non N1 = N2 ? N1 < N2 ? fin Res  0 Res  2 Res  1 Res est le résultat

  10. début si oui si oui si non si non N1 = N2 ? N1 < N2 ? fin Res  0 Res  2 Res  1 Res est le résultat

  11. En langage C int rang_plus_petit (int N1,int N2) { int Res ; //le résultat if (N1 == N2) { Res = 0 ; } else { if (N1 < N2) { Res = 1 ; } else { Res = 2 ; } } return Res ; }

  12. si non si non si oui COND 1 COND n ... ACTIONS 1 si oui ACTIONS n ACTIONS ... suite de l’exécution... Sélection de cas cas où CONDITION 1 : ACTIONS 1 ... CONDITION n : ACTIONS n autrement : ACTIONS fin cas Synthèse de si-alors-sinon imbriqués Langage C : instruction « switch-case », limitée Utile pour un menu

  13. Animation d’un choix : résolution d’une équation du second degré • Enoncé On veut calculer les racines d’une équation du second degré : ax2+bx+c=0 Utilitaire conçu par Monsieur Di Scala, enseignant à la Fac. des Sciences, Université de Tours

  14. fin Les itérations (répétitions) faire afficher l'adresse d'une personne figurant dans un tas de fiches. début examiner la première fiche si le-nom-sur-la-fiche est le-nom-cherché alors écrire l'adresse de cette fiche sinon examiner la fiche suivante si le-nom-sur-la-fiche est le-nom-cherché alors écrire l'adresse de cette fiche sinon examiner la fiche suivante si le-nom-sur-la-fiche est le-nom-cherché alors …………

  15. si non si oui pas le bon nom ET il reste des fiches ? On préfère pouvoir écrire : début examiner la première fiche tant que le nom n'est pas le nom cherché et qu'il y a des fiches faire examiner la fiche suivante fin tant que si le nom de la fiche est le nom cherché alors écrire l'adresse sinon écrire "fiche non trouvée" fin si fin 1ère fiche fiche suivante suite des traitements...

  16. Somme des N premiers entiers positifs N Som 4 ? si non 4 0 3 4 2 7 1 9 0 10 si oui N > 0 ? X  sommeEntierPos(4) fonction sommeEntierPos(N : entier) résultat : entier variable : Som : entier Début Som  0 tant que N > 0 faire Som  Som + N N  N - 1 fin tant que le résultat est Som fin Som  0 Som  Som + N N  N - 1 retourner Som comme résultat

  17. Autres itérations • Vous savez d’avance combien de fois répéter : vous pouvez utiliser une itération « pour ». • Il faut exécuter l’action au minimum une fois : vous pouvez utiliser une itération « répéter ». L’itération « tant que » est la plus générale : on peut toujours l'utiliser.

  18. i Som ? 0 1 0 1 1 2 1 2 3 3 3 3 6 4 6 4 10 5 10 i  1 i  i + 1 i  N ? si oui si non Somme des N premiers entiers positifs avec une ITERATION « POUR » N=4 fonction sommeEntierPos(N : entier) résultat : entier variable : Som, i : entiers Début Som  0 pour i variant de 1 à N par pas de 1 faire Som  Som + i fin pour le résultat est Som fin Som  0 retourner Som comme résultat Som  Som + i

  19. si oui si non Val > 0 ? Lecture d’une donnée avec contraintes : l’itération « répéter » On veut lire au clavier une valeur entière qui doit être positive : fonction lectureEntierPos( ) résultat : entier variable : Val : entier Début répéter écrire("donner un entier POSITIF : ") lire(Val) jusqu’à Val  0 le résultat est Val fin écrire(…) lire(Val) retourner Val comme résultat

  20. Forme « tant que » en langage C int sommeEntierPos(int N) { int Som ; Som = 0 ; while (N > 0) { Som = Som + N ; N = N - 1 ; } return Som ; } fonction sommeEntierPos(N : entier) résultat : entier variable : Som : entier Début Som  0 tant que N > 0 faire Som  Som + N N  N - 1 fin tant que le résultat est Som fin

  21. Forme « pour » en langage C fonction sommeEntierPos(N : entier) résultat : entier variable : Som, i : entiers Début Som  0 pour i variant de 1 à N par pas de 1 faire Som  Som + i fin pour le résultat est Som fin int sommeEntierPos(int N) { int Som, i ; Som = 0 ; for (i=1; i<=N; i++) { Som = Som + i ; } return Som ; }

  22. Forme « répéter » en langage C int lectureEntierPos() { int Val ; do { printf("Un entier POSITIF : "); scanf("%d", &Val); } while(Val<0) ; return Val ; } fonction lectureEntierPos( ) résultat : entier variable : Val : entier Début répéter écrire("donner un entier POSITIF : ") lire(Val) jusqu’à Val  0 le résultat est Val fin

  23. Animation d’une itération : calculer le pgcd de a et b Enoncé • On cherche le plus grand commun diviseur de 2 nombres entiers positifs a et b. Exemple : 3 est le pgcd de 9 et 15 donnée : a et b, les 2 entiers positifs résultats : leur pgcd traitements : on utilise l’algorithme d’Euclide : si r est le reste de la division entière de a par b, alors les diviseurs communs à a et b sont les mêmes que ceux de b et r. .

  24. Conclusion sur les itérations • Avoir une fin : vérifier que dans tous les cas de figure on sortira de la boucle à moment donné • tant queCfaireAfin tant que • Á vérifier : • valeur de C bien définie, avant l’entrée dans l’itération • valeur de C effectivement modifiée par A • les actions de A doivent faire tendre C vers faux

More Related