Boucles
Utiliser le script interactif
Saisir php -a dans le terminal
1 - Utilité des boucles
Voici deux extraits de version permettant d’obtenir la somme de chiffres d’affaires :
Version 1
$somme = 0;
$ca01 = readline("Saisir ca1 :");
readline_add_history($ca01);
somme = somme + ca01;
$ca02 = readline("Saisir ca2 :");
readline_add_history($ca02);
somme += ca02;
$ca03 = readline("Saisir ca3 :");
readline_add_history($ca03);
somme += ca03;
//--Reproduire le même code jusqu’à 19 fois
$ca020 = readline("Saisir ca20 :");
readline_add_history($ca020);
somme += ca20;
Version 2
$somme = 0;
$i=0
$ca = 0;
while ($i < 21)
{
$ca = readline("Saisir ca :");
readline_add_history($ca);
$somme += $ca;
$i++;
}
echo "La somme des CA est de $somme";
Quel est l’avantage de la version 2 :
☐ la version est plus courte
☐ elle donne un résultat exact
☐ le traitement est plus rapide
☐ la version peut être adaptée facilement
2 - Choix d’une version
Voici trois extraits de version permettant d’obtenir la somme de chiffres d’affaires :
$somme = 0;
Version 1
$ca = readline("Saisir ca :");
readline_add_history($ca);
while ($ca != 0)
{
$ca = readline("Saisir ca :");
readline_add_history($ca);
$somme += $ca;
}
echo "La somme des CA est de $somme";
Version 2
$ca = 0;
while ($i < 21)
{
$ca = readline("Saisir ca :");
readline_add_history($ca);
$somme += $ca;
$i++;
}
echo "La somme des CA est de $somme";
Version 3
$ca = readline("Saisir ca :");
readline_add_history($ca);
while ($ca != 0)
{
$somme += $ca;
$ca = readline("Saisir ca :");
readline_add_history($ca);
}
echo "La somme des CA est de $somme";
☐ quand la somme est calculée
☐ en saisissant un CA nul
☐ en indiquant le nombre de CA à saisir
Quel est l’avantage de la version 1 par rapport à la version 2 :
☐ le résultat de la somme est exact
☐ le traitement est plus rapide
☐ l’initialisation des variables est juste
☐ le nombre de CA à saisir peut être inconnu
Selon vous quelle est la meilleure version :
☐ Version 1
☐ Version 2
☐ Version 3
3 - Analyser un programme
Soit l’extrait de version suivant :
$somme = 0;
$ca = 0;
$reponse = readline("Voulez vous saisir une note O/N :");
readline_add_history($reponse);
while ($reponse == "O")
{
$note = readline("Saisir une note :");
readline_add_history($note);
$somme += $note;
$reponse = readline("Voulez vous saisir une autre note O/N :");
readline_add_history($reponse);
}
echo "La somme des notes est de $somme";
Que fait ce programme ?
☐ il calcule la moyenne des notes
☐ il calcule la somme des notes
☐ il fournit la réponse Oui ou Non
☐ il calcule la moyenne du baccalauréat
Si un utilisateur saisit les notes : 3 puis 4 puis 12, quel sera le contenu de la variable SOMME à la fin du traitement ?
☐ 12
☐ 7
☐ 19
Est-ce que l’utilisateur peut ne saisir aucune note ?
☐ oui
☐ non
Comment l’utilisateur peut-il arrêter la saisie des notes ?
☐ en tapant “N”
☐ en tapant “zigouigoui "
☐ en tapant “Oui”
☐ en tapant “O”
4 - Cumul des ventes
Soit 3 extraits de version différents ayant comme objectif de calculer la somme de ventes saisies par l’utilisateur :
$totalht = 0;
Version 1
$vente = readline("Saisir les ventes :");
readline_add_history($vente);
while ($vente != 0)
{
$vente = readline("Saisir les ventes :");
readline_add_history($vente);
$totalht += $vente;
}
echo "totalht : $totalht";
Version 2
$vente = 0;
while ($vente != 0)
{
$vente = readline("Saisir les ventes :");
readline_add_history($vente);
$totalht += $vente
}
echo "totalht : $totalht";
Version 3
$vente = readline("Saisir les ventes :");
readline_add_history($vente);
while ($vente != 0)
{
$totalht += $vente;
}
echo "totalht : $totalht";
Version 1 | Version 2 | Version 3 | |
---|---|---|---|
la boucle fonctionne correctement | ☐ | ☐ | ☐ |
on ne peut pas sortir de la boucle | ☐ | ☐ | ☐ |
on ne peut pas entrer dans la boucle | ☐ | ☐ | ☐ |
Version 1 | Version 2 | Version 3 | |
---|---|---|---|
0 | ☐ | ☐ | ☐ |
20 | ☐ | ☐ | ☐ |
30 | ☐ | ☐ | ☐ |
N’affiche pas le total | ☐ | ☐ | ☐ |
Version 1 | Version 2 | Version 3 | |
---|---|---|---|
0 | ☐ | ☐ | ☐ |
40 | ☐ | ☐ | ☐ |
50 | ☐ | ☐ | ☐ |
N’affiche pas le total | ☐ | ☐ | ☐ |
5 - Chercher un chiffre
Un jeu consiste à demander à l’utilisateur de taper un chiffre. Celui-ci gagne si le chiffre est 5. Le joueur qui a terminé laisse la place au suivant.
$reponse = 'n';
while ($reponse == "n" || $reponse == "N")
{
$chiffre = readline("Tape un chiffre entre 1 et 9");
readline_add_history($chiffre);
while ($chiffre != 5)
{
echo ’Tu as perdu ! Recommence :’;
$chiffre = readline("Tape un chiffre entre 1 et 9");
readline_add_history($chiffre);
}
echo ’Bravo.Tu as gagné !’;
$reponse = readline("Autre joueur ? O/N : ");
readline_add_history($reponse);
}
Considérons la boucle qui gère le message « Tu as perdu ! Recommence : » Est-il possible qu’elle ne soit jamais déclenchée ? (Itération=0)
☐ oui
☐ non
Considérons la boucle qui gère le passage à l’autre joueur Est-elle déclenchée au moins une fois ?
☐ oui
☐ non
6 - Monter les tours
Soit les extraits des versions suivantes permettant de saisir les chiffres d’affaires de 4 trimestres :
Version 1
$compteur = 0;
$ca = readline("Saisir ca :");
readline_add_history($ca);
while ($compteur < 4)
{
$ca = readline("Saisir ca :");
readline_add_history($ca);
$compteur += 1;
}
Version 2
$compteur = 1;
while ($compteur < 4)
{
$ca = readline("Saisir ca :");
readline_add_history($ca);
$compteur += 1;
}
Version 3
$compteur = 0;
while ($compteur < 4)
{
$ca = readline("Saisir ca :");
readline_add_history($ca);
$compteur += 1;
}
Nombre de CA saisis | Version 1 | Version 2 | Version 3 |
---|---|---|---|
1 | ☐ | ☐ | ☐ |
2 | ☐ | ☐ | ☐ |
3 | ☐ | ☐ | ☐ |
4 | ☐ | ☐ | ☐ |
5 | ☐ | ☐ | ☐ |
Contenu de COMPTEUR | Version 1 | Version 2 | Version 3 |
---|---|---|---|
3 | ☐ | ☐ | ☐ |
4 | ☐ | ☐ | ☐ |
5 | ☐ | ☐ | ☐ |
7 - Le test de saisie
Soit l’extrait de versions suivant permettant de calculer la somme de chiffre d’affaires :
Version 1
$somme = 0;
$ca = 1;
while ($ca != 0)
{
$ca = readline("Saisir ca :");
readline_add_history($ca);
$somme += $ca;
}
echo "La somme des CA est de $somme";
Version 2
$somme = 0;
$ca = 1;
while ($ca != 0)
{
$somme += $ca;
$ca = readline("Saisir ca :");
readline_add_history($ca);
}
echo "La somme des CA est de $somme";
Version 1 | Version 2 | ||
---|---|---|---|
☐ | 0 | ☐ | 0 |
☐ | 10 | ☐ | 10 |
☐ | 10 | ☐ | 30 |
☐ | 60 | ☐ | 60 |
☐ | 61 | ☐ | 61 |
8 - Saisie de notes
Extrait de 3 versions :
Version 1
$moyenne = 0;
$note01 = readline("Saisir note 1 :");
readline_add_history($note01);
$note02 = readline("Saisir note 2 :");
readline_add_history($note02);
$note03 = readline("Saisir note 3 :");
readline_add_history($note03);
$moyenne = ($note01 + $note02 + $note03 )/3;
echo $moyenne;
Version 2
$moyenne = 0;
$somme = 0;
$compteur = 0;
$note = readline("Saisir une note :");
readline_add_history($note);
while ($note < 0)
{
$somme += $note;
$compteur += 1;
$note = readline("Saisir une note :");
readline_add_history($note);
}
$moyenne = $somme /$compteur;
echo $moyenne;
Version 3
$moyenne = 0;
$somme = 0;
$compteur = 0;
$note = readline("Saisir une note :");
readline_add_history($note);
while ($compteur < $nbrnote)
{
$note = readline("Saisir une note :");
readline_add_history($note);
$somme += $note;
$compteur += 1;
}
$moyenne = $somme /$compteur
echo $moyenne;
Quelle est l’inconvénient de la version 3 :
☐ on ne peut pas avoir de zéro
☐ il faut saisir le nombre de notes
☐ on ne peut pas s’arrêter quand on veut
Quel est l’inconvénient de la version 2 :
☐ on ne peut pas avoir de zéro
☐ il faut saisir le nombre de notes
☐ on ne peut pas s’arrêter quand on veut
Selon vous quelle est la meilleure version :
☐ Version 1
☐ Version 2
☐ Version 3
9 - Equivalence
Voici deux boucles :
Version 1
$s = 0;
for ($i=4;$i<100;$i=$i+2)
{
$s += $i;
}
echo "s = $s";
Version 2
$s = 0;
$k = 4;
while ($k < 100)
{
$s += $k;
// code à rajouter
}
echo "s = $s";
☐ k=k+1
☐ k=s+1
☐ k=k+2
☐ k=s+2