• Aucun résultat trouvé

TP 03: LES STRUCTURES REPETITIVES

N/A
N/A
Protected

Academic year: 2022

Partager "TP 03: LES STRUCTURES REPETITIVES"

Copied!
7
0
0

Texte intégral

(1)

TP 03: LES STRUCTURES REPETITIVES

Objectifs

• Savoir répéter des instructions

• Utiliser la fonction « substr »

Exercices

Exercice 1 : for

En utilisant la syntaxe « for », afficher les 100 premiers nombres entiers avec un saut de ligne entre chaque nombre.

Exercice 2 : while

En utilisant la syntaxe « while », afficher les 10000 premiers nombres entiers.

Exercice 3 : Bonjour

Afficher 150 fois le mot « Bonjour » !

Exercice 4 : Bonne nuit

a) Écrivez un programme qui demande à l'utilisateur un entier n (le nombre de moutons qu'il doit compter pour s'endormir) et pour chaque entier i entre 1 et n, affiche le message « Et i moutons ! ».

A la fin, il doit afficher le message « Bonne nuit... ».

b) Faites en sorte que la première phrase soit « Et 1 mouton ! » (sans le s à la fin de mouton).

c) Affichez un message d'erreur si on entre un entier négatif et recommencez la saisie

Exercice 5 : Moyenne de notes

a) En utilisant la syntaxe « while », faire saisir des notes à l’utilisateur…

La fin de la saisie se fera en saisissant une note négative.

b) Améliorez votre programme pour signaler à l’utilisateur une erreur de saisie s’il la note n’est pas comprise entre 0 et 20.

Exercice 6 : Moyenne, Min et Max

A l’aide d’une structure répétitive, permettre la saisie de notes et afficher la moyenne, la note la plus petite et le note la plus grande

Exercice 7 : Comptage

Ecrivez un programme qui demande à l'utilisateur d’entrer un chiffre. Cette action devra être répétée tant que l’utilisateur répondra « oui » à la question voulez-vous recommencer ?

Le programme devra indiquer :

le nombre de valeurs saisies

le nombre valeurs paires

le nombre valeurs impaires

Le nombre d’erreurs de saisie

(2)

Exercice 8: Nombre magique

L’ordinateur va générer un nombre aléatoire compris entre 0 et 1000. Vous avez 7 tentatives pour le découvrir. A chaque tentative, l’ordinateur vous indique « Trop petit » ou « Trop grand »…

Pour générer un nombre aléatoire entre 0 et 100, vous utiliserez la fonction rand(). Consultez la

documentation de cette fonction si nécessaire.

Exercice 9 : Voyelles et consonnes

Saisir une phrase dans un formulaire et écrire un programme PHP qui compte le nombre de consonnes et le nombre de voyelles de cette phrase.

Pour extraire un caractère d’une chaîne, on utilisera la fonction « substr » (Cf ; documentation php).

Si on souhaite connaître la longueur d’une chaîne, on utilisera la fonction « strlen » (Cf ; documentation php).

Exercice 10: factorielle

Calculer une factorielle est le processus qui consiste à multiplier un nombre entier par tous les nombres entiers positifs inférieurs à celui-ci.

Exemples :

factorielle de 2 (noté 2 !) = 1*2 = 2 factorielle de 3 (noté 3 !) = 1*2*3 = 6

factorielle de 7 (noté 7 !) = 1*2*3*4*5*6*7 = 5040

a) Ecrire un programme qui permet de saisir un nombre et d’afficher la factorielle de ce nombre.

b) Si vous n’êtes pas en retard, améliorez votre programme pour afficher toutes les factorielles des nombres inférieurs au nombre saisi.

Exercice 11 : Pyramide

a) Ecrire un programme qui affiche un triangle d’étoiles en fonction d’une hauteur donnée.

b) Ecrire un programme qui affiche une ligne oblique en fonction d’une hauteur donnée.

c) Ecrire un programme qui affiche une pyramide en fonction d’une hauteur donnée.

*

**

***

****

*****

******

*******

* * * * * *

*

* ***

*****

*******

*********

***********

*************

(3)

Exercice 12: Enigme

Nous allons essayer de faire résoudre cette énigme par l’ordinateur en utilisant sa capacité à calculer rapidement !

La méthode consiste à lui faire essayer toutes les possibilités et pour chacune d’elle, calculer le résultat.

1) Dans un premier temps, ne tenez pas compte de la contrainte de n’avoir que des chiffres différents. Vous devriez alors trouver beaucoup de bons résultats (Cf.exemple ci-dessous)

Que constatez vous au niveau du temps de traitement ?

2) Ajoutez les tests afin de s’assurer de ne pas faire le calcul lorsque 2 nombres sont identiques.

Comptez le nombre de solutions trouvées !

(4)

CORRECTION DU TP 03 while.php

enTeteTP3.inc.html

piedTP3.inc.php

<?php

include("enteteTP3.inc.html");

echo "\n";

echo '<table border="1">';

echo "\n";

$i=1;

while ($i<=100){

echo "<tr><td>$i</td></tr>\n";

$i++;

}

echo "</table>\n";

include("piedTP3.inc.php");

?>

<p><a href="http://www.univ-mlv.fr">

<img src="logoUMLV.jpg" alt="logo de l'université" border="0"/>

</a>

</p>

<h2 align="center">CMW: TP n° 3</h2>

<?php

echo "<hr/>\n".'<div style="float:right;">';

echo date("d/m/y");

echo "</div>";

echo "Philippe Chochois";

?>

(5)

Exercice 6: Nombre magique

factorielle.php

<?PHP

include("read.php");

$nbATrouver=rand(0,1000);

echo "\n\nJeu du nombre magique";

echo "\n*********************\n\n";

$trouve=false;

$coupRestants=7;

while(!$trouve && $coupRestants !=0){

echo "il vous reste $coupRestants tentatives.\n";

echo 'Saisissez un nombre:';

$nbSaisi=read();

$coupRestants--;

if ($nbSaisi == $nbATrouver)

$trouve=true;

else{

if ($nbSaisi > $nbATrouver) echo "\nTrop grand !";

else

echo "\nTrop petit !";

} }

if ($trouve)

echo "\n\nBravo, vous avez trouve apres ".(7-$coupsRestants)." tentatives

!";

else

echo "\n\nVous avez perdu. Le nombre magique etait ".$nbATrouver;

?>

<?php

include("enteteTP3.inc.html");

echo "\n";

$n=$_GET['nombre'];

for($j=1;$j<=$n;$j++){

$resultat=1;

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

$resultat=$resultat*$i;

}

echo "<p>Factorielle de $j = $resultat</p>\n";

}

include("piedTP3.inc.php");

?>

(6)

voyellesConsonnes.php

<?php

include("enteteTP3.inc.html");

echo "\n";

$phrase=$_GET['texte'];

for($i=0;$i<strlen($phrase);$i++){

$lettre=substr($phrase,$i,1);

if ($lettre=='a' ||$lettre=='e' ||$lettre=='i'

||$lettre=='o'||$lettre=='u' ||$lettre=='y' ||$lettre=='A' ||$lettre=='O'

||$lettre=='E' ||$lettre=='U' ||$lettre=='I' ||$lettre=='Y')

$voyelles++;

elseif (($lettre<='z' && $lettre>='a')||

($lettre<='Z' && $lettre>='A')){

$consonnes++;

} }

echo "<p>Dans ce texte \"$phrase\", il y a:</p>\n";

echo "<p>\n\tNombre de caractères:".strlen($phrase);

echo "<br/>\n\tNombre de voyelles:$voyelles<br/>\n";

echo "\tNombre de consonnes:$consonnes\n</p>\n";

include("piedTP3.inc.php");

?>

(7)

pyramide.php

<?PHP

include('read.php');

$date= date("d-m-Y");

$heure = date("H:i");

$nbSolutions=0;

echo "Nous sommes le $date et il est $heure\n";

echo "\nResolution de l'enigme\n";

for($nb1=1; $nb1<=9;$nb1++)

for($nb2=1; $nb2<=9;$nb2++) if ($nb1!=$nb2)

for($nb3=1; $nb3<=9;$nb3++) if ($nb1!=$nb3 && $nb2!=$nb3)

for($nb4=1; $nb4<=9;$nb4++) if ($nb1!=$nb4 && $nb2!=$nb4 && $nb3!=$nb4)

for($nb5=1; $nb5<=9;$nb5++) if ($nb1!=$nb5 && $nb2!=$nb5 && $nb3!=$nb5 && $nb4!=$nb5)

for($nb6=1; $nb6<=9;$nb6++) if ($nb1!=$nb6 && $nb2!=$nb6 && $nb3!=$nb6 && $nb4!=$nb6 && $nb5!=$nb6) for($nb7=1; $nb7<=9;$nb7++) if ($nb1!=$nb7 && $nb2!=$nb7 && $nb3!=$nb7 && $nb4!=$nb7 && $nb5!=$nb7

&& $nb6!=$nb7)

for($nb8=1; $nb8<=9;$nb8++) if ($nb1!=$nb8 && $nb2!=$nb8 && $nb3!=$nb8 && $nb4!=$nb8 && $nb5!=$nb8

&& $nb6!=$nb8 && $nb7!=$nb8) for($nb9=1; $nb9<=9;$nb9++){

if ($nb1!=$nb9 && $nb2!=$nb9 && $nb3!=$nb9 && $nb4!=$nb9 && $nb5!=$nb9 && $nb6!=$nb9 &&

$nb7!=$nb9 && $nb8!=$nb9){

$resultat=$nb1+13*$nb2/$nb3+$nb4+12*$nb5-$nb6-11+$nb7*$nb8/$nb9-10;

if ($resultat==66){

$nbSolutions++;

echo "\nBravo, vous avez gagne !\n";

echo "Les chiffres a trouver sont $nb1 - $nb2 - $nb3 - $nb4 - $nb5 - $nb6 -

$nb7 - $nb8 - $nb9";

} }

}

echo "\n\nLe nombre de solutions que l'ordinateur a trouve est $nbSolutions !\n\n\n";

?>

<?php

include("enteteTP3.inc.html");

echo "\n";

$hauteur=$_GET['hauteur'];

echo '<p style="font-family:Courier New;">';

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

for($k=($hauteur-$i);$k>=0;$k--){

echo '&nbsp;';

}

for($j=1;$j<=(2*$i-1);$j++){

echo '*';

}

echo "<br/>\n";

}

echo "</p>";

include("piedTP3.inc.php");

?>

Références

Documents relatifs

On ne croit pas qu’il soit possible de faire un raisonnement par récurrence parce qu’un point solution pour m n’est pas obligatoirement solution pour m + 2 : il est difficile

Pour passer de la base 2 à la base 16, il suffit de grouper les chiffres binaires par 4 (c’est pourquoi la base 16 est souvent utilisée pour simplifier l’écriture des

L’ensemble des nombres premiers qui ne divise pas N est donc non vide et admet un plus petit élément : soit P le plus petit nombre premier qui ne divise pas N.. Du coup, on en

Par contre la calculatrice, dénuée de toute sensibilité, donne illico tous les nombres (pairs donc), dont les entiers qui leurs sont inférieurs et premiers avec eux,

Tous les termes de la suite de Fibonacci sont italiens puisque Un entier italien, s’il existe, est de la forme.. D’après (1), et du fait que 1 est italien on peut supposer dans

J'ai démontré précédemment dans les Nouvelles Annales (1916, p. i5o), que le produit de deux, trois ou quatre nombres entiers consécutifs n'est jamais un carré, ni un cube, ni

» etiam affîrmari possunt (exceptis excipiendis) de eodem )&gt; numero quantitatum dimensionum (*). Ayant été prié par M. Jacobi de vérifier le théorème, M. Zornow a calculé

Celle qui correspond à la dépense minimale est la droite parallèles à d 5 qui a une ordonnée à l'origine minimale tout en ayant au moins un point dans l'ensemble des