Génie Logiciel - Java (IGL245)
Thème :
Junior
1 vues ·6/10 leçons

Épreuve d’Entraînement : Structures de Données © & Java (POO)

Bienvenue dans cette épreuve d’entraînement qui couvre les concepts clés du module IGL245. Vous avez 5 exercices à réaliser : 4 en langage C et 1 en langage Java.


Exercice 1 : Les Fichiers (Langage C)

Objectif : Écrire un programme C qui copie le contenu d’un fichier source.txt vers destination.txt caractère par caractère.

Consignes :

  1. Ouvrir le fichier source en lecture (r).
  2. Ouvrir le fichier destination en écriture (w).
  3. Lire chaque caractère jusqu’à EOF et l’écrire dans la destination.
  4. Fermer les fichiers.
Voir la Solution
#include <stdio.h>
#include <stdlib.h>

int main() {
    FILE *src, *dest;
    char ch;

    src = fopen("source.txt", "r");
    if (src == NULL) {
        printf("Erreur : Impossible d'ouvrir source.txt\n");
        return 1;
    }

    dest = fopen("destination.txt", "w");
    if (dest == NULL) {
        printf("Erreur : Impossible de créer destination.txt\n");
        fclose(src);
        return 1;
    }

    while ((ch = fgetc(src)) != EOF) {
        fputc(ch, dest);
    }

    printf("Copie terminée avec succès.\n");

    fclose(src);
    fclose(dest);

    return 0;
}

Exercice 2 : Listes Linéaires Chaînées (Langage C)

Objectif : Définir la structure d’un nœud et une fonction pour ajouter un élément au début de la liste.

Consignes :

  1. Définir struct Node (data int, next struct Node*).
  2. Écrire la fonction void push(struct Node** head_ref, int new_data).
Voir la Solution
#include <stdio.h>
#include <stdlib.h>

// Définition du nœud
struct Node {
    int data;
    struct Node* next;
};

// Ajouter au début
void push(struct Node** head_ref, int new_data) {
    // 1. Allouer le nœud
    struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));

    // 2. Assigner la donnée
    new_node->data = new_data;

    // 3. Faire pointer le nouveau nœud vers l'ancienne tête
    new_node->next = (*head_ref);

    // 4. Mettre à jour la tête pour pointer vers le nouveau nœud
    (*head_ref) = new_node;
}

Exercice 3 : Les Files (Queues) (Langage C)

Objectif : Implémenter l’opération enqueue (enfiler) pour une file basée sur un tableau.

Structure :

#define MAX 100
typedef struct {
    int items[MAX];
    int front, rear;
} Queue;
Voir la Solution
#include <stdio.h>
#define MAX 100

typedef struct {
    int items[MAX];
    int front, rear;
} Queue;

void enqueue(Queue* q, int value) {
    if (q->rear == MAX - 1) {
        printf("Erreur : File pleine (Overflow)\n");
    } else {
        if (q->front == -1) // Si c'est le premier élément
            q->front = 0;

        q->rear++;
        q->items[q->rear] = value;
        printf("Inséré : %d\n", value);
    }
}

Exercice 4 : Les Piles (Stacks) (Langage C)

Objectif : Implémenter l’opération pop (dépiler) pour une pile LIFO.

Structure :

#define MAX 100
typedef struct {
    int items[MAX];
    int top;
} Stack;
Voir la Solution
#include <stdio.h>
#define MAX 100

typedef struct {
    int items[MAX];
    int top;
} Stack;

int pop(Stack* s) {
    if (s->top == -1) {
        printf("Erreur : Pile vide (Underflow)\n");
        return -1;
    } else {
        int popped = s->items[s->top];
        s->top--;
        return popped;
    }
}

Exercice 5 : Introduction Java & POO (Langage Java)

Objectif : Créer une classe Livre représentant un livre dans une bibliothèque.

Consignes :

  1. Attributs privés : titre (String), auteur (String), prix (double).
  2. Constructeur pour initialiser les 3 attributs.
  3. Methode afficherDetails() qui affiche les infos.
  4. Methode main pour tester.
Voir la Solution
public class Livre {
    // 1. Attributs privés (Encapsulation)
    private String titre;
    private String auteur;
    private double prix;

    // 2. Constructeur
    public Livre(String titre, String auteur, double prix) {
        this.titre = titre;
        this.auteur = auteur;
        this.prix = prix;
    }

    // 3. Méthode d'affichage
    public void afficherDetails() {
        System.out.println("Livre : " + titre);
        System.out.println("Auteur : " + auteur);
        System.out.println("Prix : " + prix + " €");
        System.out.println("-------------------------");
    }

    // 4. Main pour tester
    public static void main(String[] args) {
        Livre l1 = new Livre("Le Petit Prince", "Antoine de Saint-Exupéry", 7.50);
        Livre l2 = new Livre("1984", "George Orwell", 10.90);

        l1.afficherDetails();
        l2.afficherDetails();
    }
}

Prêt à passer à la suite ?

Vous avez terminé cette leçon sur Épreuve d'Entraînement : Structures de Données (C) & Java (POO). Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.