• Aucun résultat trouvé

Structures répétitives

N/A
N/A
Protected

Academic year: 2022

Partager "Structures répétitives"

Copied!
5
0
0

Texte intégral

(1)

Algorithmes…et programmes en PHP

Structures répétitives

Les structures répétitives

On les appelle indifféremment:

Les structures répétitives Les instructions répétitives Les boucles

Les structures répétitives

Objectif :

Faire faire par la machine un travail répétitif et automatique Exemples :

Afficher les noms et les notes de 45 étudiants

Rechercher dans une base de données un livre parmi 150000 livres disponibles

(Pas judicieux ! Pourquoi ?)

Augmenter des salaires d’un groupe de salariés

Faire saisir des informations tant qu’elles ne sont pas complètes et valides

Afficher dans une page Web les 100 premiers nombres entiers

Les structures répétitives

Les boucles peuvent être non déterministes ou déterministes.

Les boucles non-déterministes : On ne sait pas à l’avance combien de fois se fera la boucle, ni quand elle s’arrêtera (voire si elle s’arrêtera) :

REPETER...JUSQU’A TANT QUE

Les boucles déterministes: On connaît à l’avance le nombre d’itérations :

POUR

L’instruction REPETER … JUSQU’A

Syntaxe

La forme générale de cette boucle est :

Répéter

Instruction1 Instruction2 Instruction3 Jusqu’a condition

Si condition est VRAI alors la boucle s’arrête.

Si condition est FAUSSE alors la boucle continue.

Remarque : le test est un test d’arrêt

L’instruction REPETER … JUSQU’A

Exemple

Programme Principal Variables

Nb , n : Entiers Début

Afficher "Entrez un nombre:"

Saisir n Répéter

Afficher "Entrez un nombre (0 pour Fin):"

Saisir Nb

Afficher "La multiplication par ",n," est:", Nb*n Jusqu’à Nb = 0

Fin

(2)

L’instruction REPETER … JUSQU’A

Remarques:

Le test d’arrêt de la boucle est effectué à la fin => La boucle s’exécute toujours au moins une fois .

La variable utilisée dans le test d’arrêt (ou de continuité) doit toujours évoluer dans le corps de la boucle, si on veut que la boucle s’arrête un jour.

Faire « tourner à la main » le programme pour vérifier qu’il correspond bien à l’algorithme désiré.

Comprendre une boucle…

Faites tourner « à la main » l’algorithme ci-dessous afin de trouver le rôle du programme:

Programme Principal Variables

nb: Entier Début

Répéter

Afficher "Saisir un nombre strictement positif"

Afficher "Saisir 0 (zero) pour arreter le programme"

Saisir nb si nb>0

si (nb MOD 2) = 0

afficher nb, " est pair"

finSi si (nb MOD 3) = 0

afficher nb, " est divisible par 3"

finSi finSi Jusqu’à (nb = 0 ) Fin

Comprendre une boucle…

Faites tourner « à la main » l’algorithme ci-dessous afin de trouver le calcul sous- jacent. Prenez comme valeurs numériques:

30 et 24 8 et 5 24 et 30.

Programme Principal Variables

i,j,k,compteur : Entiers Début

Afficher "Entrez deux nombres :"

Saisir i , j compteur 0 Répéter

k i MOD j i j j k

compteur compteur + 1 Jusqu’à (j = 0 )

Afficher "Le résultat est :", i Afficher "Nombre de calculs:", compteur Fin

Exercice:

Faire un algorithme qui calcule la somme de n nombres saisis. Il faut saisir la valeur 0 pour arrêter la structure répétitive.

Programme Somme Variables

Nb , resultat : Entiers Début

resultat 0 Répéter

Afficher "Entrez un nombre (0 pour Fin):"

Saisir Nb

resultat resultat + Nb Jusqu’à Nb = 0

Afficher "La somme est:", resultat Fin

L’instruction TANT QUE … FIN TANT QUE

Syntaxe

La forme générale de cette boucle est :

Tant Que condition Instruction1 Instruction2 Instruction3 Fin Tant Que

Si condition est VRAI alors la boucle continue.

Si condition est FAUSSE alors la boucle s’arrête.

Remarque : le test est un test de continuité

L’instruction TANT QUE … FIN TANT QUE

Exemple

Programme Principal Variables

Nb: Entier Début

Nb 100

Tant Que (Nb <> 0 ) Afficher Nb Nb Nb - 1 Fin Tant Que Fin

(3)

L’instruction TANT QUE … FIN TANT QUE

Remarques:

Le test d’arrêt de la boucle est effectué au début => La boucle peut s’exécuter zéro fois si le test est tout de suite FAUX.

Pour que la boucle démarre, il faut des bonnes valeurs initiales.

Le test d’arrêt doit permettre d’arrêter la boucle !

Exercice:

Faites un algorithme qui demande un caractère en Majuscule, le convertit en minuscule, et recommence TANT QUE le caractère ‘ Q ’ n’est pas tapé.

Remarque: On considère qu’on dispose d’une fonction

«TransformeMinuscules » qui transforme un caractère en minuscule.

L’instruction POUR … FAIRE … FIN POUR

La boucle POUR est déterministe => on l’utilisera quand on connaît a l’avance le nombre d’itérations.

Elle utilise un compteur de boucle qui est un entier .

Syntaxe 1

Syntaxe 2

Où variable, c1, c2 et N sont des entiers

Pour variable variant de c1 à c2 faire Instruction1

Instruction2 Instruction3 Fin Pour

Pour variable variant de c1 à c2 par pas de N faire Instruction1

Instruction2 Instruction3 Fin Pour

L’instruction POUR … FAIRE … FIN POUR

Exemple

Programme Principal Variables

i, nb : Entiers Début

Afficher "Entrez un nombre :"

Saisir nb

Pour i variant de 1 à nb faire Afficher i

Fin Pour Fin

L’instruction POUR … FAIRE … FIN POUR

Remarques:

Le compteur de la boucle POUR doit être un entier .

Si la valeur finale est atteinte dès le premier passage => la boucle s’exécute zéro fois.

A la sortie de la boucle, le compteur possède la dernière valeur affecté par la boucle.

Le compteur de la boucle (i) ne doit jamais être modifié dans le corps de la boucle !

Imbrication des boucles POUR

Les instructions d’une boucle POURpeuvent être une autre boucle POUR.

Comme le montre l’exemple ci-dessous.

Exemple

Remarques: Le compteur de la boucle interne (i) tourne plus vite que celui de la boucle externe (base)

Programme Principal Variables

i, base, res :Entiers Début

Pour base variant de 1 à 12 faire

Afficher "Table de multiplication de :", base Pour i variant de 1 à 10 faire

res i * base

Afficher i," X ", base," = ", res Fin Pour

Fin Pour Fin

(4)

Instructions à l’intérieur des structures répétitives

A l’intérieur des structures répétitives, on peut exécuter:

Des instructions simples (affectations, calculs, saisie, affichage) Des structures répétitives de même nature ou de nature différente

Des structures conditionnelles A faire:

- Les structures répétitives en PHP…

- TP de mise en application à l’aide de PHP

Structures répétitives

Structures répétitives

Exemple introductif : Ecrire les 10 premiers nombres entiers

Cette solution est peu intéressante… surtout si nous devons écrire les 100 premiers entiers… voire plus

Pour éviter cela, nous allons demander au programme de faire la répétition lui-même grâce aux structures répétitives

21

<?PHP echo "\n1";

echo "\n2";

echo "\n3";

echo "\n4";

echo "\n5";

echo "\n6";

echo "\n7";

echo "\n8";

echo "\n9";

echo "\n10";

?>

Structures répétitives

La structure FOR

for($i=1;$i<=10;$i++){

echo "\n$i";

}

22 Les instructions à répéter sont incluses entre les accolades ouvrantes et fermantes

Les conditions de la boucle sont au nombre de 3. Elles sont écrites entre parenthèses et séparées par des point-virgules

La 3ièmeexpression indique l’opération à faire après chaque tour de boucle

La 1èreexpression indique ce qu’il faut faire avant d’exécuter les instructions

La 2ièmeexpression indique la condition qui indique si on doit continuer la boucle

Structures répétitives

Exercice: Ecrire 10 fois le mot Bonjour séparés par des espaces

23

Structures répétitives

L’instruction FOR est intéressante lorsqu’on doit faire une répétition n fois, avec n connu.

Cependant, le nombre de répétitions à faire n’est pas toujours connu initialement.

Nous allons utiliser une autre structure répétitive: l’instruction TANT QUE ou WHILE

L’exemple précédent peut être traité avec une structure WHILE:

24

<?PHP

$i=1;

while ($i<=10){

echo "\n$i";

$i++;

}

?>

(5)

Structures répétitives

La structure WHILE

while($i<=10){

echo "\n$i";

$i++;

}

25 Les instructions à répéter sont incluses entre les accolades ouvrantes et fermantes

La condition de la boucle est écrite entre parenthèses

La condition doit retourner un booléen : TRUE ou FALSE.

Elle indique si on doit continuer la boucle

Structures répétitives

Autre structure: FAIRE TANT QUE ou DO WHILE

do {

echo "\n$i";

$i++;

} while($i<=10);

26 Les instructions à répéter sont incluses entre les

accolades ouvrantes et fermantes

La condition de la boucle est écrite entre parenthèses et se termine par un point virgule

La condition doit retourner un booléen : TRUE ou FALSE.

Elle indique si on doit continuer la boucle

Structures répétitives

Exercice: Afficher les 10 premiers nombres pairs

27

<?PHP

for($i=0; $i<10; $i++){

echo ($i*2)."\n";

}

?>

Inclusion de fichiers

Les fichiers à inclure sont des fichiers PHP ou html, leur extension est .inc par convention. On inclut un fichier en utilisant include() ou require() .

Il existe une différence entre les deux :

Un fichier inclus par include est inclus dynamiquement, lors de l'exécution du code.

Un fichier inclus par require est inclus avant l'interprétation du code.

Utilisation include / require

include()et require()incluent et exécutent le fichier spécifié en argument.

include("menu.inc.php");

Les deux structures de langage sont identiques, sauf dans la gestion des erreurs :

include()

produit une

alerte (warning) require()

génère une

erreur fatale

Utiliser

require()

si vous voulez qu'un fichier d'inclusion manquant interrompe votre script.

Avec

include()

, le script continuera son exécution.

Utilisez les inclusions dès que vous avez des éléments communs à plusieurs pages

Références

Documents relatifs

[r]

[r]

peinture au coton- tige : décorer ours avec des ronds collage : décorer ours en collant du fil (poils de l’ours) colorier l’ours avec des craies grasses La voix et

peinture au coton- tige : décorer ours avec des boucles collage : décorer ours en collant du fil (poils de l’ours) colorier l’ours avec des craies grasses La voix

Introduction des variables : traduire l’algorithme donné en langage naturel à l’exercice 1p11 en langage pseudo algorithmique.. I Exercices

[r]

Écrire un algorithme qui demande un nombre de départ et qui affiche les dix nombres suivants.. Élaborer un algorithme permettant le calcul de la somme des entiers de 1

Pour effectuer une tâche , il est parfois nécessaire d’exécu- ter plusieurs fois de suite les mêmes instructions mais le nombre de fois n’est pas déterminé à l’avance :