1. Les éléments algorithmiques Automne 2012 1. Les éléments algorithmiques Joan S. Morales - Introduction à l'algo. et la programmation Collège Lionel-Groulx
Définition: L’algorithme Séquence complète et ordonnée de toutes les opérations à réaliser pour obtenir un résultat Exemples d’algorithmes dans la vie de tous les jours: Recette, indications routières, instructions d’assemblage Un algorithme doit être sans ambigüités produire chaque fois les mêmes résultats se terminer après un nombre fini d’opérations Joan S. Morales - Introduction à l'algo. et la programmation 2
L’algorithme (suite) Exemples d’opérations: Lire un nombre du clavier Effectuer une opération mathématique Copier une valeur en mémoire Afficher une réponse à l’écran Un algorithme effectue des traitements sur des intrants pour produire des extrants Traitements Intrants Extrants Joan S. Morales - Introduction à l'algo. et la programmation 3
Étapes du développement Automne 2012 Étapes du développement Compréhension du problème Intrants Extrants Constantes Souvent programmeur oublie le client… Ne pas se pitcher direct sur l’ordi Conception: gros du travail Création du jeu de tests Cas de base Cas extrêmes Cas limites Cas d’erreur Joan S. Morales - Introduction à l'algo. et la programmation 4 Collège Lionel-Groulx
Étapes du développement (suite) Automne 2012 Étapes du développement (suite) Codification et mise au point Création du code Tests Débogage TESTER! Joan S. Morales - Introduction à l'algo. et la programmation 5 Collège Lionel-Groulx
4 règles d’or de la programmation Automne 2012 4 règles d’or de la programmation Le développement, c’est plus que de la programmation: il faut réfléchir avant! Il faut programmer un petit bout à la fois, compiler, tester et recommencer (itératif) Un beau programme est un bon programme! Une fois terminé, il faut tester son programme, puis le tester encore, puis le tester encore, puis le tester encore, puis le tester encore, puis le tester encore, puis le tester encore , puis le tester encore , puis le tester encore , puis le tester encore , puis le tester encore , puis le tester encore , puis le tester encore,… Pas facile de faire simple. Un programme c’est comme un texte: notion de beauté Ou comme une maison! La maison doit tenir plus qu'un mois, être modifiée, améliorée! Joan S. Morales - Introduction à l'algo. et la programmation Collège Lionel-Groulx
Un premier exemple: La sphère Automne 2012 Un premier exemple: La sphère Besoin d’un outil pour calculer le volume de boules de bowling (sphères) de dimension variable L’informatique n’est pas la solution à tous les problèmes… Joan S. Morales - Introduction à l'algo. et la programmation 7 Collège Lionel-Groulx
Compréhension du problème Volume = 4/3 x π x Rayon3 Intrant(s)? Le rayon Extrant(s)? Le volume Constantes π = 3,14159265 Joan S. Morales - Introduction à l'algo. et la programmation 8
Création du jeu de tests Automne 2012 Création du jeu de tests Intrant(s) Extrant(s) Rayon Volume 1 4,1887 2 33,5103 3,5 179,5943 25 65 449,8469 Erreur -1 Joan S. Morales - Introduction à l'algo. et la programmation 9 Collège Lionel-Groulx
Codification et mise au point Démarrer Visual Studio Créer un projet (et une solution) Écrire le programme Générer la solution Exécuter le programme Faire la mise au point (tests/débogage…) Joan S. Morales - Introduction à l'algo. et la programmation 10
Structure d’un programme C++ Entête Bibliothèques Programme principal Joan S. Morales - Introduction à l'algo. et la programmation
La séquence L’algorithme que l’on va créer sera une séquence. Automne 2012 La séquence L’algorithme que l’on va créer sera une séquence. Une séquence est une suite d’opérations, toutes obligatoires, nécessairement exécutées de haut en bas. Exemple: cin >> Rayon; Volume = 4.0f / 3.0f * Pi * Rayon * Rayon * Rayon; cout << Volume; L’ordre est important! S’il n’y a pas d’erreur, les 3 lignes seront exécutées l’une après l’autre! Enlever pseudo et morpho, mettre le code, faire des exemples!! Une animation, montrer avec le debuggeur Joan S. Morales - Introduction à l'algo. et la programmation Collège Lionel-Groulx
La variable Contenant pour donnée, information Automne 2012 La variable Contenant pour donnée, information Chaque variable a un type et un nom Le nom doit être composé uniquement de caractères alphabétiques, de chiffres décimaux et des traits de soulignement _ Normes de programmation Le nom d’une variable doit débuter par une lettre majuscule suivie de lettres minuscules Exemple: NbEtudiants Le nom doit être significatif! Il faut éviter les abréviations incompréhensibles! Illustrer l'association d'une variable à une case mémoire Joan S. Morales - Introduction à l'algo. et la programmation Collège Lionel-Groulx
La variable (suite) Il faut déclarer chaque variable avant usage Automne 2012 La variable (suite) Il faut déclarer chaque variable avant usage Pour déclarer une variable en C++ float Rayon; Pour déclarer une constante en C++ const float Pi = 3.14159f; Principaux types de données en C++ char (-128 à 127, entier) short (-32768 à 32767, entier) int (-2147483648 to 2147483647, entier) float (réel simple) double (réel double) bool (true ou false) Expliciter les types Expliquer le 4/3, 4.0/3, 4.0/3.0 et 4.0f / 3.0f http://www.commentcamarche.net/contents/cpp/cpptype.php3 Joan S. Morales - Introduction à l'algo. et la programmation Collège Lionel-Groulx
La constante symbolique La constante est une variable qui ne change pas! Facilite la modification d'un programme Rend le code plus facile à lire Exemple: const float PourcentageAugm = 0.03f; const int MoisRetroactifs = 9; Il faut éviter les constantes littérales (« magic numbers »)! Mauvais exemples: const int Trois = 3; const int NbMoisEtNbOeufs = 12; Joan S. Morales - Introduction à l'algo. et la programmation
Les opérations de base: la lecture du clavier Automne 2012 Les opérations de base: la lecture du clavier Le programme arrête et attend que l’usager tape une information à la console, suivie de la touche ENTRÉE L’information (un nombre ou un mot) est alors placée dans la variable spécifiée cin >> Rayon; Lit un nombre ou un mot seulement (espace) cin représente la console (Console INput) Nom de la variable qui va recevoir l’information Joan S. Morales - Introduction à l'algo. et la programmation Collège Lionel-Groulx
Les opérations de base: L’affectation Automne 2012 Les opérations de base: L’affectation Le programme copie la valeur de l’expression de droite dans la variable de gauche. L’ancienne valeur de la variable de gauche est écrasée! Ce n’est pas une égalité mathématique! Exemples: Age = 17; Salaire = 10 * NbHeures; X = Y; Exemples qui ne marchent pas: 75 = Note; 2 * X = Y; Exercice 1.0 Joan S. Morales - Introduction à l'algo. et la programmation Collège Lionel-Groulx
Les opérations de base: L’écriture Automne 2012 Les opérations de base: L’écriture Le programme affiche des informations à la console Exemples: cout << "Le volume est: "; cout << Volume; cout << endl; Ou encore: cout << "Le volume est: " << Volume << endl; Le texte doit être entre " " cout représente la console (Console OUTput) Pas de " " pour afficher le contenu d’une variable Pour changer de ligne (END of Line) Joan S. Morales - Introduction à l'algo. et la programmation Collège Lionel-Groulx
Code C++ final (voir vidéo!) // Sphere.cpp // Fait par Gontran Tromblon // le 22 août 2016 // But : lit un rayon et calcule le // volume de la sphère correspondante #include <iostream> using namespace std; int main() { const float Pi = 3.14159f; float Rayon; float Volume; cin >> Rayon; Volume = 4.0f / 3.0f * Pi * Rayon * Rayon * Rayon; cout << Volume; cout << endl; } Joan S. Morales - Introduction à l'algo. et la programmation
Règles de base du C++ Les majuscules et les minuscules sont importantes! Le C++ est sensible à la casse! Chaque instruction C++ se termine par un point virgule (sauf les commentaires, les inclusions de bibliothèques et les accolades ouvrantes et fermantes) Pour chaque parenthèse ouvrante (, il y a une parenthèse fermante ) Pour chaque accolade ouvrante {, il y a une accolade fermante } Joan S. Morales - Introduction à l'algo. et la programmation
Indentation du code CTRL-A,K,F Automne 2012 CTRL-A,K,F Indentation du code CTRL-A,K,F Joan S. Morales - Introduction à l'algo. et la programmation Collège Lionel-Groulx
Les composants (résumé) Automne 2012 Déclaration d’une constante symbolique Les composants (résumé) const float Pi = 3.14159f; float Rayon; float Volume; cin >> Rayon; Volume = 4.0f / 3.0f * Pi * Rayon * Rayon * Rayon; cout << Volume; Déclaration de variables / * << >>: de gauche à droite = : droite à gauche Opération de lecture Variable Opération d’affectation Constante littérale Expression arithmétique Opération d’écriture Joan S. Morales - Introduction à l'algo. et la programmation 22 Collège Lionel-Groulx
Les expressions arithmétiques Automne 2012 Les expressions arithmétiques Exécute un calcul mathématique Combinaison d’opérandes, d’opérateurs et de parenthèses Priorité Opérateur Description Associativité Mode C++ 1 ^ Exposant Binaire N.D. 2 + Positif Unaire - Négatif 3 * Multiplication / Division % Modulo (reste d’une division) 4 Addition Soustraction Priorité 0 : () Expliquer le 4.0/3.0 et 4.0/3 et 4/3 Joan S. Morales - Introduction à l'algo. et la programmation Collège Lionel-Groulx
Exp. arithmétiques (suite) Exemples 42 42 + 25 4 / 3 * PI * Rayon 4 / ( 3 * PI ) Joan S. Morales - Introduction à l'algo. et la programmation
Exercices 12 + 42 * 2 / 4 (12 + 42) * 2 / 4 4 * 8 / 2 ^ 3 + 1 Automne 2012 Exercices 12 + 42 * 2 / 4 (12 + 42) * 2 / 4 4 * 8 / 2 ^ 3 + 1 4 * ((8 / 2) ^ 3) + 1 (4 * 8 / 2) ^ 3 + 1 (4 * 8 / 2) ^ (3 + 1) Joan S. Morales - Introduction à l'algo. et la programmation Collège Lionel-Groulx
Exercices - Réponses 12 + 42 * 2 / 4 (12 + 42) * 2 / 4 4 * 8 / 2 ^ 3 + 1 4 * ((8 / 2) ^ 3) + 1 (4 * 8 / 2) ^ 3 + 1 (4 * 8 / 2) ^ (3 + 1) = 33 = 27 = 5 = 257 = 4097 = 65536 Joan S. Morales - Introduction à l'algo. et la programmation
Les bibliothèques standards Le vocabulaire de base de la plupart des langages est complété par des bibliothèques de fonctions Une fonction peut être vue comme un petit programme qui réalise une tâche précise Joan S. Morales - Introduction à l'algo. et la programmation
Les fonctions mathématiques Exemples: #include <iostream> // cin/cout #include <cmath> // Outils mathématiques Quelques fonctions mathématiques disponibles (cmath): cos(x) exp(x) fabs(x) log(x) log10(x) pow(x,y) sin(x) sqrt(x) Attention! Les fonctions trigonométriques utilisent des angles en radians! http://www.cplusplus.com/reference/cmath/ Joan S. Morales - Introduction à l'algo. et la programmation
L’appel d’une fonction Les intrants d’une fonction (généralement appelés paramètres) sont placés entre parenthèses séparés par des virgules Le résultat (l’extrant) est donné par la valeur de retour de la fonction (une seule valeur) Joan S. Morales - Introduction à l'algo. et la programmation
Exemple d’appel d’une fonction … #include <cmath> // Inclusion des outils using namespace std; // mathématiques int main() { RayonAuCube = pow(Rayon,3); Volume = 4.0f / 3.0f * Pi * RayonAuCube; // Ou encore: Volume = 4.0f / 3.0f * Pi * pow(Rayon,3); } Joan S. Morales - Introduction à l'algo. et la programmation
Un autre exercice On veut un logiciel qui permettra de calculer le prix total d’un article incluant la TPS et la TVQ. Ce logiciel devra, en fonction d’un prix entré par l’usager, afficher le prix de l’article, le montant de la TPS, le montant de la TVQ ainsi que le total qui inclut le prix de l’article et les différentes taxes. Pour ce logiciel, vous devrez considérer que le taux de la TPS est de 5 % et celui de la TVQ de 9,975 %. Joan S. Morales - Introduction à l'algo. et la programmation
Compréhension du problème Intrant(s)? Prix de l’article Extrant(s)? Prix Montant de la TPS Montant de la TVQ Total Constantes? TPS = 5% TVQ = 9,975% Joan S. Morales - Introduction à l'algo. et la programmation
Jeux de tests Intrant Extrants Prix ($) Prix ($) Montant TPS Montant TVQ Total 1 0,05 0,1 1,15 2,50 2,5 0,13 0,25 2,88 10 0,50 1,00 11,50 1500 75 146,25 1721,25 -5 Erreur Joan S. Morales - Introduction à l'algo. et la programmation
Code C++ … const float Tps = 0.05f; // 5% const float Tvq = 0.09975f; // 9.975% float Prix, MontantTps, MontantTvq, Total; cin >> Prix; MontantTps = Prix * Tps; MontantTvq = Prix * Tvq; Total = Prix + MontantTps + MontantTvq; cout << Prix; cout << MontantTps; cout << MontantTvq; cout << Total; Joan S. Morales - Introduction à l'algo. et la programmation