Du calcul à la main au programme
Programme, algorithme, langage. Un algorithme est une suite d'étapes précises qui résout un problème. Celui de Yanis :
- multiplier chaque note par son coefficient ;
- additionner ces produits ;
- additionner les coefficients ;
- diviser la première somme par la deuxième.
Un langage est une façon d'écrire ces étapes pour qu'un ordinateur les exécute ; un programme est l'algorithme écrit dans ce langage. Python exécute les lignes dans l'ordre, de haut en bas.
note_maths = 12 note_bio = 15.5 note_chimie = 8 coef_maths = 2 coef_bio = 3 coef_chimie = 1 total = note_maths * coef_maths + note_bio * coef_bio + note_chimie * coef_chimie somme_coefs = coef_maths + coef_bio + coef_chimie moyenne = total / somme_coefs print(moyenne) print(round(moyenne, 2))
Affiche 13.083333333333334, puis 13.08.
Les variables. note_maths = 12 pose le nom note_maths sur la valeur 12. Le signe = range une valeur ; il ne compare pas. Une variable peut changer : note = note + 4 calcule note + 4, puis range le résultat dans note. Les noms s'écrivent en minuscules, sans espace ni accent, avec _ entre les mots.
Les types de base.
| Type | Exemple | Ce que c'est |
|---|---|---|
int | 12 | un nombre entier |
float | 15.5 | un nombre à virgule (écrit avec un point) |
str | "12" | du texte (entre guillemets), même s'il ressemble à un nombre |
bool | 12 > 10 | vrai ou faux : True ou False |
type(…) donne le type d'une valeur : print(type(12), type(15.5), type("12"), type(12 > 10)) affiche <class 'int'> <class 'float'> <class 'str'> <class 'bool'>.
Les opérateurs et les priorités.
| Opérateur | Sens | Exemple | Résultat |
|---|---|---|---|
+ - * | addition, soustraction, multiplication | 2 * 3 | 6 |
/ | division (donne toujours un float) | 7 / 2 | 3.5 |
// | division entière | 7 // 2 | 3 |
% | reste de la division entière | 7 % 2 | 1 |
** | puissance | 2 ** 3 | 8 |
Comme en maths, * et / passent avant + et - : 12 + 15 / 2 vaut 19.5, alors que (12 + 15) / 2 vaut 13.5. Dans une moyenne, les parenthèses comptent.
Les conversions. int("14") donne le nombre 14, float("12.5") donne 12.5, str(14) donne le texte "14". Et round(x, 2) arrondit x à 2 chiffres après la virgule.
Pourquoi 0.1 + 0.2 n'affiche pas 0.3. Essaie : print(0.1 + 0.2) affiche 0.30000000000000004. L'ordinateur range les nombres à virgule en binaire, et 0,1 ne s'écrit pas exactement en binaire (comme 1/3 ne s'écrit pas exactement en décimal). L'écart est minuscule ; pour une moyenne, il suffit d'arrondir à l'affichage : round(0.1 + 0.2, 2) affiche 0.3.