• Aucun résultat trouvé

0-M02 – Introduction `a la programmation Camille Coti camille.coti@iutv.univ-paris13.fr

N/A
N/A
Protected

Academic year: 2022

Partager "0-M02 – Introduction `a la programmation Camille Coti camille.coti@iutv.univ-paris13.fr"

Copied!
131
0
0

Texte intégral

(1)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´e Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en Python

0-M02 – Introduction ` a la programmation

Camille Coti

camille.coti@iutv.univ-paris13.fr

IUT de Villetaneuse, d´epartement R&T

2012 – 2013

(2)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´e Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en Python

Plan du cours

1

Introduction ` a l’algorithmique Les variables

Les tests Boucles

Programmation structur´ ee

2

Introduction ` a Python Les variables en Python Structures de contrˆ ole Fonctions

3

Structures de donn´ ees

4

Modularit´ e

´ Ecriture d’un module Utilisation d’un module Utilisation d’un module Variables globales

5

Param` etres optionnels de fonctions

6

Les exceptions Lever une exception Attraper une exception D´ efinir un type d’exception

7

Manipulation de fichiers en Python

Ouverture et fermeture de fichier

Lecture d’un fichier

Ecriture dans un fichier ´

Autres fonctions utiles

(3)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´e Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en Python

Site web

Slides des cours, versions ´ electroniques des polys, TD, TP...

http://www.lipn.fr/~coti/cours

(4)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Boucles Programmation structur´e Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonee

Plan du cours

1

Introduction ` a l’algorithmique Les variables

Les tests Boucles

Programmation structur´ ee

2

Introduction ` a Python

3

Structures de donn´ ees

4

Modularit´ e

5

Param` etres optionnels de fonctions

6

Les exceptions

7

Manipulation de fichiers en

Python

(5)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Boucles Programmation structur´e Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonee

Introduction

´ Etymologie du mot ”informatique”

Form´ e de la contraction des mots information et automatique.

L’informatique est un outil de traitement automatique de l’information.

On doit alors d´ efinir comment des informations vont ˆ etre trait´ ees (automatiquement) par l’ordinateur.

La science informatique n’est pas plus la science des ordinateurs que l’astronomie n’est celle des t´ elescopes – Edsger Dijkstra

L’ordinateur est un outil qui traite l’information comme le programme lui

dit de la traiter.

(6)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Boucles Programmation structur´e Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonee

Pourquoi l’algorithmique

Qu’est-ce qu’un algorithme ?

Un algorithme d´ efinit ce que fait un programme

Il d´ efinit quel comportement suivre selon la situation rencontr´ ee Algorithme : d´ efinition

S´ erie d’instructions qui doit ˆ etre ex´ ecut´ ee par un programme.

D´ efinition de Wikipedia :

Processus syst´ ematique de r´ esolution d’un probl` eme permettant de d´ ecrire les ´ etapes vers le r´ esultat;

Suite finie et non-ambigu¨ e d’instructions permettant de donner la r´ eponse

`

a un probl` eme.

(7)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Boucles Programmation structur´e Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonee

Comment d´ ecrire un algorithme

D´ efinition de Wikipedia :

L’algorithmique est l’ensemble des r` egles et des techniques qui sont impliqu´ ees dans la d´ efinition et la conception d’algorithmes.

Algorithmique

Formalisme permettant de d´ ecrire la s´ erie d’instructions ex´ ecut´ ee par un programme ind´ ependamment d’un langage de programmation en particulier.

Les algorithmes sont d´ ecrits en pseudo-code, compr´ ehensible par le lecteur

humain mais assez pr´ ecis pour transcrire les structures et les instructions de

l’algorithme.

(8)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Boucles Programmation structur´e Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonee

Par quoi est constitu´ e un algorithme

Un algorithme permet d’obtenir un r´ esultat ` a partir de donn´ ees d’entr´ ee. Il est donc constitu´ e des ´ el´ ements suivants :

Un d´ ebut et une fin ; Un nom ;

Des donn´ ees d’entr´ ee ; Des donn´ ees de sortie, qui sont le r´ esultat du calcul effectu´ e par l’algorithme ; Un ensemble d’instructions ex´ ecut´ ees par l’algorithme.

Exemple : algorithme de calcul d’une valeur absolue

1

d´ ebut fonction abs( i: Entier ): Entier

2

si i > 0 alors

3

r ←− i

4

sinon

5

r ←− −i

6

fin si

7

retourner r

8

fin fonction

(9)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Boucles Programmation structur´e Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonee

Importance d’un bon algorithme

Compr´ ehension et mod´ elisation du probl` eme

L’algorithme mod´ elise le comportement du programme Correction du r´ esultat

Algorithme faux → r´ esultat du calcul faux Efficacit´ e du calcul

Coˆ ut d’un calcul = nombre d’op´ erations et quantit´ e d’information manipul´ ee

Ces quantit´ es sont d´ efinies par l’algorithme

Algorithme efficace → calcul efficace (et inversement) L’´ etude algorithmique d’un probl` eme est indispensable

La bonne conception d’un algorithme est fondamentale et absolument

n´ ecessaire pr´ ealablement ` a l’´ ecriture d’un programme informatique.

(10)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Boucles Programmation structur´e Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonee

G´ en´ ericit´ e des algorithmes

Les algorithmes sont ´ ecrits dans un langage de descriptions des algorithmes (pseudo-code)

Ind´ ependant du langage de programmation

→ Un algorithme peut ˆ etre impl´ ement´ e dans n’importe quel langage

Probleme Algorithme Programme Resultats

Analyse Codage Execution

(11)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les tests Boucles Programmation structur´etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonee

Repr´ esentation des donn´ ees

D´ efinition

Une variable correspond ` a l’emplacement m´ emoire d’une donn´ ee. Elle sert ` a stocker une valeur d’un certain type ` a un instant donn´ e de l’ex´ ecution du programme.

Les variables d’un algorithmes sont :

D’entr´ ee : donn´ ees d’entr´ ee de l’algorithme

De sortie : r´ esultat du calcul effectu´ e par l’algorithme

Interne ` a l’algorithme : ni d’entr´ ee ni de sortie mais utilis´ ee ` a l’int´ erieur de

l’algorithme

(12)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les tests Boucles Programmation structur´etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonee

Type de variables

D´ efinition

Le Type d’une variable est le type de donn´ ee qui pourra ˆ etre contenu dans cette variable.

Exemples :

Entier : tout nombre entier Bool´ een : vrai ou faux Caract` ere

Nombre r´ eel Chaˆıne de caract` eres Tableau...

On ne peut pas mettre une donn´ ee d’un type dans une variable d’un autre type

Exception : un transtypage est parfois possible (entier dans r´ eel...)

(13)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les tests Boucles Programmation structur´etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonee

Affectation

Affectation d’une valeur ` a une variable

Pour ´ ecrire une valeur dans une variable, on dit que l’on affecte cette valeur ` a la variable. On le note de la fa¸ con suivante :

variable ←− valeur

1

d´ ebut

2

maV ariable : Entier

3

maV ariable ←− 42

4

fin

On d´ eclare le type de la variable avant de l’utiliser

Les d´ eclarations sont g´ en´ eralement rassembl´ ees au d´ ebut de l’algorithme

(14)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les tests Boucles Programmation structur´etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonee

Les tableaux

Tableaux

Un tableau est un type particulier de variable. Il contient un ensemble de variables de mˆ eme type, stock´ ees de fa¸ con contigu¨ e en m´ emoire.

Exemple : tableau d’entiers 3 5 2 1 12 5 2 9

Caract´ eristiques d’un tableau Un tableau a une taille fixe

Il contient un certain type de donn´ ees D´ eclaration d’un tableau

On le d´ eclare avec le type de donn´ ees qu’il contient et sa taille

1

d´ ebut

2

monT ableau[10] : T ableau d

0

Entiers

3

fin

(15)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les tests Boucles Programmation structur´etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonee

Les tableaux (suite)

Tableau ` a plusieurs dimensions

On donne la taille dans chaque dimension

Exemple en 2D (ordre C) : d’abord le nombre de lignes, puis le nombre de colonnes

Acc` es aux donn´ ees d’un tableau

Les cases du tableau sont num´ erot´ ees de 0 ` a N − 1 (si N est la taille du tableau)

On acc` ede aux donn´ ees d’un tableau en utilisant l’indice dans ce tableau

1

d´ ebut

2

/* Variables d’entree */

3

maM atrice[10][10] : T ableau d

0

Entiers

4

/* Variables de sortie */

5

i : entier

6

/* Affectation */

7

i ←− maM atrice[2][3]

8

fin

(16)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Bool´ een

Bool´ een

Un bool´ een est une variable ` a deux ´ etats : Vrai ou Faux. On repr´ esente aussi parfois ces deux ´ etats par 1 et 0.

Les op´ erateurs de comparaison renvoient un bool´ een. Exemple : 1 > 0 renvoie Vrai

1 == 0 renvoie Faux

Lorsqu’une condition est ´ evalu´ ee, on regarde sa valeur (bool´ een). Exemple :

1

d´ ebut

2

maV ar : Entier

3

maV ar ←− 0

4

si maV ar < 5 alors

5

maV ar ←− maV ar + 1

6

fin si

7

fin

maV ar est initialis´ e ` a 0 On teste maV ar < 5

´ Equivalent ` a tester 0 < 5 La condition vaut Vrai

Donc on ex´ ecute le bloc d’instruction

apr` es le mot-cl´ e alors

(17)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Un peu d’alg` ebre de Boole

On peut ´ evaluer des expressions bool´ eennes en utilisant des op´ erateurs : Op´ erateurs logiques

ET logique : . OU logique : + OU exclusif : ⊕ N´ egation : ¯ ou !

Exemples : a.b a + b a ⊕ b

a + b =!(a + b) a + b = a+!b

Tables de v´ erit´ e :

. 0 1

0 0 0

1 0 1

+ 0 1

0 0 1

1 1 1

⊕ 0 1

0 0 1

1 1 0

La n´ egation transforme un Vrai en Faux et inversement : V rai = F aux

F aux = V rai

(18)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Un peu d’alg` ebre de Boole (suite)

Prenons a = V rai et b = F aux.

Exemples d’expressions bool´ eennes : a + b = V rai + F aux = V rai

a + b = V rai + F aux = V rai + V rai = V rai a.b = V rai.F aux = V rai.V rai = V rai = F aux

Attention aux parenth` eses ! (a + b).(c + d)

Exemples de compositions d’expressions bool´ eennes sur des variables en algorithmique :

(a > b)ET (a > 0)

Si a = 1 et b = 2 : (a > b) = F aux donc l’expression vaut F aux Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression vaut V rai

(a > b)OU(a > 0)

Si a = 1 et b = 2 : (a > b) = F aux et (a > 0) = V rai donc l’expression vaut V rai

Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression

vaut V rai

(19)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Un peu d’alg` ebre de Boole (suite)

Prenons a = V rai et b = F aux.

Exemples d’expressions bool´ eennes : a + b = V rai + F aux = V rai

a + b = V rai + F aux = V rai + V rai = V rai a.b = V rai.F aux = V rai.V rai = V rai = F aux

Attention aux parenth` eses ! (a + b).(c + d)

Exemples de compositions d’expressions bool´ eennes sur des variables en algorithmique :

(a > b)ET (a > 0)

Si a = 1 et b = 2 : (a > b) = F aux donc l’expression vaut F aux Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression vaut V rai

(a > b)OU(a > 0)

Si a = 1 et b = 2 : (a > b) = F aux et (a > 0) = V rai donc l’expression vaut V rai

Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression

vaut V rai

(20)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Un peu d’alg` ebre de Boole (suite)

Prenons a = V rai et b = F aux.

Exemples d’expressions bool´ eennes : a + b = V rai + F aux = V rai

a + b = V rai + F aux = V rai + V rai = V rai a.b = V rai.F aux = V rai.V rai = V rai = F aux

Attention aux parenth` eses ! (a + b).(c + d)

Exemples de compositions d’expressions bool´ eennes sur des variables en algorithmique :

(a > b)ET (a > 0)

Si a = 1 et b = 2 : (a > b) = F aux donc l’expression vaut F aux Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression vaut V rai

(a > b)OU(a > 0)

Si a = 1 et b = 2 : (a > b) = F aux et (a > 0) = V rai donc l’expression vaut V rai

Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression

vaut V rai

(21)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Un peu d’alg` ebre de Boole (suite)

Prenons a = V rai et b = F aux.

Exemples d’expressions bool´ eennes : a + b = V rai + F aux = V rai

a + b = V rai + F aux = V rai + V rai = V rai a.b = V rai.F aux = V rai.V rai = V rai = F aux

Attention aux parenth` eses ! (a + b).(c + d)

Exemples de compositions d’expressions bool´ eennes sur des variables en algorithmique :

(a > b)ET (a > 0)

Si a = 1 et b = 2 : (a > b) = F aux donc l’expression vaut F aux Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression vaut V rai

(a > b)OU(a > 0)

Si a = 1 et b = 2 : (a > b) = F aux et (a > 0) = V rai donc l’expression vaut V rai

Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression

vaut V rai

(22)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Un peu d’alg` ebre de Boole (suite)

Prenons a = V rai et b = F aux.

Exemples d’expressions bool´ eennes : a + b = V rai + F aux = V rai

a + b = V rai + F aux = V rai + V rai = V rai a.b = V rai.F aux = V rai.V rai = V rai = F aux

Attention aux parenth` eses ! (a + b).(c + d)

Exemples de compositions d’expressions bool´ eennes sur des variables en algorithmique :

(a > b)ET (a > 0)

Si a = 1 et b = 2 : (a > b) = F aux donc l’expression vaut F aux Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression vaut V rai

(a > b)OU(a > 0)

Si a = 1 et b = 2 : (a > b) = F aux et (a > 0) = V rai donc l’expression vaut V rai

Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression

vaut V rai

(23)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Un peu d’alg` ebre de Boole (suite)

Prenons a = V rai et b = F aux.

Exemples d’expressions bool´ eennes : a + b = V rai + F aux = V rai

a + b = V rai + F aux = V rai + V rai = V rai a.b = V rai.F aux = V rai.V rai = V rai = F aux

Attention aux parenth` eses ! (a + b).(c + d)

Exemples de compositions d’expressions bool´ eennes sur des variables en algorithmique :

(a > b)ET (a > 0)

Si a = 1 et b = 2 : (a > b) = F aux donc l’expression vaut F aux Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression vaut V rai

(a > b)OU(a > 0)

Si a = 1 et b = 2 : (a > b) = F aux et (a > 0) = V rai donc l’expression vaut V rai

Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression

vaut V rai

(24)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Un peu d’alg` ebre de Boole (suite)

Prenons a = V rai et b = F aux.

Exemples d’expressions bool´ eennes : a + b = V rai + F aux = V rai

a + b = V rai + F aux = V rai + V rai = V rai a.b = V rai.F aux = V rai.V rai = V rai = F aux

Attention aux parenth` eses ! (a + b).(c + d)

Exemples de compositions d’expressions bool´ eennes sur des variables en algorithmique :

(a > b)ET (a > 0)

Si a = 1 et b = 2 : (a > b) = F aux donc l’expression vaut F aux Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression vaut V rai

(a > b)OU(a > 0)

Si a = 1 et b = 2 : (a > b) = F aux et (a > 0) = V rai donc l’expression vaut V rai

Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression

vaut V rai

(25)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Un peu d’alg` ebre de Boole (suite)

Prenons a = V rai et b = F aux.

Exemples d’expressions bool´ eennes : a + b = V rai + F aux = V rai

a + b = V rai + F aux = V rai + V rai = V rai a.b = V rai.F aux = V rai.V rai = V rai = F aux

Attention aux parenth` eses ! (a + b).(c + d)

Exemples de compositions d’expressions bool´ eennes sur des variables en algorithmique :

(a > b)ET (a > 0)

Si a = 1 et b = 2 : (a > b) = F aux donc l’expression vaut F aux Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression vaut V rai

(a > b)OU(a > 0)

Si a = 1 et b = 2 : (a > b) = F aux et (a > 0) = V rai donc l’expression vaut V rai

Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression

vaut V rai

(26)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Un peu d’alg` ebre de Boole (suite)

Prenons a = V rai et b = F aux.

Exemples d’expressions bool´ eennes : a + b = V rai + F aux = V rai

a + b = V rai + F aux = V rai + V rai = V rai a.b = V rai.F aux = V rai.V rai = V rai = F aux

Attention aux parenth` eses ! (a + b).(c + d)

Exemples de compositions d’expressions bool´ eennes sur des variables en algorithmique :

(a > b)ET (a > 0)

Si a = 1 et b = 2 : (a > b) = F aux donc l’expression vaut F aux Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression vaut V rai

(a > b)OU(a > 0)

Si a = 1 et b = 2 : (a > b) = F aux et (a > 0) = V rai donc l’expression vaut V rai

Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression

vaut V rai

(27)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Un peu d’alg` ebre de Boole (suite)

Prenons a = V rai et b = F aux.

Exemples d’expressions bool´ eennes : a + b = V rai + F aux = V rai

a + b = V rai + F aux = V rai + V rai = V rai a.b = V rai.F aux = V rai.V rai = V rai = F aux

Attention aux parenth` eses ! (a + b).(c + d)

Exemples de compositions d’expressions bool´ eennes sur des variables en algorithmique :

(a > b)ET (a > 0)

Si a = 1 et b = 2 : (a > b) = F aux donc l’expression vaut F aux Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression vaut V rai

(a > b)OU(a > 0)

Si a = 1 et b = 2 : (a > b) = F aux et (a > 0) = V rai donc l’expression vaut V rai

Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression

vaut V rai

(28)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Un peu d’alg` ebre de Boole (suite)

Prenons a = V rai et b = F aux.

Exemples d’expressions bool´ eennes : a + b = V rai + F aux = V rai

a + b = V rai + F aux = V rai + V rai = V rai a.b = V rai.F aux = V rai.V rai = V rai = F aux

Attention aux parenth` eses ! (a + b).(c + d)

Exemples de compositions d’expressions bool´ eennes sur des variables en algorithmique :

(a > b)ET (a > 0)

Si a = 1 et b = 2 : (a > b) = F aux donc l’expression vaut F aux Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression vaut V rai

(a > b)OU(a > 0)

Si a = 1 et b = 2 : (a > b) = F aux et (a > 0) = V rai donc l’expression vaut V rai

Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression

vaut V rai

(29)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Un peu d’alg` ebre de Boole (suite)

Prenons a = V rai et b = F aux.

Exemples d’expressions bool´ eennes : a + b = V rai + F aux = V rai

a + b = V rai + F aux = V rai + V rai = V rai a.b = V rai.F aux = V rai.V rai = V rai = F aux

Attention aux parenth` eses ! (a + b).(c + d)

Exemples de compositions d’expressions bool´ eennes sur des variables en algorithmique :

(a > b)ET (a > 0)

Si a = 1 et b = 2 : (a > b) = F aux donc l’expression vaut F aux Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression vaut V rai

(a > b)OU(a > 0)

Si a = 1 et b = 2 : (a > b) = F aux et (a > 0) = V rai donc l’expression vaut V rai

Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression

vaut V rai

(30)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Un peu d’alg` ebre de Boole (suite)

Prenons a = V rai et b = F aux.

Exemples d’expressions bool´ eennes : a + b = V rai + F aux = V rai

a + b = V rai + F aux = V rai + V rai = V rai a.b = V rai.F aux = V rai.V rai = V rai = F aux

Attention aux parenth` eses ! (a + b).(c + d)

Exemples de compositions d’expressions bool´ eennes sur des variables en algorithmique :

(a > b)ET (a > 0)

Si a = 1 et b = 2 : (a > b) = F aux donc l’expression vaut F aux Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression vaut V rai

(a > b)OU(a > 0)

Si a = 1 et b = 2 : (a > b) = F aux et (a > 0) = V rai donc l’expression vaut V rai

Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression

vaut V rai

(31)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Un peu d’alg` ebre de Boole (suite)

Prenons a = V rai et b = F aux.

Exemples d’expressions bool´ eennes : a + b = V rai + F aux = V rai

a + b = V rai + F aux = V rai + V rai = V rai a.b = V rai.F aux = V rai.V rai = V rai = F aux

Attention aux parenth` eses ! (a + b).(c + d)

Exemples de compositions d’expressions bool´ eennes sur des variables en algorithmique :

(a > b)ET (a > 0)

Si a = 1 et b = 2 : (a > b) = F aux donc l’expression vaut F aux Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression vaut V rai

(a > b)OU(a > 0)

Si a = 1 et b = 2 : (a > b) = F aux et (a > 0) = V rai donc l’expression vaut V rai

Si a = 3 et b = 2 : (a > b) = V rai et (a > 0) = V rai donc l’expression

vaut V rai

(32)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Les tests

Un test est une structure conditionnelle : les instructions ex´ ecut´ ees d´ ependent de la r´ ealisation ou non d’une condition.

D´ efinition

Un test d´ efinit une condition et un comportement ` a suivre si elle est r´ ealis´ ee.

Optionnellement, il peut d´ efinir un comportement ` a suivre dans le cas contraire.

Syntaxe :

La condition est donn´ ee entre les mot-cl´ es si et alors

L’action r´ ealis´ ee si la condition est v´ erifi´ ee est donn´ ee apr` es le mot-cl´ e alors

Si on donne une action ` a r´ ealiser si la condition n’est pas v´ erifi´ ee, elle est introduite par le mot-cl´ e sinon Le test est termin´ e par le mot-cl´ e finsi

1

si condition alors

2

action1

3

sinon

4

action2

5

fin si

(33)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Condition d’un test

La condition d’un test est une expression bool´ eenne Valeurs possibles : VRAI ou FAUX

Elle est ´ evalu´ ee pour d´ ecider quel bloc d’instructions ex´ ecuter.

On peut tester :

l’´ egalit´ e entre deux variables : var1 == var2

la non-´ egalit´ e entre deux variables : var1! = var2

une relation d’ordre entre deux variables : var1 > var2

ou toute expression renvoyant V rai ou F aux

1

d´ ebut

2

maV ar : Entier

3

maV ar ←− 0

4

si maV ar < 5 alors

5

maV ar ←− maV ar + 1

6

fin si

7

fin

On peut combiner des expressions bool´ eennes en utilisant les op´ erateurs logiques ET et OU (attention aux parenth` eses) :

((var1 == var2) ET (var1 > 0)) OU (var2 < 0).

(34)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Blocs d’instructions

Un algorithme est structur´ e par blocs d’instructions contenant plusieurs instructions ` a ex´ ecuter s´ equentiellement.

Exemple : les instructions ` a ex´ ecuter si la condition d’un test est r´ ealis´ ee

Les lignes 5 et 6 sont un bloc La ligne 8 est un bloc

Des blocs peuvent ˆ etre imbriqu´ es Un bloc d’instructions peut ˆ etre inclus dans un autre bloc.

Les lignes 2 ` a 9 sont un bloc Les deux blocs dans la condition sont des blocs imbriqu´ es dans ce bloc

1

d´ ebut

2

maV ar : Entier

3

maV ar ←− 0

4

si maV ar < 5 alors

5

maV ar ←− maV ar + 1

6

afficher( mavar )

7

sinon

8

maV ar ←− 0

9

fin si

10

fin

Des instructions d’un bloc sont d´ ecal´ ees vers la droite au mˆ eme niveau

Un bloc est indiqu´ e par une ligne verticale sur la gauche

(35)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variablese Param`Les testsetres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Tests imbriqu´ es

On peut imbriquer des tests, c’est-` a-dire qu’un test peut ˆ etre effectu´ e dans le corps d’un autre test.

On effectue un test ligne 4

Si la condition est r´ ealis´ ee, on ex´ ecute le bloc situ´ e entre les lignes 5 et 8

On effectue alors un autre test ligne 6

Si la condition est r´ ealis´ ee, on ex´ ecute le bloc ligne 7

Sinon, on ex´ ecute le bloc ligne 10.

Le test situ´ e entre les lignes 6 et 8 est imbriqu´ e dans le test situ´ e entre les lignes 4 et 11.

1

d´ ebut

2

maV ar : Entier

3

maV ar ←− 0

4

si maV ar < 5 alors

5

maV ar ←− maV ar + 1

6

si maV ar > 2 alors

7

afficher( mavar )

8

fin si

9

sinon

10

maV ar ←− 0

11

fin si

12

fin

(36)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les testse Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Les boucles

Condition d’arrˆ et

La condition d’arrˆ et d’une boucle est une condition (une expression bool´ eenne) qui d´ etermine le moment o` u une boucle doit arrˆ eter d’ex´ ecuter le bloc

d’instructions.

Une boucle sert ` a r´ ep´ eter un bloc d’instructions tant qu’une condition de continuation est satisfaite ou que la condition d’arrˆ et n’est pas satisfaite.

Exemples d’utilisation :

Parcours d’un tableau, calcul it´ eratif...

* Une boucle utilise un bloc d’instructions : c’est tout le bloc d’instructions correspondant qui est r´ ep´ et´ e.

Il est possible que le bloc d’instructions ne soit pas ex´ ecut´ e du tout (si la

condition d’arrˆ et est d´ ej` a satisfaite) ou un nombre infini de fois (souvent un

bug).

(37)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les testse Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Boucle Pour

On d´ efinit un compteur et :

Une initialisation de ce compteur i ← 0

Une condition d’arrˆ et pour sortir de la boucle

` a 9

Un pas qui modifie le compteur ` a la fin de chaque it´ eration

pas 1

On termine le bloc avec finpour

Exemple : algorithme de remplissage d’un tableau de 10 cases.

1

d´ ebut

2

tab[10] : T ableau d

0

entiers

3

pour i ←− 0 a 9 pas 1 faire

4

tab[i] = 2 ∗ i

5

fin pour

6

fin

(38)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les testse Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Boucle Pour (suite)

Le pas est n’importe quel modificateur sur le compteur : il peut ˆ etre n´ egatif, non lin´ eaire...

1

d´ ebut

2

pour i ←− 10 a 0 pas −2 faire

3

afficher( i )

4

fin pour

5

fin

Affichage par le programme : 10

8 6 4 2 0

1

d´ ebut

2

pour i ←− 1 a 35 pas ∗2 faire

3

afficher( i )

4

fin pour

5

fin

Affichage par le programme : 1

2 4 8 16 32

La boucle s’ex´ ecute tant que i est

inf´ erieur ` a 35 : on s’arrˆ ete ` a 32.

(39)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les testse Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Boucle Tant que... faire

La boucle Tant que ex´ ecute un bloc d’instructions tant qu’une condition est vraie : c’est la condition de boucle.

La condition de boucle est d´ efinie apr` es le mot-cl´ e Tant que

L’action ` a effectuer est donn´ ee entre les mot-cl´ es faire et fintq : on d´ efinit un bloc d’instructions qui est r´ ep´ et´ e

Attention aux boucles infinies !

Il faut que la condition de boucle finisse par ˆ etre invalid´ ee...

Exemple : algorithme de calcul des puissances de 2 inf´ erieures ` a 50.

1

d´ ebut

2

puissance : Entier

3

puissance ←− 1

4

tant que puissance < 50 faire

5

afficher( puissance )

6

puissance ←− puissance ∗ 2

7

fin tq

8

fin

Affichage : 1

2

4

8

16

32

(40)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les testse Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Boucle Tant que... faire (suite)

1

d´ ebut

2

puissance : Entier

3

puissance ← 1

4

tant que puissance < 50 faire

5

afficher( puissance )

6

puissance ← puissance ∗ 2

7

fin tq

8

fin

D´ etail de l’ex´ ecution : puissance vaut 1

puissance est-il inf´ erieur ` a 50 ? oui donc on ex´ ecute le bloc

Affichage : 1 puissance vaut 2

Retour ` a la ligne 4 : puissance est-il inf´ erieur ` a 50 ? oui donc on ex´ ecute le bloc

Affichage : 2 puissance vaut 4 ...

Lorsque puissance prend la valeur 64 :

la condition ligne 4 n’est plus satisfaite

et on sort de la boucle

(41)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les testse Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Equivalence entre les boucles ´ for et tant que ... faire

On peut ´ ecrire une boucle faire ... tant que ´ equivalente ` a une boucle for : Le compteur est initialis´ e avant d’entrer dans la boucle faire ... tant que La condition de boucle est la mˆ eme que la condition d’arrˆ et de la boucle for

Le compteur est modifi´ e ` a la fin du bloc d’instruction ex´ ecut´ e par la boucle faire ... tant que

1

d´ ebut

2

pour i ←− 0 a 9 pas 1 faire

3

tab[i] = 2 ∗ i

4

fin pour

5

fin

1

d´ ebut

2

i : entier

3

i ←− 0

4

tant que i < 10 faire

5

tab[i] = 2 ∗ i

6

i ←− i + 1

7

fin tq

8

fin

(42)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les testse Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Boucle Faire ... tant que

La boucle Faire ... tant que ex´ ecute un bloc d’instructions puis ´ evalue une condition de boucle

Le bloc d’instructions est r´ ep´ et´ e si la condition de boucle est satisfaite

1

d´ ebut

2

puissance : Entier

3

puissance ← 1

4

faire

5

afficher( puissance )

6

puissance ← puissance ∗ 2

7

tant que puissance < 20;

8

fin

D´ etail de l’ex´ ecution : puissance vaut 1 Affichage : 1 puissance vaut 2

puissance est-il inf´ erieur ` a 20 ? oui donc on r´ e-ex´ ecute le bloc : retour ` a la ligne 4

Affichage : 2 puissance vaut 4 ...

Lorsque puissance a pris la valeur 32 :

la condition ligne 7 n’est plus satisfaite

et on sort de la boucle

(43)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les testse Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonBoucles Programmation structur´ee

Diff´ erence entre les boucles Faire ... tant que et Tant que ... faire

La boucle Faire ... tant que commence par ´ evaluer la condition de boucle

Puis elle ex´ ecute le bloc d’instructions si la condition de boucle est valid´ ee La boucle Tant que ... faire ex´ ecute le bloc d’instructions puis elle

´

evalue la condition de boucle

Algorithme d’attente ` a un stop :

1

d´ ebut

2

vitesse : Entier

3

faire

4

vitesse ←− 0

5

tant que voituresArrivent == V rai;

6

vitesse ←− 50

7

fin

Algorithme d’attente ` a un feu rouge :

1

d´ ebut

2

vitesse : Entier

3

tant que couleurF eu == rouge faire

4

vitesse ←− 0

5

fin tq

6

vitesse ←− 50

7

fin

Avec un stop on s’arrˆ ete, puis on regarde si on peut avancer. ` A un feu de

circulation, on s’arrˆ ete si le feu est rouge ; si le feu n’est pas rouge, on avance.

(44)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Bouclese Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonProgrammation structur´ee

D´ ecomposition d’un probl` eme en sous-probl` emes

”... diviser chacune des difficult´ es que j’examinerais en autant de parcelles qu’il se pourrait et qu’il serait requis pour mieux les r´ esoudre.”

Discours de la m´ ethode (1637)

Ren´ e Descartes

(45)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Bouclese Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonProgrammation structur´ee

Fonctions

D´ efinition

Une fonction d´ efinit une action effectu´ ee sur un ensemble de param` etres qui produit un r´ esultat retourn´ e comme valeur de sortie de la fonction.

Elle fournit une abstraction pour cette action vis-` a-vis des algorithmes qui l’appellent.

Analogie avec les fonctions math´ ematiques : f : x 7→ f(x) On d´ efinit la fonction une fois

On l’appelle autant de fois qu’on veut

Avantages : factorisation de code, abstraction pour la conception de

l’algorithme... Permet de se concentrer sur l’algorithme lui-mˆ eme plutˆ ot que

sur les d´ etails.

(46)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Bouclese Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonProgrammation structur´ee

Param` etres et r´ esultat

On donne les param` etres et leur type

On d´ eclare les param` etres entre parenth` eses

On les utilise dans la fonction en utilisant ce nom : ce sont des variables Il existe des param` etres

D’entr´ ee : utilis´ es dans la fonction De sortie : modifi´ es dans la fonction

Ou les deux : utilis´ es et modifi´ es dans la fonction On d´ eclare le type retourn´ e

D´ eclaration de la fonction suivie par : type

On sort de la fonction avec le mot cl´ e retourner et la valeur retourn´ ee

1

d´ ebut fonction carre( nombre: Entier ): Entier

2

resultat : Entier

3

resultat ←− nombre × nombre

4

retourner resultat

5

fin fonction

(47)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Bouclese Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonProgrammation structur´ee

Appel de fonction

On appelle la fonction ` a partir d’un autre algorithme

On lui passe en param` etres des variables de l’algorithme appelant La valeur retourn´ ee est mise dans une variable de l’algorithme appelant

1

d´ ebut programme

2

nombreDepart : Entier

3

calcul : Entier

4

calcul ←− carre ( nombreDepart )

5

fin programme

1

d´ ebut fonction carre( nombre: Entier ): Entier

2

resultat : Entier

3

resultat ←− nombre × nombre

4

retourner resultat

5

fin fonction

La fonction fournit donc une abstraction de l’action qu’elle r´ ealise param´ etr´ ee

par les variables pass´ ees lors de l’appel.

(48)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Bouclese Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonProgrammation structur´ee

Proc´ edures

Une proc´ edure effectue une action. Elle ne retourne rien.

Affichage : pas de r´ esultat de calcul ` a r´ ecup´ erer Calcul sur des variables de sortie

On sort de la proc´ edure

A la fin du bloc d’instructions principal `

Ou quand on rencontre le mot-cl´ e Retour

(49)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Bouclese Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonProgrammation structur´ee

Proc´ edures (exemple)

1

d´ ebut programme

2

puissance : Entier

3

puissance ( puissance )

4

afficher ( puissance )

5

fin programme

1

d´ ebut proc´ edure puissance( petitepuissance: Entier Sortie )

2

petitepuissance ←− 1

3

tant que V rai faire

4

petitepuissance ←− petitepuissance × 2

5

if petitepuissance > 200 then

6

retourner

7

end if

8

fin tq

9

fin proc´ edure

(50)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Bouclese Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonProgrammation structur´ee

Visibilit´ e des variables

Les variables d´ eclar´ ees dans la fonction ne sont visibles que dans la fonction

Les variables d´ eclar´ ees dans le programme appelant ne sont visibles que dans le programme appelant ne sont pas visibles dans la fonction

Les variables pass´ ees en param` etre

sont appel´ ees par leur nom dans le programme appelant dans l’appel de la fonction

sont appel´ ees par le nom utilis´ e pour les d´ eclarer dans la fonction elle-mˆ eme

Visibilit´ e des variables

Les variables sont visibles uniquement dans la fonction, la proc´ edure ou le

programme dans lequel elles ont ´ et´ e d´ eclar´ ees, et dans aucune des fonctions ou

proc´ edures appel´ ees ou qui l’appellent.

(51)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Bouclese Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonProgrammation structur´ee

Approche descendante

Les fonctions et les proc´ edures fournissent une abstraction sur les actions r´ ealis´ ees par le programme

Possibilit´ e de les utiliser pour se concentrer sur la structure du programme plutˆ ot que sur la r´ esolution des sous-probl` emes

On d´ ecompose le probl` eme en sous-probl` emes

On fait dans un premier temps l’hypoth` ese qu’ils sont r´ esolus On s’en occupe plus tard

La conception de l’algorithme dans sa globalit´ e est ainsi plus simple D´ ecomposer pour mieux maˆıtriser

On retarde le plus possible le moment d’effectuer les calculs

(52)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Bouclese Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonProgrammation structur´ee

Approche descendante : exemple

Th´ eor` eme de Pythagore : ”le carr´ e de l’hypot´ enuse d’un triangle rectangle est

´ egal ` a la somme des carr´ es des longueurs des deux autres cˆ ot´ es”.

1

d´ ebut fonction hypo( cote1: Entier, cote2: Entier ): Entier

2

/* variables internes */

3

carre1 : Entier

4

carre2 : Entier

5

hypotenusecarre : Entier

6

hypotenuse : Entier

7

/* on calcule la somme des carr´ es des cˆ ot´ es */

8

carre1 ←− carr´ e( cote1 )

9

carre2 ←− carr´ e( cote2 )

10

hypotenusecarre ←− carre1 + carre2

11

/* on prend la racine carr´ ee de la somme et on retourne le r´ esultat */

12

hypotenuse ←− racine( hypotenusecarre )

13

retourner hypotenuse

14

fin fonction

(53)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Bouclese Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonProgrammation structur´ee

Approche descendante : exemple (suite)

1

d´ ebut fonction carr´ e( nombre: Entier ): Entier

2

moncarre : Entier

3

moncarre ←− nombre × nombre

4

retourner moncarre

5

fin fonction

1

d´ ebut fonction racine( nombre: Entier ): Entier

2

maracine : reel

3

maracine ←− √ nombre

4

retourner maracine

5

fin fonction

(54)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables Les tests Bouclese Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonProgrammation structur´ee

R´ ecursivit´ e

Une fonction ou une proc´ edure peut s’appeler elle-mˆ eme Elle est alors partiellement d´ efinie ` a partir d’elle-mˆ eme

1

d´ ebut fonction calcul( var: Entier ): Entier

2

si var == 1 alors

3

retourner var

4

sinon

5

retourner var×calcul( var − 1 )

6

fin si

7

fin fonction

Correspond bien aux relations de r´ ecurrence

Attention au point d’arrˆ et !

(55)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables en Python Structures de contrˆe Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonole Fonctions

Plan du cours

1

Introduction ` a l’algorithmique

2

Introduction ` a Python Les variables en Python Structures de contrˆ ole Fonctions

3

Structures de donn´ ees

4

Modularit´ e

5

Param` etres optionnels de fonctions

6

Les exceptions

7

Manipulation de fichiers en

Python

(56)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables en Python Structures de contrˆe Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonole Fonctions

Introduction ` a Python

Python est un Langage de script Rapidit´ e de d´ eveloppement

Utilisation pour des scripts d’administration syst` eme, analyse de fichiers textuels (logs...)

Langage pour le web : d´ eveloppement d’applications web, scripts CGI, serveurs...

Acc` es aux bases de donn´ ees relationnelles Python est un langage de programmation

Programmes complets en Python

Interfa¸ cage facile avec des biblioth` eques dans d’autres langages (C, C++, Fortran...)

Acc` es aux interfaces graphiques facilit´ e

Permet de se concentrer sur l’algorithme plutˆ ot que l’impl´ ementation :

calcul scientifique pour les non-informaticiens...

(57)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables en Python Structures de contrˆe Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonole Fonctions

Ex´ ecution de programmes Python

Deux moyens d’ex´ ecuter des scripts Python :

En ligne de commande: dans l’interpr´ eteur interactif On lance l’interpr´ eteur

1 c o t i @ m a x i m u m :~ $ p y t h o n

2 P y t h o n 2 . 7 . 3 rc2 ( default , Apr 22 2012 , 2 2 : 3 0 : 1 7 ) 3 [ GCC 4 . 6 . 3 ] on l i n u x 2

4 T y p e " h e l p " , " c o p y r i g h t " , " c r e d i t s " or " l i c e n s e " for m o r e i n f o r m a t i o n .

5 > > > p r i n t 3

6 3

Rapidit´ e de mise en place Permet de tester des choses En ex´ ecutant un script

Fichier ex´ ecutable Deux possibilit´ es :

Ex´ecution directe et le script appelle l’interpr´eteur Attention aux droits (+x)

1 c o t i @ m a x i m u m :~ $ ./ m o n s c r i p t . py

Lancement dans l’interpr´eteur

1 c o t i @ m a x i m u m :~ $ p y t h o n ./ m o n s c r i p t . py

(58)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables en Python Structures de contrˆe Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonole Fonctions

Scripts Python

Si il est lanc´ e seul, un script Python doit remplir deux conditions : Etre ˆ ex´ ecutable (+x)

Sp´ ecifier le chemin vers l’interpr´ eteur : c’est le shebang On place le shebang au d´ ebut du fichier :

1 # !/ u s r / b i n / p y t h o n

Attention : si le shebang ne pointe pas vers le bon interpr´ eteur, erreur.

1 c o t i @ t h o r i m :/ t m p $ cat d e m o . py 2 # !/ u s r / p y t h o n

3 c o t i @ t h o r i m :/ t m p $ ./ d e m o . py

4 - b a s h : ./ d e m o . py : / usr / p y t h o n : bad i n t e r p r e t e r : No s u c h f i l e or d i r e c t o r y

Possibilit´ e de faire coexister plusieurs versions de Python sur le syst` eme.

(59)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables en Python Structures de contrˆe Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonole Fonctions

Commentaires en Python

Pour commenter une ligne de code on utilise # Une ligne comment´ ee n’est pas ex´ ecut´ ee Commente tout ce qui suit la ligne

Commente une et une seule ligne : le commentaire s’arrˆ ete ` a la fin de la ligne

Pour commenter plusieurs lignes, on encadre la section ` a commenter par ’’’

(triple quote) ou """ (triple double quote) Le commentaire commence au triple quote Il se termine au triple quote suivant

Impossible d’imbriquer des commentaires sur plusieurs lignes

1 # !/ u s r / b i n / p y t h o n 2

3 ’ ’ ’

4 un c o m m e n t a i r e 5 s u r p l u s i e u r s l i g n e s 6 ’ ’ ’

7

8 # un c o m m e n t a i r e s u r u n e l i g n e

(60)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables en Python Structures de contrˆe Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonole Fonctions

Affichage d’une chaˆıne de caract` eres

On affiche une chaˆıne de caract` eres avec l’instruction print En suivant directement l’instruction print

1 > > > p r i n t " t o t o "

2 t o t o 3 > > > a = 2 4 > > > p r i n t a

5 2

Ou n’importe quoi entre parenth` eses

1 > > > p r i n t ( a )

2 2

Les chaˆınes de caract` eres sont donn´ ees entre guillemets, sinon elles sont interpret´ ees comme des noms de variables

1 > > > p r i n t " t o t o "

2 t o t o

(61)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables en Python Structures de contrˆe Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en Pythonole Fonctions

Affichage d’une chaˆıne de caract` eres

Op´ erateur de concat´ enation : +

Attention, le + est d’abord interpr´ et´ e comme un op´ erateur math´ ematique si il est utilis´ e sur autre chose que des chaˆınes de caract` ere

1 > > > p r i n t a + 3

2 5

3 > > > p r i n t a , 3 4 2 3

Possibilit´ e d’afficher deux ´ el´ ements de types diff´ erents ` a la suite avec , (s´ epar´ es par un espace)

On ne peut concat´ ener que des variables de mˆ eme type :

1 > > > p r i n t " t o t o " + 3

2 T r a c e b a c k ( m o s t r e c e n t c a l l l a s t ) : 3 F i l e " < stdin > " , l i n e 1 , in < module >

4 T y p e E r r o r : c a n n o t c o n c a t e n a t e ’ str ’ and ’ int ’ o b j e c t s

Solution : convertir la variable en chaˆıne de caract` eres

1 > > > p r i n t " t o t o " + str ( 3 ) 2 t o t o 3

3 > > > p r i n t " t o t o " , 3 4 t o t o 3

(62)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables en Pythone Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonStructures de contrˆole Fonctions

Type des variables

Type implicite :

On ne d´ eclare pas les variables

Le type d´ epend de la premi` ere initialisation Exemple :

1 m a V a r 1 = 5 # un e n t i e r

2 m a V a r 2 = 3.0 # un r e e l

3 m a C h a i n e = " T o t o " # u n e c h a i n e de c a r a c t e r e s

Si on change de type :

La premi` ere variable est d´ etruite

Une nouvelle est cr´ e´ ee sous le mˆ eme nom

1 m a V a r = 5 # un e n t i e r

2 m a V a r = 3.0 # un r e e l

(63)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables en Pythone Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonStructures de contrˆole Fonctions

Types fournis par Python

Entiers :

integer : 32 bits long integer : 64 bits

1 > > > a = 3 # e n t i e r 2 > > > b = 1 L # e n t i e r l o n g

R´ eels :

type float : 64 bits, virgule flottante Complexes :

partie r´ eelle et partie imaginaire type float pour chacun des nombres

1 > > > z = 9+5 J

2 > > > p r i n t z . i m a g

3 5.0

4 > > > p r i n t z . r e a l

5 9.0

6 > > > p r i n t z

7 ( 9 + 5 j )

(64)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables en Pythone Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonStructures de contrˆole Fonctions

Chaˆınes de caract` eres

Chaˆınes de caract` eres :

donn´ ees entre ’ (simple quote) ou entre " (double quote)

si la chaˆıne contient un ’ ou un " : on l’´ echappe avec un \ pour qu’il ne soit pas interpr´ et´ e

1 str = " V i v e la p r o g "

2 s t r 2 = ’ P y t h o n c \ ’ est bon ’ 3 s t r 3 = " P r u c h \ ’ e l l a d u r i "

Concat´ enation avec + :

1 > > > t o t o = " b l a b l a "

2 > > > t i t i = " b l u b l u "

3 > > > t a t a = t o t o + t i t i 4 > > > p r i n t t a t a 5 b l a b l a b l u b l u

(65)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables en Pythone Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonStructures de contrˆole Fonctions

Introspection

D´ efinition : Connaissance qu’une entit´ e a d’elle-mˆ eme.

Ici : possibilit´ e qu’a le programme d’examiner la structure d’une variable, de connaitre son type.

On utilise la fonction type()

1 > > > i = 5 2 > > > t y p e ( i ) 3 < t y p e ’ int ’ >

4 > > > j = 6 L 5 > > > t y p e ( j ) 6 < t y p e ’ l o n g ’ >

7 > > > z = 9+5 J 8 > > > t y p e ( z ) 9 < t y p e ’ c o m p l e x ’ >

10 > > > t y p e ( z . r e a l ) 11 < t y p e ’ f l o a t ’ >

(66)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables en Pythone Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonStructures de contrˆole Fonctions

Conversion de type

But : obtenir une variable d’un type donn´ e contenant la mˆ eme valeur qu’une autre variable d’un autre type.

On utilise une fonction qui construit la nouvelle variable du type voulu Cette fonction porte le nom de ce type

Exemple : pour un entier, fonction int()

1 > > > a = 7.0 2 > > > t y p e ( a ) 3 < t y p e ’ f l o a t ’ >

4 > > > b = int ( a ) 5 > > > p r i n t b

6 7

7 > > > t y p e ( b ) 8 < t y p e ’ int ’ >

Si la variable r´ esultat ne peut pas contenir toute l’information de la variable initiale, la valeur est tronqu´ ee

Exemple : un r´ eel converti en entier → l’entier contient la partie enti` ere du r´ eel

1 > > > a = 7.7 2 > > > b = int ( a ) 3 > > > p r i n t b

4 7

(67)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables en Pythone Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonStructures de contrˆole Fonctions

Saisie d’une valeur par l’utilisateur

Saisie d’une chaˆıne de caract` eres par l’utilisateur : raw input()

Ce qui est lu est toujours consid´ er´ e comme une chaˆıne de caract` eres Param` etre (optionnel) : invite affich´ ee ` a l’´ ecran

1 > > > a = r a w _ i n p u t ( " e n t r e r une v a l e u r " ) ) 2 e n t r e r une v a l e u r t o t o

3 > > > t y p e ( a ) 4 < t y p e ’ str ’ >

5 > > > b = r a w _ i n p u t ()

6 3

7 > > > t y p e ( b ) 8 < t y p e ’ str ’ >

Saisie d’une valeur par l’utilisateur : input()

Le type de la variable obtenue d´ epend de la valeur saisie

1 > > > c = i n p u t ( " - - - > " ) 2 - - - > 4

3 > > > t y p e ( c ) 4 < t y p e ’ int ’ >

5 > > > d = i n p u t ( ) 6 t o t o

7 T r a c e b a c k ( m o s t r e c e n t c a l l l a s t ) : 8 F i l e " < stdin > " , l i n e 1 , in < module >

9 F i l e " < string > " , l i n e 1 , in < module >

10 N a m e E r r o r : n a m e ’ t o t o ’ is not d e f i n e d 11 > > > d = i n p u t ( )

(68)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables en Pythone Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonStructures de contrˆole Fonctions

Blocs en Python

L’indentation est primordiale

C’est le niveau d’indentation qui d´ efinit les blocs Utilisation de la tabulation

Les blocs n’ont pas de d´ elimiteur de fin explicite : c’est le retour au niveau d’indentation inf´ erieur (vers la gauche) qui l’indique.

1 if T r u e :

2 # d e b u t d ’ un b l o c

3 p r i n t " on est d a n s le b l o c "

4 # f i n d ’ un b l o c

5 p r i n t " r e t o u r d a n s le b l o c d ’ o r i g i n e "

Chaque bloc imbriqu´ e est situ´ e ` a un niveau d’indentation sup´ erieur : une

tabulation suppl´ ementaire vers la droite.

(69)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables en Pythone Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonStructures de contrˆole Fonctions

Tests

Mot-cl´ e if suivi de deux points :

Le bloc ` a ex´ ecuter est indent´ e vers la droite

1 a = 5

2 if a > 0:

3 p r i n t " a est p o s i t i f "

Alternative : mot-cl´ e else suivi de deux points :

1 a = 5

2 if a >= 0:

3 p r i n t " a est p o s i t i f ou nul "

4 e l s e :

5 p r i n t " a est n e g a t i f "

Possibilit´ e d’enchainer les tests avec elif

1 a = 5

2 if a > 0:

3 p r i n t " a est p o s i t i f "

4 e l i f a == 0:

5 p r i n t " a est nul "

6 e l s e :

7 p r i n t " a est n e g a t i f "

(70)

Introduction `a l’algorithmique Introduction `a Python Structures de donn´ees Modularit´Les variables en Pythone Param`etres optionnels de fonctions Les exceptions Manipulation de fichiers en PythonStructures de contrˆole Fonctions

Boucle for

On peut r´ ep´ eter un ensemble d’instructions avec la boucle for Correspond ` a la boucle Pour vue en algorithmique On it` ere sur un ensemble de valeurs

Par exemple, l’ensemble d’entiers compris entre deux valeurs : fonction range()

Un seul argument : entiers compris entre 0 et cet argument (exclu)

1 > > > p r i n t r a n g e ( 5 )

2 [0 , 1 , 2 , 3 , 4]

Deux arguments : entiers compris entre le 1er et le 2eme argument

1 > > > p r i n t r a n g e ( 2 , 5 )

2 [2 , 3 , 4]

Trois arguments : entiers compris entre le 1er et le 2eme argument avec un pas correspondant au 3eme argument

1 > > > p r i n t r a n g e ( 1 , 10 , 3 )

2 [1 , 4 , 7]

Références

Documents relatifs

Introduction.- En langage C, l’acc`es ` a un ´el´ement d’un tableau peut se faire classiquement par le nom du tableau accompagn´e d’un index, mais aussi par un pointeur

• Créer un tableau ou apparaissent la valeur des variables à chaque ligne du programme en précisant le type de donnée obtenu (entier, flottant, chaîne de caractère ou liste).

Camille Coti, Laure Petrucci TR2 201 / 316.. Monitoring Surveillance réseau. Le

g´ en´ eralement e /public html ou e /WWW (d´ efini dans la configuration du serveur ou du virtual host). /etc/apache2/mods-available/userdir.conf: UserDir

Les cœurs sont répartis en warps (archi Fermi : 32 threads par warp) Chaque cœur d’un warp exécute la même instruction dans un timestep Accès à une mémoire commune...

Communications entre processus via des canaux de communications État d’un système distribué = ensemble des états des processus + états des canaux de communications.

Distribution d’un tampon de tous les processus vers tous les processus int MPI Alltoall( void *sendbuf, int sendcount, MPI Datatype sendtype, void *recvbuf, int recvcount, MPI

I int MPI Gather( void *sendbuf, int sendcount, MPI Datatype sendtype, void *recvbuf, int recvcount, MPI Datatype recvtype, int root, MPI Comm comm );. I Les contenus des tampons