a, b, c - Université de Sherbrooke

publicité
CQP 112 Introduc/on à la programma/on Thème 1 : Introduc/on, no/ons de base Aïda Ouangraoua Département d’informa/que CQP 112 : Introduc/on à la programma/on Plan 1.  Objec(fs du cours 2.  Présenta/on du plan de cours 3.  Phases de développement d’un programme 4.  Algorithmes 5.  Langages de programma/on Objec/fs du cours q  Acquérir no/ons de base en algorithmique, développement, et programma/on informa/que q  Concevoir et développer des programmes de façon rigoureuse et méthodique q  Algorithme : Démarche permeOant de résoudre un problème q  Programme : Liste d’instruc/ons dans un langage de programma/on strict q  Compilateur : Traducteur du langage de programma/on vers le langage machine Plan 1.  Objec/fs du cours 2.  Présenta(on du plan de cours 3.  Phases de développement d’un programme 4.  Algorithmes 5.  Langages de programma/on Plan de cours Plan 1.  Objec/fs du cours 2.  Présenta/on du plan de cours 3.  Phases de développement d’un programme 4.  Algorithmes 5.  Langages de programma/on Défini/ons q  Informa/que q  Traitement automa/que de l’informa/on q  U/le pour la résolu/on de problèmes q  Applica/on dans divers domaines : ges/on, santé, ingénierie, etc. q  Problème q  Défini par des données en entrée, des solu/ons en sor/e, et la descrip/on des rela/ons entre les entrées et les sor/es q  Exemple : q  Entrées : trois en/ers a, b, c ; q  Sor/e : un en/er min q  Rela/on : min est le plus pe/t de a, b, c Phases de développement 1. Spécifica/on du problème q  Préciser les besoins de l’u/lisateur ou le problème 2. Analyse q  Rechercher des détails sur le problème, contraintes 3. Concep/on q  Décrire un algorithme indépendant du langage du programma/on 4. Implanta/on q  Choix du langage de programma/on selon les besoins q  Traduc/on de la concep/on dans le langage Nécessaire de maîtriser syntaxe et séman/que du langage Phases de développement 1. Spécifica/on du problème q  Préciser les besoins de l’u/lisateur ou le problème 2. Analyse q  Rechercher des détails sur le problème, contraintes 3. Concep/on q  Décrire un algorithme indépendant du langage de programma/on pour résoudre le problème 4. Implanta/on q  Choix du langage de programma/on selon les besoins q  Traduc/on de la concep/on dans le langage Nécessaire de maîtriser syntaxe et séman/que du langage Phases de développement 1. Spécifica/on du problème q  Préciser les besoins de l’u/lisateur ou le problème 2. Analyse q  Rechercher des détails sur le problème, contraintes 3. Concep/on q  Décrire un algorithme indépendant du langage de programma/on pour résoudre le problème 4. Implanta/on q  Choix du langage de programma/on selon les besoins q  Traduc/on de la concep/on dans le langage Nécessaire de maîtriser syntaxe et séman/que du langage Phases de développement 1. Spécifica/on du problème q  Préciser les besoins de l’u/lisateur ou le problème 2. Analyse q  Rechercher des détails sur le problème, contraintes 3. Concep/on CQP112 q  Décrire un algorithme indépendant du langage de programma/on pour résoudre le problème 4. Implanta/on q  Choix du langage de programma/on selon les besoins q  Traduc/on de la concep/on dans le langage Nécessaire de maîtriser syntaxe et séman/que du langage Exemple Décrire un algorithme permeOant de lire les valeurs de trois nombres en(ers entrées au clavier, puis écrire à l’écran la valeur du nombre le plus pe(t des trois. Problème #1: Entrées: (clavier) a,b,c : en/ers Sor(es: (écran) m : en/er Rela(on: m = min {a,b,c} Exemple Décrire un algorithme permeOant de résoudre le problème #1 suivant : lire les valeurs de trois nombres en(ers entrées au clavier, puis écrire à l’écran la valeur du nombre le plus pe(t des trois. Peut-­‐on décomposer ce problème en sous-­‐problèmes ? Exemple q  Sous-­‐problèmes: q  Lecture : Lire trois valeurs en/ères q  Calcul : Calculer la plus pe/te valeur q  Affichage : Afficher la plus pe/te valeur Exemple q  Sous-­‐problèmes: q  Lecture : Lire trois valeurs en/ères q  Calcul : Calculer la plus pe/te valeur q  Affichage : Afficher la plus pe/te valeur a,b,c clavier • 
• 
• 
• 
Lecture a,b,c variable Calcul m variable Affichage m écran Types d’entrée/sor/e : clavier, variable, écran Variable : contenant d’un objet (valeur ou ensemble de valeurs, etc.) Exemple : a ß 0 ou mß a,b,c ou m ß calcul_minimum(a,b,c) Autres types d’entrée/sor/e : microphone, fichiers, caméra, etc. Exemple q  Sous-­‐problèmes: q  Lecture : Lire trois valeurs en/ères q  Calcul : Calculer la plus pe/te valeur q  Affichage : Afficher la plus pe/te valeur q  Pour chaque sous-­‐problème: Entrées: Sor(es: Rela(on: Exemple q  Algorithmes pour Problème #1 et chaque sous-­‐
problème: Algorithme pour Problème #1 Entrées: aucune Variables locales: a,b,c,m : en/ers Sor(es: aucune Algorithme: 1. a,b,c ß lire_trois_en/ers_au_clavier() 2. m ß calculer_min(a,b,c) 3. afficher_min_sur_ecran(m) Phases de développement 1. Spécifica/on du problème q  Préciser les besoins de l’u/lisateur ou le problème 2. Analyse q  Rechercher des détails sur le problème, contraintes 3. Concep/on q  Écrire un algorithme en langage naturel indépendant du langage du programma/on 4. Implanta/on q  Choix du langage de programma/on selon les besoins q  Traduc/on de la concep/on dans le langage Nécessaire de maîtriser syntaxe et séman/que du langage Phases de développement 5. Mise au point q  Vérifier que le programme est valide et robuste jeu d’essais (test complet) 6. Maintenance q  80% du travail à effectuer sur un logiciel q  Étape à simplifier par une bonne qualité des phases 1,2,3,4,5, avec une documenta/on adéquate sur ses phases Phases de développement q  Contraintes à respecter pour la solu/on q  Respect des spécifica/ons q  Validité et robustesse q  Efficacité (temps d’exécu/on) q  Lisibilité et documenta/on q  Contenu de ce cours q  Appren/ssage de la concep/on et de la programma/on q  Cours à venir introduisant analyse, concep/on et implanta/on pour des problèmes informa/ques : IFT 159, IFT 339, 301, 232, 359 Plan 1.  Objec/fs du cours 2.  Présenta/on du plan de cours 3.  Phases de développement d’un programme 4.  Algorithmes 5.  Langages de programma/on Défini/ons q  Algorithmes q  Démarche permeOant de trouver la solu/on d’un problème pour des données en entrée Défini/ons q  Algorithmes q  Démarche permeOant de trouver la solu/on d’un problème pour des données en entrée q  Suite d’instruc/ons (comparable à une receOe de cuisine) q  Trois types d’instruc/on: q  instruc/on non-­‐condi/onnelle. Exemple : a ß b + c q  instruc/on sélec/ve. Si (condi+on est vrai) alors: faire A Sinon faire B Défini/ons q  Algorithmes q  Trois types d’instruc/on: q  instruc(on non-­‐condi(onnelle Exemples : Lire a,b,c ; a ß b + c ; Afficher m ; q  instruc/on sélec/ve. Si (condi+on est vrai) alors: faire A Sinon faire B Défini/ons q  Algorithmes q  Trois types d’instruc/on: q  instruc/on non-­‐condi/onnelle Exemples : Lire a,b,c ; a ß b + c ; Afficher m ; q  instruc(on sélec(ve : plusieurs possibilités dépendant d’une condi/on Si (condi+on est vrai) alors: faire A Sinon Défini/ons q  Algorithmes q  Trois types d’instruc/on: q  instruc/on non-­‐condi/onnelle. q  instruc(on sélec(ve : plusieurs possibilités dépendant d’une condi/on Si (condi+on est vrai) alors: faire A Sinon faire B Défini/ons q  Algorithmes q  Trois types d’instruc/on: q  instruc/on non-­‐condi/onnelle. q  instruc(on sélec(ve : plusieurs possibilités dépendant d’une condi/on. Exemple : Si b >= a alors: diff ß b -­‐ a Sinon diff ß a -­‐ b Défini/ons q  Algorithmes q  Trois types d’instruc/on: q  instruc/on non-­‐condi/onnelle. q  instruc/on sélec/ve. q  instruc(on itéra(ve (boucle) Tant que (condi+on est vrai): faire A Défini/ons q  Algorithmes q  Trois types d’instruc/on: q  instruc/on non-­‐condi/onnelle. q  instruc/on sélec/ve. q  instruc(on itéra(ve (boucle). Exemple : Tant que a > 0: a ß a -­‐ 1 Exemple : calcul du minimum de trois nombres Autre algorithme pour Problème #1 Entrées: (clavier) a,b,c : trois en/ers Variables locales: aucune Sor(es: (écran) m : en/er Algorithme: 1. Lire les valeurs de a, b, c au clavier 2. m ß 0 3. Si a est plus pe/t ou égal à b alors: 4. Si a est plus pe/t ou égal à c alors: 5. m ß a 6.  Sinon: 7. m ß c 8. Sinon: 9. Si b est plus pe/t ou égal à c alors: 10. m ß b 11. Sinon: 12. m ß c 13. Afficher la valeur de m à l’écran Sans décomposi/on en sous-­‐problèmes Représenta/on sous forme de diagramme Début ou Fin Instruc/on ou suite d’instruc/ons Condi/on Jonc/on Exemple Début Autre algorithme pour Problème #1 Entrées: (clavier) a,b,c : trois en/ers Variables locales: aucune Lire a,b,c Sor(es: (écran) m : en/er m ß 0 Algorithme: 1. Lire les valeurs de a, b, c au clavier vrai faux 2. m ß 0 a <= b 3. Si a est plus pe/t ou égal à b alors: 4. Si a est plus pe/t ou égal à c alors: b <= c a <= c 5. m ß a vrai vrai faux faux 6.  Sinon: 7. m ß c m ß a m ß b m ß c m ß c 8. Sinon: 9. Si b est plus pe/t ou égal à c alors: 10. m ß b 11. Sinon: Afficher m 12. m ß c 13. Afficher la valeur de m à l’écran Fin Exemple Début Autre algorithme pour Problème #1 Entrées: (clavier) a,b,c : trois en/ers Variables locales: aucune 1. Lire a,b,c Sor(es: (écran) m : en/er 2. m ß 0 Algorithme: 1. Lire les valeurs de a, b, c au clavier vrai faux 2. m ß 0 a <= b 3. Si a est plus pe/t ou égal à b alors: 4. Si a est plus pe/t ou égal à c alors: b <= c a <= c 5. m ß a vrai vrai faux faux 6.  Sinon: 7. m ß c 5. 7. 10. 12. m ß
a
m ß
b
m ß c m ß c 8. Sinon: 9. Si b est plus pe/t ou égal à c alors: 10. m ß b 11. Sinon: 13. Afficher m 12. m ß c 13. Afficher la valeur de m à l’écran Fin Trace d’un algorithme q  Pour un jeu d’entrées donné, lister toutes les instruc/ons non-­‐condi/onnelles exécutés, et donner la valeur des variables d’entrée, sor/e et locales (état du variables) après chaque instruc/on. q  Permet de suivre l’exécu/on d’un algorithme pour un jeu d’entrée donnée. A A A A Début 1. Lire a,b,c 2. m ß 0 vrai vrai a <= b b <= c a <= c faux 5. m ß a faux vrai 7. m ß c 10. m ß b 13. Afficher m Fin faux 12. m ß c Trace d’un algorithme q  Pour un jeu d’entrées donné, lister toutes les instruc/ons non-­‐condi/onnelles exécutés, et donner la valeur des variables d’entrée, sor/e et locales (état des variables) après chaque instruc/on. q  Permet de suivre l’exécu/on d’un algorithme pour un jeu d’entrées donné. A A A A Début 1. Lire a,b,c 2. m ß 0 vrai vrai a <= b b <= c a <= c faux 5. m ß a faux vrai 7. m ß c 10. m ß b 13. Afficher m Fin faux 12. m ß c Trace d’un algorithme q  Pour un jeu d’entrées donné, lister toutes les instruc/ons non-­‐condi/onnelles exécutés, et donner la valeur des variables d’entrée, sor/e et locales (état des variables), après chaque instruc/on. Exemple : pour a,b,c = 5,4,6 1. 2. 10. 13. Début 1. Lire a,b,c 2. m ß 0 vrai vrai a <= b b <= c a <= c faux 5. m ß a faux vrai 7. m ß c 10. m ß b 13. Afficher m Fin faux 12. m ß c Trace d’un algorithme q  Pour un jeu d’entrées donné, lister toutes les instruc/ons non-­‐condi/onnelles exécutés, et donner la valeur des variables d’entrée, sor/e et locales (état des variables), après chaque instruc/on. Exemple : pour a,b,c = 5,4,6 a b c m 1. 5 4 6 -­‐ 2. 5 4 6 0 10. 5 4 6 4 13. 5 4 6 4 Début 1. Lire a,b,c 2. m ß 0 vrai vrai a <= b b <= c a <= c faux 5. m ß a faux vrai 7. m ß c 10. m ß b 13. Afficher m Fin faux 12. m ß c Exercices Décrire des algorithmes permeOant de résoudre : •  Problème #2 : lire des mots entrés au clavier, et les afficher à l’écran au fur et à mesure qu’ils sont lus jusqu’à ce que le mot lu soit « FIN ». •  Problème #3 : lire deux nombres en(ers a et b au clavier, et écrire dans un fichier nommé fic.txt tous les nombres en(ers pairs supérieurs ou égaux à a et inférieurs ou égaux à b. Plan 1.  Objec/fs du cours 2.  Présenta/on du plan de cours 3.  Phases de développement d’un programme 4.  Algorithmes 5.  Langages de programma(on Langage de programma/on q  N’intervient pas dans la concep/on q  Ou/l primordial pour l’implanta/on q  Nécessaire de maîtriser syntaxe et séman/que Langage de programma/on q  Appren/ssage comparable à celui d’une langue q  But : exprimer concep/on, algorithme, receOe q  Spécificité : s’adresser à un autre programme ou à un ordinateur q  Conséquence : syntaxe et séman/que strictes pour une interpréta/on précise « When you are programming, you are teaching possibly the stupidest thing in the en/re universe -­‐ a computer -­‐ how to do something » Gabe Newell. Mul/tude de langages q  820 : Al Khawarizmi «La science de l’élimina/on et de la réduc/on» q  1725 : Basile Bouchon, cartes perforées q  1840 : Ada Lovelace, principes logiques d’exécu/on d’un programme q  1854 : George Boole : langage binaire (ordinateur) q  1950 : Maurice Wilkes : langage assembleur (haut niveau) q  1951 : Grace Hopper : premier compilateur (A-­‐0 system) q  1955 : IBM : Créa/on du langage Fortran (calcul scien/fique) q  1958 : Inven/on des langages Cobol, Lisp (IA) q  1959 : Inven/on du langage Algol (délimiteurs début/fin) Mul/tude de langages q  Années 60 : ordinateurs à cartes perforées q  1970 : Ken Thompson : Inven/on du langage B pour UNIX q  1972 : Dennis Ritchie : Naissance du langage C (successeur de B) q  1979 : Jean Ichbiach : Inven/on du langage Ada (très complexe) pour le département de la défense américaine q Fin années 70 : Naissance de Prolog (programma/on logique) q  Années 80 : Naissance des langages orientés-­‐objets (C++) q 1986 : Larry Wall : Perl, pour le traitement d’informa/ons texte q  Fin années 80 : q  langages de commandes et scripts : shell, bach q  Interfaces graphiques : Tcl/Tk q  Programmes des mathéma/ques : Mathema/ca, Mapple Mul/tude de langages q  1989 : Naissance de C (et la norme ANSI C) q  Années 90 : Montée de Windows et Internet q  1991 : Guido van Rossum : Inven/on de Python q  1995 : Introduc/on de JavaScript, Java q  Langages de bases de données – web : PHP, SQL q  Années 2000 : certains langages se démarquent q  C –> C++ -­‐> Java -­‐> D -­‐> C#, et bien d’autres langages spécialisés. Choix guidé par concep/on car beaucoup de langages Critères de choix du langage q  Deux grands types de paradigmes de programma/on q  Impéra(f : le programme est une liste d’instruc/on. Chaque instruc/on décrit une étape de la solu/on et implique des changements de l’état du programme. Exemple (C) : > a,b,c,m = 0 > a,b,c = lire_trois_en/ers() > m = calculer_minimum(a,b,c) > afficher(m) q  Déclara(f : on décrit le problème à solu/onner. Exemple (Lisp): > nombres = [1,2,3,4] > nombre_doubles = [x*2 for x in nombres] Critères de choix du langage q  Autres paradigmes q  Orienté-­‐objet : données et traitements rassemblés au sein d’objets. Exemple : C++, Java > objet = Class_Calcul_Min_De_Trois() > objet.lire_trois_en/ers() > objet.calculer_minimum() > objet.afficher_minimum() q  Fonc/onnel : l’opéra/on de base est l’évalua/on de fonc/ons. Exemple : Lisp, Scheme > a,b,c,m = 0 > a,b,c = lire_trois_en/ers() > m = calculer_minimum(a,b,c) > afficher(m) Critères de choix du langage q  Autres paradigmes q  Logique/par contrainte : programme défini à par/r de règles logiques. Exemple : Prolog q  Certains langages sont mul/-­‐paradigmes q  Exemple : Python (impéra/f, orienté-­‐objet, fonc/onnel) qui sera u/lisé dans ce cours. Critères de choix du langage q  Niveau de communica/on avec la machine q  Langages de bas-­‐niveau (binaire) : peu intelligible pour humain q  Langages de haut-­‐niveau : inintelligible pour machine, à traduire en langage binaire q  Langages de haut-­‐niveau q  Interprété : traduit par un interpréteur à chaque instruc/on et exécu/on. Exemple : Python, Perl q  Compilé : traduit en/èrement par un compilateur une seule fois, puis exécuté. Exemple : C, Java, C++ Critères de choix du langage q  Typage des données q  Sta/quement typé : types fixés à la compila/on. Exemple : C, C++, Java q  Dynamiquement typé : types découverts au moment de l’exécu/on. Exemple : Python, VBScript q  Fortement typé : traitements dis/ncts suivant le type. Conversion nécessaire. Exemple : C++, Java, Python q  Faiblement typé : Le type peut être ignoré. Exemple : VBScript. q  Python est dynamiquement et fortement typé. Langages de programma/on q  Populaire sur le marché du travail : programma/on procédurale, orientée objet q  Pour ce cours, le langage u/lisée est Python q  Langages similaires (C, C++, Java) u/lisés dans d’autres cours q  Permet de pra/quer plusieurs paradigmes q  Facilite l’appren/ssage d’autres langages procéduraux de haut niveau Sources q  Introduc/on à la programma/on. M. Le Gonidec. Université du Sud, Toulon-­‐Var. q Analyse et programma/on. Notes de cours. G. Girard. Université de Sherbrooke. q  Introduc/on à la programma/on. Notes de cours. M. For/n. Université de Sherbrooke. 
Téléchargement