CQP 112 Introduc/on à la programma/on Thème 3 : Programma/on Python Département d’informa/que CQP 112 : Introduc/on à la programma/on Plan 1. Structure d’un programme 2. Entête 3. Inclusion de codes existants 4. Composants du code 5. Défini/on de fonc/ons Langage Python q Guido Van Rossum (1989) q Dynamiquement typé : types découverts à l’exécu/on q Fortement typé : : traitements dis/ncts suivant le type q Orienté objet : basé sur des défini/ons d’objets et d’instances de ces objets q Modulaire : composé de blocs Bloc q Suite d’instruc/ons q débutant par une ligne d’instruc/on terminée par ‘:’ q avec les lignes suivantes décalées par rapport à la première ligne. n = 10 somme_pairs = 0 somme_impairs = 0 while(n > 0): if(n % 2 == 0): somme_pairs = somme_pairs + n else: somme_impairs = somme_impairs + n n = n-­‐1 Bloc q Suite d’instruc/ons q débutant par une ligne d’instruc/on terminée par ‘:’ q avec les lignes suivantes décalées par rapport à la première ligne. n = 10 somme_pairs = 0 somme_impairs = 0 while(n > 0): if(n % 2 == 0): somme_pairs = somme_pairs + n else: somme_impairs = somme_impairs + n n = n-­‐1 Structure d’un programme Python q Entête q Direc/ves pour l’interpréta/on q Descrip/on du programme q Inclusion de codes existants q Bibliothèques prédéfinies q Programmes existants q Votre code q Liste d’instruc/ons #!/usr/bin/env python # -*- coding: utf-8 -*""" ``calcul_cosinus`` **module description** Ce module calcule le cosinus d'un angle donné en degrés. Entrées : Entête (clavier) angle_en_degres : réel angle donné en degrés Sorties : (clavier) cosinus : réel cosinus de l'angle ...moduleauthor:: Aïda Ouangraoua Janvier 2015 Codes existants """ from math import * ## Déclaration des variables angle_en_degres = 0.0 angle_en_radians = 0.0 cosinus = 0.0 Votre code ## Déclaration des constantes NBRE_RADIANS_DANS_DEGRE = pi/180 ## Lecture des entrées angle = input("Entrez un angle en degrés:\n") ## Conversion de l'angle en radians angle_en_radians = angle_en_degres * NBRE_RADIANS_DANS_DEGRE ## Calcul du cosinus cosinus = cos(angle_en_radians) ## Affichage print "Le cosinus de l'angle est", cosinus Plan 1. Structure d’un programme 2. Entête 3. Inclusion de codes existants 4. Composants du code 5. Défini/on de fonc/ons Entête q Instruc/ons pour l’interpréta/on q Descrip/on du programme (en commentaire) calcul_cosinus.py q Nom q Descrip/on q Auteur(e)(s) q Date #!/usr/bin/env python # -*- coding: utf-8 -*""" ``calcul_cosinus`` **module description** Ce module calcule le cosinus d'un angle donné en degr Entrées : (clavier) angle_en_degres : réel angle donné en degrés Sorties : (clavier) cosinus : réel cosinus de l'angle ...moduleauthor:: Aïda Ouangraoua Janvier 2015 """ from math import * Entêtes #!/usr/bin/env python # -­‐*-­‐ coding: uj-­‐8 -­‐*-­‐ """ ``calcul_cosinus`` **module descrip/on** Ce module calcule le cosinus d'un angle donné en degrés. Entrées : (clavier) angle_en_degres : réel angle donné en degrés Sor/es : (clavier) cosinus : réel cosinus de l'angle ...moduleauthor:: Aïda Ouangraoua Janvier 2015 """ Entêtes #!/usr/bin/env python # -­‐*-­‐ coding: uj-­‐8 -­‐*-­‐ """ ``calcul_cosinus`` **module descrip/on** Ce module calcule le cosinus d'un angle donné en degrés. Entrées : (clavier) angle_en_degres : réel angle donné en degrés Sor/es : (clavier) cosinus : réel cosinus de l'angle ...moduleauthor:: Aïda Ouangraoua Janvier 2015 """ Résultat de l’analyse du problème Entêtes q Commentaires q Lignes non lue par l’interprétateur q Très important dans un programme q Facilite la lecture et la maintenance q U/lisés pour la généra/on de la documenta/on q Lignes suivant le symbole # q Lignes placées entre """ et """ q Exemple # Calcul du cosinus cosinus = cos(angle_en_radians) #!/usr/bin/env python # -*- coding: utf-8 -*""" ``calcul_cosinus`` **module description** Ce module calcule le cosinus d'un angle donné en degrés. Entrées : Entêtes (clavier) angle_en_degres : réel angle donné en degrés Sorties : (clavier) cosinus : réel cosinus de l'angle ...moduleauthor:: Aïda Ouangraoua Janvier 2015 Codes existants """ from math import * ## Déclaration des variables angle_en_degres = 0.0 angle_en_radians = 0.0 cosinus = 0.0 Votre code ## Déclaration des constantes NBRE_RADIANS_DANS_DEGRE = pi/180 ## Lecture des entrées angle = input("Entrez un angle en degrés:\n") ## Conversion de l'angle en radians angle_en_radians = angle_en_degres * NBRE_RADIANS_DANS_DEGRE ## Calcul du cosinus cosinus = cos(angle_en_radians) ## Affichage print "Le cosinus de l'angle est", cosinus Plan 1. Structure d’un programme 2. Entêtes 3. Inclusion de codes existants 4. Composants du code 5. Défini/on de fonc/ons Inclusion de codes existants q Direc/ves à l’interprétateur q Inclusion de bibliothèques pré-­‐définies Exemples : string, math, os.path, string, … q Inclusion d’autres programmes q Syntaxe from <nom_bibliothèque> import * q Exemple from math import * from nom_fichier import * (ne pas ajouter l’extension .py du fichier) Contenu de la bibliothèque math : htps://docs.python.org/2/library/math.html #!/usr/bin/env python # -*- coding: utf-8 -*""" ``calcul_cosinus`` **module description** Ce module calcule le cosinus d'un angle donné en degrés. Entrées : Entêtes (clavier) angle_en_degres : réel angle donné en degrés Sorties : (clavier) cosinus : réel cosinus de l'angle ...moduleauthor:: Aïda Ouangraoua Janvier 2015 Codes existants """ from math import * ## Déclaration des variables angle_en_degres = 0.0 angle_en_radians = 0.0 cosinus = 0.0 Votre code ## Déclaration des constantes NBRE_RADIANS_DANS_DEGRE = pi/180 ## Lecture des entrées angle = input("Entrez un angle en degrés:\n") ## Conversion de l'angle en radians angle_en_radians = angle_en_degres * NBRE_RADIANS_DANS_DEGRE ## Calcul du cosinus cosinus = cos(angle_en_radians) ## Affichage print "Le cosinus de l'angle est", cosinus Plan 1. Squelete d’un programme 2. Entêtes 3. Inclusion de codes existants 4. Composants du code 5. Défini/on de fonc/ons """ ``calcul_cosinus`` **module description** Ce module calcule le cosinus d'un angle donné en degrés. Composants du code Entrées : (clavier) angle_en_degres : réel angle donné en degrés q Déclara/on des constantes q Déclara/on des variables q Déclara/on des fonc/ons q Blocs d’instruc/ons Sorties : (clavier) cosinus : réel cosinus de l'angle ...moduleauthor:: Aïda Ouangraoua Janvier 2015 """ from math import * ## Déclaration des variables angle_en_degres = 0.0 angle_en_radians = 0.0 cosinus = 0.0 ## Déclaration des constantes NBRE_RADIANS_DANS_DEGRE = pi/180 ## Lecture des entrées angle = input("Entrez un angle en degrés:\n") ## Conversion de l'angle en radians angle_en_radians = angle_en_degres * NBRE_RADIANS_DANS_DEGRE ## Calcul du cosinus cosinus = cos(angle_en_radians) ## Affichage print "Le cosinus de l'angle est", cosinus """ ``calcul_cosinus`` **module description** Ce module calcule le cosinus d'un angle donné en degrés. Composants du code Entrées : (clavier) angle_en_degres : réel angle donné en degrés q Déclara/on des constantes q Déclara/on des variables q Déclara/on des fonc/ons q Blocs d’instruc/ons Sorties : (clavier) cosinus : réel cosinus de l'angle ...moduleauthor:: Aïda Ouangraoua Pas obligatoire Janvier 2015 """ from math import * ## Déclaration des variables angle_en_degres = 0.0 angle_en_radians = 0.0 cosinus = 0.0 ## Déclaration des constantes NBRE_RADIANS_DANS_DEGRE = pi/180 ## Lecture des entrées angle = input("Entrez un angle en degrés:\n") ## Conversion de l'angle en radians angle_en_radians = angle_en_degres * NBRE_RADIANS_DANS_DEGRE ## Calcul du cosinus cosinus = cos(angle_en_radians) ## Affichage print "Le cosinus de l'angle est", cosinus """ ``calcul_cosinus`` **module description** Ce module calcule le cosinus d'un angle donné en degrés. Composants du code Entrées : (clavier) angle_en_degres : réel angle donné en degrés q DéclaraLon des constantes q DéclaraLon des variables q Déclara/on des fonc/ons q Blocs d’instruc/ons Sorties : (clavier) cosinus : réel cosinus de l'angle ...moduleauthor:: Aïda Ouangraoua Janvier 2015 """ from math import * ## Déclaration des variables angle_en_degres = 0.0 angle_en_radians = 0.0 cosinus = 0.0 ## Déclaration des constantes NBRE_RADIANS_DANS_DEGRE = pi/180 ## Lecture des entrées angle = input("Entrez un angle en degrés:\n") ## Conversion de l'angle en radians angle_en_radians = angle_en_degres * NBRE_RADIANS_DANS_DEGRE ## Calcul du cosinus cosinus = cos(angle_en_radians) ## Affichage print "Le cosinus de l'angle est", cosinus DéclaraLon des constantes et variables q U/lise l’affec/on qui permet de donner une valeur à un objet (constante ou variable) q Un objet est associé à un nom (noms donnés aux données en mémoire): q composé de letres (a-­‐z) (A-­‐Z), chiffres (0-­‐9) et « _ » q commence par une letre q ne con/ent de caractère réservé (*, +, $, ., (, ), #, !, %, ;, :, …) Pas obligatoire en python ; mais dans les normes de programma/on. DéclaraLon des constantes q Permet de donner des noms aux données qui ne doivent pas être modifiées : Constantes q Noms des constantes doivent être significa/fs q commencent par une letre q en majuscule (norme de programma/on) Exemples : NBRE_RADIANS_DANS_DEGRE, NBRE_SECONDES_DANS_HEURE q Syntaxe : suite d’instruc/ons d’affecta/on NBRE_RADIANS_DANS_DEGRÉ = 3.1415 / 180 NBRE_SECONDES_DANS_HEURE = 3600 DéclaraLons des variables q Permet de donner des noms aux données en mémoire q Noms des variables doivent être significa/fs q débutant par letre minuscule (norme de programma/on) Exemples : angle_en_degres, rayon, largeur, longueur q Syntaxe : suite d’instruc/ons d’affecta/on nbre_de_secondes = 100 prenom = "Lucy" angle_en_degres = 0.0 largeur = 0 longueur = 0 """ ``calcul_cosinus`` **module description** Ce module calcule le cosinus d'un angle donné en degrés. Composants du code Entrées : (clavier) angle_en_degres : réel angle donné en degrés q Déclara/on des constantes q Déclara/on des variables q Déclara/on des fonc/ons q Blocs d’instrucLons Sorties : (clavier) cosinus : réel cosinus de l'angle ...moduleauthor:: Aïda Ouangraoua Janvier 2015 """ from math import * ## Déclaration des variables angle_en_degres = 0.0 angle_en_radians = 0.0 cosinus = 0.0 ## Déclaration des constantes NBRE_RADIANS_DANS_DEGRE = pi/180 ## Lecture des entrées angle = input("Entrez un angle en degrés:\n") ## Conversion de l'angle en radians angle_en_radians = angle_en_degres * NBRE_RADIANS_DANS_DEGRE ## Calcul du cosinus cosinus = cos(angle_en_radians) ## Affichage print "Le cosinus de l'angle est", cosinus Sorties : (clavier) cosinus : réel cosinus de l'angle Composants du code ...moduleauthor:: Aïda Ouangraoua Janvier 2015 """ q Types de lignes q Commentaires q Instruc/ons q Types d’instruc/on q Non-­‐condi/onnelle q Affecta/on q Appel de fonc/on q Condi/onnelle from math import * ## Déclaration des variables angle_en_degres = 0.0 angle_en_radians = 0.0 cosinus = 0.0 ## Déclaration des constantes NBRE_RADIANS_DANS_DEGRE = pi/180 ## Lecture des entrées angle = input("Entrez un angle en degrés:\n") ## Conversion de l'angle en radians angle_en_radians = angle_en_degres * NBRE_RADIANS_DANS_DEG ## Calcul du cosinus cosinus = cos(angle_en_radians) ## Affichage print "Le cosinus de l'angle est", cosinus Sorties : (clavier) cosinus : réel cosinus de l'angle Composants du code ...moduleauthor:: Aïda Ouangraoua Janvier 2015 """ q Types de lignes q Commentaires q Instruc/ons q Types d’instruc/on q Non-­‐condiLonnelle q Affecta/on q Appel de fonc/on q Condi/onnelle from math import * ## Déclaration des variables angle_en_degres = 0.0 angle_en_radians = 0.0 cosinus = 0.0 ## Déclaration des constantes NBRE_RADIANS_DANS_DEGRE = pi/180 ## Lecture des entrées angle = input("Entrez un angle en degrés:\n") ## Conversion de l'angle en radians angle_en_radians = angle_en_degres * NBRE_RADIANS_DANS_DEG ## Calcul du cosinus cosinus = cos(angle_en_radians) ## Affichage print "Le cosinus de l'angle est", cosinus InstrucLon d’affectaLon q Permet de modifier la valeur d’une variable q Valeur d’une variable modifiable tout au long du code q Syntaxe nom_variable = <expression> q Expression peut être : q variable q valeur (exemple : 2 ou 1.05 ou "bonjour") q expression mathéma/que valide (exemple : (2 + 3) * 5 ; appel de fonc/on sur un jeu d’entrée donné) q Exemples : x = y x = (2 + x) * (y -­‐5) angle = 0.0 cosinus = cos(angle) Fonc/on déclarée ou incluse à par/r de codes existants Cas parLculier : lecture au clavier et affectaLon q Permet d’affecter à une variable une valeur lue au clavier q Syntaxe nom_variable = input(<message>) ou nom_variable = raw_input(<message>) q Message est : q le message d’instruc/on qui s’affiche à l’écran q exemple : "Tapez votre prénom" ou "Entrez un angle" q Exemples : prenom = input("Tapez votre prénom") angle = input("Entrez un angle") InstrucLon d’appel de foncLon (sans affectaLon) q Permet d’exécuter une fonc/on sur un jeu d’entrée donné Fonc/on déclarée ou incluse à par/r de codes existants q Syntaxe nom_fonc/on (<expression1>, <expression2>, …) q Exemples: afficher_intervalle(a,b) Cas parLculier : instrucLon d’affichage q Permet d’afficher une valeur à l’écran q Syntaxe print <expression1>, <expression2>, … q Exemples (a = 1, x = 2, y = 3, angle = 0, cosinus = 1): print "La somme de x et y est", x + y print "La valeur de la variable a est", a print "Le cosinus de l’angle", angle, "est", cosinus print "Le produit de 2+2 et", 3, "est (2+2)*3" #!/usr/bin/env python # -*- coding: utf-8 -*""" ``calcul_cosinus`` **module description** Ce module calcule le cosinus d'un angle donné en degrés. Entrées : Entêtes (clavier) angle_en_degres : réel angle donné en degrés Sorties : (clavier) cosinus : réel cosinus de l'angle ...moduleauthor:: Aïda Ouangraoua Janvier 2015 Codes existants """ from math import * ## Déclaration des variables angle_en_degres = 0.0 angle_en_radians = 0.0 cosinus = 0.0 Votre code ## Déclaration des constantes NBRE_RADIANS_DANS_DEGRE = pi/180 ## Lecture des entrées angle = input("Entrez un angle en degrés:\n") ## Conversion de l'angle en radians angle_en_radians = angle_en_degres * NBRE_RADIANS_DANS_DEGRE ## Calcul du cosinus cosinus = cos(angle_en_radians) ## Affichage print "Le cosinus de l'angle est", cosinus #!/usr/bin/env python # -*- coding: utf-8 -*""" ``calcul_cosinus`` **module description** Ce module calcule le cosinus d'un angle donné en degrés. Entrées : (clavier) angle_en_degres : réel angle donné en degrés Sorties : (clavier) cosinus : réel cosinus de l'angle ...moduleauthor:: Aïda Ouangraoua Janvier 2015 """ """ from math import * ## Déclaration des variables angle_en_degres = 0.0 angle_en_radians = 0.0 cosinus = 0.0 ## Déclaration des constantes NBRE_RADIANS_DANS_DEGRE = pi/180 ## Lecture des entrées angle = input("Entrez un angle degrés:\n") angle_en_degres = input(‘’Entrez un aen ngle en degrés:\n’’) ## Conversion de l'angle en radians angle_en_radians = angle_en_degres * NBRE_RADIANS_DANS_DEGRE ## Calcul du cosinus cosinus = cos(angle_en_radians) ## Affichage print "Le cosinus de l'angle est", cosinus #!/usr/bin/env python # -*- coding: utf-8 -*""" ``calcul_circonference_rectangle`` **module description** Ce module calcule la circonférence et la superficie d'un rectangle de largeur et longueur données. Entrées : Entêtes (clavier) largeur : entier largeur donné en cm (clavier) longueur : entier longueur donné en cm Sorties : (écran) circonférence : entier circonférence en cm (écran) superficie : entier superficie en cm^2 ...moduleauthor:: Aïda Ouangraoua Janvier 2015 Codes existants """ ## Déclaration des variables largeur = 0 longueur = 0 circonference = 0 superficie = 0 Votre code ## Lecture des entrées largeur = input("Entrez une largeur en cm:\n") longueur = input("Entrez une longueur en cm:\n") ## Calcul de la circonference circonference = 2 * (largeur + longueur) ## Calcul de la superficie superficie = largeur * longueur ## Affichage print "La circonference du rectangle est", circonference print "La superficie du rectangle est", superficie """ ## Déclaration des variables largeur = 0 longueur = 0 circonference = 0 superficie = 0 ## Lecture des entrées largeur = input("Entrez une largeur en cm:\n") longueur = input("Entrez une longueur en cm:\n") ## Calcul de la circonference circonference = 2 * (largeur + longueur) ## Calcul de la superficie superficie = largeur * longueur ## Affichage print "La circonference du rectangle est", circonference print "La superficie du rectangle est", superficie #!/usr/bin/env python # -*- coding: utf-8 -*""" ``calcul_superficie_cercle`` **module description** Ce module calcule la superficie d'un cercle de rayon donné. Entrées : Entêtes (clavier) rayon : réel rayon donné en cm Sorties : (écran) surperficie : réel superficie du cercle en cm^2 ...moduleauthor:: Aïda Ouangraoua Janvier 2015 """ Codes existants from math import * ## Déclaration des variables rayon = 0.0 superficie = 0.0 Votre code ## Déclaration des constantes #pi = 3.1415 ## Lecture des entrées rayon = input("Entrez le rayon du cercle:\n") ## Traitement superficie = pi * rayon**2 ## Affichage print "La superficie du cercle est", superficie ...moduleauthor:: Aïda Ouangraoua Janvier 2015 """ from math import * ## Déclaration des variables rayon = 0.0 superficie = 0.0 ## Déclaration des constantes #pi = 3.1415 ## Lecture des entrées rayon = input("Entrez le rayon du cercle:\n") ## Traitement superficie = pi * rayon**2 ## Affichage print "La superficie du cercle est", superficie Composants du code q Déclara/on des constantes q Déclara/on des variables q DéclaraLon des foncLons q Blocs d’instruc/ons Plan 1. Structure d’un programme 2. Entêtes 3. Inclusion de codes existants 4. Composants du code 5. DéfiniLon de foncLons DéfiniLon de foncLons q Fonc/on : objet à déclarer q Permet de résoudre un sous-­‐problème du problème de base. DéfiniLon de foncLons q Syntaxe def <nomFonc/on>(<nom_param1>, <nom_param2>, … ): instruc/ons de l’algorithme Indenta/on . après : Obligatoire . en Python [return <nomVariableRetour>] q Exemple def calcul_circonference_rectangle(largeur,longueur): circonference = 2 * (largeur + longueur) return circonference DéfiniLon de foncLons q Autres exemples def afficher_texte (un_texte): print "Affichage du texte :", un_texte def calcul_cosinus(angle_en_degres) : angle_en_radians = 0.0 cosinus = 0.0 Indenta/on PI = 3.1415 après : Obligatoire NBRE_RADIANS_DANS_DEGRE = PI/180 en Python angle_en_radians = angle_en_degres * NBRE_RADIANS_DANS_DEGRE cosinus = cos(angle_en_radians) return cosinus Appel de foncLons q Calcul le résultat d’une fonc/on pour des valeurs données q Syntaxe <nomVariable> = <nomFonc/on>(<expression1>, <expression2>, … ) q Exemple larg = 4 long = 8 circ_4_8 = calcul_circonference_rectangle(larg,long) Appel de foncLons q Calcul le résultat d’une fonc/on pour des valeurs données Possible si la défini/on de la fonc/on inclut une valeur retournée q Syntaxe <nomVariable> = <nomFonc/on>(<expression1>, <expression2>, … ) q Exemple Nombres de données en entrée = Nombre de paramètres entrants définis pour la fonc/on larg = 4 long = 8 circ_4_8 = calcul_circonference_rectangle(larg,long) Exemples complets avec foncLons q Avec fonc/ons secondaires q calcul_cosinus_fonc/on.py q calcul_rectangle_fonc/on.py q calcul_cercle_fonc/on.py q Avec une fonc/on principale : main() q calcul_cosinus_fonc/on_main.py q calcul_rectangle_fonc/on_main.py q calcul_cercle_fonc/on_main.py Exercices 1. Écrire un programme qui lit un nombre en base décimale <= 256, puis le conver/t et l’affiche en base binaire (Note : 256 = 28). 2. Écrire un programme qui lit un nombre de secondes, puis le conver/t et l’affiche en heures, minutes, secondes.