Seb-Info

Révisions PHP

Révisions PHP

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 :

  1. 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"],
    ];
            
  2. 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é ».
  3. 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 :

  1. 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 type Auteur.
    • Méthodes :
      • Un constructeur qui utilise des setters pour initialiser titre et auteur.
      • Des setters pour les propriétés titre et auteur.
      • 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.
  2. 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 et prenom.
      • Des setters pour les propriétés nom et prenom.
      • Une méthode __toString() qui renvoie le nom complet de l’auteur.
  3. Créer des classes dérivées Livre, Ebook, et Audiobook :
    • Chacune de ces classes doit hériter de Media et implémenter la méthode afficherDetails().
    • 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.
  4. Créer des objets et afficher les détails :
    • Instanciez plusieurs objets Livre, Ebook, et Audiobook.
    • 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.

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.

Connexion pour les utilisateurs enregistrés
   
Nouvel utilisateur ?
*Champ requis
Powered by WP-Members