Exercice 1 : Structure des données et tableau
1. Déclaration du type Etudiant
Type Etudiant
Matricule : Entier
Nom : Chaine
Prénom : Chaine
DateNaissance : Enregistrement
Jour : Entier
Mois : Entier
Année : Entier
FinEnregistrement
Sexe : Caractère // 'M' pour masculin, 'F' pour féminin
Parcours : Chaine
FinType
2. Procédure pour créer un vecteur de N étudiants
Procédure CreerEtudiants(V : Tableau de Etudiant, N : Entier)
Début
Pour i ← 1 à N Faire
Ecrire("Entrer le matricule : ")
Lire(V[i].Matricule)
Ecrire("Entrer le nom : ")
Lire(V[i].Nom)
Ecrire("Entrer le prénom : ")
Lire(V[i].Prénom)
Ecrire("Entrer la date de naissance (jour mois année) : ")
Lire(V[i].DateNaissance.Jour, V[i].DateNaissance.Mois,
V[i].DateNaissance.Année)
Ecrire("Entrer le sexe (M/F) : ")
Lire(V[i].Sexe)
Ecrire("Entrer le parcours : ")
Lire(V[i].Parcours)
FinPour
Fin
3. Procédure pour vérifier si un étudiant X existe dans le vecteur
Fonction ExisteEtudiant(V : Tableau de Etudiant, N : Entier, X : Etudiant) : Booléen
Début
Pour i ← 1 à N Faire
Si V[i].Matricule = X.Matricule Alors
Retourner Vrai
FinSi
FinPour
Retourner Faux
Fin
4. Procédure pour afficher les étudiants en fonction du parcours
Procédure AfficherParcours(V : Tableau de Etudiant, N : Entier, ParcoursCherche :
Chaine)
Début
Ecrire("Liste des étudiants du parcours ", ParcoursCherche, " : ")
Pour i ← 1 à N Faire
Si V[i].Parcours = ParcoursCherche Alors
Ecrire("Matricule : ", V[i].Matricule, ", Nom : ", V[i].Nom, ",
Prénom : ", V[i].Prénom)
FinSi
FinPour
Fin
Exercice 2 : Notion des Pointeurs en C
a. Fonction pour permuter deux variables avec des pointeurs
#include <stdio.h>
// Fonction qui échange les valeurs de deux entiers en utilisant les pointeurs
void permuter(int *a, int *b) {
int temp = *a; // Stockage temporaire de la valeur pointée par a
*a = *b; // Affectation de la valeur de b à a
*b = temp; // Affectation de la valeur temporaire à b
}
b. Programme principal qui demande deux valeurs et utilise la fonction permuter
#include <stdio.h>
void permuter(int *a, int *b); // Déclaration de la fonction
int main() {
int x, y;
// Demande des valeurs à l'utilisateur
printf("Entrez la première valeur : ");
scanf("%d", &x);
printf("Entrez la deuxième valeur : ");
scanf("%d", &y);
// Affichage avant permutation
printf("Avant permutation : x = %d, y = %d\n", x, y);
// Appel de la fonction permuter
permuter(&x, &y);
// Affichage après permutation
printf("Après permutation : x = %d, y = %d\n", x, y);
return 0;
}
Exercice 3 : Connaissance Générale
Comparaison entre Java et C en algorithmique
Aspect Java C
Paradigme Orienté Objet et Procédural Procédural
Niveau de Langage Haut niveau Bas niveau
Portabilité Très portable grâce à la JVM Dépendant du système d’exploitation
Gestion de la mémoire Automatique (Garbage Collector) Manuelle (malloc, free)
Exécution Interprété par la JVM Exécuté directement par l’OS
Analyse des blocs de code en algorithmique
Variable x : Entier
Début
x ← 5
Si x = 0 Alors
Ecrire("Zero")
Sinon
Ecrire("Non Zero")
FinSi
Fin
Sortie attendue : Non Zero
Code B (Accès aux éléments d’un tableau)
Variable Tab : Tableau[1..5] de Entier
Début
Tab ← [1, 2, 3, 4, 5]
Ecrire(Tab[3]) // Indice 3 correspond à la valeur 3
Fin
Sortie attendue : 3
Code C (Boucle while)
Variable i : Entier
Début
i ← 0
TantQue i < 3 Faire
Ecrire(i, " ")
i ← i + 1
FinTantQue
Fin
Sortie attendue : 0 1 2