Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique...

17
1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : Introduction a l'algorithmique, objectif de l'informatique • Matériel - Logiciel • Notions d'un algorithme • Programmation Python – Types scalaires – Lire, Ecrire, Calculer – Instructions conditionnelle et répétitives – Types structurés, séquences : chaînes et 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/ "How to think like a computer scientist" : http://openbookproject.net//thinkCSpy/ 4 Introduction à l'algorithmique 5 Objectif de l'informatique : "Résoudre de Problèmes" Comment ? Ordinateur : automate capable d'exécuter des instructions élémentaires (Le matériel) Méthode de solution du problème : Algorithme (Le logiciel). Types de Problèmes Gestion (majorité) Calcul scientifique Communication Enseignement Jeux 6 Environnement matériel Description sommaire d'un ordinateur Evolution du matériel , quelques dates : 1943 : ENIAC composé de 18000 lampes à vide, 1500 m 2 , 330 multiplications par seconde. Programmable par "câbles". 1948 : Le transistor est créé par la firme Bell Labs. 1958 : Le circuit intégré est mis au point en par Texas Instruments, il permet de réduire la taille et le coût des ordinateurs. Périphériques Unité Centrale Processeur Mémoire Entrée Sortie

Transcript of Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique...

Page 1: Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction a l'algorithmique, objectif de l'informatique

1

1

Introduction àl'algorithmique

Programmation Python

2

Sommaire :

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

• Matériel - Logiciel

• Notions d'un algorithme

• Programmation Python

– Types scalaires

– Lire, Ecrire, Calculer

– Instructions conditionnelle et répétitives

– Types structurés, séquences : chaînes et 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/

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

4

Introduction àl'algorithmique

5

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

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

(Le matériel)

� Méthode de solution du problème : Algorithme (Le logiciel).

Types de Problèmes� Gestion (majorité)

� Calcul scientifique

� Communication

� Enseignement

� Jeux

6

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 : Le transistor est créé par la firme Bell Labs.• 1958 : Le circuit intégré est mis au point en par Texas

Instruments, il permet de réduire la taille et le coût des ordinateurs.

Périphériques Unité Centrale

Processeur

Mémoire Entrée

Sortie

Page 2: Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction a l'algorithmique, objectif de l'informatique

2

7

Environnement matériel• 1979 : Micro-processeur Intel 8080 comportant 64 ko

de mémoire, 200000 instructions par seconde.• 1981 : IBM commercialise le premier « PC » composé

d'un processeur 8088.• 1992 : Intel i586, 100 Mips (millions d'instructions par

sec) • 2006 : Pentium 1500 Mips• Les ordinateurs d'aujourd'hui. Loi de Moore :

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

On devrait ainsi arriver à 1 milliard de transistors aux alentours de 2010. 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 ( ! ). 8

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

• Kilooctet ko= 1000 octets (210 octets)

• Megaoctet Mo = 1000 ko (220 octets)

• Gigaoctet Go= 1000 Mo (230 octets)

Quelques ordres de grandeur:• Les clés USB font souvent 1 ou 2 Go.

• Un CD-Rom fait 650 Mo.

• Les disques durs actuels font souvent 150, 250 ou 300 Go.

9

Environnement matérielReprésentation des caractèresUn octet est nécessaires 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étique� Séquence des chiffres

10

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.

11

Environnement matérielExemple : -5 :5 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

12

Environnement matérielReprésentation des nombres "réels" :Les nombres à virgule flottante 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.

Page 3: Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction a l'algorithmique, objectif de l'informatique

3

13

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'instruction14

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 lang machine et lang naturel

� Définis avec rigueur

� Ils ne sont pas directement exécutables

15

Environnement logicielTypes de langages :

� Interprétés par une machine abstraite. Exemple : "Python",

� Compilés. Exemples : "Pascal", "C"

Phase de l'interpretation :

InterpreteurProg "Python"et

Données

Résultats

Entrées Exécution Sorties

16

Environnement logiciel

Lang machineDonnées Résultats2

Phases de la compilation :

CompilateurProg "C" Lang machine1

Entrées Exécution Sorties

17

Environnement logicielQuelques langages de programmation :

� Fortran 1956 IBM

� Algol 1957 Européen� COBOL 1961 USA� PL/1 1964 IBM

� Pascal 1970 N. Wirth� ADA 1979 USA� Python 1989 G. van Rossum� Java 1991 Sun

18

Algorithmique

Solution 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 n’est finalement que de l’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", faire une analyse ou étude du problème.

• Être méthodiques, rigoureux, définir les moindres détails

Page 4: Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction a l'algorithmique, objectif de l'informatique

4

19

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ésultas, les 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 informel mais 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.20

Algorithmique

Types d'erreurs :

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

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

2) Des erreurs de sémantiqueou logique. Le programme s'exécute, mais il ne produit pas les résultats attendus.

3) Des erreurs d'exécution. Le programme "se plante". Ces erreurs sont également appelées des exceptions. Exemples : une division par zéro, tentative de lecture d'un fichier inexistant, etc.

21

Algorithmique

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

quatre types d'instruction :

• l’affectation de variables

• la lecture / l'écriture

• les tests

• les boucles

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

22

Concept de variable

Concepts de variable:Elles permettent de stocker provisoirement des données ou

valeurs.

Ces données peuvent être de plusieurs types : elles peuvent êtredes nombres, des caractères, etc.

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

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

x

23

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

24

Type booléenGeorge Boole (19e) restructura complètement la logique. L'algèbre de

Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.

C'est une logique à deux valeurs : Falseet True (notées aussi : 0 et 1). Opérateurs : NON, ETet OU.

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

a b a OU b a ET b

false false false falsefalse true true falsetrue false true falsetrue true true true

a NON(a)

false truetrue false

Page 5: Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction a l'algorithmique, objectif de l'informatique

5

25

Instruction d'affectation

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

Autres exemples :

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

x ← x + 2

estGrand← truepi ← 3.14

Notez qu’il ne s’agit pas de l’égalité arithmétique

Dans la mémoire : 8x

26

Instruction d'affectationOrdre 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

27

Expressions et opérateursRemarque. Dans une affectation on trouve :

• à gauche un nom de variable.

• à droite une expression.

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

Différents types d'opérateurs :

• numériques : + - * /

• alphanumérique : concaténation +

• logiques (ou booléens) : ET OU NON

• Comparaison : == != <= >= < >

Attention à la différence entre comparaison d'égalité et

affectation !! 28

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

29

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

30

Les testDeux formes possibles pour un test

si (expBooléenne) alorsinstructions

si (expBooléenne) alorsinstructions 1

sinoninstructions 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 niveaux d'indentation

Page 6: Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction a l'algorithmique, objectif de l'informatique

6

31

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

si (5 < X ET X < 8) alorsinstructions

Python accepteif (5 < X < 8)

Test composés. Exemple :

si (faitChaud ET NON pleut) alorsouvrirLaFenêtre

sinonfermerLaFenêtre

Quelles sont les test équivalents ? 32

Les bouclesIl s'agit de structures répétitives.

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")lire (R)

Problème en cas de plusieurs erreurs lors

de la saisie !!

33

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

tantQue (Expbooléen)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 niveaux d'indentation

34

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 dans l'expression booléenne

• Attention à la « boucle infinie ».

35

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 à 26

lire (k)i ← ktantQue (i <= k+9)

écrire (i)i ← i + 1

36

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 faireinstructions

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

Page 7: Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction a l'algorithmique, objectif de l'informatique

7

37

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 truc ← 1 à 5 pas 1pour trac ← 3 à 6 pas 1

écrire truc, trac

38

Récapitulatif algorithmique

Notions abordées :

• Variable

• Type de valeur

• Affectation

• Lire / Ecrire

• Test

• Boucle

Quatre types d'instruction de base

39

Programmation Python

40

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.

41

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.

42

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

Python 3.0 (Cpython)+

Editeur IDLE

2) Mode scriptouprogramme

Deux modes d'exécution possibles :

1) Mode interactif,shellou console

Notez la version

Page 8: Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction a l'algorithmique, objectif de l'informatique

8

43

Mode interactifConsole d'exécution :

44

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

Exemple :Notez le nom du fichier.

L'extension est py

45

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

Notation pour définir la syntaxe. 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 grassont 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")

46

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

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é.

47

VariablesEn plus de ces règles, vous ne pouvez pas utiliser comme noms devariables 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, la déclaration d'une variable et son initialisation se font au moment de l'affectation.

Le type de la variable est fixé implicitement également lors de l'affectation.

48

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

<variable> = <expression>

Syntaxe affectation

pi = 3.14i = i + 1estPlusPetitAQueB = a < b

Exemples :

Remarques :• l'interpréteur évalue d'abord l'expression à droite, puis• établit un lien entre la variable et sa valeur.

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

Page 9: Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction a l'algorithmique, objectif de l'informatique

9

49

Affectation

L'affectation ci-dessus a eu pour effet de :• créer et mémoriser le nom de variablepi ;• lui attribuer un type (ici un réel ou nombre à virgule flottante) ;• créer et mémoriser la valeur 3.14 ;• é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.

pi = 3.14 # pi prend comme valeur 3.14

Exemple :

Dans la mémoire : pi 3.14

commentaire

50

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).

a = 6 # a prend comme valeur 6b = a

Autre exemple :

a6

b

51

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, la variables pi est du type« nombre à virgule flottante » (ou « float », en anglais).

Remarque importante : il existe un typage statiqueutilisé dans des langages comme Pascal, C++, ou Java. Ce typage impose de : • déclarer d'abord le nomet le typedes variables, et • ensuite leur assigner une valeurqui doit être compatible avec le type. 52

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

53

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

Opérations sur les bases :

54

Type flottant (float)Les flottants sont notés avec un point décimal ou en notation exponentielle. Exemples :

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

Page 10: Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction a l'algorithmique, objectif de l'informatique

10

55

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

La fonction print() permet d'afficher des sorties à l'écran.

Exemple :

il faut taper :Dupont lors de la lecture (entrée)

Exécution

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

56

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

Exécution :

Notez la fonction de conversion

Exécution

57

Instruction composée

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

Syntaxe instruction composée

Un instruction composéeou bloc d'instructionsse 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

58

TestTrois formes de testou d'instruction conditionnelle:

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

Syntaxe if simple

Exemple :Même niveaux d'indentation

une tabulation

59

TestForme avec else:

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

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

Syntaxe if avec else

Remarque : un elsese rapporte toujours au dernier if . Exemple :

60

TestForme 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 :

Page 11: Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction a l'algorithmique, objectif de l'informatique

11

61

TestExemple de script. Calculer le maximum parmi deux entiers :

Conversion vers entier

62

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

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

Un blocpeut contenir un autre.

63

Imbrication d'instruction

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

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

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

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

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

Exemple if imbriqués :

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

64

Boucle while

while ( <condition> ) : <instructions >

Syntaxe while

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

65

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.

n = 3while (n < 5):

print("hello !")

Exemple de boucle sans fin (à éviter) :

66

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

Page 12: Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction a l'algorithmique, objectif de l'informatique

12

67

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

68

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

69

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

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

70

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

71

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 :

Exécution

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

. . .i = i + 1

72

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

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

i = 0while (i < 5):

# instruction impliquant la valeur ii = i + 1

Equivalent avecwhile

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

Page 13: Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction a l'algorithmique, objectif de l'informatique

13

73

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

fact = fact * ii = i + 1

Equivalent avec while

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

Exécuter

74

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.

Uneséquenceest 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 10

élém 22

élém 33

élém 44

élém nn-1...contenu

indice

Similaire au listes mais non modifiable. Elles ne seront pas abordées

On parlera de tableaux

75

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

c1 = "L'eau vive"

• Les apostrophes permettent d'inclure des guillemets :

c2 = ' est "froide" !'

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

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

76

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

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

Remarquez :premier élément, indice 0

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

77

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

Ou bien avec "for"

78

Séquence : tableauxCollection hétérogène, ordonnée et modifiable d'éléments séparéspar des virgules, et entourée de crochets.

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

Modification :

Page 14: Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction a l'algorithmique, objectif de l'informatique

14

79

Séquence : tableauExemple parcours d'un tableau. Incrémenter chaque élément d'une liste d'entiers :

Avec "for"

80

OpérationsOn peut appliquer aux tableaux (à toutes les séquences) les opérateurs + (concaténation) et * (multiplication). Exemples :

Initialisation d'un tableau :

Initialisation avec taille entiers 0

81

Tableau de tableaux

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

Exemple :

82

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

83

Boucle for (2)

nom = "Dupond"indice = 0while (indice < len(nom)):

car = nom[indice ]print(car)indice = indice + 1

Equivalent à :

Exemple "parcours" des éléments d'une chaîne :

nom = "Dupond"for car in nom:

print(car)

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

for <variable> in <séquence> : <instructions >

Syntaxe for

nom = "Dupond"for indice in range(0,len(nom),1):

car = nom[indice ]print(car)

Equivalent à :

84

Boucle for (2)Exemple accès aux éléments d'un tableau :

Equivalent avec range()

Remarque : cette boucle for permet seulement d'accéder aux éléments d'un tableau.

Le tableau ne peut pas être modifiée !

Page 15: Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction a l'algorithmique, objectif de l'informatique

15

85

Boucle for (2)Exemple de script. Initialiser le tableau avec des entiers aléatoires entre 0 et 20, puis calculer la moyenne.

Importation du module"random"

retourne un entier aléatoire

86

Retour sur l'affectationConsidérez l'exemple :

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

objet.• tout changement sur un sera

visible également à travers son alias.

a3

b5 9 4

a3

b5 10 4

b[2] = 10

87

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

Intérêt de la décomposition :• Clarté de l'approche• Re-utilisation ou 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

88

Les fonctionsinput, print, rangesont des fonctions (sous-programmes) prédéfinies.

Nous pouvons définir nos propres fonctions. Pour cela Python utilise le mot-clé def, et si on veut que celle-ci renvoie une valeur, il faut utiliser le mot-clé return.

Remarques :• Les <instructions> forment le corpsde la fonction, elles se

placent au même niveau d'indentation, 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 de la fonction pour faire un appel.

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

Syntaxe définition d'une fonction

89

Les fonctionsExemple script définition de fonctions :

Dans cet exemple il s'agit de "procedures"et non de

vraies fonctions

90

Les fonctions, flux de l'exécutionOrdre d'exécution :

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

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

Conseil : quand vous lissez 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 fonctions n'altère pas l'ordre d'exécution, les instructions à l'intérieur seront exécutées lors des appels.

• L'appel à une fonction "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 revientau point de l'appel.

• Notez qu'une fonction peut appeler à une autre.

Page 16: Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction a l'algorithmique, objectif de l'informatique

16

91

Les fonctionsAutre exemple simple de définition de fonctions :

Notions importantes :Variables locales

Portée des variables

92

Fonctions avec paramètresLa fonction précédente table7( )peut se généraliser pour afficher une table avec les multiples d'un entier quelconque.

Le choix du nom du paramètre est

arbitraire.

93

Fonctions avec paramètresComment les paramètres sont-ils transmis ?

Paramètre formel

Paramètre réel ou effectif

Comme si des affectations avaient été faites :

n = 9Passage de paramètres

par valeur94

Fonctions avec paramètresUne fonction peut appeler une autre :

Chaque argument de la définition correspond,

dans l'ordre, à un paramètre de l'appel.

95

Fonctions avec retourLes fonctionsque nous avons vus jusqu'à présent ne sont pasdes fonctions dans le sens mathématique, mais plus exactement des procédures.

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

y = sin(a)

Parmi ces deux "fonctions" prédéfinies (print et input)

print("hello")

nom = input("Donnez votre nom ?")

laquelle est une "vraie" fonctionet laquelle est une procédure ?

Une procéduresert à effectuer une action.Une fonctionsert à calculer une valeur. 96

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

Notez l'utilisation de return

L’instruction return :− précise le résultat que la fonction renvoie− produit la terminaison de la fonction

Page 17: Introduction à l'algorithmique · 2010. 2. 3. · 1 1 Introduction à l'algorithmique Programmation Python 2 Sommaire : • Introduction a l'algorithmique, objectif de l'informatique

17

97

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

Notez l'appel

98

Fonctions avec retourUne fonction peut retourner tout type de valeur. Exemple :

La fonction retourne un

tableau

99

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

100

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

101

Synthèse syntaxe

while ( <condition> ) : <instructions >

Syntaxe while

for <variable> in <séquence> : <instructions >

Syntaxe for

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

Syntaxe définition d'une fonction

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

Syntaxe for