Quelques exercices de révisions en PHP
Vous allez implémenter ces exercices dans votre IDE de prédilection et à la fin déposer votre production dans un dépôt Github et vous m’enverrez le lien de ce dépôt par mail: contact@inion.info
Vous avez droit aux ressources du net mais éviter un maximum IA afin de faire travailler votre I.
Dans tous les cas le code que vous produisez doit être compris et vous êtes capable de le reproduire si je venais à l’effacer par mégarde. 😉
Exercice 1 :
Vous allez créer en PHP un tableau de 5 éléments contenant des nombres aléatoire entre 0 et 99.
Exemple : tab1 = [8, 34, 2, 87, 33]
Exercice 2 :
A la suite de l’exercice 1.
Afficher maintenant le plus grand nombre et le plus petit.
Exemple : Le plus grand nombre est 87
Le plus petit est 2
Exercice 3:
Même chose mais avec deux fonctions : plusPetit() plusGrand()
Exercice 4:
Ecrire une fonction qui indique si il y des doublons.
Cette fonction est booléenne et retourne True ou False.
Exercice 5:
Ecrire une fonction qui dit si le tableau est trié par ordre croissant.
Cette fonction retourne True ou False.
Exercice 6:
Vous trouverez ci-dessous un petit programme PHP permettant de jouer au jeu du pendu : le but est de retrouver le mot mystère, lettre par lettre, en respectant un nombre maximum d’erreurs. Mais le programme ne fonctionne plus car des parties du code ont été remplacées par « ?????? ». Votre travail consistera à rétablir le bon fonctionnement de ce programme. Pour vous y aider, des commentaires dans le code précisent le fonctionnement des commandes que vous ne connaissez pas encore, ainsi que des explications sur le raisonnement.
<?php
# exemple de jeu du pendu
echo "Jeu du pendu : retrouvez le mot mystère !\n" ;
$mot_a_trouver = "PROGRAMMATION" ;
$mot_a_completer = "_____________" ;
$essais_restants = 12 ;
while(??????????){
echo "Mot à compléter : {$mot_a_completer}\n" ;
echo "Nombre d'essais restants : {$essais_restants}\n" ;
$lettre = readline("Indiquez votre lettre en majuscule, et validez avec la touche Entrée : ") ;
$lettre_absente = true ;
for(????????){
if($mot_a_trouver[$i]==$lettre){
???????????
???????????
}
}
if($lettre_absente){
$essais_restants -= ???? ;
}
}
if($essais_restants>0){
echo "Bravo ! Vous avez trouvé le mot mystère : {$mot_a_trouver}\n" ;
}
else{
echo "Pendu ! Le mot mystère était {$mot_a_trouver}\n" ;
}
Exercice 7 :
Écrivez un tableau multidimensionnel associatif dont les clés sont des noms de personne et les valeurs des tableaux indicés la matière et la note obtenue.
Exemple de résultat avec un print_r :
Array ( [Dupont] => Array ( [anglais] => 12 [français] => 9 [math] => 8 ) [Franck] => Array ( [anglais] => 2 [français] => 19 [math] => 12 ) [Alice] => Array ( [anglais] => 10 [français] => 11 [math] => 10 ) [Stephane] => Array ( [anglais] => 14 [français] => 15 [math] => 18 ) [Coralie] => Array ( [anglais] => 12 [français] => 19 [math] => 5 ) )
Afficher les étudiants qui ont l’examen (pour obtenir l’examen il faut 10 de moyenne ou plus)
Exemple :
Franck a obtenu l’examen avec une moyenne de 11.00
Alice a obtenu l’examen avec une moyenne de 10.33
Stephane a obtenu l’examen avec une moyenne de 15.67
Coralie a obtenu l’examen avec une moyenne de 12.00
Exercice 8: Gestion des Événements en PHP
Contexte :
Vous devez créer un petit script PHP pour gérer des événements. Chaque événement a une date de début et une date de fin. Le script devra vérifier si un événement est en cours, à venir ou terminé, et afficher des informations pertinentes à l’utilisateur.
Consignes :
- Créer un tableau associatif pour stocker les événements :
- Chaque événement doit avoir un nom, une date de début, et une date de fin.
- Exemple de structure de tableau :
$evenements = [ "Formation PHP" => ["debut" => "2024-10-01", "fin" => "2024-10-15"], "Stage en entreprise" => ["debut" => "2024-11-01", "fin" => "2024-11-30"], "Examen final" => ["debut" => "2024-12-10", "fin" => "2024-12-12"], ];
- Vérifier l’état de chaque événement :
- Parcourir le tableau des événements.
- Pour chaque événement, vérifier si la date actuelle se trouve :
- Avant la date de début : l’événement est « À venir ».
- Entre la date de début et la date de fin (incluses) : l’événement est « En cours ».
- Après la date de fin : l’événement est « Terminé ».
- Afficher le résultat :
- Pour chaque événement, afficher son nom suivi de son état (à venir, en cours, terminé).
- Utilisez la fonction
date()
pour obtenir la date actuelle.
Exemple de sortie attendue :
Formation PHP : Terminé
Stage en entreprise : En cours
Examen final : À venir
Indications techniques :
- Utilisez la fonction
strtotime()
pour convertir les dates de chaîne en timestamps pour les comparaisons. - Utilisez
date('Y-m-d')
pour obtenir la date actuelle au format « YYYY-MM-DD ». - Comparez les timestamps pour déterminer l’état de chaque événement.
Exercice 9 : Gestion d’une Bibliothèque
Contexte :
Vous devez développer un système de gestion pour une bibliothèque qui contient non seulement des livres, mais aussi des médias numériques comme des e-books et des audiobooks. Ce système utilisera des classes abstraites pour modéliser les différents types de médias, des méthodes statiques pour gérer l’inventaire global, et mettra en œuvre des concepts avancés de POO en PHP, notamment l’utilisation de setters.
Consignes :
- Créer une classe abstraite
Media
:- Cette classe doit définir les propriétés et méthodes communes à tous les types de médias.
- Propriétés :
titre
: Le titre du média.auteur
: Un objet de typeAuteur
.
- Méthodes :
- Un constructeur qui utilise des setters pour initialiser
titre
etauteur
. - Des setters pour les propriétés
titre
etauteur
. - Une méthode abstraite
afficherDetails()
que les classes dérivées doivent implémenter. - Une méthode statique
compterMedias()
pour compter le nombre total de médias créés.
- Un constructeur qui utilise des setters pour initialiser
- Créer la classe
Auteur
:- Propriétés :
nom
: Le nom de l’auteur.prenom
: Le prénom de l’auteur.
- Méthodes :
- Un constructeur qui utilise des setters pour initialiser
nom
etprenom
. - Des setters pour les propriétés
nom
etprenom
. - Une méthode
__toString()
qui renvoie le nom complet de l’auteur.
- Un constructeur qui utilise des setters pour initialiser
- Propriétés :
- Créer des classes dérivées
Livre
,Ebook
, etAudiobook
:- Chacune de ces classes doit hériter de
Media
et implémenter la méthodeafficherDetails()
. - Ajoutez des propriétés spécifiques à chaque classe :
Livre
: PropriétéanneePublication
(année de publication).Ebook
: PropriététailleFichier
(taille du fichier en Mo).Audiobook
: Propriétéduree
(durée en minutes).
- Utilisez des setters dans le constructeur pour initialiser ces propriétés.
- Implémentez les méthodes
__toString()
pour chaque classe.
- Chacune de ces classes doit hériter de
- Créer des objets et afficher les détails :
- Instanciez plusieurs objets
Livre
,Ebook
, etAudiobook
. - Affichez les détails de chaque média en utilisant la méthode
__toString()
. - Utilisez la méthode statique
compterMedias()
pour afficher le nombre total de médias créés.
- Instanciez plusieurs objets
Correction :
https://github.com/SebInfo/exercicesRevisionsPHP
Ce contenu est réservé aux membres du site. Si vous êtes un utilisateur existant, veuillez vous connecter. Les nouveaux utilisateurs peuvent s'inscrire ci-dessous.