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.