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