Traduction des Arbres Programmatiques en 3 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 9 1 Premier exemple hello42 hello42.py acher("hello", sqrt(1764)) achersaut() # definit le programme principal def : print("hello ", sqrt(1764)) 2 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, l'indentation fait partie de la syntaxe! Formulaire_AP_3 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 : (a) traduire une fonction/procédure et l'appeler dans le programme principal, 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 Exemple de valeur booléen bool True entier int 1 réel oat 1.0 texte str "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 les variables ( moyenneponderee) et des verbes les fonctions (calculermoyenneponderee). Les variables de type composé (tableaux, enregistrements...) doivent être initialisées avec un constructeur, une fonction d'initialisation ou la fonction copy (voir les sections 7, 8 et 10). Formulaire_AP_3 page 2/ 9
5 Structures de contrôle monprogramme resultatok : booléen resultatok Vrai def : resultatok = True pas de traduction, écrire les instructions à la suite acher("entrer x : ", x) x saisir() x = int(input("entrer x : ")) x = float(input("entrer x : ")) x = str(input("entrer x : ")) x = bool(input("entrer x : ")) acher("x = ", x) print("x = ", x, end="") print("bonjour") acher("bonjour") achersaut() si if condition : actionsivrai condition actionsivrai si condition actionsivrai actionsifaux 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_3 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) def : a = float(input("entrer a : ")) b = float(input("entrer b : ")) c = float(input("entrer c : ")) m = (a+b+c)/3.0 print("moyenne = ", m) Exemple : saisir un entier positif entierpositif n : entier acher("entrez n>=0 : ") n saisir() tant que acher("bravo, vous avez saisi ", n) n<0 acher("erreur, entrez n>=0 : ") n saisir() def : n = int(input("entrez n>=0 : ")) while n < 0 : n = int(input("erreur, entrez n>=0 : ")) print("bravo, vous avez saisi", n) Formulaire_AP_3 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 Exemple en + + 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 Exemple == == 12 == 3 # False!= 12!= 3 # True < < 12 < 3 # False > > 12 > 3 # True <= 12 <= 3 # False >= 12 >= 3 # vrai Opérateurs logiques Opérateur AP Opérateur Exemple NON not not (12 < 3) # True ET and 12 < 3 and 12 > 3 # False OU or 12 < 3 or 12 > 3 # True Formulaire_AP_3 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. tab : tableau 5 entier tab = empty((5), dtype=int) 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 i de 0 à 19 tab[ i ] 0 i de 0 à 19 acher(tab[ i ]) acher(" ") def : # 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=" ") Formulaire_AP_3 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. M : tableau 3 4 réel M = empty((3, 4), dtype=float) i de 0 à 2 for i in range(0, 3) : for j in range(0, 4) : M[i][j] = 0.0 j de 0 à 3 M[ i ][ j ] 0.0 Exemple : matrice identité 4 4 matriceidentite i, j : entier ; M : tableau 4 4 réel i de 0 à 3 j de 0 à 3 si i == j M[ i ][ j ] 1.0 M[ i ][ j ] 0.0 def : # 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 Formulaire_AP_3 page 7/ 9
9 Fonctions Dans une fonction, les paramètres sont accessibles en lecture les types simples et en lecture/écriture les types composés. 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 multipliertableau i : entier i de 0 à 4 T[ i ] k T[ i ] tableaufoistrois i : entier ; tab : tableau 5 entier... multipliertableau(3, tab) # declare une fonction def multipliertableau(k, T) : for i in range(0, 5) : # lecture/ecriture du tableau T T[i] = k*t[i] def : # 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=" ") Formulaire_AP_3 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. Complexe : enregistrement partiereelle : réel ; partieimaginaire : réel class Complexe: def init (self): self.partiereelle = float() self.partieimaginaire = float() c1 : Complexe c1 = Complexe() c1.partiereelle c1.partiereelle Exemple : nombres complexes Complexe : enregistrement r, i : réel Complexe initialisercomplexe c : Complexe c.r 0.0 c.i 0.0 retourner c nombrescomplexes c1 : Complexe c1 initialisercomplexe()... # declare un enregistrement class Complexe: def init (self); self.r = float() self.i = float() # 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 def : # initialise le complexe c1 = initialisercomplexe() #... Formulaire_AP_3 page 9/ 9