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

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

  • Upload
    nate

  • View
    32

  • Download
    5

Embed Size (px)

DESCRIPTION

abcd. 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 ? ?. - PowerPoint PPT Presentation

Citation preview

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

1

Notion de TRACE : Notion de TRACE :

suivre l’évolution des valeurs des variablessuivre l’évolution des valeurs des variables

procédureprocédure exemple() exemple()

variablesvariables : a, b, c, d : : a, b, c, d : entiersentiers

DébutDébut

a ← 1a ← 1

b ← 100b ← 100

d ← a+bd ← a+b

c ← 3*a+dc ← 3*a+d

d ← -d+c*2d ← -d+c*2

FinFin

?? ?? ?? ??

1 1001 100 ? ? ? ?

11 ?? ?? ??

1 100 104 1011 100 104 101

11 100 100 ? ? 101 101

1 100 104 1071 100 104 107

?? ?? ?? ??

aa bb cc dd

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

2

Un exemple de programme en CUn exemple de programme en C

/* fichier finance.c/* fichier finance.c

conçu le 8/9/99 pour le cours de première année d'IUT par B. conçu le 8/9/99 pour le cours de première année d'IUT par B. BouchouBouchou

définition et utilisation du calcul d'intérêts */définition et utilisation du calcul d'intérêts */

#include <stdio.h>#include <stdio.h>

#include <math.h>#include <math.h>

// Fct de calcul d’intérêts : retourne le solde du compte après Annees // 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 %.années, pour un dépôt de Depot francs et un taux de Taux %.

float Interets(float Depot, float Taux, int Annees)float Interets(float Depot, float Taux, int Annees)

{{

return Depot * pow(1+Taux/100, Annees) ;return Depot * pow(1+Taux/100, Annees) ;

}}

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

3 int main() {int main() {

float float DepDep, , TauxTaux, , InterInter ; //Dep est le dépôt, Taux est le taux, Inter ; //Dep est le dépôt, Taux est le taux, Inter

int int AnAn ; //est l’intérêt cumulé sur An, le nombre d’années ; //est l’intérêt cumulé sur An, le nombre d’années

printf("Donnez la somme initiale ") ;printf("Donnez la somme initiale ") ;

scanf("%f", &scanf("%f", &DepDep) ;) ;

printf("Donnez le taux d'intérêt annuel (exemple : 8 pour 8%) ") ;printf("Donnez le taux d'intérêt annuel (exemple : 8 pour 8%) ") ;

scanf("%f", &scanf("%f", &TauxTaux) ;) ;

printf("Donnez le nombre d'années ") ;printf("Donnez le nombre d'années ") ;

scanf("%d", &scanf("%d", &AnAn) ;) ;

InterInter = Interets( = Interets(DepDep, , TauxTaux, , AnAn) ; //APPEL DE LA FONCTION ) ; //APPEL DE LA FONCTION «Interets» «Interets»

printf("\nAprès %d années, vos %.2f Francs donneront %.2f printf("\nAprès %d années, vos %.2f Francs donneront %.2f Francs\n", Francs\n", AnAn, , DepDep, , InterInter) ;) ;

printf("soit un gain de %.2f Francs", printf("soit un gain de %.2f Francs", Inter Inter - - DepDep) ;) ;

fflush(stdin) ;fflush(stdin) ; //vide le tampon clavier//vide le tampon claviergetchar();getchar(); //attend une saisie//attend une saisieReturn 0 ;Return 0 ;

}}

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

4

Types et actions élémentairesTypes et actions élémentaires

Variables : déclaration, utilisationVariables : déclaration, utilisation

Affectation ; expressions, application de fonction - procédureAffectation ; expressions, application de fonction - procédure

Combinaisons d’actions (blocs)Combinaisons d’actions (blocs)

Séquence, choix, itérationsSéquence, choix, itérations

Fonctions Fonctions

Visibilité des déclarations (portée des variables)Visibilité des déclarations (portée des variables)

Combinaisons de typesCombinaisons de typesEnsembles d’éléments de même type : « tableaux », Ensembles d’éléments de même type : « tableaux », « fichiers »« fichiers »Ensembles d’éléments de types différents : « structures »Ensembles d’éléments de types différents : « structures »

Travailler avec les adresses en mémoire : « pointeurs »Travailler avec les adresses en mémoire : « pointeurs »

Progression de Progression de l'enseignementl'enseignement

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

5

N1 N2

N2 N1

début

fin

Échange des valeurs Échange des valeurs de N1 et N2 :de N1 et N2 :

N1N1 N2N2

1010 2020

20 2020 20

20 2020 20 DébutDébutN1 N1 N2 N2N2 N2 N1 N1

FinFin

??

La séquenceLa séquence

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

6

N N1

N1 N2

N2 N

DébutDébutN N N1 N1N1 N1 N2 N2N2 N2 N N

FinFin

début

fin

Échange des valeurs Échange des valeurs de N1 et N2 :de N1 et N2 :

Les blocs d ’instructions à exécuter en séquence sont Les blocs d ’instructions à exécuter en séquence sont délimités par des « début-fin » (les accolades en langage C).délimités par des « début-fin » (les accolades en langage C).

NN N1N1 N2N2

?? 1010 2020

10 10 2010 10 20

10 20 2010 20 20

10 20 1010 20 10

Utiliser une variable Utiliser une variable intermédiaire, N.intermédiaire, N.

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

7

sisi CONDITION CONDITION alorsalors

ACTIONSACTIONS

fin sifin si

sisi CONDITION CONDITION alorsalors

ACTIONS 1 ACTIONS 1

sinonsinon

ACTIONS 2ACTIONS 2

fin sifin si

Blocs d’instructionsBlocs d’instructions

Expressions à valeur booléenneExpressions à valeur booléenne Exp. A > 0Exp. A > 0

Les choixLes choix

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

8

ExempleExemple : rang du plus petit de deux entiers (0 si égaux) : rang du plus petit de deux entiers (0 si égaux)

fonction plus_petit (données N1, N2 : entiers)résultat : entier

variable : Res : entier

débutsi N1 = N2 alors

Res0sinon

si N1 < N2 alors

Res1sinon

Res 2fin si

fin sile résultat est Res

fin

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

9

début

N1 = N2 ?si oui

Res 0

si non

N1 < N2 ?si oui

Res 1

si non

Res 2

Res est le résultat

fin

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

10

début

N1 = N2 ?si oui

Res 0

si non

N1 < N2 ?si oui

Res 1

si non

Res 2

Res est le résultat

fin

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

11

En langage CEn 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 ;

}

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

12

Sélection de casSélection de cas

cas oùcas où

CONDITION 1 : ACTIONS 1 CONDITION 1 : ACTIONS 1

... ... CONDITION n : ACTIONS n CONDITION n : ACTIONS n autrementautrement : ACTIONS : ACTIONSfin casfin cas

COND 1 si ouisi non

...

COND nsi non

ACTIONS 1

si oui

ACTIONS nACTIONS

suite de l’exécution...

...

• Synthèse de si-alors-sinon imbriquésSynthèse de si-alors-sinon imbriqués• Langage C : instruction « switch-case », limitéeLangage C : instruction « switch-case », limitée• Utile pour un menuUtile pour un menu

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

13 Animation d’un choix : Animation d’un choix :

résolution d’une équation du résolution d’une équation du second degrésecond degré

EnoncéEnoncé

On veut calculer les racines d’une équation duOn veut calculer les racines d’une équation du

second degré :second degré : axax22+bx+c=0+bx+c=0

Utilitaire conçu par Monsieur Di Scala, Utilitaire conçu par Monsieur Di Scala, enseignant à la Fac. des Sciences, Université de Toursenseignant à la Fac. des Sciences, Université de Tours

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

14

faire afficher l'adresse d'une personne figurant dans un tas de fiches.faire afficher l'adresse d'une personne figurant dans un tas de fiches.

débutdébutexaminer la première ficheexaminer la première fiche

sisi le-nom-sur-la-fiche est le-nom-cherché le-nom-sur-la-fiche est le-nom-cherché alorsalorsécrire l'adresse de cette ficheécrire l'adresse de cette fiche

sinonsinonexaminer la fiche suivanteexaminer la fiche suivantesisi le-nom-sur-la-fiche est le-nom-cherché le-nom-sur-la-fiche est le-nom-cherché alorsalors

écrire l'adresse de cette ficheécrire l'adresse de cette fichesinonsinon

examiner la fiche suivanteexaminer la fiche suivantesisi le-nom-sur-la-fiche est le-nom-cherché le-nom-sur-la-fiche est le-nom-cherché alorsalors……………………

fin

Les itérations (répétitions)Les itérations (répétitions)

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

15 On préfère pouvoir écrire :On préfère pouvoir écrire :

débutdébut

examiner la première ficheexaminer la première fiche

tant quetant que le nom n'est pas le nom cherché le nom n'est pas le nom cherché etet qu'il y a des fiches qu'il y a des fiches fairefaire

examiner la fiche suivanteexaminer la fiche suivante

fin tant que fin tant que

sisi le nom de la fiche est le nom cherché le nom de la fiche est le nom cherché alorsalors écrire l'adresse écrire l'adresse

sinonsinon écrire "fiche non trouvée" écrire "fiche non trouvée"

fin sifin si

finfin

pas le bon nom ET il reste des fiches ? si oui

fiche suivante

si non

suite des traitements...

1ère fiche

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

16

fonction sommeEntierPos (N : entier)résultat : entier variable : Som : entierDébutSom 0

tant que N 0 faireSom Som + NN N - 1

fin tant quele résultat est Som

fin

Somme des N premiers entiers positifsSomme des N premiers entiers positifs

N > 0 ? si oui

Som Som + N

N N - 1

si non

Som 0

retourner Som comme résultat

NN SomSom

101000

4 ?4 ? 4 04 0

443377229911

X X sommeEntierPos(4) sommeEntierPos(4)

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

17

Autres itérationsAutres itérations

•Vous savez d’avance combien de fois répéter :Vous savez d’avance combien de fois répéter :vous pouvez utiliser une itération « pour ».vous pouvez utiliser une itération « pour ».

•Il faut exécuter l’action au minimum une fois :Il faut exécuter l’action au minimum une fois :vous pouvez utiliser une itération « répéter ».vous pouvez utiliser une itération « répéter ».

•L’itération « tant que » est la plus générale : on L’itération « tant que » est la plus générale : on peut toujours l'utiliser.peut toujours l'utiliser.

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

18

fonction sommeEntierPos (N : entier)résultat : entier variable : Som, i : entiersDébut

Som 0pour i variant de 1 à N par pas de 1 faire

Som Som + i fin pour

le résultat est Som fin

Somme des N premiers entiers positifs avec une ITERATION « POUR »Somme des N premiers entiers positifs avec une ITERATION « POUR »

i N ? si oui

Som Som + i

si non

Som 0

retourner Som comme résultat

ii SomSom

? 0? 0 1 01 0

111111223322

N=4N=4

333366336644

i i i + 1 i + 1i i 1 1

101044

101055

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

19 Lecture d’une donnée avec contraintes : l’itération « répéter »Lecture d’une donnée avec contraintes : l’itération « répéter »

fonction lectureEntierPos ( )résultat : entier variable : Val : entierDébut

répéterécrire("donner un entier

POSITIF : ")lire(Val)

jusqu’à Val 0le résultat est Val

fin

On veut lire au clavier une valeur entière On veut lire au clavier une valeur entière qui doit être positivequi doit être positive : :

Val > 0 ? si oui

écrire(…)

lire(Val)

retourner Val comme résultat

si non

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

20

Forme « tant que » en langage CForme « tant que » en langage C

fonction sommeEntierPos (N : entier)résultat : entier variable : Som : entierDébutSom 0

tant que N 0 faireSom Som + NN N - 1

fin tant quele résultat est Som

fin

int sommeEntierPos (int N){

int Som ;

Som = 0 ;while (N 0){

Som = Som + N ;N = N - 1 ;

}return Som ;

}

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

21

Forme « pour » en langage CForme « pour » en langage C

int sommeEntierPos (int N){

int Som, i ;

Som = 0 ;for (i=1; i<=N; i++){

Som = Som + i ;}return Som ;

}

fonction sommeEntierPos (N : entier)résultat : entier variable : Som, i : entiersDébut

Som 0pour i variant de 1 à N par pas de 1 faire

Som Som + ifin pourle résultat est Som

fin

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

22

Forme « répéter » en langage CForme « répéter » en langage C

fonction lectureEntierPos ( )résultat : entier variable : Val : entierDébut répéter écrire("donner un entier POSITIF : ") lire(Val) jusqu’à Val 0 le résultat est Val fin

int lectureEntierPos (){ int Val ;

do { printf("Un entier POSITIF : "); scanf("%d", &Val); } while(Val<0) ; return Val ;}

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

23 Animation d’une itération : Animation d’une itération :

calculer le pgcd de a et bcalculer le pgcd de a et b

EnoncéEnoncé

On cherche le plus grand commun diviseur de 2 On cherche le plus grand commun diviseur de 2 nombres entiers positifs a et bnombres entiers positifs a et b..

Exemple : 3 est le pgcd de 9 et 15Exemple : 3 est le pgcd de 9 et 15

donnéedonnée : a et b, les 2 entiers positifs : a et b, les 2 entiers positifsrésultatsrésultats : leur pgcd : leur pgcdtraitementstraitements : on utilise l’algorithme d’Euclide : : on utilise l’algorithme d’Euclide : si si rr est le reste de la division entière de est le reste de la division entière de aa par par bb, alors , alors les diviseurs communs à les diviseurs communs à aa et et bb sont les mêmes que sont les mêmes que ceux de ceux de bb et et rr.. . .

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

24

Conclusion sur les itérationsConclusion sur les itérations

Avoir une fin : vérifier que dans tous les cas de Avoir une fin : vérifier que dans tous les cas de figure on sortira de la boucle à moment donnéfigure on sortira de la boucle à moment donné

tant quetant que CC fairefaire AA fin tant quefin tant que

ÁÁ vérifier : vérifier :

valeur de valeur de CC bien définie, avant l’entrée dans bien définie, avant l’entrée dans l’itérationl’itération

valeur de valeur de CC effectivement modifiée par effectivement modifiée par AA

les actions de les actions de AA doivent faire tendre doivent faire tendre CC vers vers fauxfaux