Aller au contenu

Expressions

On peut déjà commencer à calculer directement dans la console, à l'aide d'expressions.

Une expression est un ensemble de mots qui peut être évalué, c'est à dire qui produit une valeur. On a déjà vu une expression dans le chapitre d'introduction :

30 + 20

Les expressions combinent des valeurs à l'aide d'opérateurs.

Types

Les valeurs on un type. Le type donne un sens à la valeur. Voici les quatres principaux types que l'on va utiliser :

  • Les entiers, appelés int. On forme une valeur entière avec des chiffres, par exemple 10.
  • Les réels, appelés float. On forme une valeur réelle avec des chiffres séparés par un point qui sert de virgule, par exemple 0.7.
  • Les chaines de caractères, appelées str ou string. On forme une valeur str en mettant un text entre simple ' ou double " quotes. Par exemple 'texte' ou "autretexte".
  • Les booléens, appelés bool, qui ne peuvent avoir que deux valeurs : True (vrai) et False (faux). On forme une valeur booléenne en écrivant True ou False.

On peut connaître le type d'une valeur avec l'expression suivante :

type(valeur)

vaut le type de valeur

type(10)

vaut

<class 'int'>

class veut dire que c'est un type.'int' indique le nom du type : int.

type(True)

vaut

<class 'bool'> 

Pour le moment, on ne va manipuler que des entiers et des réels.

Les types sont une notion centrale en programmation, ils sont une des fondations qui permettent de créer des programes complexes. Les règles qui définissent les types et leurs relations au sein d'une langage de programmation sont appelées système de typage. Le système de typage de Python est assez rudimentaire, mais il existe des langages avec des sytèmes de typages extrêmement poussés, comme par exemple Haskell, OCaml ou C++.

Le principal intérêt d'un système de typage est d'éviter que des opérations soient utilisées sur des types qui sont incompatibles. Par exemple, additionner un entier et une chaîne de caractère ne fait pas de sens. Si un code source comporte celà, c'est probablement une erreur d'inattention de la part du programmeur. Python va donc lever une erreur et terminer l'execution du programme.

>>> 10 + "texte"
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

TypeError veut dire qu'une erreur de typage a eu lieu. Ici, on apprends que l'opération + n'est pas possible entre une valeur de type int et une valeur de type str.

Une expression a pour type le type de sa valeur. L'expression 10 + 20 vaut 30 et est donc de type int.

Opérateurs

entiers et les réels supportent, entre autres, les opérations suivantes :

  • + addition. 10 + 20 vaut 30.
  • - soustraction. 10 - 20 vaut -10.
  • * multiplication. 10 * 2 vaut 20.
  • ** élévation à la puissance. 10**3 vaut 1000.
  • / division. 10 / 2 vaut 5.0.
  • // division euclidienne. 11 // 2 vaut 5.
  • % modulo, reste d'une division euclidienne. 11 % 2 vaut 1.

Nous verrons les opérations sur les booléens dans un autre chapitre.

Exercice

Quel est le type de l'expression 20 / 2 ?

Essayez dans la console Python !

20 / 2 vaut 10.0 et est donc de type float.

Expressions composées

Les expressions sont des valeurs. On peut donc utiliser une expression dans une autre expression, et ainsi construire des expressions plus compliquées.

Par exemple

3 * 6 + 2

Vaut

20

Les opérateurs d'une expression composée sont evalués dans un ordre bien précis, que l'on appelle la précédence. Plus un opérateur a une précédence élevée, plus il est évalué tôt. Voici la précédence des opérateurs que nous avons vu jusqu'à maintenant. Quand deux opérateurs ont la même précédence, ils sont généralement évalué de gauche à droite, même si dans la plupart des cas ça n'a pas d'importance.

Haute précédence
**
* / // %
+ -
Faible précédence

Pour forcer un opérateur à être évalué avant les autres, on peut utiliser des parenthèses :

3 * (6 + 2)

Vaut

24

Exercice

Que vaut l'expression 2 + 4 * (2 * 3) * 1 + (2 + 5) ? Donnez les étapes successives de l'évaluation de l'expression. Une étape est l'évaluation d'un opérateur, ou l'on remplace l'opérateur et ses opérandes par la valeur du résultat.

Essayez en Python !

2 + 4 * (2 * 3) * 1 + (2 + 5)

vaut

33

Voici étapes de l'évaluation :

2 + 4 * (2 * 3) * 1 + (2 + 5)

On commence par le parenthèses, de gauche à droite.

2 + 4 * 6 * 1 + (2 + 5)
2 + 4 * 6 * 1 + 7

Puis les multiplications, de gauche à droite encore.

2 + 24 * 1 + 7
2 + 24 + 7

Et enfin les additions, toujours de gauche à droite.

26 + 7
33

Premiers calculs

Calculons la valeur d'irradiance solaire à une distance de 100 millions de kms, dans la console Python.

Pour rappel, la formule de l'irradiance \(F\) à une distance \(R\) en millions de kilomètres est :

\[ F = \left(\frac{5535,8}{R}\right)^2 \]

Traduisons cette formule en Python

>>>(5535.8/100)**2

Ce qui donne

3064.5081640000003

A 100 millions de kilomètres du soleil, l'irradiance solaire est donc d'environ \(3065\ Wm^{-2}\)

Exercice

Calculez la valeur de l'irradiance solaire à 125 millions de kilomètres du soleil.

>>> (5535.8/125)**2
1961.28522496

Calculez la valeur de l'irradiance solaire à 70 millions de kilomètres du soleil.

>>> (5535.8/70)**2
6254.098293877552

Proposer une technique pour trouver, à l'aide de la console Python, une distance acceptable pour une station spatiale dont :

  • l'irradiance maximale est \(12000\ Wm^{-2}\)
  • l'irradiance minimale est \(9850\ Wm^{-2}\)

Vous n'êtes pas obligés de faire les calculs, seule la méthode est importante.

Vous avez peut-être une autre solution valide, demandez au professeur pour vérifier !

On regarde l'irradiance pour chaque distance à partir de 1 million de kilomètres, en augmentant la distance de 1 million de kilomètre à chaque fois, jusqu'à trouver une irradiance entre les deux valeurs minimale et maximale de la station.

Ce qui donne

Distance (Mkm) Irradiance (Wm^{-2}$)
1 30645081,64
2 7661270,41
... ...
50 12258,03
51 11782,03

Cette solution est-elle viable pour traiter de nombreuses stations ? Expliquez Pourquoi.

Cette solution n'est pas viable, pour une seule station, on a dû faire 50 calculs à la main ! Dans les chapitres suivants, on va voir comment automatiser celà.