CNTEMAD EXAMEN - SESSION DE RATTRAPAGE - 04 au 08 mars 2024- Année Universitaire Mention
Niveau parcours Date (demi-journée) Durée Développement d'application d'entreprise Sans document :
2022-2023 : Informatique : L3 BDGL : 08/03/2024 (Après-midi) : 03 h 00 min Exercice 1: Connaissances
théoriques 1. Qu'est-ce que le génie logiciel ? 2. Comment spécifier un logiciel ? 3. Comment fabriquer un
logiciel de qualité ? 4. Qu'est-ce que le MVC? 5. Qu'est-ce qu'un processus de développement logiciel ?
Exercice 2: Connaissances pratiques Dans le cadre d'un appel d'offre, le cahier de charge comprend deux
sections: Une section distribuée aux soumissionnaires contenant : о с о O La description et le contexte du
projet Les spécifications applicatives, techniques, de réalisation et de suivi de projet Les spécifications
administratives et contractuelles Les formulaires des réponses Une section non distribuée comprenant:
O La méthodologie d'analyse des offres o Les détails des critères de sélection Votre supérieur
hiérarchique vous propose de réaliser une plateforme e-commerce : Travail à faire : Rédiger les trois
contenus ci-après d'un cahier de charge: a) Les spécifications applicatives: le contenu des écrans, le
contenu de la base de données, l'interface utilisateur, etc. b) Les spécifications techniques: localisation de
l'application et de la base de données (lieux d'hébergement), hébergement de serveur, réseau, etc. c) Les
spécifications de réalisation : la liste des contraintes imposées par le demandeur (langage de
développement, méthode d'analyse, hardware, etc.) N.B.: les exemples cités sont donnés à titre
d'indication. Vous devez déterminer les restes de chacune des spécifications selon vos connaissances
ChatGPT a dit :
Éléments mémorisés mis à jour
Voici les réponses détaillées de l'examen de rattrapage du 8 mars 2024 – L3 Informatique (BDGL) –
Développement d’applications d’entreprise :
Exercice 1 : Connaissances théoriques
1. Qu'est-ce que le génie logiciel ?
Le génie logiciel est l’ensemble des méthodes, techniques et outils destinés à la conception, au
développement, à la validation, à l’évolution et à la maintenance des logiciels de manière
systématique, disciplinée et quantifiable.
Il vise à produire des logiciels :
de qualité (fiables, sûrs, performants),
maintenables (évolutifs dans le temps),
et économiques (respect du budget et des délais).
2. Comment spécifier un logiciel ?
Spécifier un logiciel consiste à définir précisément ce qu’il doit faire, sans décrire comment il le fait.
Cela se fait par :
une spécification fonctionnelle : ce que le logiciel doit permettre à l’utilisateur de faire (ex. : gérer
un panier, rechercher un produit).
une spécification non fonctionnelle : performances attendues, contraintes techniques, sécurité,
etc.
des modèles formels ou semi-formels : comme les cas d’utilisation (UML), diagrammes de classes,
maquettes d’interfaces.
3. Comment fabriquer un logiciel de qualité ?
Pour fabriquer un logiciel de qualité, il faut :
1. Suivre un processus rigoureux (cycle en V, itératif, Agile…).
2. Spécifier clairement les besoins et impliquer les utilisateurs.
3. Utiliser des méthodes d’analyse et de conception structurées (UML, Merise…).
4. Choisir des outils adaptés (frameworks, IDE, gestionnaires de version…).
5. Tester à chaque étape : tests unitaires, d’intégration, fonctionnels…
6. Documenter le logiciel et sa conception.
7. Former les utilisateurs et assurer un support technique.
8. Effectuer des revues de code et utiliser des outils de contrôle qualité (ex. : SonarQube).
4. Qu'est-ce que le MVC ?
Le MVC (Modèle - Vue - Contrôleur) est un modèle architectural qui permet de séparer la logique
métier, l'affichage, et le contrôle des données.
Modèle (Model) : gère les données, la logique métier, la communication avec la base de données.
Vue (View) : interface utilisateur, ce que l’utilisateur voit.
Contrôleur (Controller) : fait le lien entre les actions de l’utilisateur et le modèle.
Cela facilite :
la maintenance du code,
la réutilisation des composants,
le travail en équipe (frontend/backend).
5. Qu'est-ce qu'un processus de développement logiciel ?
Un processus de développement logiciel est l’ensemble des étapes organisées et planifiées pour
développer un logiciel de manière structurée.
Les étapes typiques incluent :
Recueil des besoins
Analyse
Conception
Codage
Tests
Déploiement
Maintenance
Exemples de processus :
Cycle en V
Cycle en cascade
Modèle en spirale
Méthodologies Agiles (Scrum, Kanban)
Exercice 2 : Connaissances pratiques
Rédiger trois contenus du cahier des charges pour une plateforme e-commerce
a) Spécifications applicatives
Contenus :
Écrans principaux :
Page d’accueil
Catalogue des produits (avec filtres et tri)
Page produit (image, description, prix)
Panier
Paiement sécurisé
Espace client (profil, commandes)
Interface d’administration
Fonctionnalités :
Recherche de produits
Inscription / Connexion
Suivi des commandes
Gestion des stocks
Notifications par mail
Base de données :
Utilisateurs (id, nom, email, mot de passe hashé…)
Produits (id, nom, prix, stock, description, catégorie…)
Commandes (id, client, date, statut…)
Paiements (id, commande, montant, mode, statut)
Interface utilisateur (UI) :
Responsive (mobile / desktop)
Navigation simple et intuitive
Mise en avant des promotions
b) Spécifications techniques
Localisation de l’application :
Application hébergée sur un serveur web distant (OVH, AWS, Hostinger…)
Base de données :
Serveur MySQL ou PostgreSQL distant
Sauvegarde quotidienne
Hébergement :
Serveur mutualisé ou VPS
Nom de domaine (ex: [Link])
Certificat SSL (https)
Infrastructure réseau :
Accès permanent via internet
Redondance des serveurs (si besoin)
CDN (Content Delivery Network) si trafic élevé
Sécurité :
Authentification sécurisée
Protection contre injection SQL / XSS
RGPD (protection des données personnelles)
c) Spécifications de réalisation
Contraintes techniques imposées :
Langage : PHP 8.1 (ou Laravel), JavaScript ([Link])
Méthode d’analyse : UML (ou Merise)
Base de données : MySQL
Serveur : Apache ou Nginx
Matériel : hébergement sur VPS Linux
Contraintes de qualité :
Responsive Design
Accessibilité WCAG
Temps de chargement inférieur à 3s
Planning prévisionnel :
Phase d’analyse : 1 semaine
Conception et maquettes : 2 semaines
Développement : 3 à 4 semaines
Tests : 1 semaine
Déploiement : 2 jours
Souhaites-tu que je transforme cela en PDF prêt à imprimer ou envoyer ?
Souhaites-tu aussi que je rédige un corrigé type avec barème indicatif (notation /20 ou /40) ?
Vous avez dit :
CENTRE NATIONAL DE TÉLÉ-ENSEIGNEMENT DE MADAGASCAR (CNTEMAD) EXAMEN-SESSION - 23 au 27
octobre 2023 - Année Universitaire Niveau - parcours Mention : 2022-2023 : L3 BDGL-RS Informatique
Date (demi-journée) Durée : lundi à 14 h :03 h 00 min. Programmation Java Sans document Exercice 1(4
points) Citer 3 méthodes dans la classe String permet de rechercher de mots et de caractères. Exercice 2
(6 points) Écrire une fonction booléenne estpremier(n) qui renvoie VRAI si n est un nombre premier et
FAUX sinon. Par exemple, on devra avoir estpremier(17) = VRAI et estpremier(18) = FAUX. Exercice 3 (10
points) Écrire un programme JAVA qui enlève toutes les valeurs 5 d'un tableau T de 20 entiers positifs. À
chaque fois qu'une case contenant 5 est trouvée, toutes les cases supérieures sont décalées vers la
gauche et la dernière devenue libre, est mise à 0.
ChatGPT a dit :
Voici les réponses complètes et corrigées pour l'examen Java L3 BDGL-RS – session octobre 2023.
Exercice 1 (4 points)
Citer 3 méthodes dans la classe String permettant de rechercher des mots et des caractères.
Réponse possible :
indexOf(String s) : renvoie la position de la première occurrence de la chaîne s dans la chaîne
appelante, ou -1 si elle n’existe pas.
lastIndexOf(char c) : renvoie la position de la dernière occurrence du caractère c dans la chaîne, ou
-1 si elle n’existe pas.
contains(CharSequence cs) : renvoie true si la chaîne contient la séquence cs, sinon false.
Exercice 2 (6 points)
Écrire une fonction booléenne estpremier(n) qui renvoie VRAI si n est un nombre premier et FAUX
sinon.
Voici un exemple en Java :
java
CopierModifier
public class Test {
public static boolean estpremier(int n) {
if (n <= 1) {
return false;
for (int i = 2; i <= [Link](n); i++) {
if (n % i == 0) {
return false;
return true;
public static void main(String[] args) {
[Link](estpremier(17)); // true
[Link](estpremier(18)); // false
Exercice 3 (10 points)
Écrire un programme Java qui enlève toutes les valeurs 5 d'un tableau T de 20 entiers positifs. À
chaque fois qu'une case contenant 5 est trouvée, toutes les cases supérieures sont décalées vers
la gauche et la dernière case devient 0.
Voici un exemple de programme complet :
java
CopierModifier
public class SupprimerCinq {
public static void enleverCinq(int[] T) {
int n = [Link];
for (int i = 0; i < n; i++) {
if (T[i] == 5) {
// Décaler à gauche à partir de i
for (int j = i; j < n - 1; j++) {
T[j] = T[j + 1];
T[n - 1] = 0; // Mettre 0 dans la dernière case libre
i--; // Revenir un indice pour vérifier la nouvelle valeur à la position i
n--; // Réduire la longueur effective du tableau à parcourir
public static void afficherTableau(int[] T) {
for (int val : T) {
[Link](val + " ");
[Link]();
}
public static void main(String[] args) {
int[] T = {5, 3, 5, 6, 7, 5, 8, 9, 5, 1, 5, 0, 2, 5, 4, 5, 5, 10, 11, 5};
[Link]("Tableau avant :");
afficherTableau(T);
enleverCinq(T);
[Link]("Tableau après suppression des 5 :");
afficherTableau(T);
Si tu veux, je peux t'expliquer chaque partie du code ou te fournir une version plus optimisée.
Veux-tu aussi un barème de notation ?
Vous avez dit :
CNTEMAD EXAMEN - SESSION DE RATTRAPAGE - 04 au 08 mars 2024 - Année Universitaire Mention
Niveau - parcours Date (demi-journée) Durée Programmation Java Sans document : 2022-2023 :
Informatique : L3 BDGL-RS : 04/03/2024 (Après-midi) : 03 h 00 min Exercice 1 (4 points) Citer 3 méthodes
dans la classe String permet de transformer formats de caractères. Exercice 2 (6 points) Écrivez un
programme qui inverse tous les chiffres d'un nombre entier positif qui a été saisi au préalable. Par
exemple si vous entrez le nombre: 54321, le programme doit afficher le nombre: 12345. Exercice 3 (10
points) Ecrire l'algorithme permettant : De saisir 2 tableaux de nombres entiers de même taille chacun.
D'indiquer si ces 2 tableaux sont semblables ou identiques. Les tableaux sont semblables lorsqu'ils
comportent les mêmes éléments. Les tableaux sont identiques lorsqu'ils comportent les mêmes
éléments aux mêmes emplacements
ChatGPT a dit :
Voici les réponses complètes et corrigées pour cet examen Java L3 BDGL-RS, session rattrapage 4 mars
2024.
Exercice 1 (4 points)
Citer 3 méthodes dans la classe String qui permettent de transformer les formats de caractères.
Réponses possibles :
toUpperCase() : transforme une chaîne en majuscules.
toLowerCase() : transforme une chaîne en minuscules.
trim() : supprime les espaces en début et fin de chaîne.
Exercice 2 (6 points)
Écrire un programme qui inverse tous les chiffres d'un nombre entier positif saisi.
Exemple : si on entre 54321, on affiche 12345.
Voici un exemple de code Java :
java
CopierModifier
import [Link];
public class InverseChiffres {
public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
[Link]("Entrez un nombre entier positif : ");
int nombre = [Link]();
int inverse = 0;
while (nombre > 0) {
int chiffre = nombre % 10;
inverse = inverse * 10 + chiffre;
nombre = nombre / 10;
[Link]("Nombre inversé : " + inverse);
[Link]();
}
Exercice 3 (10 points)
Algorithme pour :
Saisir 2 tableaux de même taille
Indiquer si les deux tableaux sont semblables (mêmes éléments, ordre non important)
Indiquer si les deux tableaux sont identiques (mêmes éléments au même emplacement)
Solution en Java
java
CopierModifier
import [Link];
import [Link];
public class ComparerTableaux {
public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
[Link]("Entrez la taille des tableaux : ");
int taille = [Link]();
int[] tab1 = new int[taille];
int[] tab2 = new int[taille];
[Link]("Saisir les éléments du tableau 1 :");
for (int i = 0; i < taille; i++) {
tab1[i] = [Link]();
[Link]("Saisir les éléments du tableau 2 :");
for (int i = 0; i < taille; i++) {
tab2[i] = [Link]();
// Vérification identité (mêmes éléments aux mêmes positions)
boolean identiques = true;
for (int i = 0; i < taille; i++) {
if (tab1[i] != tab2[i]) {
identiques = false;
break;
// Vérification semblables (mêmes éléments, ordre non important)
// Pour cela on trie les tableaux puis on compare
int[] copieTab1 = [Link](tab1, taille);
int[] copieTab2 = [Link](tab2, taille);
[Link](copieTab1);
[Link](copieTab2);
boolean semblables = [Link](copieTab1, copieTab2);
if (identiques) {
[Link]("Les tableaux sont identiques.");
} else if (semblables) {
[Link]("Les tableaux sont semblables.");
} else {
[Link]("Les tableaux ne sont ni identiques ni semblables.");
}
[Link]();
Veux-tu aussi que je te prépare une version en pseudo-code ou un schéma d’algorithme ?
Veux-tu un barème indicatif ?
Vous avez dit :
CENTRE NATIONAL DE TELE-ENSEIGNEMENT DE MADAGASCAR (CNTEMAD) EXAMEN PREMIERE SESSION
Web dynamique Année Universitaire : 2019/2020 Mention INFORMATIQUE Licence 3 Mardi 24 Novembre
2020 (Matin) Durée: 02 Heures (8h à 10h) L31 BD/RS Document interdit 1- Donner un exemple de page
HTML contenant un code PHP. Expliquez la partie du code PHP. 2- Qu'est-ce qu'on entend par variables
dynamiques ? Donner un exemple. 3- Donner deux fonctions de traitement de chaînes. 4- Donner deux
types de variables composées. Donner des exemples. 5- Donner un exemple de page HTML utilisant le
boucle << WHILE ». 6- Dans les manipulations de fichiers: a) Donner deux exemples de fonctions de tests
b) Donner deux exemples d'ouverture et de fermeture des fichiers c) Donner un exemple de lecture des
données d) Donner un exemple d'écriture des données 7- Comment intégrer une base de données au
langage PHP. Expliquer étape par étape. 8- Expliquer le fonctionnement de la clause SELECT sur les
requêtes des bases de données. 9- Créer un code PHP qui permet de résoudre un système d'équation du
second degré. 10- Créer un code PHP/MySQL qui permet d'afficher les livres dans la base.
ChatGPT a dit :
Voici des réponses détaillées et complètes pour l’examen Web Dynamique CNTEMAD Licence 3 (BD/RS) –
24 Novembre 2020.
1. Exemple de page HTML contenant du code PHP + explication
php
CopierModifier
<!DOCTYPE html>
<html>
<head>
<title>Exemple PHP</title>
</head>
<body>
<h1>Bonjour</h1>
<p>
Aujourd'hui, nous sommes le <?php echo date("d/m/Y"); ?>.
</p>
</body>
</html>
Explication :
La partie PHP est entre <?php ... ?>. Ici, echo date("d/m/Y"); affiche la date actuelle au format
jour/mois/année dans la page HTML.
2. Variables dynamiques
Une variable dynamique en PHP est une variable dont le nom est stocké dans une autre variable.
Exemple :
php
CopierModifier
$nomVar = "prenom";
$$nomVar = "Alice"; // crée une variable $prenom contenant "Alice"
echo $prenom; // affiche "Alice"
3. Deux fonctions de traitement de chaînes
strlen($chaine) : retourne la longueur de la chaîne.
str_replace($recherche, $remplacement, $chaine) : remplace une partie de la chaîne.
4. Deux types de variables composées + exemples
Tableaux (arrays) :
php
CopierModifier
$fruits = array("pomme", "banane", "orange");
Objets :
php
CopierModifier
class Personne {
public $nom;
$p = new Personne();
$p->nom = "Jean";
5. Exemple de page HTML avec boucle while
php
CopierModifier
<!DOCTYPE html>
<html>
<body>
<ul>
<?php
$i = 1;
while ($i <= 5) {
echo "<li>Item $i</li>";
$i++;
?>
</ul>
</body>
</html>
6. Manipulation de fichiers
a) Deux fonctions de test
file_exists($fichier) : teste si un fichier existe.
is_readable($fichier) : teste si un fichier est lisible.
b) Deux exemples d'ouverture et de fermeture
fopen($fichier, "r") : ouvre un fichier en lecture.
fclose($handle) : ferme un fichier.
c) Exemple de lecture des données
php
CopierModifier
$handle = fopen("[Link]", "r");
$contenu = fread($handle, filesize("[Link]"));
fclose($handle);
echo $contenu;
d) Exemple d’écriture des données
php
CopierModifier
$handle = fopen("[Link]", "w");
fwrite($handle, "Bonjour tout le monde !");
fclose($handle);
7. Intégration d'une base de données en PHP – étapes
1. Connexion à la base :
php
CopierModifier
$conn = new mysqli("localhost", "user", "password", "basededonnees");
if ($conn->connect_error) {
die("Erreur de connexion : " . $conn->connect_error);
1. Préparation et exécution de requêtes (exemple SELECT) :
php
CopierModifier
$sql = "SELECT * FROM livres";
$result = $conn->query($sql);
1. Traitement des résultats :
php
CopierModifier
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "Titre : " . $row["titre"] . "<br>";
} else {
echo "0 résultats";
1. Fermeture de la connexion :
php
CopierModifier
$conn->close();
8. Fonctionnement de la clause SELECT en SQL
La clause SELECT permet de récupérer des données dans une ou plusieurs tables de la base de
données.
Syntaxe basique :
sql
CopierModifier
SELECT colonnes FROM table WHERE conditions ORDER BY colonne;
SELECT : colonnes à afficher (ex: * pour toutes)
FROM : table(s) concernée(s)
WHERE : filtre les lignes selon une condition
ORDER BY : trie les résultats
9. Code PHP pour résoudre un système d’équations du second
degré
Ici, on résout ax2+bx+c=0ax^2 + bx + c = 0ax2+bx+c=0 :
php
CopierModifier
<?php
$a = 1;
$b = -3;
$c = 2;
$delta = $b * $b - 4 * $a * $c;
if ($delta > 0) {
$x1 = (-$b - sqrt($delta)) / (2 * $a);
$x2 = (-$b + sqrt($delta)) / (2 * $a);
echo "Deux racines réelles : x1 = $x1, x2 = $x2";
} elseif ($delta == 0) {
$x = -$b / (2 * $a);
echo "Une racine double : x = $x";
} else {
echo "Pas de racines réelles.";
?>
10. Code PHP/MySQL pour afficher les livres dans la base
php
CopierModifier
<?php
$conn = new mysqli("localhost", "user", "password", "bibliotheque");
if ($conn->connect_error) {
die("Erreur de connexion : " . $conn->connect_error);
}
$sql = "SELECT titre, auteur FROM livres";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<ul>";
while ($row = $result->fetch_assoc()) {
echo "<li>" . htmlspecialchars($row["titre"]) . " - " . htmlspecialchars($row["auteur"]) . "</li>";
echo "</ul>";
} else {
echo "Aucun livre trouvé.";
$conn->close();
?>
Si tu veux, je peux aussi te fournir un corrigé formaté PDF ou détailler une question en particulier.