REPUBLIQUE DU CAMEROUN REPUBLIC OF CAMEROON
Paix-Travail-Patrie Peace-Work-Fatherland
***** *****
MINESEC/OBC MINESEC/OBC
EXAMEN : BACCALAUREAT Durée : 3 heures
SERIE : TI Coef. : 3
SESSION : 202…
EPREUVE DE PROGRAMMATION
Aucun document ou matériel en dehors de ceux remis aux candidats par les examinateurs n’est autorisé.
PARTIE I : PROGRAMMATION WEB (10PTS)
Une entreprise de la place souhaite mettre sur pied une application web dynamique de gestion de son
magasin. Souhaitant faire une programmation modulaire, elle vous confie le module sur la recherche
des informations sur un article. L’interface de cette page se présente comme l’indique l’extrait de la
figure ci-dessous.
Afin de vous faciliter le travail, le code PHP ci-dessous vous est proposé :
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2 "[Link]
3 <html xmlns="[Link] xml:lang="fr">
4 <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>Rechercher un article dans le magasin</title>
6 </head>
7 <body>
8 <form action= "<?php echo $_SERVER['PHP_SELF']?>" method="post" enctype="application/x-
www-form-urlencoded">
9 <fieldset><legend><b>Rechercher un article en magasin</b></legend>
10 Mot-clé: </td><td><input type="text" name="motcle" size="40" maxlength="40"
value="<?php $_POST['motcle']?>"/>
11 Dans la catégorie : <select name="categorie">
12 <option value="tous">Tous</option>
13 <option value="informatique">Informatique</option>
14 <option value="divers">Divers</option>
15 </select>
16 Trier par : <select name="tri">
17 <option value="prix">Prix</option>
18 <option value="categorie">Catégorie</option>
19 <option value="id_article">Code</option>
20 </select>
21 En ordre: Croissant<input type="radio" name="ordre" value="ASC" checked="checked"/>
22 Décroissant<input type="radio" name="ordre" value="DESC" />
23 Envoyer</td><td><input type="submit" name="" value="OK"/>
24 </fieldset>
25 </form>
26 <?php
27 if(!empty($_POST['motcle'])) {
28 $idcom =new mysqli ("localhost","root","", "magasin");
29 $motcle=($_POST['motcle']);
30 $categorie=($_POST['categorie']);
31 $ordre=($_POST['ordre']);
32 $tri=($_POST['tri']);
33 //Requête SQL
34 $reqcategorie=($_POST['categorie']=="tous")?"":"AND categorie='$categorie'";
35 $requete="SELECT id_article AS 'Code article',designation AS 'Description',prix,
36 categorie AS 'Catégorie' FROM article WHERE lower(designation)
37 LIKE'%$motcle%'".$reqcategorie."ORDER BY $tri $ordre";
38 $result=$idcom–>query($requete);
39 if(!$result) {
40 echo "Lecture impossible";
41 }
42 else{
43 $nbcol=$result–>field_count;
44 $nbart=$result–>num_rows;
45 $titres=$result–>fetch_fields();
46 echo "<h3> Il y a $nbart articles correspondant au mot-clé : $motcle</h3>";
47 //Affichage des titres du tableau
48 echo "<table border=\"1\"> <tr>";
49 foreach($titres as $nomcol=>$val) {
50 echo "<th>", $titres[$nomcol]–>name ,"</th>";
51 }
52 echo "</tr>";
53 //Affichage des valeurs du tableau
54 for($i=0;$i<$nbart;$i++) {
55 $ligne=$result–>fetch_row();
56 echo "<tr>";
57 for($j=0;$j<$nbcol;$j++) {
58 echo "<td>",$ligne[$j],"</td>";
59 }
60 echo "</tr>";
61 }
62 echo "</table>";
63 $result–>close();
64 $idcom–>close();
65 }
66 }
67 ?>
68 </body>
69 </html>
En vous servant du code ci-dessus et de vos connaissances en programmation web, répondre
aux questions suivantes :
I/ Programmation HTML et JavaScript /3pts
1. Définir l’expression : Serveur web. (0.5pt)
2. Ecrire le code HTML qui permet d’insérer le contenu du formulaire (ligne 10 à 23) dans un
tableau de 5 lignes et 2 colonnes. (1.5pts)
3. Ecrire le code JavaScript qui permet, après un clic sur le bouton OK, de tester si le champ de
saisie Mot-clé est bien renseigné par une chaine de caractère et d’afficher le message "Saisissez
un mot-clé valide" dans le cas où aucune valeur n’est entrée ou
qu’elle soit erronée. (1pt)
II/ Programmation PHP /7pts
1. Nommer deux exemples d’environnement intégré de développement web. (0.5pt)
2. Décrire à l’aide d’un schéma le fonctionnement d’une page web dynamique (0.5pt)
3. Déterminer le format à utiliser pour enregistrer ce code. Justifier votre réponse. (0.5pt)
4. Identifier dans ce code :
4.1. Les numéros correspondants au début et à la fin du code PHP. (0.5pt)
4.2. Une variable de type booléen. (0.5pt)
5. Donner le rôle de la variable : $_POST['motcle']. (0.5pt)
6. Donner respectivement le rôle de la ligne 38 et la ligne 64. (0.5pt)
7. Donner le rôle de field_count, num_rows et fetch_fields() dans ce code. (1.5pts)
8. Ecrire la requête qui crée la base de données manipulée dans ce code. (0.5pt)
9. Réécrire le bout de code allant de la ligne 54 à la ligne 61 en utilisant exclusivement la boucle
while(). (1.5pts)
PARTIE II : PROGRAMMATION PROCEDURALE EN C /10 pts
Soit le programme C ci-dessous qui permet de produire partiellement une facture.
1: #include <stdio.h>
2: #include <stdlib.h>
3: #define Max 4
4: struct produit {
5: char designation[20];
6: int qantite ;
7: float prix;
8: float montant;
9: };
10: struct produit list[Max];
11: int i;
12: int main() {
13: for (i = 0; i < Max; i++) {
14: printf("\nEntrez le nom du produit : ");
15: scanf("%20s", list[i].designation);
16: printf("Entrez la quantité souhaitée: ");
17: scanf("%10s", list[i].quantite);
18: printf("Entrez le prix unitaire du produit : ");
19: scanf("%10s", list[i].prix);
20: list[i].montant= list[i].quantite* list[i].prix ;
21: }
22: printf("\n\n");
23: for (i = 0; i < Max; i++) {
24: printf("\nLes produits de la facture sont : %s %d %f = %f FCFA\n", list[i].designation,
list[i].quantite, list[i].prix, list[i].montant);
25: }
26: return 0;
27: }
En vous servant du code ci-dessus et de vos connaissances en programmation C, répondre
aux questions suivantes :
1. Définir le terme Programme. (0.5pt)
2. Décrire les deux bibliothèques utilisées dans ce code. (0.5pt)
3. Donner le rôle de :
3.1. La ligne 3. (0.5pt)
3.2. La ligne 10. (0.5pt)
3.3. La ligne 22. (0.5pt)
4. Exécuter pas à pas ce programme pour les valeurs suivantes :
list[0]= [Ordinateur, 5, 250000]
list[1]= [Disque dur externe, 20, 40000]
list[2]= [Souris optique, 12, 12000]
list[3]= [Anti-virus, 5, 25000]
5. Définir le prototype de la fonction somme () qui permettra de calculer le montant total des de la
facture. (2.5pts)
6. Indiquer à quel niveau sera placé la déclaration de la fonction somme () définie précédemment.
(0.5pt)
7. Donner la différence entre une variable globale et une variable locale. (0.5pt)
8. Réécrire le bout de code allant de la ligne 23 à la ligne 25 en utilisant la boucle while() (1pt)