• Aucun résultat trouvé

Programmation en Python Cours 1/8

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation en Python Cours 1/8"

Copied!
20
0
0

Texte intégral

(1)

Cours d’Informatique Scientifique

Programmation en Python Cours 1/8

Laurent Pointal

laurent.pointal @ limsi.fr

@ laposte.net

(2)

Programme de la séance

Organisation de l’enseignement

Informatique et ordinateur

Types de données, opérations

nombres

valeurs logiques

textes

Variables, instruction d’affectation

Fonctions d’entrées / sorties

Séquences d’instructions, blocs composés

Instruction d’alternative if

(3)

aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 3 20

v2.2

Organisation de l’enseignement

Cours :

Langage d’apprentissage :

8 x 1h1/4

Prendre des notes de cours

Essayer chez soi pour comprendre

Travaux Pratiques : 8 x 4h

En binômes

Comptes-rendus fin de séance + Exercices d’approfondissement

(devoirs persos) Coef 0,5 pour les 8 TP

2h, après 4 TP

Coef 1

DS :

2h, seul

Coef 1

Partiel :

Version 3.2 ou supérieur

Outil d'édition & tests : Wing101 ou IDLE (livré avec Python)

(4)

aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 4 20

v2.2

Ressources

Web

perso.limsi.fr/pointal/python:cours_prog

liens vers diverses ressources

www.python.org

wingware.com (IDE Wing101)

Bibliographie

G. Swinnen - “Apprendre à Programmer avec Python 3”

B.Cordeau - “Initiation à Python 3”

A.Martelli - “Python par l'exemple” - O'Reilly 2004

W.J. Chun - “Au cœur de Python” - CampuPress 2007

(5)

aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 5 20

v2.2

Joe Student in

Le monde de l’informatique

Zer o D

ivi sio

n E rro r

Syn tax Er ror Co re D um p

Comman

d not Found

fi In te ni oo L p

Too Mu ch Rec urs ion

Ordinateur : automate

déterministe programmable à

composants électroniques.

(6)

aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 6 20

v2.2

Un monde numérique binaire

01010101 10001001 11100101 10000011 11101100 00010000 11000111 01000101 11110100 00000100 00000000 00000000 00000000 11000111 01000101 11111000 00000101 00000000 00000000 00000000 10001011 01000101 11111000 10001011 01010101 11110100 10001101 00000100 00000010 10001001 01000101 11111100 10001011 01000101 11111100 11001001 11000011

Programme “x86” calculant et retournant 4 + 5 :

55 89 e5 83 ec 10 c7 45 f4 04 00 00 00 c7 45 f8 05 00 00 00 8b 45 f8 8b 55 f4 8d 04 02 89 45 fc 8b 45 fc c9 c3

En hexadécimal (base 16, un chiffre hexa = 4 bits binaires) :

(7)

Laurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 7 20

v2.2

Un monde discret et fini

3.10 100 + 1 - 3.10 100

324898732683278,94 - 324898732683278

23,156732710216738272654281532

23,156732710216737 0,9375 0

0,1 10

0,00000000010000000000000006

(8)

aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 8 20

v2.2

Se faire comprendre de l’ordinateur

Langage Commun (Python)

Joe Student

Connaître:

Syntaxe

Instructions Bibliothèques

Interpréteur Bytecode Compilateur Python

“bytecode” Python

Ordinateur

Rédiger des

programmes

toto.py

(9)

aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 9 20

v2.2

Types de données de base

Donner du sens aux 01011001…

qu’est-ce qu’ils représentent, quel type de données ?

quelles opérations peut-on leur appliquer ?

Données de base

entier (int)

0 1532 -73

flottant (float)

1.5 -67.35 12.565e-9

texte (chaîne de caractères) (str)

"Bonjour, Joe Student"

booléen (bool)

True False

rien, indéfini

None

(10)

aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 10 20

v2.2

Opérations sur les nombres

Opérateurs mathématiques

Addition +

Soustraction -

Multiplication *

Division flottante /

Division entière //

Reste de la division entière (modulo) %

Exponentielle **

Priorités usuelles

Groupement avec ()

Utilisables avec entiers, flottants, complexes

Librairies de fonctions mathématiques

…tests dans l'interpréteur

(11)

aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 11 20

v2.2

Opérations logiques booléennes

Opérateurs booléens

et (and), ou (or), non (not)

Opérateurs logiques de comparaison

égalité (==), différence (!=)

inférieur (<) ou égal (<=)

supérieur (>) ou égal (>=)

Groupement avec ()

…tests dans l'interpréteur

Valeurs

Vrai : True

Faux : False Voir “Algèbre de Boole”

(12)

aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 12 20

v2.2

Chaînes de caractères (textes)

Longueur len("chaîne")

Concaténation +

Répétition *

'Il dit "ici" !' "Elle l'appela."

…tests dans l'interpréteur '''Les sanglots longs

Des violons

De l'automne'''

"""Blessent mon cœur D'une langueur

Monotone"""

Opérations sur les chaînes

Expression

\\ \

\n ➙ retour à la ligne

\t ➙ tabulation

\" "

\' '

… et il y en a d'autres …

Caractère d’échappement dans une chaîne: \

Indexation…

Méthodes…

(13)

Laurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 13 20

v2.2

Transtypage

Conversion de données entre les différents types.

"3" * 5

bool

int

str float

"33333"

int("3") * 5

15

str(3.14) + " radians"

"3.14 radians"

int(11.8)

11

float("1.602176")

1.602176

int("101",2)

5

…tests dans l'interpréteur

(14)

aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 14 20

v2.2

Des Noms

Pourquoi faire ?

Faciliter la compréhension du programme

Écrire des programmes réutilisables avec d'autres données

Variable: nom qui référence une valeur en mémoire

Association dynamique au cours de l’exécution du programme

Utilisable à la place des valeurs dans les expressions

Prend le type de la valeur référencée

Affectation: création de la liaison entre une variable et une valeur

Instruction = nom = expression

deux_pi = 2*3.14 qui = "Joe"+' '+nom

La valeur peut être résultat d’une expression (calcul)

On peut ré-affecter, c.a.d. lier une nouvelle valeur à une variable existante, la liaison précédente étant perdue

Plusieurs variables peuvent être liées à la même valeur

Identificateurs valides: début : a…z ou _ ensuite : a…z0…9 ou _

Exemples: page2, _post3_index, MaxCoups

(15)

aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 15 20

v2.2

L’affectation en 3 étapes

a = 3*6/4

4.5 2) Création du nom à gauche: a

(si a existait déjà, alors son ancienne liaison nom / valeur est alors supprimée!)

a

1) On calcule la partie de droite: 3*6/4 ➔ 4.5

4.5

3) Association entre le nom et la valeur

a 4.5

(16)

Laurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 16 20

v2.2

Affectations spéciales

Affectations multiple

x,y,nom = 1.3,4.6,"milieu"

x,y = y,x%y

Affectations à la même valeur a = b = c = d = 0

Incrément / décrément

a = a+1 a += 1 a = a-1

a -= 1

…tests dans l'interpréteur

(17)

aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 17 20

v2.2

« Fonctions » d’entrées / sorties

Attention: en mode “Calculette” (shell Python, vu en TP) la saisie et l’affichage sont fait automatiquement.

Pas dans les scripts/modules (fichiers .py) !

# monscript.py

qui = input("Qui es-tu ? ") qui = qui.upper()

print ("Bonjour",qui)

datenais = int(input("Né en ? ")) print ("Tu as",2011-datenais,"ans.")

Entrées texte au clavier:

input(indication) ➔ chaîne Sorties texte à l’écran:

print(données)

Qui es-tu ? Joe Student Bonjour JOE STUDENT

Né en ? 1991 Tu as 20 ans.

Utilisation du transtypage pour entrer des int, float…

(18)

Laurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 18 20

v2.2

Programmer de la calculatrice au script Python, le flux d'instructions

Exécution en séquence des instructions.

On parle du “flux” des instructions qui alimentent le processeur.

Certaines instructions rompent l’ordre séquentiel d’exécution.

. . 1 . 2 3 4 . 5 6 . 7 . 8 . 9

# Fichier: calcul_sphere.py

# Outils importés

from math import sqrt,pi

# Dimensions en x/y/z de l'ellipsoïde.

dx = float(input("dx = ")) dy = float(input("dy = ")) dz = float(input("dz = "))

# Calcul du volume sphérique englobant:

r = sqrt(dx**2+dy**2+dz**2) s = 4/3*pi*r**3

# Calcul du volume de l'ellipsoïde.

e = 4/3*pi*dx*dy*dz

# Rapport entre les deux:

es = e / s

# Affichage du résultat

print("ellipsoïde:",e,"sphère:",s,"rapport:",es)

(19)

aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 19 20

v2.2

Blocs d’instructions composées

Regroupement d’un ensemble d’instructions:

Syntaxe:

ligne d’en-tête : instruction 1 instruction 2 instruction 3

Source du bloc d'instructions, terminé par un caractère :

Instructions du bloc, indentées par rapport à la ligne d’en-tête (généralement 4 espaces)

 Le retour au niveau

d'indentation de la ligne d’en-tête indique qu’on est sorti du bloc d'instructions.

 Les blocs peuvent être imbriqués. à plusieurs niveaux

 Avec l’indentation, le découpage est visuel.

:

:

:

(20)

aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 20 20

v2.2

Instruction if

Exécution alternative entre des blocs d’instructions.

if condition1 :

elif condition2 :

optionnel

Les condition sont des expressions logiques booléennes évaluées à True ou False.

else :

optionnel répétable

Bloc exécuté si condition1 est vrai.

Bloc exécuté si condition1 est faux et condition2 est vrai.

Bloc exécuté si aucune

condition n'est vraie.

Références

Documents relatifs

(e) Ques les sous-requˆ etes sont bien jointes ` a la requˆ ete principale (f) Que les conditions pr´ esentes dans la clause WHERE sont les plus..

Nous allons donc tenter de montrer, de façon plus générale et en faisant appel à la littérature, en quoi le passage par l’analyse des activités humaines en situation réelle

Il y a tout d’abord les cahiers qui lui servent de journal intime où consigner ses rêves, mais aussi de brouillons préparatoires pour ses graffiti et même de

D’autre part, dans l’ensemble du Kérala, du pays tamoul et au Sri Lanka, il est au cœur de l’histoire de Kannaki, mais sans être davantage qu’un élément narratif :

L'auteur explique comment ces objets vivants, usuels mais aussi dotés d'une signification sociale et symbolique au XVIIIe siècle, sont devenus des objets inanimés mais

:فظنلأا جاتنلإا او لاعفلا ءادلأا ةينقتلا هذه دعت ةدعاقل لأا جنل ةيساس ةرادلإا ماظن حا ا اهفيرعت تم ثيح ،ةيئيبل ةدحتلما مملأل يئيبلا جمانبرلا لبق نم (

À l’aide des données issues d’une enquête ethnographique et par collecte de récits de vie, conduite en France et en Belgique, auprès de cette typologie de couple,

Exécuté avec variable valant tour à tour chacune des valeurs de séquence. On parle de “boucle for”, de “parcours