Notion de trace suivre l volution des valeurs des variables
This presentation is the property of its rightful owner.
Sponsored Links
1 / 24

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


  • 53 Views
  • Uploaded on
  • Presentation posted in: General

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 ? ?.

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Notion de trace suivre l volution des valeurs des variables

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 ? ?

1 100 ? 101

1 100 104 101

1 100 104 107

????


Un exemple de programme en c

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) ;

}


Notion de trace suivre l volution des valeurs des variables

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 ;

    }


Progression de l enseignement

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 »


La s quence

début

Début

N1  N2

N2  N1

Fin

?

fin

La séquence

N1N2

Échange des valeurs de N1 et N2 :

1020

20 20

N1  N2

20 20

N2  N1


Notion de trace suivre l volution des valeurs des variables

NN1N2

début

?1020

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).


Les choix

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


Notion de trace suivre l volution des valeurs des variables

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


Notion de trace suivre l volution des valeurs des variables

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


Notion de trace suivre l volution des valeurs des variables

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


Notion de trace suivre l volution des valeurs des variables

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 ;

}


S lection de cas

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


Animation d un choix r solution d une quation du second degr

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


Les it rations r p titions

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

…………


Notion de trace suivre l volution des valeurs des variables

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...


Notion de trace suivre l volution des valeurs des variables

Somme des N premiers entiers positifs

NSom

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


Autres it rations

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.


Notion de trace suivre l volution des valeurs des variables

iSom

? 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


Notion de trace suivre l volution des valeurs des variables

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


Forme tant que en langage c

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


Notion de trace suivre l volution des valeurs des variables

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 ;

}


Notion de trace suivre l volution des valeurs des variables

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


Animation d une it ration calculer le pgcd de a et b

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. .


Conclusion sur les it rations

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


  • Login