Semaine passée : Jeudi 20 janvier A) if imbriqué vs switch
B) Introduction à la boucle for
Quatrième semaine : Jeudi 27 janvier A) Les 3 boucles et leurs utilisations B) Qq applications scientifiques
C) Qq statistiques de base
IFT 1969 : Résumé pour les boucles.
A) But des boucles : répéter le même traitement B) Sortes de boucles :
Boucle Répéter … Boucle Tant que … Boucle Pour … do
instruction
while (cond continue);
while (cond continue)
instruction for(exp1;exp2;exp3) instruction
Boucle d’ordre militaire exécuter d’abord
vérifier après
Boucle plus civilisée vérifier d’abord exécuter après
Boucle plus systématique exp1 : initialisation exp2 : continuité exp3 : ajustement
Condition : pour continuer à répéter
Ne connaît pas à l’avance le nb. de fois Connaître le nombre de fois Répéter
le même traitement Tant que l’usager veut continuer
Recherche :
Tantque (! Trouvé) chercher …
borne
∑ exepression i = k
borne
∏ expression i = k
Validation Lecture d’1 fichier
(à venir)
Indices des
tableaux (à venir) Calcul scientifique (plein d’exemples)
etc … etc … etc …
Exemple :
int somme = 0, valeur =1;
do {
somme = somme+valeur;
valeur++;
} while (valeur <= 50);
printf("somme =%d",somme);
Exemple :
int somme = 0, valeur =1;
while (valeur <= 50) { somme = somme+valeur;
valeur++;
}
printf("somme =%d",somme);
Exemple :
int somme = 0, valeur;
for (valeur=1; valeur <=
50; valeur++) somme = somme+valeur;
printf("somme =%d",somme);
IFT 1969 : hiver 2004
Résumé le calcul de quelques statistiques de base
Compteur Totaliseur Moyenne Minimum Maximum
But Pour compter:
0, 1, 2, 3, 4, …
Pour calculer un
total, une somme Somme divise par le nombre
Déterminer la plus petite valeur
Déterminer la plus grande valeur
Type Souvent int int ou float Souvent float int ou float int ou float Initiation Souvent par 0
avant et en dehors d'une
boucle int n = 0;
Souvent par 0
avant et en dehors d'une
boucle
Initialiser : la somme
et le compteur
Souvent par une valeur suffisamment
grande avant et en dehors
d'une boucle
Souvent par une valeur suffisamment
petite avant et en dehors
d'une boucle
Ajustement Incrémenter (ajouter 1 de plus) à la bonne
place, dans la boucle:
……
n++;
Ajouter (totaliser ) (ajouter 1 valeur
à l'ancienne somme) à la bonne place, dans la boucle:
……
somme += valeur;
Ajuster :
la somme et le compteur
Dans la boucle:
if (valeur <
minimum) minimum = valeur ;
Dans la boucle:
if (valeur >
maximum) maximum = valeur ;
Utilisation - Afficher - Calculer la moyenne
- Afficher - Calculer la moyenne
- Afficher - Afficher - Afficher
La bonne place : à expliquer en classe.
Écriture raccourcie, niveau du IFT 1969 :
variable = variable opérateur valeur; < --- > variable opérateur= valeur;
exemple : somme = somme + taille; < --- > somme += taille;
produit = produit * (n % 10) ; < --- > produit *= n % 10;
Cas spécial pour IFT 1969 :
n = n + 1 ; < --- > n += 1 ; < --- > n++;
/* Dans combien d'années, devienra t-on MILLIONNAIRE ? Explications : semaine du 24 janvier 2004
Matière : boucle do ... while ... (entre autres) À réfléchir sur la dernière exécution :
si nos grands parents ont pensé à nous!!!
*/
#include <stdio.h>
#include <ctype.h>
void main()
{ const float RICHESSE_VOULUE = 1000000.00;
float depotAnnuel, /* montant fixe de dépôt annuel */
taux, /* taux d'intérêt annuel espéré */
interetAnnuel, /* intérêt annuel à la fin de l'année qui
s'ajoute à la capitale à la fin de l'année (intérêt composé) */
capital; /* capital accumulé, année après année */
int nbAnnee; /* compteur du nombre d'années */
char reponse; /* Oui ou Non si l'usager veut continuer */
/* Traiter plusieurs placements tant que l'usager décide de continuer : */
do {
/* traitement pour un placement : */
/* Saisie les données : montant de dépôt et le taux d'intérêt */
printf("Quel est le montant de depot annuel (exemple 1000.0) ? ");
scanf("%f", &depotAnnuel);
printf("Quel est le taux annuel fixe espere (ex. 7.5 pour 7.5\%%) ? ");
scanf("%f", &taux);
if (depotAnnuel >= RICHESSE_VOULUE)
printf("Vous avez atteint ou depasse le seuil %10.2f $.\n"
"Donnez la chance aux autres personnes!\n", RICHESSE_VOULUE);
else {
/* affichage de l'en-tete pour résumer l'évolution du placement */
printf("\n\nFONDS XYZ inc.\n");
printf("Montant de depot annuel : %6.2f $\n", depotAnnuel);
printf("Taux d'interet annuel (suppose fixe) : %4.2f\n", taux);
printf("\n\nEvolution du placement :\n\n");
printf("Annee Capital (au debut) Interet annuel Capital (a la fin de l'annee)\n");
nbAnnee = 0;
capital = 0;
do
{ /* début d'une année de placement */
nbAnnee = nbAnnee + 1;
/* capital accumulé au début de l'année de placement */
capital = capital + depotAnnuel ;
printf("%3d %12.2f", nbAnnee, capital);
/* à la fin de l'année de placement : */
interetAnnuel = taux / 100.0 * capital ;
/* ajouter l'intérêt au capital pour une autre année */
capital = capital + interetAnnuel ;
printf("%25.2f %18.2f\n", interetAnnuel, capital);
}
while (capital < RICHESSE_VOULUE);
printf("\nApres %d annee(s), votre capital sera : %12.2f$\n", nbAnnee, capital);
}
/* Obtenir l'avis de l'usager */
printf("\n\nVoulez-vous continuer ? (o/n) ");
fflush(stdin);
scanf("%c", &reponse);
} while ( toupper(reponse) == 'O' );
printf("\nBonnes reves!\n\n");
}
/* Exécution :
Quel est le montant de depot annuel (exemple 1000.0) ? 3000 Quel est le taux annuel fixe espere (ex. 7.5 pour 7.5%) ? 10
FONDS XYZ inc.
Montant de depot annuel : 3000.00 $
Taux d'interet annuel (suppose fixe) : 10.00
Evolution du placement :
Annee Capital (au debut) Interet annuel Capital (a la fin de l'annee)
1 3000.00 300.00 3300.00 2 6300.00 630.00 6930.00 3 9930.00 993.00 10923.00 4 13923.00 1392.30 15315.30 5 18315.30 1831.53 20146.83 6 23146.83 2314.68 25461.51 7 28461.51 2846.15 31307.67
8 34307.66 3430.77 37738.43 9 40738.43 4073.84 44812.27 10 47812.27 4781.23 52593.50 11 55593.50 5559.35 61152.85 12 64152.85 6415.29 70568.14 13 73568.14 7356.81 80924.95 14 83924.95 8392.50 92317.45 15 95317.45 9531.74 104849.19 16 107849.19 10784.92 118634.11 17 121634.11 12163.41 133797.52 18 136797.52 13679.75 150477.27 19 153477.27 15347.73 168824.99 20 171825.00 17182.50 189007.50 21 192007.50 19200.75 211208.25 22 214208.25 21420.82 235629.07 23 238629.08 23862.91 262491.99 24 265492.00 26549.20 292041.20 25 295041.19 29504.12 324545.31 26 327545.31 32754.53 360299.84 27 363299.84 36329.98 399629.83 28 402629.81 40262.98 442892.79 29 445892.78 44589.28 490482.06 30 493482.06 49348.21 542830.27 31 545830.25 54583.02 600413.27 32 603413.25 60341.32 663754.57 33 666754.56 66675.45 733430.02 34 736430.00 73643.00 810073.00 35 813073.00 81307.30 894380.30 36 897380.31 89738.03 987118.34 37 990118.38 99011.84 1089130.21 Apres 37 annee(s), votre capital sera : 1089130.25$
Voulez-vous continuer ? (o/n) o
Quel est le montant de depot annuel (exemple 1000.0) ? 12345678.0
Quel est le taux annuel fixe espere (ex. 7.5 pour 7.5%) ? 2.5 Vous avez atteint ou depasse le seuil 1000000.00 $.
Donnez la chance aux autres personnes!
Voulez-vous continuer ? (o/n) o
Quel est le montant de depot annuel (exemple 1000.0) ? 100 Quel est le taux annuel fixe espere (ex. 7.5 pour 7.5%) ? 15.0
FONDS XYZ inc.
Montant de depot annuel : 100.00 $
Taux d'interet annuel (suppose fixe) : 15.00
Evolution du placement :
Annee Capital (au debut) Interet annuel Capital (a la fin de l'annee)
1 100.00 15.00 115.00 2 215.00 32.25 247.25 3 347.25 52.09 399.34 4 499.34 74.90 574.24 5 674.24 101.14 775.37 6 875.37 131.31 1006.68 7 1106.68 166.00 1272.68 8 1372.68 205.90 1578.58 9 1678.58 251.79 1930.37 10 2030.37 304.56 2334.93 11 2434.93 365.24 2800.17 12 2900.17 435.02 3335.19 13 3435.19 515.28 3950.47 14 4050.47 607.57 4658.04
15 4758.04 713.71 5471.75 16 5571.75 835.76 6407.51 17 6507.51 976.13 7483.63 18 7583.63 1137.55 8721.18 19 8821.18 1323.18 10144.36 20 10244.36 1536.65 11781.01 21 11881.01 1782.15 13663.16 22 13763.16 2064.47 15827.63 23 15927.63 2389.15 18316.78 24 18416.78 2762.52 21179.30 25 21279.30 3191.89 24471.19 26 24571.19 3685.68 28256.87 27 28356.87 4253.53 32610.40 28 32710.40 4906.56 37616.96 29 37716.96 5657.54 43374.50 30 43474.50 6521.18 49995.68 31 50095.68 7514.35 57610.03 32 57710.03 8656.50 66366.54 33 66466.54 9969.98 76436.52 34 76536.52 11480.48 88016.99 35 88116.99 13217.55 101334.54 36 101434.54 15215.18 116649.72 37 116749.72 17512.46 134262.18 38 134362.17 20154.33 154516.50 39 154616.50 23192.47 177808.97 40 177908.97 26686.35 204595.31 41 204695.31 30704.30 235399.61 42 235499.61 35324.94 270824.55 43 270924.56 40638.68 311563.25 44 311663.25 46749.49 358412.74 45 358512.75 53776.91 412289.66 46 412389.66 61858.45 474248.11 47 474348.09 71152.21 545500.30 48 545600.31 81840.05 627440.36 49 627540.38 94131.05 721671.43
50 721771.44 108265.72 830037.16 51 830137.13 124520.57 954657.70 52 954757.69 143213.66 1097971.34 Apres 52 annee(s), votre capital sera : 1097971.38$
Voulez-vous continuer ? (o/n)
*/