Objectifs:
o Savoir effectuer des tests dans les programmes
o Utiliser les constantes
o Initiation aux tests de programme
Rappels :
- Créer un sous répertoire pour le TP (Exemple : TP02)
- Copier le fichier read.php dans votre répertoire de travail (TP02).
Vous avez dû le sauver dans votre répertoire au cours du premier
TP
<?php
function read( )
{
$fp = fopen("php://stdin", "r");
$in = fgets ($fp,255);
fclose($fp);
$ligne = (PHP_OS == "WINNT") ? str_replace ("\r\n", "",
$in) : str_replace("\n", "",$in);
return $ligne ;
}
?>
Exercice 1 : Créer un programme pyramide.php qui affiche une pyramide d'étoiles une hauteur de 10 étoiles
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
Exercice 2 : En créant une constante de valeur ? , créer un programme constante.php qui affiche le périmètre d'un cercle en fonction du rayon fourni par l'utilisateur
Pour définir une constante en PHP, on utilise la fonction DEFINE.
Exemple : On veut nommer une constante LYCEE qui a pour valeur "Lycee Leonard
de Vinci"
Il faut écrire define ("lycee" , "Lycee Leonard de Vinci")
;
-------------------------------------------------
A partir de cet exercice, vous devez utiliser des structures conditionnelles.
Exercice 3 : Ecrire un programme plusPetit.php qui affiche le plus petit de deux nombres réels entrés au clavier par l'utilisateur.
Exercice 4 : Reprendre votre programme pyramide.php et afficher une pyramide dont la hauteur est saisie par l'utilisateur. La hauteur saisie sera inférieure à 11
Exercice 5 : Ecrire un programme testNombre.php qui affiche si un nombre saisi
par l'utilisateur est pair et s'il est multiple de 3
N'oublez pas de tester votre programme et de remplir le tableau ci-dessous.
Résultat des tests :
Valeurs saisies Résultat affiché
Mettre aussi une colonne " Résultat attendu " pour préparer
les tests
Exercice 6 : Ecrire le programme age.php en reprenant votre programme du TP01
permettant de calculer l' âge d'un utilisateur.
Améliorez-le ! Faites en sorte :
1. Que l'utilisateur n'ait pas à saisir l'année en cours. Servez-vous
de la fonction date.
Exemple : $annee = date("Y") ; //$annee = 2004
2. Qu'il affiche un message d'erreur si la date de naissance saisie par l'utilisateur
ne semble pas valide. Exemple : une personne ne doit pas avoir moins d'1 an
et ne doit pas excéder les 130 ans.
Exercice 7 : Ecrire un programme triMots.php qui affiche dans l'ordre alphabétique
3 mots saisis par un utilisateur.
Exercice 8: Créez un programme tarificationDegressive.php qui respecte le cahier des charges suivant :
Une entreprise souhaite pouvoir appliquer un tarif dégressif pour ses
articles en fonction de la quantité achetée.
1. Ecrire l'algorithme permettant d'afficher le montant total d'une facture
lors de l'achat d'une quantité d'article: - si la quantité n'excède
pas 10, l'article coûte 150 €
- si la quantité est comprise entre 10 et 49, l'article coûte 135
€
- si la quantité dépasse 49, l'article coûte 110 €
On fera saisir la quantité désirée à l'utilisateur du programme. On considère que la quantité saisie est valide.
2. Assurez-vous que votre programme fonctionne correctement, vous devez faire
au moins 3 tests !
Exemple :
quantité 9 12 50
montant 1350 1620 5500
Exercice 9 : Ecrivez le programme mutuelle.php qui complète le programme
que vous avez écrit dans l'exercice 5 du premier TP.
Vous effectuez une dépense de santé d'un montant MT à
saisir.
La Sécurité sociale vous rembourse 70% de (MT moins 1 euro) avec
un plafond de 105 euros
Votre mutuelle vous rembourse le complément en laissant au minimum 1
euro à votre charge et ne vous rembourse jamais plus de 350 % le montant
de la Sécurité Sociale
Vous payez le montant restant.
Affichez ce que paie la Sécurité sociale, ce que paye la mutuelle, ce que vous payez.
NB : N'oubliez pas de tester ce programme dans tous les cas de figure.
Exercice 10: Ecrivez le programme secondePlus.php qui permette d'afficher une
durée exprimée en heures, minutes, et secondes saisie par l'utilisateur
sous cette forme (3 saisies). Préalablement à son affichage, le
programme ajoutera une seconde à la durée saisie. Les données
saisies sont considérées valides.
Avez vous pensé aux différents cas ?
Exemples : 01h 10 min 30 sec => 01h 10 min 31 sec, 01h 10 min 59 sec =>
? , 01h 59 min 59 sec => ? ,
23h 59 min 59 sec=> ?
CORRECTION DU TP 02
pyramide.php
<?PHP
// Affiche une pyramide d'étoiles
echo " *\n" ;
echo " ***\n" ;
echo " *****\n" ;
echo " *******\n" ;
echo " *********\n" ;
echo "***********\n" ;
?>
constante.php
<?PHP
// Affiche le perimètre d'un cerche en fonction du rayon
include ("read.php") ;
print ("Saisir le rayon du cercle : ") ;
$rayon = read() ;
define ("pi" , 3.14);
$perimetre = 2 * pi * $rayon;
print ("\nLe perimetre d'un cercle de rayon ".$rayon) ;
print (" est ".$perimetre) ;
?>
plusPetit.php
<?PHP
include ("read.php");
print ("Entrez le premier nombre : ");
$valeur1 = read ();
print ("Entrez le second nombre : ");
$valeur2 = read ();
if ($valeur1 < $valeur2)
print ($valeur1. "est le plus petit nombre \n");
else
print ($valeur2." est le plus petit nombre \n");
?>
pyramide.php
<?PHP
// Affiche une pyramide d'étoiles
include ("read.php");
print ("Entrez la hauteur de la pyramide : ");
$hauteur = read ();
if ($hauteur > 0) echo " *\n" ;
if ($hauteur > 1) echo " ***\n" ;
if ($hauteur > 2) echo " *****\n" ;
if ($hauteur > 3) echo " *******\n" ;
if ($hauteur > 4) echo " *********\n" ;
if ($hauteur > 5) echo " ***********\n" ;
if ($hauteur > 6) echo " *************\n" ;
if ($hauteur > 7) echo "***************\n" ;
?>
testNombre.php
<?php //Il existe une solution plus simple
include ("read.php");
print ( " Nombre ? ") ;
$nombre = read () ;
if ($nombre % 2 == 0 )
$pair = TRUE ;
else
$pair = FALSE;
if ($nombre % 3 == 0 )
$multiple3 = TRUE ;
else
$multiple3 = FALSE;
if ($pair && $multiple3)
print ("Le nombre ".$nombre." est pair et multiple de 3");
else
{if ($pair)
print ("Le nombre ".$nombre." est pair");
else
{if ($multiple3)
print ("Le nombre ".$nombre." est multiple de 3");
else
print ("Le nombre ".$nombre." est impair et n'est pas multiple
de 3");
}
}
?>
age.php
<?PHP
include ("read.php");
print("Entrez votre prenom: \n");
$prenom = read ();
$anneeEnCours = date ("Y");
print("Entrez l'année de votre naissance: \n");
$anneeNaissance = read ();
$age = $anneeEnCours - $anneeNaissance ;
if ( ( $age > 130 ) || ( $age < 1 ))
{ print (" Erreur !" ); }
else
{ print ($prenom ." vous avez ".$age."ans"); }
?>
triMots.php
<?PHP
include ("read.php");
print("premier mot: ");
$mot1 = read ();
print("deuxieme mot: ");
$mot2 = read ();
print("troisieme mot: ");
$mot3 = read ();
if ($mot1<=$mot2 and $mot1<=$mot3)
{print ($mot1." \n");
if ($mot2<=$mot3)
print ($mot2." \n".$mot3);
else
print ($mot3." \n".$mot2);
}
else
{
if ($mot2<=$mot3)
{print ($mot2." \n");
if ($mot1<=$mot3)
print ($mot1." \n".$mot3);
else
print ($mot3." \n".$mot1);
}
else
{print ($mot3." \n");
if ($mot1<=$mot2)
print ($mot1." \n".$mot2);
else
print ($mot2." \n".$mot1);
}
}
?>
tarificationDegressive.php
Remarque : on préférera la solution avec imbrication !!!
Version sans imbrication
<?php
include ("read.php");
print ( " Quelle quantite ? \n") ;
$quantite = read () ;
if ($quantite < 10 )
{ $prix = 150 ; }
if (($quantite >=10) && ($quantite < 50 ))
{ $prix = 135 ; }
if ($quantite >= 50 )
{ $prix = 110 ; }
$total = $prix * $quantite ;
print ( " Le montant du est : ". $total . " euro(s)." )
;?>
Version avec imbrication
<?php
include ("read.php");
print ( " Quelle quantité? \n") ;
$quantite = read () ;
if ($quantite < 10 )
{ $prix = 150 ; }
else
{
if ( $quantite < 50 )
{ $prix = 135 ; }
else
{ $prix = 110 ; }
}
$total = $prix * $quantite ;
print ( " Le montant dû est : ". $total . " € ."
) ;
?>
mutuelle.php
<?PHP
// Calcul du remboursement de soins pour un montant payé > 0
include ("read.php") ;
print ("Votre depense de sante : ") ;
$mt = read() ;
$mtSS = ($mt - 1) * 0.7;
if ($mtSS > 105) $mtSS = 105;
$mtMut = $mt - $mtSS - 1;
if ($mtMut > $mtSS * (350 / 100)) $mtMut = $mtSS * (350 / 100);
$mtPaye = $mt - $mtSS - $mtMut;
print ("\nLa Securite sociale paie : ".$mtSS."\n") ;
print ("La mutuelle paie : ".$mtMut."\n") ;
print ("Vous payez : ".$mtPaye."\n") ;
?>
secondePlus.php
<?PHP
include ("read.php");
print (" Entrez le nombre pour les heures : ") ;
$heure = read ();
print (" Entrez le nombre pour les minutes : ") ;
$min = read ();
print (" Entrez le nombre pour les secondes : ") ;
$sec = read ();
$sec = $sec + 1 ;
if ($sec == 60 )
{$sec = 0 ;
$min = $min +1 ;
if ($min == 60 )
{ $min = 0 ;
$heure = $heure + 1;
if ($heure == 24 )
{ $heure = 0 ; }
}
}
print ("\n\tUne seconde plus tard il sera : ".$heure. " h "
.$min . " min ". $sec ." s \n")
?>
Remarque post TP :
3 étudiants ont réussi à terminer le TP en 3 heures.
Attention particulière :
- Ne pas utiliser les tabulations mais les espaces (pyramide)
- Ne pas mettre de " ; " après le if
- positionnement des " {} "
- Indentation
- Mettre des commentaires da ns les programmes
- Mettre les constantes en majuscules