Traduction des Arbres Programmatiques en Python3 Table des matières 1 Premier exemple 1 2 Généralités 1 3 Méthode de programmation 2 4 Variables et types 2 5 Structures de contrôle 3 6 Opérateurs 5 7 Tableaux 6 8 Tableaux 2D 7 9 Fonctions 8 10 Enregistrements 1 9 Premier exemple hello42 −→ acher("Hello", sqrt(1764)) acherSaut() 2 hello42.py from math import * from numpy import * # definit le programme principal def main() : print("Hello ", sqrt(1764)) # execute le programme principal main() Généralités Commentaires de code : Sur une ligne, tout ce qui est écrit après un caractère # est considéré comme du commentaire de code. Indentation : En Python, l'indentation fait partie de la syntaxe ! Formulaire_AP_Python3 page 1/ 9 3 Méthode de programmation 1. ouvrir geany 2. créer un nouveau chier et l'enregistrer intelligemment (par exemple, TP1_ex1.py) 3. traduire progressivement l'arbre programmatique en Python : (a) traduire une fonction/procédure et l'appeler dans le programme principal, pour la tester (b) exécuter le programme (bouton exécuter ou touche F5) (c) vérier que le programme s'exécute correctement, sinon revenir à l'étape (a) (d) vérier que le programme produit le bon résultat, sinon revenir à l'étape (a) (e) recommencer avec la fonction/procédure suivante, jusqu'à ce que tout l'arbre soit traduit 4 Variables et types En python, il n'est pas nécessaire de déclarer les variables ni de spécier leur type. Type AP Type Python Exemple de valeur Python booléen entier réel texte bool int oat str True 1 1.0 "salut fred" Un nom de variable peut contenir des lettres (sans accent) et des chires mais ne doit pas commencer par un chire. Les majuscules et les minuscules sont distinguées. Nommez vos variables de façon cohérente : par exemple des noms pour les variables (moyennePonderee) et des verbes pour les fonctions (calculerMoyennePonderee). Les variables de type composé (tableaux, enregistrements. . .) doivent être initialisées avec un constructeur, une fonction d'initialisation ou la fonction Formulaire_AP_Python3 copy (voir les sections 7, 8 et 10). page 2/ 9 5 Structures de contrôle Arbre Programmatique Python monProgramme def main(): resultatOk = True resultatOk ← Vrai main() resultatOk : booléen pas de traduction, écrire les instructions à la suite −→ acher("Entrer x : ", x) x ← saisir() x x x x acher("x = ", x) print("x = ", x, end="") −→ −→ = = = = int(input("Entrer x : ")) float(input("Entrer x : ")) str(input("Entrer x : ")) bool(input("Entrer x : ")) print("Bonjour") acher("Bonjour") acherSaut() si if condition : actionSiVrai condition actionSiVrai si condition actionSiVrai actionSiFaux pour if condition : actionSiVrai else : actionSiFaux for i in range(1, N+1) : action i de 1 à N action tant que while condition : action condition action Formulaire_AP_Python3 page 3/ 9 Exemple : moyenne de 3 nombres moyenne3 a, b, c, m : réel −→ acher("Entrez a : ") a ← saisir() ... m ← (a+b+c)/3.0 acher("Moyenne = ", m) from math import * from numpy import * # declare le programme principal def main(): a = float(input("Entrer a : ")) b = float(input("Entrer b : ")) c = float(input("Entrer c : ")) m = (a+b+c)/3.0 print("Moyenne = ", m) # execute le programme principal main() Exemple : saisir un entier positif entierPositif n : entier −→ acher("Entrez n>=0 : ") n ← saisir() tant que n<0 acher("Bravo, vous avez saisi ", n) −→ acher("Erreur, entrez n>=0 : ") n ← saisir() from math import * from numpy import * # declare le programme principal def main(): n = int(input("Entrez n>=0 : ")) while n < 0 : n = int(input("Erreur, entrez n>=0 : ")) print("Bravo, vous avez saisi", n) # execute le programme principal main() Formulaire_AP_Python3 page 4/ 9 6 Opérateurs En cas de doute sur les priorités entre opérateurs, utiliser des parenthèses. Opérateurs arithmétiques Opérateur AP Opérateur Python Exemple en Python + + 12 + 3 # resultat : 15 − - 12 - 3 # resultat : 9 × * 12 * 3 # resultat : 36 / / 7.0 / 2.0 # resultat : 3.5 div // 7 // 2 # resultat : 3 mod % 7 % 2 # resultat : 1 Opérateurs de comparaison Opérateur AP Opérateur Python Exemple Python == == 12 == 3 # False 6= != 12 != 3 # True < < 12 < 3 # False > > 12 > 3 # True ≤ <= 12 <= 3 # False ≥ >= 12 >= 3 # vrai Opérateurs logiques Opérateur AP Opérateur Python Exemple Python NON not not (12 < 3) # True ET and 12 < 3 and 12 > 3 # False OU or 12 < 3 or 12 > 3 # True Formulaire_AP_Python3 page 5/ 9 7 Tableaux Les tableaux sont des types composés et doivent donc être initialisés avec un constructeur ou une fonction d'initialisation. Arbre Programmatique Python tab : tableau 5 entier tab = empty((5), dtype=int) pour for i in range(0, 5) : tab[i] = int(input()) i de 0 à 4 tab[ i ] ← saisir() Exemple : initialiser à 0 un tableau de 20 entiers puis l'acher tableau20 i : entier ; tab : tableau 20 entier −→ pour pour i de 0 à 19 tab[ i ] ← 0 i de 0 à 19 −→ acher(tab[ i ]) acher(" ") from math import * from numpy import * # declare le programme principal def main(): # construit un tableau tab = empty((20), int) # remplit le tableau for i in range(0, 20) : tab[i] = 0 # affiche le tableau for i in range(0, 20) : print(tab[i], end=" ") # execute le programme principal main() Formulaire_AP_Python3 page 6/ 9 8 Tableaux 2D Les tableaux 2D sont des types composés et doivent donc être initialisés avec un constructeur ou une fonction d'initialisation. Arbre Programmatique Python M : tableau 3 × 4 réel M = empty((3, 4), dtype=float) pour i de 0 à 2 for i in range(0, 3) : for j in range(0, 4) : M[i][j] = 0.0 pour j de 0 à 3 M[ i ][ j ] ← 0.0 Exemple : matrice identité 4 × 4 matriceIdentite i, j : entier ; M : tableau 4 × 4 réel pour i de 0 à 3 pour j de 0 à 3 si i == j M[ i ][ j ] ← 1.0 M[ i ][ j ] ← 0.0 from numpy import * def main(): # construit le tableau 2D M = empty((4, 4), dtype=float) # remplit le tableau 2D for i in range(0, 4) : for j in range(0, 4) : if i == j : M[i][j] = 1.0 else : M[i][j] = 0.0 main() Formulaire_AP_Python3 page 7/ 9 9 Fonctions Dans une fonction, les paramètres sont accessibles en lecture pour les types simples et en lecture/écriture pour les types composés. Arbre Programmatique Python x, y : entier | entier, entier calculerMinMax si def calculerMinMax(x, y) : if x < y : return x, y else : return y, x x<y retourner x, y retourner y, x mini, maxi ← calculerMinMax(a, b) mini, maxi = calculerMinMax(a, b) Exemple : multiplier un tableau par un entier k : entier ; T : tableau 5 entier | i : entier multiplierTableau pour i de 0 à 4 T[ i ] ← k × T[ i ] tableauFoisTrois i : entier ; tab : tableau 5 entier −→ ... multiplierTableau(3, tab) from math import * from numpy import * # declare une fonction def multiplierTableau(k, T) : for i in range(0, 5) : # lecture/ecriture du tableau T T[i] = k*T[i] # declare le programme principal def main(): # construit un tableau tab = empty((5), dtype=int) # remplit le tableau for i in range(0, 5) : tab[i] = int(input()) # modifie les valeurs du tableau multiplierTableau(3, tab) # affiche le tableau for i in range(0, 5) : print (tab[i], end=" ") # execute le programme principal main() Formulaire_AP_Python3 page 8/ 9 10 Enregistrements Les enregistrements sont des types composés et doivent donc être initialisés avec un constructeur ou une fonction d'initialisation. Arbre Programmatique Python : enregistrement partieReelle : réel ; partieImaginaire : réel Complexe class Complexe: def __init__(self): self.partieReelle = float() self.partieImaginaire = float() c1 : Complexe c1 = Complexe() c1.partieReelle c1.partieReelle Exemple : nombres complexes Complexe r, i : réel | : enregistrement from math import * from numpy import * # declare un enregistrement class Complexe: def __init__(self); self.r = float() self.i = float() Complexe initialiserComplexe c : Complexe −→ c.r ← 0.0 c.i ← 0.0 retourner c nombresComplexes c1 : Complexe # declare une fonction # d'initialisation def initialiserComplexe() : # construit un enregistrement c = Complexe() # initialise les champs c.r = 0.0 c.i = 0.0 # retourne l'enregistrement return c −→ c1 ← initialiserComplexe() ... # declare le programme principal def main(): # initialise le complexe c1 = initialiserComplexe() # ... # execute le programme principal main() Formulaire_AP_Python3 page 9/ 9