Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à...

18
1 Introduction à l'algorithmique Programmation Python 2 Sommaire : Introduction à l'algorithmique, objectif de l'informatique • Matériel - Logiciel • Notions d'algorithme • Programmation Python – Types scalaires – Lire, Ecrire, Calculer – Instructions conditionnelles et répétitives – Types structurés : tableaux – Décomposition d'un programme 3 Références Différents tutoriels sur le Web : Christophe Darmangeat : Introduction à l'Algorithmique Gérard Swinnen : Apprendre à programmer avec Python M Pilgrim, X Defrang, J-P Gay, A Drahon : Plongez au coeur de Python Patrick Fuchs : Cours de Python Site officiel de Python : http://www.python.org/ http://python.developpez.com/outils/ "How to think like a computer scientist" : http://openbookproject.net//thinkCSpy/ Télécharger IDLE 4 Introduction à l'algorithmique 5 Objectif de l'informatique : "Résoudre des Problèmes" Comment ? Ordinateur : automate capable d'exécuter des instructions élémentaires (le matériel) Méthode de résolution du problème : Algorithme ( le logici el). Types de Problèmes Gestion (majorité) Calcul scientifique Communication Enseignement Jeux 6 Exemples de problèmes traités en TP ou examen : 1) Dessiner un carré qui contient un carré, qui contient un carré, etc. 2) Un groupe d'amis prépare un séjour de vacances ensemble. Chaque personne s'occupe d'une partie des achats pour le séjour. Calculer les dettes ou les avoirs de chaque personne.

Transcript of Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à...

Page 1: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

1

Introduction à l'algorithmique

Programmation Python

2

Sommaire :

• Introduction à l'algorithmique, objectif de l'informatique

• Matériel - Logiciel

• Notions d'algorithme

• Programmation Python

– Types scalaires

– Lire, Ecrire, Calculer

– Instructions conditionnelles et répétitives

– Types structurés : tableaux

– Décomposition d'un programme

3

RéférencesDifférents tutoriels sur le Web :

– Christophe Darmangeat : Introduction à l'Algorithmique

– Gérard Swinnen : Apprendre à programmer avec Python

– M Pilgrim, X Defrang, J-P Gay, A Drahon : Plongez au coeur de Python

– Patrick Fuchs : Cours de Python

– Site officiel de Python : http://www.python.org/

– http://python.developpez.com/outils/

– "How to think like a computer scientist" :http://openbookproject.net//thinkCSpy/

Télécharger IDLE

4

Introduction à l'algorithmique

5

Objectif de l'informatique : "Résoudre des Problèmes"

Comment ? Ordinateur : automate capable d'exécuter des instructions

élémentaires (le matériel) Méthode de résolution du problème : Algorithme (le logiciel).

Types de Problèmes Gestion (majorité) Calcul scientifique Communication Enseignement Jeux

6

Exemples de problèmes traités en TP ou examen :

1) Dessiner un carré qui contient un carré, qui contient un carré, etc.

2) Un groupe d'amis prépare un séjour de vacances ensemble. Chaque personne s'occupe d'une partie des achats pour le séjour. Calculer les dettes ou les avoirs de chaque personne.

Page 2: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

7

Environnement matériel Description sommaire d'un ordinateur

Evolution du matériel , quelques dates :• 1943 : ENIAC composé de 18000 lampes à vide, 1500 m2,

330 multiplications par seconde. Programmable par "câbles".• 1948 : Transistor est créé par la firme Bell Labs.• 1958 : Circuit intégré, Texas Instruments. Réduction de la

taille et des coûts.

Périphériques Unité Centrale

Processeur

Mémoire Entrée

Sortie

8

Environnement matériel• 1979 : Intel 8080 - 64 ko de mémoire, 200 000

instructions par seconde.• 1981 : IBM commercialise le premier "PC" (Intel 8088).• 1992 : Intel i586, 100 Mips (millions d'instructions par sec) • 2006 : Pentium 1 500 Mips• Les ordinateurs d'aujourd'hui. Loi de Moore :

"le nombre de transistors, donc la puissance, double tous les 18 mois à prix constant".

-> 1 milliard de transistors aux alentours de 2010 Le processeur Core i7 Sandy Bridge-E a 2.27 milliards de transistors

Exemple de l'évolution : premier disque dur lancé en 1956 par IBM offrait une capacité de 5 Mo pour un poids de plus d'une tonne ( ! ).

Fin 2010, record : 3,9 milliards de transistors (Stratix® V d’Altera).

9

MatérielReprésentation des informations

Dans un composant électrique on peut stocker des informations binaires : 0 ou 1

Unités d'information :• Binary digit (bit) : 0 ou 1 (unité élémentaire).• Octet : 8 bits (byte), capacité 28 bits• Kilo-octet ko = 1024 octets (210 octets)• Mega-octet Mo = 1000 ko (220 octets)• Giga-octet Go = 1000 Mo (230 octets)

Quelques ordres de grandeur:• Les clés USB font souvent 2 ou 4 Go.• Un CD-Rom fait 650 Mo.• Les disques durs actuels font souvent 500 Go ou 1000 Go 10

Environnement matérielReprésentation des caractèresUn octet est nécessaire pour représenter un caractère.

Code ASCII (American Standard Code for Information Interchange)

Table de caractères affichables

Caractéristiques des codes :Ordre alphabétiqueSéquence des chiffres

11

Environnement matérielReprésentation des nombres entiersIl suffit de convertir le nombre en binaire. Ex: 510 = 000001012

Comment représenter les entiers négatifs ?

La notation en complément à deux. Les nombres négatifs sont obtenus de la manière suivante :

• on inverse les bits de l'écriture binaire de sa valeur absolue (complément à un),

• on ajoute 1 au résultat.

12

Environnement matérielExemple : - 55 en binaire = 00000101complément à un = 11111010on ajoute 1 = 11111011

Maintenant 5 - 5 = 5 + (-5), c'est à dire+ 00000101 11111011 ----------------------= 00000000

Entiers de 8 bits en complément à deux

Page 3: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

13

Environnement matérielReprésentation des nombres "réels" :Les nombres à virgule flottante sont des approximations des

nombres réels. Ils possèdent :– un signe, – une mantisse et – un exposant

en faisant varier l'exposant, on fait « flotter » la virgule décimale.

Exemple (en base 10) :

3,14159 est représenté par 314159 e-5

14

Environnement matérielLa mémoire vive.

• appelée RAM (Random Access Memory, mémoire à accès direct),

• mémoire principale du système, • permet de stocker de manière temporaire données

et programmes.• elle est volatile.

122123124

adresse

données

Programmes

(instructions)

.

.

.

.

.

.

Notions :

Compteur de programme

Cycle d'instruction

15

Environnement logicielDifférents niveaux des instructions : Langage machine Assembleur Langages de "haut niveau", de programmation.

Caractéristiques des langages de programmation : Indépendants des machines

Intermédiaires entre langage machine et langue naturelle

Définis avec rigueur

Ils ne sont pas directement exécutables

16

Environnement logicielTypes de langages :Interprétés par une machine abstraite. Exemple : "Python", Compilés. Exemples : "Pascal", "Ada", "C"

Phase de l'interprétation :

Interpréteur exécute un prog.

"Python"

Données Résultats

Entrées Exécution Sorties

17

Environnement logiciel

Langage machineDonnées Résultats2

Phases de la compilation :

CompilateurProg "C" Lang machine1

Entrées Exécution Sorties

18

Environnement logicielQuelques langages de programmation :Fortran 1956 IBMAlgol 1957 EuropéenCOBOL 1961 USAPL/1 1964 IBMPascal 1970 N. WirthADA 1979 USASmalltalk 1980 Xerox ParcPython 1989 G. van RossumJava 1991 Sun

Page 4: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

19

AlgorithmiqueSolution d'un problème.

Comment ? Nous avons besoin de :• Concevoir une méthode, l'algorithme, de solution. • Connaître un langage de programmation.

L’intuition :- expérience tellement répétée que le raisonnement finit par devenir « spontané ».

Concevoir une méthode de solution est un travail personnel, difficile à enseigner.

La maîtrise de l’algorithmique requiert deux qualités :

• Avoir une certaine "intuition", un esprit "d’exploration", être "créatif".

• Faire une analyse ou étude du problème, être méthodique, rigoureux, définir les moindres détails

suite d’instructions, qui une fois exécutée, conduit à un résultat

Recette cuisine 20

Algorithmique

Etapes de la conception d'un algorithme :1. Analyse. "Se mettre en situation", à la place de l'ordinateur.

• Reconnaître les informations, les données, en entrée.• Reconnaître les résultats (sorties) attendus.• Quels sont les variables, les objets, nécessaires aux

calculs ?

2. Ecriture d'un algorithme ou méthode de solution, dans un langage non ambigu : langage algorithmique.

3. Ecriture de l'algorithme dans un langage de programmation pour être exécuté par l'ordinateur.

Exemple de problème : calculer la valeur absolue d'un entier.

21

Algorithmique

Types d'erreurs :

Lors de l'exécution d'un programme par l'ordinateur deux types d'erreurs peuvent se présenter :

1) Des erreurs de syntaxe, c'est à dire de non respect des règles d'écriture du langage.

2) Des erreurs de logique :

• Le programme ne produit pas les résultats attendus.

• Le programme "se plante". Exemple : division par zéro, tentative de lecture d'un fichier inexistant, etc.

22

Algorithmique

Quatre types d'instruction : Les ordinateurs sont essentiellement capables de comprendre

quatre types d'instruction :

• affectation de variables• lecture / écriture• tests ou conditions• boucles

Un algorithme informatique se ramène à la combinaison de ces quatre briques de base.

Il s'agit des appels à des sous-programmes

23

Concept de variableles variables permettent de stocker des données ou valeurs.

Ces données peuvent être de plusieurs types :

• des nombres : entiers, réels, …• des caractères, • des types compklexes

Certains langages imposent la déclaration explicite des variables avant de pouvoir les utiliser.

Pour employer une image, une variable est une référence vers une "boîte" ou emplacement en mémoire.

x

24

Concept de type

Concept de type.Lorsqu’on déclare une variable, il ne suffit pas de créer une

boîte (réserver un emplacement mémoire), on doit en plus préciser ce que l’on voudra mettre dedans, car de cela dépendent la taille de la boîte et le type de codage utilisé.

Types simples "scalaires" :• Entier• Réel• Booléen• Caractère

Page 5: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

Type booléenL'algèbre booléenne (George Boole 1815 –1864) trouve de nombreuses

applications en particulier en informatique.

C'est une logique à deux valeurs : False et True (notées aussi : 0 et 1) et trois opérateurs : NON, ET et OU.

25

Table de vérité des opérateurs booléens de base :

a b a OU b a ET b

False False False False

False True True False

True False True False

True True True True

a NON(a)

False True

True False

26

Instruction d'affectation

Affectation.Instruction fondamentale : attribuer une valeur à une variable.

Autres exemples :

x ← 8Attention à la cohérence de types dans certains langages

x ← x + 2

estGrand ← truepi ← 3.14

Dans la mémoire : 8x

27

Instruction d'affectationL'ordre des instructions joue un rôle essentiel :

a ← 34a ← 12

a ← 12a ← 34

Autres exemples :

riri ← "loulou"fifi ← "riri"

riri ← "loulou"fifi ← riri

Attention aux guillemets

28

Expressions et opérateursDans une affectation on trouve :

• à gauche un nom de variable.

• à droite une expression.

Une expression est un ensemble de valeurs reliées par des opérateurs.

Différents types d'opérateurs :• numériques : + - * /

• alphanumériques : concaténation +

• logiques (ou booléens) : ET OU NON• Comparaisons : == != <= >= < >

Attention à la différence entre comparaison et affectation !!

29

lecture / écritureExemple d'algorithme permettant de calculer le carré d’un nombre, mettons 12 :

Voilà l'intérêt des instructions de lecture / écriture

c ← 12 * 12

Programme inutile car :il fonctionne seulement pour le 12,

il n'affiche pas le résultat

Rentrer des valeurs au clavier

Afficher les résultats à l'écran

programmelecture écriture

Il s'agit des appels à des sous-programmes

30

lecture / écriture

Algorithme général permettant de calculer le carré d’un nombre :

lire (a)c ← a * aécrire (c)

lire : interrompt l’exécution en attendant la frappe d’une valeur au clavier.

on peut écrire des variables et des constantes

Page 6: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

31

Les testDeux formes possibles pour un test

si (expBooléenne) alors instructions

si (expBooléenne) alors instructions 1sinon instructions 2

Exemple de problème. Lire un entier représentant l'heure et afficher 'il est avant midi' ou 'il est après midi' selon sa valeur.

Même niveau d'indentation

32

Les testL'expression booléenne permettant de tester si « x est compris entre 5 et 8 » est :

si (5 < x ET x < 8) alors instructions

Test composés. Exemple :

si (faitChaud ET NON pleut) alors ecrire("ouvrir la fenêtre")sinon ecrire("fermer la fenêtre")

Quels sont les test équivalents ?

33

Les bouclesPermettent de répéter l’exécution d'instructions.

Exemple de sensibilisation : prenons le cas d’une saisie au clavier (une lecture) où l’utilisateur doit répondre par "O" (Oui) ou "N" (Non).

Algorithme No 1 avec un test "si" :

écrire ("Voulez vous un café ? (O/N)")lire (r) si (r != "O" ET r != "N") alors écrire ("Saisie erronée. Recommencez")

écrire ("Voulez vous un café ? (O/N)") lire (r)

Problème en cas de plusieurs erreurs lors

de la saisie !!

34

Les bouclesLa solution consiste à utiliser une instruction de répétition, une boucle "tantQue" :

tantQue (ExpBooléenne) instructions

Algorithme No 2 :

écrire ("Voulez vous un café ? (O/N)") tantQue (r != "O" ET r != "N") écrire ("Vous devez répondre par O ou N. Recommencez") lire (r) écrire ("Saisie acceptée")

Toujours incorrect !!Pourquoi ?

Même niveau d'indentation

35

Les bouclesAlgorithme No 3 :

écrire ("Voulez vous un café ? (O/N)")lire (r)tantQue (r != "O" ET r != "N") écrire ("Vous devez répondre par O ou N. Recommencez") lire (r) écrire ("Saisie acceptée")

Enfin correct !!

Remarques sur les boucles :

• Pensez à initialiser et à actualiser les variables participant à l'expression booléenne

• Attention à la « boucle infinie ».

36

Les boucles

Exemple. Ecrire un algorithme qui à partir d'un entier, affiche les dix nombres successifs en commençant par l'entier de départ.

Par exemple, si l'utilisateur entre le nombre 17, le programme affichera les nombres de 17, 18, 19, … , 26

lire (k)i ← ktantQue (i <= k+9) écrire (i) i ← i + 1

Page 7: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

37

Les bouclesLe même algorithme peut être écrit avec la boucle "pour", dont la forme générale est :

pour Compteur ← Initial à Final pas ValeurDuPas faire instructions

lire (k)pour i ← k à k+9 pas 1 faire écrire (i)

Nouvelle écriture avec "pour" :

lire (k)i ← ktantQue (i <= k+9) écrire (i) i ← i + 1

Rappel de la version équivalente avec "tantQue" :

indentation

38

Les bouclesLa boucle "tantQue" est employée quand on ne connaît pas d’avance le nombre de répétitions.

La boucle "pour" est employée quand on connaît d’avance le nombre de répétitions.

On peut avoir besoin de boucles imbriquées. Exemple :

pour j ← 1 à 5 pas 1 pour k ← 3 à 6 pas 1 écrire (j, k)

39

Récapitulatif algorithmique

Notions abordées :

• Variable

• Type de valeur

• Affectation

• Lecture / Ecriture

• Test

• Boucle

Quatre types d'instruction de base

40

Programmation Python

41

Python

Langage de programmation de "haut niveau".

Pourquoi commencer avec Python ?

• Langage simple, on retrouve directement les notions de l'algorithmique. Il est facile. Il est interprété.

• Python est extensible : On peut l'interfacer avec d'autres langages (C, C++, Delphi, Java, ...)

• La bibliothèque standard de Python est très riche.

• Python est portable et gratuit.

• Python convient aussi bien à des programmes (scripts) d'une dizaine de lignes qu'à des projets complexes.

42

Python

Inconvénients de Python pour l'initiation à l'algorithmique :

• Les types des variables ne sont pas déclarés explicitement.

• Les instructions sont "compactes", c'est à dire avec des actions implicites.

• On peut être tenté de mélanger différents types de programmation : procédurale et objet.

• La syntaxe du langage est un peu particulière.

Page 8: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

43

Implémentation de PythonImplémentation de Python préconisée :

Python 3 (Cpython) +

Editeur IDLE

2) Mode script ou programme

Deux modes d'exécution possibles :

1) Mode interactif, shell ou console

Notez la versionsupérieure à 3

44

Mode interactifConsole d'exécution :

45

Mode script

Quand nous voulons exécuter une suite d'instructions nous avons intérêt à les enregistrer dans un fichier, que l'on appelle script ou programme python.

Exemple :Notez le nom du fichier.

L'extension est py

46

SyntaxeNous sommes contraints à respecter scrupuleusement les règles de syntaxe du langage : il faut être rigoureux !!

Dans tout ce document, les définitions de syntaxe auront le bandeau avec l'intitulé "Syntaxe". Par exemple :

if ( <condition> ) :<instructions>

Syntaxe conditionnel

Remarques :• < condition > signifie : "à remplacer par une condition"• Les mots en gras sont des mots réservés (mots clés)

Exemple d'application de la règle syntaxique précédente :

if (x < 0) : print("x est négatif")

47

Syntaxe des commentairesNotez la syntaxe des commentaires en Python. Exemples :

# ceci est un commentaire

if (x < 0) : print("x est négatif") # le reste de la ligne est un commentaire

48

VariablesUne variable est une référence vers une zone de la mémoire dans laquelle on stocke une valeur d'un certain type.

Une variable est définie par un nom.

Règles pour former le nom :

• Les noms des variables sont conventionnellement écrits en minuscule.

• Ils commencent par une lettre ou le caractère souligné, puis éventuellement, des lettres, des chiffres ou le caractère souligné.

Page 9: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

49

VariablesEn plus de ces règles, vous ne pouvez pas utiliser comme noms de variables les 29 "mots réservés" :

and assert break class continue defdel elif else except exec finallyfor from global if import inis lambda not or pass printraise return try while yield

En Python, le type d'une variable est fixé implicitement lors de l'affectation.

50

AffectationEn Python, l'affectation s'écrit =À gauche de = se trouve le nom (identificateur) d'une variable, à droite une expression. On établit un lien entre le nom de la variable et sa valeur (son contenu)

<variable> = <expression>

Syntaxe affectation

Notez que le signe égale n'a pas ici la même signification qu'en mathématiques

# var pi : réel pi = 3.14

Exemples :

En algorithmique :pi ← 3.14

# var compteur : entier compteur = 128 * 5

# var estPlusPetitAQueB : booléenne estPlusPetitAQueB = a < b

Pseudo-déclaration. On mettra systématiquement

le type de la variable sous la forme d'un commentaire

51

Affectation

L'affectation ci-dessus a eu pour effet de :• évaluer et mémoriser la valeur de l'expression à droite (ici 3,14)• créer et mémoriser le nom de variable pi ;• lui attribuer un type (ici un réel ou nombre à virgule flottante) ;• établir un lien (une référence) entre le nom de la variable et

l'emplacement mémoire de la valeur correspondante.

Le nom pi est une référence, mémorisée dans une zoneparticulière de la mémoire que l'on appelle espace de noms.

# var pi : réelpi = 3.14 # pi prend comme valeur 3.14

Exemple en détail :

Dans la mémoire : pi 3.14

52

Affectation

Dans cet exemple• a est une référence• 6 est un objet qui comporte :

• une adresse, donnée par la fonction id() ;• un type, donnée par la fonction type() ;• une valeur.

• b est un alias de a, qui incrémente un compteur de références à l'objet 6 ;

• a et b sont deux références qui pointent sur le même objet (même id).

# var a, b : entiersa = 6 # a prend comme valeur 6b = a # b prend comme valeur la valeur de a

Autre exemple :

a6

b

53

Typage de variablesPython utilise un typage dynamique.L'affectation d'une valeur à une variable désigne implicitement son type. Dans l'exemple précédent, pi est du type « nombre à virgule flottante ».

Remarque importante : il existe un typage statique utilisé dans des langages comme Pascal, C++, ou Java. Ce typage impose de : • déclarer d'abord le nom et le type des variables, et • ensuite leur assigner une valeur compatible avec le type.

fonctions prédéfinies : id, type

54

Typage de variablesPython utilise un typage dynamique.L'affectation d'une valeur à une variable désigne implicitement son type. Dans l'exemple précédent, pi est du type « nombre à virgule flottante ».

Remarque importante : il existe un typage statique utilisé dans des langages comme Pascal, C++, ou Java. Ce typage impose de : • déclarer d'abord le nom et le type des variables, et • ensuite leur assigner une valeur compatible avec le type.

fonctions prédéfinies : id, type

Page 10: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

55

Type booléenDeux valeurs possibles : False, True.

Opérateurs de comparaison : ==, !=, >, >=, <, <=

Opérateurs logiques : not, or, and

l'affectation a un effet mais n'a pas de valeur

la comparaison a une valeur mais n'a pas d'effet

56

Type entier (int)Opérateurs arithmétiques : +, -, *, /, **, %

Opérations sur les bases :

57

Type réel (float)Les réels sont notés avec un point décimal ou en notation "scientifique". Exemples :

Opérateurs arithmétiques : +, -, *, /, **, %, //

58

Entrées et sortiesLa fonction input() permet de saisir une entrée au clavier.Elle permet également d'afficher un message.

Le sous-programme print() permet d'afficher des sorties à l'écran.Exemple :

entreeSortieUno.py

input() retourne une chaîne de caractères

59

Entrées et sortiesAutre exemple. Calculer le carré d'un nombre :

Exécution :

Notez la fonction de conversion

entreeSortie.py

60

Instruction composée

< ligne d'en-tête > :<instruction 1>. . .<instruction n>

Syntaxe instruction composée

Une instruction composée ou bloc d'instructions se compose de :• une ligne d'en-tête terminée par deux-points :• une séquence d'instructions séparées par des lignes indentées au

même niveau.

Remarque : les instructions composées peuvent être imbriquées.

Même niveaux d'indentation

Page 11: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

61

Exemple :

TestTrois formes de test ou d'instruction conditionnelle :

if ( <condition> ) : # en-tête <instruction 1> # si la condition est vraie . . .

<instruction n># fin "if"

Syntaxe if simple

Même niveaux d'indentation

une tabulation

Il s'agit des appels à des sous-programmes

62

Testif avec else :

if ( <condition> ): <instruction 1> # si la condition est vérifiée . . .

<instruction n>else: <instruction 1> # si la condition est fausse . . .

<instruction n>

Syntaxe if avec else

Remarque : un else se rapporte toujours au dernier if. Exemple :

63

Testif avec elif. c'est à dire avec des if enchaînés :

if ( <condition> ) : # si vraie <instructions>elif ( <condition> ) : # si non, on teste autre condition <instructions>else : # si aucune condition <instructions>

Syntaxe : if elif else

Exemple :

64

TestExemple de script. Calculer le maximum parmi deux entiers :

Conversion vers entier

65

Imbrication d'instructionsLes instructions composées ou blocs d'instructions sont toujours associés à une ligne d'en-tête se terminant par deux-points.

Les blocs sont délimités par l'indentation : toutes les lignes d'un même bloc doivent avoir la même indentation.

Un bloc peut contenir un autre bloc

66

Imbrication d'instructions

if (embranchement == "vertébrés"): # bloc niveau 1if (classe == "mammifères"): # bloc niveau 2

if (ordre == "carnivores"): # bloc niveau 3if (famille == "félins"): # bloc niveau 4

print ("c'est peut-être un chat") # bloc niveau 5print ("c'est en tous cas un mammifère") # bloc niveau 3

elif (classe == 'oiseaux'): # bloc niveau 2print ("c'est peut-être un canari") # bloc niveau 3

print ("la classification des animaux est complexe") # bloc niveau 1

Exemple if imbriqués :

L'indentation joue un rôle clé en Python !

Page 12: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

67

Boucle while

while ( <condition> ) : <instructions ># fin "while"

Syntaxe while

Exemple script. Calculer la somme des n premiers nombres entiers :

68

Boucle while

Remarques sur les boucles:

• Les variables dans la condition doivent exister au préalable.

• Si la condition est fausse au départ, le corps de la boucle n'est

jamais exécuté.

• Si la condition reste toujours vraie, alors le corps de la boucle est

répété indéfiniment.

Exemple de boucle sans fin (à éviter) :

69

Boucle whileExemple script. Lire un entier entre 1 et 10 :

70

Boucle whileExemple script. Compter le nombre de chiffres d'un entier :

71

Boucle whileExemple blocs imbriqués. Compter le nombre d'apparitions d'un chiffre dans un entier :

72

Boucle whileExemple calculer une table de multiples d'un entier :

"\t" est la tabulationend=" " supprime le saut de ligne

Page 13: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

73

Boucle whileSuite exemple boucles imbriquées. Plusieurs tables de multiples :

74

Boucle forL'instruction for de Python itère parmi les éléments d'une séquence.

for <variable> in range(<debut>,<fin>,<pas>) : <instructions >

Syntaxe for

Exemple script. Calculer la somme des n premiers nombres entiers :

sommeEntiersFor.py

i = 1while (i < n+1) :

. . .i = i + 1

75

fonction range()La fonction range(début,fin,pas) génère une progression arithmétique.

Explication :• début est la première valeur à générer, • les valeurs sont générées tant qu'elles sont inférieures à fin,• la progression avance selon la valeur de pas.

i = 0while (i < 5):

# instruction impliquant la valeur ii = i + 1

Equivalent avec while

for i in range (0,5,1): # progression : [0,1,2,3,4]# instruction impliquant la valeur i

76

i = 1while (i < n+1):

fact = fact * ii = i + 1

Equivalent avec while

Boucle forExemple utilisation de range() : calcul du factoriel d'un entier.

factoriel.py

77

Types structurés : les séquencesOn a souvent besoin de regrouper dans une seule variable plusieurs valeurs.

En python, on utilise pour cela les séquences.

Une séquence est un conteneur ordonné d'éléments accessibles à travers un indice entier.

Python dispose de trois types prédéfinis de séquences :• les chaînes de caractères ;• les listes ;• les tuples.

élém 1 0

élém 21

élém 32

élém 43

élém n n-1 ...contenu

indice

Similaires aux listes mais non modifiables. Ils ne seront pas abordés

On parlera de tableaux

78

Séquence : chaîne de caractèresTrois notations disponibles :• Les guillemets permettent d'inclure des apostrophes :

chaine1 = "L'eau vive"

• Les apostrophes permettent d'inclure des guillemets :

chaine2 = ' est "froide" !'

• Les triples guillemets ou triples apostrophes conservent lamise en page (lignes multiples) :

chaine3 = """Usage :-h : help-q : quit"""

Page 14: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

79

Séquence : chaîne de caractèresAccès aux caractères individuels d'une chaîne. Exemple :

Remarquez :premier élément, indice 0

Python comporte de nombreuses fonctions permettant de manipuler les chaînes de caractères. Par exemple : len, int, str, +

Les chaînes de caractères ne sont pas modifiables ! 80

Séquence : chaîne de caractèresExemple : affichage des caractères d'une chaîne

avec "for"

81

Séquence : tableauxCollection ordonnée et modifiable d'éléments.

82

Séquence : tableaux

Contrairement aux chaînes des caractères, un tableau est modifiable :

Modification

83

Séquence : tableauExemple : parcours d'un tableau. Incrémenter (augmenter la valeur de 1) chaque élément d'un tableau d'entiers

Avec "for"

84

Initialisation tableauEn Python, on peut appliquer aux tableaux (à toutes les séquences) les opérateurs + (concaténation) et * (multiplication).

On peut initialiser un tableau pour lui donner une taille et un contenu de la manière suivante :

Page 15: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

85

Exemple tableau notes aléatoiresConstruire un tableau avec des entiers aléatoires entre 0 et 20, puis calculer la moyenne.

Importation du module "random"

randintretourne un entier

aléatoire

86

Tableau de tableaux

Un élément d'un tableau peut être lui-même un tableau.Nous avons alors un tableau auquel on peut accéder avec deux indices.

Exemple :

0 1 20 1 2 3

1 4 5 6

2 7 8 9

Tableau matrice

87

Tableau de tableauxDeuxième exemple. Afficher chaque caractère d'un tableau de chaînes de caractères :

88

Retour sur l'affectationConsidérez l'exemple :

• b est un alias de a ;• a et b pointent vers le même

objet (tableau).• tout changement sur un sera

visible également à travers son alias.

a3

b5 9 4

a3

b5 10 4

b[2] = 10

89

Décomposition d'un problèmeLe bon sens veut qu'en présence d'un problème complexe, on le décomposer en sous-problèmes de complexité moins importante.

Intérêt de la décomposition :• Clarté de l'approche• Ré-utilisation et partage de modules.

Deux approches de décomposition :• Descendante• Ascendante

L'approche descendante : • "Descendre", étape par étape, vers des combinaisons de

sous-problèmes de plus en plus simples à résoudre.• Décompositions successives

Exemple : savoir si on a gagne ou perdu un match de tennis.Décomposition : match, set, jeu

90

Les sous-programmesinput, print, len, type sont des sous-programmes prédéfinis.

Nous pouvons définir nos propres sous-programmes. Pour cela Python utilise le mot-clé def,

si on veut retourner une valeur, il faut utiliser le mot-clé return.

Remarques :• Les <instructions> forment le corps du sous-programme,

elles forment un bloc.• La liste de paramètres peut être vide. Dans tous les cas les

parenthèses sont nécessaires.• Il suffit d'utiliser le nom du sous-programme pour faire appel.

def <nom> (<liste de paramètres>) :<instructions>

Syntaxe définition d'un sous-programme

Page 16: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

91

Les sous-programmesExemple définition de sous-programmes :

Ces sous-programmes font une action,

ils ne retournent pas de valeur

Commentaire de documentation

92

Sous-programmes, flux de l'exécutionOrdre d'exécution :

• On commence par exécuter la première instruction du programme.

• Les instructions s'exécutent dans l'ordre d'apparition.

Conseil : quand vous lisez un programme il ne faut pas le lire dans l'ordre de son écriture mais dans l'ordre d'exécution.

Il faut se mettre à la place de l'ordinateur.

• La définition de sous-programmes n'altère pas l'ordre d'exécution, les instructions à l'intérieur seront exécutées lors des appels.

• L'appel à un sous-programmes "détourne" le flux d'exécution. Avant de passer à l'instruction suivante, la machine exécute les instructions de la fonction appelée, à la fin le flux revient au point de l'appel.

• Un sous-programme peut contenir un appel a un autre sous-programme.

93

Les sous-programmesExemple sous-programme, affichage multiples de 7 :

Notion importante :Variable locale

Portée des variables

94

Sous-programmes avec paramètresLe sous-programme précédent table7( ) peut se généraliser pour afficher une table avec les multiples d'un entier quelconque.

nom du paramètre arbitraire

95

Sous-programmes avec paramètresComment les paramètres sont-ils transmis ?

Paramètre formel

Paramètre réel

Comme si des affectations avaient été faites :

n = 9Passage de paramètres

par valeur96

Sous-programmes avec paramètresUn sous-programme peut appeler un autre :

Chaque argument de l'appel correspond, dans l'ordre, à un

paramètre de la définition.

Page 17: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

97

Fonctions avec retourLes sous-programmes que nous avons vus jusqu'à présent sont des procédures, pas des fonctions dans le sens mathématique .

Une "vraie" fonction retourne une valeur au point de l'appel. Par exemple :

y = sin(a)

Parmi ces deux sous-programmes prédéfinis (print et input)

print("hello")

nom = input("Donnez votre nom ?")

lequel est une "vraie" fonction et lequel est une procédure ?

Une procédure sert à effectuer une action.Une fonction sert à calculer une valeur. 98

Fonctions avec retourUne "vraie" fonction retourne une valeur avec l'instruction return. Exemple :

Notez l'utilisation de return

L’instruction return :− précise le résultat renvoyé− arrête l'exécution de la fonction

99

Fonctions avec retourSuite de l'exemple avec une deuxième définition :

notez l'appel

100

Fonctions avec retourUne fonction peut retourner un tableau. Exemple :

La fonction retourne un

tableau

101

Synthèse syntaxe

<variable> = <expression>

Syntaxe affectation

< ligne d'en-tête > :<instruction 1>. . .<instruction n>

Syntaxe instruction composée

if ( <condition> ) : # en-tête <instruction 1> # si la condition est vraie . . .

<instruction n>

Syntaxe if simple

102

Synthèse syntaxe

if ( <condition> ) : <instruction 1> # si vraie . . .

<instruction >else : <instruction 1> # si non . . .

<instruction >

Syntaxe if avec else

if ( <condition> ) : # si vraie <instructions>elif ( <condition> ) : # si non, on teste autre condition <instructions>else : # si aucune condition <instructions>

Syntaxe if elif else

Page 18: Introduction à l'algorithmiquemiguel.tomasena.free.fr/info113/cours/python3.pdf1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction à l'algorithmique,

103

Synthèse syntaxe

while ( <condition> ) : <instructions >

Syntaxe while

def <nom> ( <liste de paramètres> ):<instructions>

Syntaxe définition d'une fonction ou procédure

for <variable> in range(<début>,<fin>,<pas>) : <instructions >

Syntaxe for

104

Sous-programmes prédéfinis

input(<chaîne caractères>)type(<variable>)id(<variable>)int(<chaîne caractères, chiffres>)float(<chaîne caractères, chiffres>)len(<tableau>)

Quelques fonctions prédéfinies

print(<liste variables et constantes>)

Quelques procédures prédéfinies

105

FIN