Le traitement répétitif

Documents pareils
Initiation à la programmation en Python

Programmation C++ (débutant)/instructions for, while et do...while

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Algorithmique et structures de données I

Algorithmique avec Algobox

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Informatique


INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

TP, première séquence d exercices.

STAGE IREM 0- Premiers pas en Python

Licence Sciences et Technologies Examen janvier 2010

1 Recherche en table par balayage

Cours 3 : Python, les conditions

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Définition : On obtient les nombres entiers en ajoutant ou retranchant des unités à zéro.

Algorithmique et Programmation, IMA

Algorithmique avec Algobox

L informatique en BCPST

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Découverte de Python

Cours Informatique Master STEP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Série TD 3. Exercice 4.1. Exercice 4.2 Cet algorithme est destiné à prédire l'avenir, et il doit être infaillible! Exercice 4.3. Exercice 4.

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Représentation d un entier en base b

Résolution d équations non linéaires

Initiation à l algorithmique

alg - Classes, instances, objets [oo] Exercices résolus

Chapitre 2 Devine mon nombre!

Cours d algorithmique pour la classe de 2nde

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Organigramme / Algorigramme Dossier élève 1 SI

Java Licence Professionnelle CISII,

Bases de programmation. Cours 5. Structurer les données

V- Manipulations de nombres en binaire

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Algorithme. Table des matières

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Correction TD algorithmique

REALISATION d'un. ORDONNANCEUR à ECHEANCES

FctsAffines.nb 1. Mathématiques, 1-ère année Edition Fonctions affines

Choisir le mode d envoi souhaité. Option 1 : Envoyer un SMS à un nombre réduit de numéros (0 10 )

Gestion distribuée (par sockets) de banque en Java

Présentation du langage et premières fonctions

6. Les différents types de démonstrations

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

1 I ) Une première approche de l algorithme en seconde, saison 2010 _ Antoine ROMBALDI

Introduction à MATLAB R

Conventions d écriture et outils de mise au point

Cours d Algorithmique et de Langage C v 3.0

Architecture des Systèmes d Information Architecture des Systèmes d Information

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Chap III : Les tableaux

Initiation à LabView : Les exemples d applications :

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Introduction à l algorithmique et à la programmation M1102 CM n 3

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

L ALGORITHMIQUE. Algorithme

ASR1 TD7 : Un microprocesseur RISC 16 bits

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

Par combien de zéros se termine N!?

ACTIVITÉ DE PROGRAMMATION

Dossier projet isn 2015 par Victor Gregoire

CORRECTION EXERCICES ALGORITHME 1

La fonction exponentielle

Feuille TD n 1 Exercices d algorithmique éléments de correction

C++ - Classes, instances, objets [oo] Exercices résolus

C f tracée ci- contre est la représentation graphique d une

Glossaire des nombres

MIS 102 Initiation à l Informatique

Introduction au langage C

Programmation linéaire

Définitions. Numéro à préciser. (Durée : )

1. Structure d'un programme FORTRAN 95

TP3 : Manipulation et implantation de systèmes de fichiers 1

Rappels sur les suites - Algorithme

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Comparaison de fonctions Développements limités. Chapitre 10

TP 1. Prise en main du langage Python

Algorithmes récursifs

Fonctions homographiques

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

Cours d initiation à la programmation en C++ Johann Cuenin

Vers l'ordinateur quantique

Conversion d un entier. Méthode par soustraction

Propagation sur réseau statique et dynamique

COURS ALGORITHMIE. Mathématiques. Le monde merveilleux des algorithmes!! Croyez-moi, vous allez les adorer. Julien Bordas T.S 3

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Cours de Systèmes d Exploitation

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

GE Security. KILSEN série KSA700 Centrale de détection et d alarme Incendie analogique adressable. Manuel d utilisation

Programmation avec Xcas ou Python

COMMANDER A DISTANCE LE ROBOT-PONG ETUDE DE LA TELECOMMANDE (2 nde PARTIE)

Transcription:

1 Le traitement répétitif Dans un programme, Il s avère parfois nécessaire d exécuter plusieurs fois de suite le même traitement, c est-à-dire la même série d instructions. Exercice : Ecrire un programme en Python qui demande un nombre à l'utilisateur et affiche la table de multiplication de ce nombre (multiplications par 0, 1,, 10) 22/02/2015

1 re solution : print("table de multiplication") print("================") nb = int(input("table de quel nombre? ")) print("0 x", nb, "=", 0*nb) print("1 x", nb, "=", 1*nb) print("2 x", nb, "=", 2*nb) print("3 x", nb, "=", 3*nb) #... etc. print("10 x", nb, "=", 10*nb) Cette solution fonctionne mais elle est fatigante a taper : même en utilisant Copier/Coller, il faut changer les valeurs du nombre a multiplier par nb.

2 eme solution : Utilisons une variable i que l'on va initialiser à 0 puis incrémenter après chaque affichage : print("table de multiplication") print("==============") nb = int(input("table de quel nombre? ")) i = 0 # initialisation du compteur i print(i, "x", nb, "=", i*nb) i += 1 # incrémentation du compteur i print(i, "x", nb, "=", i*nb) i += 1 print(i, "x", nb, "=", i*nb) i += 1 print(i, "x", nb, "=", i*nb) i += 1

2 eme solution : suite du programme print(i, "x", nb, "=", i*nb) i += 1 print(i, "x", nb, "=", i*nb) i += 1 print(i, "x", nb, "=", i*nb) i += 1 print(i, "x", nb, "=", i*nb) i += 1 print(i, "x", nb, "=", i*nb) i += 1 print(i, "x", nb, "=", i*nb) i += 1 print(i, "x", nb, "=", i*nb)

5 2 eme solution : Avantage : Avec Copier/Coller, c'est facile à écrire. Inconvénient : Trop long, à cause des répétitions. Meilleure solution : quand il y a des répétitions, utiliser une boucle. 22/02/2015

6 Une STRUCTURE REPETITIVE (ou STRUCTURE ITERATIVE ou boucle) répète l exécution d un traitement, dans un ordre précis, un nombre déterminé ou indéterminé de fois. Dans une boucle le nombre de répétitions : Il peut dépendre d une condition permettant l arrêt et la sortie de cette boucle. Peut être connu, fixé à l avance. 22/02/2015

7 On dispose de deux structures pour contrôler un traitement répétitif : La boucle Tant que.. faire La boucle Pour. faire 22/02/2015

8 A. La boucle Tant que.. faire (while.. :) La boucle Tant que..faire se présente en algorithmique sous la forme suivante : Tant que (condition) faire séquence Fin tant que Principe : Tant que la condition est vraie la séquence (bloc d'instructions) est exécutée. Le cycle continu jusqu'à ce que la condition soit fausse. 22/02/2015

9 A. La boucle Tant que.. faire (while.. :) Traduction en python Instruction simple : while condition : instruction Blocs d instructions : while condition : séquence 22/02/2015

10 A. La boucle Tant que.. faire (while.. :) Attention à l indentation!!! Lorsqu'on a un bloc d instructions après l instruction while, il est délimité par l'indentation. L'instruction Python "while" exécute de manière répétitive le bloc indenté tant que le test de condition est réalisé. Si la condition est d'emblée fausse le bloc ne sera jamais exécuté. 22/02/2015

11 A. La boucle Tant que.. faire (while.. :) Exemple : Table de multiplication d un nombre Algorithme Debut Lire(nb) i 0 Tant que i 10 faire ecrire(i, ' ', nb, '=', nb i) i i+1 Fin tant que ecrire("c'est terminé") Fin 22/02/2015

Début Organigramme Lire(nb) i 0 faux i 10 ecrire("c'est terminé") Fin vrai ecrire(i, ' ', nb, '=', nb i) i i + 1 Suite du programme Instructions de la boucle

13 A. La boucle Tant que.. faire (while.. :) Exemple : Table de multiplication d un nombre. Programme en python nb=int(input("nb=")) i=0 # initialisation de la variable de comptage while i<=10 : # ce bloc est exécuté tant que la condition est vraie print(i, ' x ', nb, '=', nb*i) i += 1 # incrémentation du compteur print("c'est terminé") 22/02/2015

Exemple : Table de multiplication d un nombre. L exécution du programme : nb=6 0 x 6 = 0 1 x 6 = 6 2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 36 7 x 6 = 42 8 x 6 = 48 9 x 6 = 54 10 x 6 = 60 c'est terminé 14 22/02/2015

15 A. La boucle Tant que.. faire (while.. :) L instruction while utilisée à la troisième ligne indique à Python qu il lui faut répéter continuellement le bloc d instructions qui suit, tant que le contenu de la variable i reste inférieur ou égale à 10. N'oubliez pas d'incrémenter la variable i! Sinon, vous créez ce qu'on appelle une boucle infinie, puisque la valeur de i n'est jamais supérieure à 10 et la condition du while, par conséquent, reste toujours vraie. La boucle s'exécute donc à l'infini.

16 A. La boucle Tant que.. faire (while.. :) ATTENTION! Il faut bien choisir le test d arrêt de la boucle sinon on obtient une boucle infinie.

17 A. La boucle Tant que.. faire (while.. :) Exemple de boucle infinie : (à éviter) n = 10 carre = n**2 while not carre < 0 : print(n,"² = ", carre, sep="") n -= 1 carre = n**2 print("terminé.")

18 A. La boucle Tant que.. faire (while.. :) Exemple : Réponse : Calcul du carré des nombres de 10 à 0 (dans le sens décroissant) Mais la condition est mal choisie : elle ne devient jamais fausse car le carre d'un nombre n'est jamais < 0 => c'est une boucle infinie Question : Comment corriger l'erreur? Réponse : en mettant while not n < 0 : à la ligne 3

19 A. La boucle Tant que.. faire (while.. :) Dans une boucle while si une variable est testée dans la condition de la boucle, il faut faire attention à ce que : La variable testée soit initialisée (définie une première fois) avant la boucle La valeur de la variable change dans le corps de la boucle (sinon la condition ne deviendra jamais fausse => boucle infinie)

20 B. La boucle Pour.. faire (for..in. :) La boucle Pour..faire se présente en algorithmique sous la forme suivante : Pour compteur valeur initiale à valeur finale faire séquence Fin Pour Principe : pour la variable de contrôle allant de la valeur initiale jusqu à la valeur finale, exécuter la séquence d instructions

21 B. La boucle Pour.. faire (for..in. :) Traduction en python for compteur in range (valeur_initiale,valeur_d_arret): instruction ou bloc d instructions Le compteur est initialisé par l'instruction for à la valeur initiale et tant que la valeur d arrêt n'est pas atteinte, il est automatiquement incrémenté après l'exécution des instructions du bloc à répéter Attention : valeur d'arrêt = valeur finale + 1

22 B. La boucle Pour.. faire (for..in. :) Attention à l indentation : toutes les instructions que l on veut répéter après le for constituent le corps de la boucle (ou un bloc d instructions) et doivent être indentées d un ou plusieurs espaces (par convention 4 espaces). Dans le cas contraire, Python vous renvoie un message d erreur.

23 B. La boucle Pour.. faire (for..in. :) Exemple : >>> for i in range (1,10) :... print(i) File "<stdin>", line 2 print (i) ^ IndentationError: expected an indented block

24 B. La boucle Pour.. faire (for..in. :) Exemple : Table de multiplication d un nombre. Algorithme Debut Lire(nb) Pour i 0 à 10 faire ecrire(i, ' ', nb, '=', nb i) Fin pour ecrire("c'est terminé") Fin

Début Organigramme Lire(nb) i 0 faux i<=10 ecrire("c'est terminé") Fin vrai ecrire(i, ' ', nb, '=', nb i) i i + 1 Suite du programme Instructions de la boucle

26 B. La boucle Pour.. faire (for..in. :) Exemple : Table de multiplication d un nombre. Programme en python nb=int(input("nb=")) for i in range(0,11) : # pour i allant de 0 à 10 print(i, 'x', nb, '=', nb*i) print("c'est terminé") Remarque : range(0,11) permet d'obtenir les nombres de 0 à 10 car la valeur d'arrêt (11) n'est jamais atteinte

Exemple : Table de multiplication d un nombre. L exécution du programme : nb=6 0 x 6 = 0 1 x 6 = 6 2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 36 7 x 6 = 42 8 x 6 = 48 9 x 6 = 54 10 x 6 = 60 c'est terminé 27 22/02/2015

28 B. La boucle Pour.. faire (for..in. :) Autre syntaxe :Si la valeur initiale est zéro, on peut l'omettre : for compteur in range(valeur_d_arret) : instruction ou bloc d'instructions

29 B. La boucle Pour.. faire (for..in. :) Exemple : Table de multiplication d un nombre donné nb=int(input("nb=")) for i in range(11) : # pour i allant de 0 à 10 print(i, 'x', nb, '=', nb*i) print("c'est terminé")

30 ( خطوة ( pas B. La boucle Pour.. faire avec le (for..in. :) La boucle Pour..faire avec le pas ( خطوة ( se présente en algorithmique sous la forme suivante : Pour compteur valeur initiale à valeur finale pas p faire séquence Fin Pour

31 ( خطوة ( pas B. La boucle Pour.. faire avec le (for..in. :) Traduction en python for compteur in range (valeur_initiale,valeur_d_arret,pas): instruction ou bloc d instructions Le compteur est initialisé par l'instruction for à la valeur initiale et tant que la valeur d arrêt n'est pas atteinte, il est automatiquement incrémenté ou décrémenté avec la valeur «pas» ( خطوة ( après l'exécution des instructions du bloc à répéter

32 ( خطوة ( pas B. La boucle Pour.. faire avec le (for..in. :) Exemple :afficher les nombres de 1 à 10 en ordre décroissant : Algorithme Debut Pour i 10 à 1 pas -1 faire ecrire(i) Fin pour ecrire("c'est terminé") Fin

Début Organigramme i 10 ecrire("c'est terminé") faux i>=1 vrai ecrire(i ) Fin i i - 1 Suite du programme Instructions de la boucle

34 ( خطوة ( pas B. La boucle Pour.. faire avec le (for..in. :) Exemple :afficher les nombres de 1 à 10 en ordre décroissant : Programme python : for i in range(10,0,-1) : print(i) print(" c est terminé ")

Exemple : L exécution du programme : 35 10 9 8 7 6 5 4 3 2 1 c'est terminé 22/02/2015

36 ( خطوة ( pas B. La boucle Pour.. faire avec le (for..in. :) for i in range(0,n) : Ces deux syntaxes sont blocs d instructions équivalentes et permettent le for i in range(n) : parcourt des entiers entre 0 et blocs d instructions n-1 (c.à.d. : 0,1,2,..,n-1) REMARQUE! En python quand la valeur initiale de la boucle for est égale à 0 on peut l écrire comme on peut l omettre, sinon (c.à.d. que la valeur_initiale 0) on doit écrire la valeur initiale.

37 ( خطوة ( pas B. La boucle Pour.. faire avec le for i in range(a,n) : blocs d instructions for i in range(a,n,r) : blocs d instructions Cette syntaxe permet de parcourir des entiers compris entre a (inclus) et n (non inclus), c.à.d. : a, a+1, a+2,. Cette syntaxe permet de parcourir, avec le pas ( خطوة ( : r, les entiers compris entre a (inclus) et n (non inclus) c.à.d.: a, a+r, a+2r,.. REMARQUE! En python quand si on ne met pas la valeur du «pas» il est par défaut (+1).

38 C. Les boucles imbriquées : Les boucles peuvent être imbriquées les unes dans les autres. Une boucle while peut contenir une autre boucle while, ou une autre boucle for. Autrement dit, une boucle peut contenir une autre boucle qui elle-même peut contenir une autre boucle et ainsi de suite.

39 for vs while La boucle itérative for est une boucle active au contraire de la boucle while. Cela signifie qu en plus de la répétition d un bloc d instructions (action commune aux deux types de boucle), la boucle for gère l évolution d une variable dans un compteur. Ainsi, la commande «for i in range (a,n) :» s occupe, de façon autonome, de l évolution de i alors que «while i<=n :» se contente de vérifier que i est présent dans le compteur sans jamais prendre l initiative de faire évoluer la valeur de i.

40 for vs while Une boucle for peut toujours être remplacée par une boucle while. Exemple : for i in range(a,b,p) : sequence Devient en while i=a while i < b : sequence i += p

41 Simplicité du for : for vs while L autonomie du for dans la gestion de la variable de boucle (incrémentation automatique et assurance de terminaison) sont des arguments de simplicité en faveur de l utilisation du for. On retiendra que : Lorsqu on connaît à l avance le nombre de répétitions à effectuer, on utilise la boucle for. Dans le cas contraire, on utilise la boucle while.

42 Souplesse du while : for vs while La boucle while s utilise indifféremment dans tous les cas : que l on connaisse ou non le nombre d itérations de boucle à accomplir. Mais cette souplesse a un prix : mettre en place une boucle while est généralement plus compliqué que dans le cas d un for. Autrement dit, on doit initialiser le compteur avant la boucle et d incrémenter ce compteur à l intérieur de la boucle.

43 Exercices et applications 22/02/2015

44 Exercice 1: Ecrire un programme python qui demande à l utilisateur un nombre réel compris entre 10 et 30 jusqu à ce que la réponse convienne ; dans ce cas, il lui indique que son nombre convient.

45 Exercice 2: Initialisez deux entiers : a = 0 et b = 10. Écrire une boucle affichant et incrémentant la valeur de a tant qu elle reste inférieure à celle de b. Écrire une autre boucle décrémentant la valeur de b et affichant sa valeur si elle est impaire. Boucler tant que b n est pas nul.

46