Traduction de la notation algorithmique en langage Python Ou comment adapter un
Traduction de la notation algorithmique en langage Python Ou comment adapter un langage à l’expérimentation d’algorithmes Jean-Michel Adam – Université Grenoble Alpes – UFR SHS – Département IMSS Des ressources Sous Linux, Python 2.7 installé par défaut… Pour installer Python 3.5 : sudo apt-get install idle3 https://www.python.org/downloads/windows/ Wiki en français: https://wiki.python.org/moin/FrenchLanguage Livre gratuit: Apprendre à programmer avec Python 3 Code source des exemples et les solutions des exercices proposés dans l'ouvrage (Pour Python2 et Python3 - archive ZIP) 2 Éléments à traduire Algorithme principal Objets élémentaires définis dans les lexiques Agrégats Instructions élémentaires Analyses par cas Itérations Actions et Fonctions Les tableaux La machine-tracés Les fichiers séquentiels Les classes 3 Structure générale de l’application lexique principal définition des variables de l'algorithme principal et notification des actions et des fonctions utilisées algorithme principal texte de l'algorithme Notation algorithmique # identification auteur, date # définition de l'application # lexique partagé réalisation des actions et fonctions def principal(): # lexique principal lexique de l'algorithme principal # algorithme principal traduction de l'algorithme principal Fichier nomapplication.py Python 4 Commentaires Les commentaires sur une ligne débutent par # # ceci est un commentaire qui finit une ligne #************************************************** # Voici un autre commentaire sur * # sur plusieurs lignes * # notez l’esthétique particulièrement soignée ;-) * #************************************************** Sans commentaire… 5 Types Un type est caractérisé par : ◦un ensemble de valeurs ◦un ensemble d'opérations définies sur ces valeurs Python est un langage typé dynamiquement , c’est-à-dire qu’une variable peut changer de type suite à l’affectation d’une valeur d’un autre type. Type prédéfinis en Pyton : ◦entiers : int ◦réels : float ◦booléens : bool ◦chaines: str un caractère est une chaine de longueur 1 ◦les tuples : ( suite d’objets séparées par des , ) ◦les listes : [ suite d’objets séparées par des , ] 6 Le type entier Valeurs quelconques, pas de limite ! Constantes entières Les constantes peuvent s'écrire en décimal : 12, -23, 2016, … en octal précédées de 0o ou 0O: 0o12, - 0O341, 0o777, … en hexadécimal précédées de 0x ou 0X : 0xc, -0X17A, 0xffff … cool 7 Les réels sont représentés en machine par une valeur approchée en base 2 ; un réel R est représenté par une mantisse et un exposant : Par défaut, la précision des calculs sur les réels est surprenante en Python: >>> a = 0.1 + 0.2 >>> a 0.30000000000000004 Les réels en Python mantisse exposant S 8 Pour obtenir des résultats précis dans les calculs sur les réels il faut utiliser la classe Decimal à importer de du module decimal >>> from decimal import * >>> a = Decimal('0.1') >>> b = Decimal('0.2') >>> c = a+b >>> print(c) 0.3 Les réels en Python Ah ça va mieux ! 9 Conversion de Types Conversion explicites en utilisant le nom de type : >>> a = 123444444550394487398222344 >>> a 123444444550394487398222344 >>> b = str(a) >>> b '123444444550394487398222344' >>> c = int(b) >>> c 123444444550394487398222344 >>> d = c+0.1 >>> d 1.2344444455039449e+26 >>> e = str(d) >>> e '1.2344444455039449e+26' 10 Les caractères Les caractères sont des str de longueur 1 Un caractère est représenté sur 16 bits : codage Unicode de 0 à 65535 Exemples de constantes caractères : ' ', '0', 'O', "a", ‘\n' (retour à la ligne), '\t' (tabulation horizontale) Les 256 premiers caractères du codage Unicode correspondent à l'ASCII étendu Il existe une relation d'ordre sur les caractères qui suit l'ordinal de l'Unicode : tous les opérateurs de comparaison peuvent être appliqués Fonctions prédéfinies: ord et chr ord renvoie le code d’un caractère donné : ord('A’) → 65 ord('♉') → 9801 chr renvoie le caractère correspondant à un code : chr(65) → 'A' chr(9801) → '♉' Moi j’en ai du caractère ! 11 Les caractères Certains caractères non imprimables ont une représentation particulière : '\b' retour en arrière '\t' tabulation '\n' passage à la ligne '\f' saut de page '\r' retour-chariot '\"' double quotes '\'' apostrophe '\\' backslash '\udddd' unicode en hexadécimal chr(code) unicode en décimal, hexa ou octal 12 Les booléens Les booléens sont de type bool : Un booléen ne peut prendre que les valeurs True et False Et n’oubliez pas les majuscules à True et False, sinon… 13 Déclarations de variables n : entier // définition r : réel // définition c : caractère // défintion b : booléen // défintion ch : chaine // défintion # n : entier // définition # r : réel // définition # c : caractère // définition # b : booléen // définition # ch : chaine // définition Notation algorithmique Je vois que du vert ! Python Python étant typé dynamiquement, on peut décrire le lexique par de simples commentaires 14 Déclarations de variables n : entier // définition r : réel // définition c : caractère // défintion b : booléen // défintion ch : chaine // défintion n = int() # définition r = float() # définition r = Decimal() # définition c = str() # définition b = bool() # définition ch = str() # définition Notation algorithmique Python On peut aussi décrire le lexique en utilisant le constructeur des classes de base : Ah ça, j’aime bien 15 Déclarations de variables Par défaut, les initialisations de variables sont les suivantes : int() 0 float() 0.0 bool() False str() '' Decimal() 0 16 Ah, d’accord Les chaînes Les chaînes sont représentées en Python par des objets de la classe prédéfinie str. Une chaîne est une suite de caractères délimitées par des guillemets (doubles ou simples) ch1 = "hello " # ch1 est initialisée à "hello" ch2 = ‘world’ # ch2 est initialisée à "world" Tous les caractère Unicode sont autorisés 퐱 ☺ ♠ ♡ ♢ ♣ 17 Les constantes nommées sont des variables en Python PI : le réel 3.14159265 TITRE: la chaîne "DCISS" OUI: la chaîne "Oui" MAX: l'entier 9999 PI = 3.14159265 TITRE = "DCISS" OUI = "Oui" MAX = 9999 Notation algorithmique Python Facile… 18 Opérations élémentaires opérations sur les entiers : + - * / div mod exemple : a + (b * c) div d + e mod 3 opérations sur les réels : + - * / pent pdec opérateurs sur les entiers : + - * / // % bonus: ** (puissance) a + (b * c) // d + e % 3 opérateurs sur les réels + - * / int(x) x – int(x) Notation algorithmique Python élémentaire… 19 Opérations élémentaires sur les chaînes opérations sur les chaînes : - concaténation : & ch & "jour" - ajout d'un caractère : ° • 'c' ° ch ch • 'c‘ nième(ch,i) longueur(ch) - sous-chaine : souschaine(ch,deb,long) - deb(ch) - fin(ch) - pre(ch) - der(ch) opérateurs sur les chaînes : - concaténation : + ch + "jour" - ajout d'un caractère : + 'c'+ ch ch +'c‘ ch[i] len(ch) - sous-chaine : ch[deb:deb+long] ch[:-1] ch[1:] ch[0] ch[-1] Notation algorithmique Python 20 Opérations booléennes opérations sur booléens: non et ou etpuis oualors comparaisons : = ≠ < > ≤ ≥ opérations sur booléens: not & | and or comparaisons : = = != < > <= >= Notation algorithmique Python Ça me rappelle un langage, mais lequel ? 21 Priorité décroissante des opérateurs Operateur Description () Parenthèses f(args...) Appel de fonction x[index:index] Sous-liste x[index] Sélection d’un élément de liste x.attribute Référence d’attribut ** Puissance ~x Négation bit à bit +x, -x + et - unaires *, /, % Multiplication, division, reste (modulo) +, - Addition, soustraction <<, >> Décalages de bits & ET bit à bit ^ OU exclusif (XOR) bit à bit | OU bit à bit in, not in, is, is not, <, <=, >, >=, <>, !=, == Appartenance, idetité, comparaisons not x négation and etpuis or oualors lambda Expression Lambda 22 Traduction des instructions élémentaires affectation : v ← expression saisie au clavier: cl.saisir(x) e.afficher("Entrez n: ") cl.saisir(n) écriture : e.afficher("Total : ", t) affectation : v = expression saisie au clavier: x = input() # x est une chaine x = int(input()) # saisie convertie n = int(input("Entrez n: ")) écriture : print('Total :", t) Notation algorithmique Python Il existe de nombreuses possibilités d’affichage formaté dans Python Oui, un peu de lecture en perspective… 23 Analyse pas cas selon variables condition1 : action1 condition2 : action2 condition3 : action3 fselon # selon variables if condition1: ⇥ action1 elif condition2: ⇥ action2 else: # condition3 ⇥ action3 # fselon Notation algorithmique Python Les ⇥ sont des caractères de tabulation (4 caractères dans un autre éditeur). Utiliser un caractère de tabulation par niveau d’emboitement 24 Exemple # selon abreviation if abreviation == "M": print("Monsieur") elif abreviation == "Mme": print("Madame") elif abreviation == "Mlle": print("Mademoiselle") else: # autrement print("Madame, Monsieur") # fselon selon abréviation abréviation = "M" : e.afficher("Monsieur ") abréviation = "Mme": e.afficher("Madame ") abréviation = "Mlle": e.afficher("Mademoiselle ") autrement: e.afficher("Madame , Monsieur") fselon 25 Madame, Mademoiselle, Monsieur, Bonjour ! Traduction des analyses par cas si condition alors actions fsi si pre(ch) = 'A' alors nba ← nba uploads/Finance/ cours-python-pdf.pdf
Documents similaires
-
11
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mai 29, 2021
- Catégorie Business / Finance
- Langue French
- Taille du fichier 2.1958MB