تخطَّ إلى المحتوى الرئيسي
Wadifa Infoالوظيفة العمومية بالمغرب FR

نموذج مباراة ولوج المدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET) 2018 - المعلوميات

🏢 المدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET) 👤 السنة الأولى من سلك المهندس - مسلكا GLSID وII-BDCC 🎯 المعلوميات 📅 session de juillet 2018 👁️ 6 مشاهدة

باختصار

هذا نموذج امتحان كتابي سابق لمباراة السنة الأولى من سلك المهندس - مسلكا GLSID وII-BDCC لدى المدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET) (session de juillet 2018)، منشور على وظيفة إنفو للاطلاع والتحميل المجاني بصيغة PDF مع تصحيح مقترح.

الجهة المنظمة
المدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET)
الدرجة
السنة الأولى من سلك المهندس - مسلكا GLSID وII-BDCC
التخصص
المعلوميات
الدورة
session de juillet 2018
عدد الصفحات
15
لغة الأسئلة
الفرنسية
التصحيح
تصحيح مقترح متوفر في هذه الصفحة
موضوع اختبار المعلوميات في مباراة ولوج السنة الأولى من سلك المهندس - مسلكا GLSID وII-BDCC - المدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET)، دورة يوليوز 2018. الوثيقة الرسمية كما نشرتها المؤسسة على موقعها enset-media.ac.ma (نسخة مؤرشفة)، وتتكون من 15 صفحة. لا يتضمن التصحيح.
نموذج مباراة جديد كل يوم على قناة واتساب
هل أفادك؟ شاركه مع من يبحث
WhatsApp Facebook Telegram
تابع تحضيرك: 📄 نموذج مباراة ولوج السنة الأولى من سلك … 📄 نموذج مباراة ولوج المدرسة العليا لأسات… 📄 نموذج مباراة ولوج المدرسة العليا لأسات…
📝 نص أسئلة النموذج (مستخرج آلياً من الصفحات الممسوحة)

استُخرج هذا النص آلياً من صور الامتحان وقد يحتوي على أخطاء في القراءة — الصور أعلاه هي المرجع.

ECOLE NORMALE SUPÉRIEURE DE BU ‏أساتذة التعليم‎ 8
L'ENSEIGNEMENT | 1 ‏لأساتدة التعليم النقني اح‎ ee
TECHNIQUE DE MOHAMMEDIA d 3 N E T ‏المحمدية‎
‎UNIVERSITÉ HASSAN II DE CASABLANCA 5 ‏جامعة الحسن الثاني بالدار البيضاء‎
Concours d’accès en première année du cycle d’ingénieurs pour les filières :
— Génie du Logiciel et des Systèmes Informatiques Distribués (GLSID)
— Ingénierie Informatique, Big Data et Cloud Computing (II-BDCC)
Session : Juillet 2018
Epreuve d’Informatique
Durée : 3 heures
Remarques importantes :
- _ Ilest obligatoire de choisir votre ordre de préférence pour les deux filières GLSID et II-BDCC en précisant
votre filière de premier choix et votre filière de deuxième choix dans le formulaire ci-dessous :
- L'épreuve se compose de deux parties :
o Partie QCM, (Notée sur 60 points)
o Partie Algorithmique et Programmation, (Notée sur 40 points)
- L'usage de la calculatrice ou de tout autre appareil électronique est interdit.
- L'utilisation du blanco est strictement interdite.
- Aucun document n’est autorisé.
- Les extraits de code fournis dans l’épreuve sont écrits en langage C ou en langage Java.
- Aucune explication supplémentaire ne sera fournie aux candidats au cours de l’examen.
- Chaque question du QCM ne peut avoir qu’une seule réponse possible parmi les quatre choix. La réponse est
à reporter dans la grille de réponses fournie (page 15) en cochant la case correspondante .
- Pour les exercices 1 et 2 :
o Les réponses aux questions doivent être rédigées dans des feuilles de rédaction.
o Les solutions algorithmiques peuvent être rédigées en utilisant un pseudo langage ou l’un des
langages de programmation suivants : C, C++, C#, Java.
© La clarté et la précision de votre solution algorithmique sera prise en considération.
- Sont à rendre la page de garde (page 1), la grille de reponses (page 15) et les feuilles de rédaction.
Page 1 sur 15
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

المرسة العليا الأساتدة التعليم التقني ٍ اا يي
‎TECHNIQUE DE MOHAMMEDIA d EN 5 ET Sac‏
جامعة | لحسن الثاني با لدار البيضاء ‎UNIVERSITÉ HASSAN II DE CASABLANCA‏
‎Partie 1- QCM (60 points)‏
‎I. Lequel des opérateurs suivants a la priorité la plus faible ?‏
‎Lequel des opérateurs suivants a une associativité de droite à gauche ?‏ .2
‎L’expression 11U/22L*(3.75F-2)+3./6+.25/1.F est évaluée à :‏ .3
‎A) 0.5 B) 0.25‏
‎C) 0.0 D) 0.75‏
‎Le type de l’expression 3U/2*3.14F +1./1UL est:‏ .4
‎A) unsigned int B) double‏
‎C) float D) long double‏
‎La variable x est de type short, l’expression x= 30*1000+2768 est évaluée à :‏ .5
‎A) 32768 B) -32767‏
‎C) -32768 D) 0‏
‎Quel affichage sera produit par l’exécution du programme suivant :‏ .6
‎#include<stdio.h>‏
‎int main(){‏
‎int x = 0x10+ 010+10;‏
‎printf ("x = Ox%x", x);‏
‎return 0;‏
‎A) x.= 022 B) x =0x22‏
‎x =x22 D) Erreur de compilation‏ 0
‎Quel affichage sera produit par l’exécution du programme suivant :‏ .7
‎#include<stdio.h>‏
‎int main(){‏
‎int x =4, y =3*x--;‏
‎x = !5|| y++>12)printf("x=%d, y=#%d\n",x,y);‏ )+1
‎else printf("y= %d, x=%d\n",y,x);‏
‎return 0;‏
‎Page 2 sur 15‏
نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

ECOLE NORMALE SUPÉRIEURE DE La ‏أساتذة ال‎ a
L'ENSEIGNEMENT | 1 ‏المدرسة العليا الاساتدة التعليم الثقتي اح‎
TECHNIQUE DE MOHAMMEDIA 7 ‏المحمدية‎
‎UNIVERSITÉ HASSAN II DE CASABLANCA E N 5 E T ‏الثاني بالدار البيضاء‎ à ١| ‏جامعة‎
‎A) y=13, ‏مح‎ B) x= 1, y=13
0 ‏.1ح«‎ y=10 D) ÿ=10; x=0
8. Quel affichage sera produit par l’exécution du programme suivant ?
#include<stdio.h>
int main(){
char x=2;
for(;x++;);
printf("x=%d\n",x);
A) x=0 B) X=2
0 x=l D) x=-I
9. On considère la procédure suivante :
void f(int n){
int i,a,b,c;
a=0;b=2;c=0 ;
for(i=0;i<n;i++){
c=a+b;
a=b+1;
b=c+2;
System.out.print(a + " "+b+""#+c);
Pour n=sS, l’appel de cette procédure permet d’afficher:
A) 2337 5 B). 17 3326
C) 48 78 76 D) 29 47 45
10. Soit la procédure suivante :
void f(int n) +
int i, a=0, b=2, c=1;
for (i = 0; 1 > n; i=i+2) +
if (c % 2 == 1) i--;
else c = a + b;
a = 2 * ‏ونا‎
‎b = ‏ع‎ + 2;
System.out.print(a + " " + 5 + " " + ‏ولع‎
‎Page 3 sur 15
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

ECOLE NORMALE APEMIEURE DE ‏المدرسة:العليا لأساتذة التعليم الثقني ام‎
TECHNIQUE DE MOHAMMEDIA 7 E N S E T ‏المحمدية‎
‎UNIVERSITÉ HASSAN II DE CASABLANCA ‏جامعة | لحسن الثا تي با لدار لبيضاء‎
Pour n=8, le résultat affiché par la procédure est :
A) 831 B) 631
C) 1253 D) 853
11. Soit la procédure suivante :
void f(int n){
int i,j,a=0,b=0,c;
for(i=0;i<n;i++){
for(j=0;j<i;j++)
a=a+i;
b=b+a;
System.out.print(a +" "+ b);
Pour n=4, le résultat affiché par la procédure est :
A) 14 20 B) 15 22
C) 1620 D) 14 22
12. Soit la fonction suivante :
int f(int n) {
int[] T = new int[n + 2];
T[O] = T[1] = 1;
for (int 1 = 2; 1 <= n; i++) +
T[i] = 0;
for (int 3 = 0; j > ‏و1‎ j++)
1]1[ += 1][[ * TE - 3 - 113
return T[n];
L’exécution de l’instruction :
for (int i = @; 1 > 6; i++)
System.out.print(f(i) + " ‏ول("‎
‎dans la fonction principale permet d’afficher:
A) 1125 1442 B) 112716 42
C) 112615 42 D) 1226 14 44
Page 4 sur 15
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

ECOLE NORMALE SUPÉRIEURE DE La ‏أساتذة ال‎ ä
L'ENSEIGNEMENT | 1 ‏المدرسة العليا لاساتذة التعليم الثقتي اح‎
TECHNIQUE DE MOHAMMEDIA 7 ‏المحمدية‎
‎UNIVERSITÉ HASSAN II DE CASABLANCA E N 5 E T ‏الثاني بالدار البيضاء‎ : ١| ‏جامعة‎
‎13. Soit la procédure suivante :
void f() +
int T[] = { 19, 20, -35, 35, -10, 5, -10, 20};
inta =0, b=0,n=8;
for (int 1 = 0; 1 > n; i++) +
a = a + T[il;
b=b#+(i*T[i]);
int c = ‏رط‎
‎for (int j = 1; j > n; j++) +
b=b+a-n*T[n- ji];
if (b>c)c=b;
System.out.print(a + " "+b+""#+c);
Le résultat affiché par la procédure est :
A) 35 165 290 B) 35 168 290
C) 35 160 320 D) 45 180 340
14. Soit la fonction suivante :
int f(int T[], int n) +
int a = -1;
for (int 1 = 0; 1 > n; i++) +
int b = 0;
for (int j = ©: j > n; j++) +
int index = (i + j) 7 43
b += j * T[index];
a =Math.max(a, 7
return a;
Pour 1][ = { 1, 20, 2, 10 } et n=4, l’appel à la fonction permet de retourner :
A) 78 B) 102
C) 70 D) 72
Page 5 sur 15
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

ECOLE NORMALE SUPÉRIEURE DE 1 ‏أساتذة ال‎ ä
L'ENSEIGNEMENT | 1 ‏المدرسة العليا الاساتدة التعليم الثقتي اح‎
TECHNIQUE DE MOHAMMEDIA 7 ‏المحمدية‎
‎UNIVERSITÉ HASSAN II DE CASABLANCA E N 5 E L ‏الثاني بالدار البيضاء‎ à | ‏جامعة‎
‎15. Soit la procédure suivante :
void f(int T[], int n, int x) {
int i;
for (i = 0; 1 > 0 - 1; i++)
if (T[i] > T[i + 1]) break;
int a = (i+1) %n, b = i;
while (a != b) +
if (T[a]l + T[b] == x)
System.out.print("A");
if (T[a] + T[b] > x) +
a=(a+1) 7 53
System.out.print("C");
} else
b=(n+b-1)%n;
System.out.print("B");
Pour T[] = { 11,15,6,8,9,10 }, ‏موحد‎ et x=18, l’appel à la procédure permet d’afficher:
A) ACB AC B) CACAB
C)BACBC D) CACB
16. Soit la fonction suivante :
int f(int T[], int n) +
int à ‏و‎ b;
for (int 1 = 0; 1 > n; i++) +
if (T[i] <= 0 || T[i] > n) continue;
a = T[i];
while (T[a - 1] != a) {
b = T[a - 1]; T[a - 1] = a; a = ‏و‎
‎if (a <= © || a > n) break;
for (int 1 = 0; 1 > n; i++)
if (T[i] != i + 1) return i + 1;
return n + 1;
Pour T{]={ 1,2, 7, 6,9,-1,-10, 15 } et n=8, l’appel à la fonction permet de retourner :
‏ب‎ 2 B) 7
C) 3 D) 5
Page 6 sur 15
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

ECOLE NORMALE SUPÉRIEURE DE ‏ب‎ "]] 1
L'ENSEIGNEMENT | 1 ‏اح‎ CR ‏لاساتدة التعليم‎ os
TECHNIQUE DE MOHAMMEDIA 7 ‏المحمدية‎
‎UNIVERSITÉ HASSAN II DE CASABLANCA E N 5 E T ‏الثاني بالدار البيضاء‎ à ١| ‏جامعة‎
‎17. Soit la fonction suivante :
int f(int n) +
int[] T = new int[n + 2];
T[0] = 0; T[1] = 1;
for (int i = 2: 1 <= n; i++)
T[i] = T[i - 1] + T[i - 2];
return T[n];
Pour n=7, l’appel à la fonction permet de retourner :
A) 21 B) 8
03 D) 17
18. Soit la procédure suivante :
void f(int T[], int n) {
int a =0, b = 0;
for (int k = 1; k <= ‏زه‎ k++) +
a = b = -1;
for (int 1 = 0; 1 <= n - k; i++) +
b = Ti];
for (int j = 1: [ > k; ‏(++ر‎
‎if (T[i + j] > b) b = T[i + j];
if (b > a)a = b;
System.out.print( à + " "+b);
Pour T= { 10, 20, 30, 50, 10, 70, 30 } et ‏,حم‎ l’appel à la procédure permet d’afficher:
A) 70 70 B) 10 10
C) 70 30 D) 50 10
19. Les variables x et y du code suivant auront respectivement les tailles :
struct str1i{
signed char à;
unsigned short b;
float c;
Page 7 sur 15
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

ECOLE NORMALE SUPÉRIEURE DE BU ‏أساتذة التعليم‎ à
L'ENSEIGNEMENT | 1 ‏اح‎ ss ‏الميرجنةالغاياالأضاتدة التعزيم‎
TECHNIQUE DE MOHAMMEDIA d EN ET ‏المحمدية‎
‎UNIVERSITÉ HASSAN II DE CASABLANCA 5 ‏جامعة الحسن الثاني بالدار البيضاء‎
union str2{
signed char à;
unsigned short b;
float c;
‏زلا‎
‎A) 7 Octets et 4 Octets B) 8 Octets et 4 Octets
0 9 Octects et 4 Octets D) 8 Octets et 8 Octets
20. Dans une itération conditionnelle, l'invariant de boucle est :
A) une instruction à exécuter à chaque passage dans la boucle.
B) une expression booléenne vérifiée pendant toute l’éxcution de la boucle.
0 une expression constante définie avant d’entrer dans la boucle.
D) une instruction à exécuter en fin de boucle.
21. Que vaut la paire (x, y) à la fin de l’itération conditionnelle suivante :
int x=24, y=30, temp;
while(y){
temp=x; x=y; y=temp#y;
A) (3, 0) B) (24, 6)
C) (30, 6) D) (6, 0)
22. Soit f une fonction récursive et soit ‏ع‎ une fonction itérative équivalente à f. Laquelle des
affirmations suivantes est vraie ?
A) f est toujours meilleure que g.
B) + utilise plus de mémoire que g.
0 + utilise moins de mémoire que g.
D) g est toujours plus meilleure et simple à écrire que f.
23. Soit f une fonction récursive utilisant une récursivité terminale. Laquelle des affirmations
suivantes est vraie concernant la dérécusion de + (la version itérative équivalente à 7
A) Elle peut être implémée en utilisant une boucle.
B) Elle peut être implémentée en utilisant un ensemble d’instructions if.
0 Elle peut être implémentée par une suite d'instructions dans un bloc.
D) Elle n’est pas possible.
Page 8 sur 15
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

SUPÉ _ sel À =
FOUT L'ENSEIGNEMENT ٍ CR RE es
TECHNIQUE DE MOHAMMEDIA 7 EN 5 ET ‏المحمدية‎
‎UNIVERSITÉ HASSAN II DE CASABLANCA ‏جامعة | لحسن الثا تي با لدار البيضاء‎
24. Soit la fonction récursive f suivante où ‏ع‎ est une fonction non récursive qui modifie les valeurs
des parmaètres x et y :
void +) int x,int y, int n +
1+) n > © ){ 8(&x,&y); F(x,y,n-1); g(8x,8y);}
La fonction + reprsénte un exemple typique de la récursivité :
A) Imbriquée B) terminale
0) non terminale D) croisée
25. Soient les fonctions f et ‏ع‎ suivantes. Quelle est la valeur reoutrnée par l’appel g(F(2,1)) ?
int f( int x, int ‏لا‎ +
1+) x = = © )return y;
return +) x - 1, 2*y);
int ‏)ع‎ int x ){
if( x <= 1 ) return 1;
return 3*g( x-1 ( + ‏)ع‎ x-2 );
A) 43 B) 44
0 42 D) 41
26. Soit la procédure récursive suivante :
void f(int n) +
if (n > 0) +
System.out.print(n+ " ‏ول("‎
‎f(n - 1);
f(n - 1);
pour n=4, l’appel à la procédure permet d’afficher:
A) 333 B) 432411211321
0432112113 211 11 D) 1234431
27. Soit la procédure récursive suivante :
void f(int n) +
if (n >0) +
System.out.print(n+" ‏ول"‎
‎f(n - 1);
System.out.print(n-1+" ‏و"‎
‎Page 9 sur 15
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

‎ee‏ لأسائتة؛ التعليم التقني ٍ اا يي
المحمدية ‎TECHNIQUE DE MOHAMMEDIA 7 EN 5 ET‏
جامعة | لحسن الثاني.با لدار البيضاء ‎UNIVERSITÉ HASSAN II DE CASABLANCA‏
‎pour 04, l’appel à la procédure permet d’afficher:‏
‎A)433123 B) 123401234‏
‎D) 43210123‏ 043211134
‎On insère les éléments 4, 3, 12, 7, 9 (dans cet ordre) dans un arbre binaire de recherche non‏ .28
‎équilibré (dont les éléments les plus petits se trouvent à gauche et les plus grands se trouvent‏
‎à droite). Dans quel ordre vont-ils ressortir pour un affichage en préfixé?‏
‎A) 431279 B) 347912‏
‎D) 437912‏ 971234 0
‎Quelle est la complexité dans le pire des cas de la recherche d'un élément dans un arbre binaire‏ .29
‎de recherche équilibré de n éléments ?‏
‎A) @(n) B) © (n log n)‏
‎C) © (log n) D) © (n2)‏
‎Soit l’arbre binaire A suivant :‏ .30
‎Et soit la procédure suivante :‏
‎void afficherContenuArbre(Noeud *a){‏
‎if(a){‏
‎afficherContenuArbre(a->filsGauche) ;‏
‎afficherContenuArbre(a->filsDroit) ;‏
‎printf("%d",a->contenu) ;‏
‎L’appel à cette procédure, avec le paramètre l’arbre de la figure ci-dessus, permet d’afficher :‏
‎A)927164853 B) 3782114596‏
‎D) 9271364 5‏ 3 0921764
‎Page 10 sur 5‏
نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

ECOLE NORMALE SUPÉRIEURE DE ins ‏ال*‎ SAS ä
L'ENSEIGNEMENT U ‏المررسة العليا لأساتدة التعليم الثقتني اح‎
TECHNIQUE DE MOHAMMEDIA + ‏المحمدية‎
‎UNIVERSITÉ HASSAN II DE CASABLANCA E N 5 2 T ‏الثاني بالدار البيضاء‎ à | ‏جامعة‎
Partie 2 - Algorithmique et programmation ( 40 points)
Exercice 1 (20 points) :
On souhaite développer une application qui permet d’effectuer des traitements sur des images en
256 niveaux de gris ; Chaque pixel de l’image est représenté par un entier compris entre 0 et 255.
Chaque image de dimension W ‏عر‎ H ou W représente la largeur de l’image et H représente la hauteur
de l’image, devrait être stockée, ligne par ligne, sous forme d’un vecteur représenté par un tableau
à une seule dimension de taille W x H.
Exemple d’une image de taille W=4 et H=3 dans sa forme Matricielle :
ENTER
Structure de la même image stockée sous forme d’un vecteur :
تددح اتات
Questions :
1. Ecrire les déclarations des variables globales de l’application permettant de représenter
l’image.
2. Ecrire une fonction « initData », qui reçoit en paramètres la largeur et la hauteur de l’image,
et qui permet de créer une image en l’initialisant avec des données aléatoires.
3. Ecrire une fonction » afficherImage » qui permet d’afficher les données de l’image sous
forme matricielle.
4. Ecrire une fonction qui permet de calculer et retourner l’histogramme de l’image.
L’histogramme d’une image est une courbe représentée par un tableau d’entiers de taille 256.
Chaque élément d’indice m de l’histogramme contient la fréquence de répétition du pixel de
couleur m dans l’image. C’est-à-dire le nombre pixels de l’image ayant la couleur m.
‎Page 11 sur 15‏
نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

ECOLE NORMALE SUPÉRIEURE DE RL ‏أساتذة التغلته‎ ä
L'ENSEIGNEMENT | Ï ‏اح‎ # l'es nn nus Ne
TECHNIQUE DE MOHAMMEDIA LÉ E N S FE T ‏دية‎ |
UNIVERSITÉ HASSAN II DE CASABLANCA ‏جامعة الحسن الثاني بالدار البيضاء‎
5. Ecrire une fonction « getHistogramme », qui permet de remplacer l’image créée par une
autre image dont chaque pixel représente la moyenne des 8 pixels qui l’entourent.
6. Evaluer l’ordre de complexité algorithmique de chaque fonction de cette application.
7. Ecrire le code du programme principal qui permet de tester l’ensemble des fonctions de cette
application pour le cas d’une image de dimension W=2@ et H=10.
Exercice 2 (20 points) :
Le text mining est une technique permettant d’automatiser le traitement de gros volumes de
contenus textuels. Le texte mining peut notamment être utilisé dans le cadre des études de
marketing, de la veille, de la social intelligence, des études de satisfaction, etc.
C’est dans ce cadre qu’on se propose dans un premier temps de stocker et analyser les mots d’un
corpus de textes constituant l’ensemble des échanges des commerciaux d’une entreprise avec leurs
clients. Pour simplifier, on suppose que les documents textes du corpus sont tous exprimés en
français. On suppose aussi avoir la liste des URLs des documents du corpus permettant de les
localiser et d’y acceder en ligne.
Un premier niveau d’analyser qu’on se propose de faire, consiste à determiner la fréquence de
chaque mot par document en omettant d’analyser les mots inutiles (Articles, déterminants,
Préposition, Conjonction, etc). On suppose disposer d’une fonction de prétraitement permettant de
faire le nettoyage d’un document texte en produisant la liste des mots ramenés dans leur forme de
base. Une structure mémoire doit être définie pour le stockage des résultats de l’analyse. Pour cela,
la structure d’une table d’association associant à un ensemble de clefs (les mots) à un ensemble
correspondant de valeurs (liste de fréquences) est adoptée. Pour une meilleure efficacité, cette
structure sera implémentée par une table de hachage pour mettre en cache l’ensemeble de mots et
leurs fréquences comme l’illustre la figure 1.
Le principe d’une table de hachage consiste à calculer pour chaque clef K (mot) un entier de
hachage h(k) compris entre @ et n-1 (où n est la taille de la table). On utilise ensuite un tableau
T de taille n pour stocker les couples (clef, valeur) ayant le même entier de hachage sous forme
d’une liste simplement chainée. La valeur T[h(k) ] est l’adresse du noeud en tête de la liste des
couples ayant le même code h(k). Les listes chainées sont utilisées comme solution au problème
Page 12 sur 15
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

ECOLE NORMALE SUPÉRIEURE DE BU ‏أساتذة التعليم‎ a
L'ENSEIGNEMENT | 1 ‏لأساتدة التعليم النقني اح‎ ee
TECHNIQUE DE MOHAMMEDIA d EN 5 ET ‏المحمدية‎
‎UNIVERSITÉ HASSAN II DE CASABLANCA ‏جامعة الحسن الثاني بالذار البيضاء‎
de collision. Le nœud d’une liste est une structure composée de trois champs : Le mot, sa liste des
fréquenes (un tableau de taille m, où m est le nombre de documents du corpus).
Liste des URLs des documents 0
0 1 0 i mi
‏ب‎ Application de pré- j
traitement et .
d'Analyse de ,
Ë corpus de textes |
| | CII TT Te | |
(Fichiers Textes bruts) 5
Zooms sur le Nœud contenant la paire (clé, valeur)
Table de hachage
Figure 1 : Schéma de spécification de l’application d'analyse de corpus de textes
La fonction de hachage h(k) est une fonction qui transforme la clef (le mot) en un entier 1 compris
entre @ et n-1 (l’indice dans le tableau T). Etant donné que les clefs sont des mots et pour définir
une bonne fonction de hachage, on utilise la méthode suivante :
On transforme le mot k par une valeur entière v4 calculée par :
‏يرت‎ = ÿ, c;ai
Où ci est le code numérique (code ascii) du ième caractère du mot ‏»ا‎ et a un paramètre entier
strictement positif choisi arbitrairement sauf qu’il ne doit être une puissance de 2.
La fonction de hachage est alors définie par :
h(k) = Ur V0 n
Où n est la taille de la table choisi comme nombre premier suffisament grand.
Page 13 sur 15
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

ECOLE NORMALE SUPÉRIEURE DE _. ‏أسانثة”إل‎ .
L'ENSEIGNEMENT | 1 ‏اح‎ ss ‏الميرجنةالغاياالأضاتدة التعزيم‎
TECHNIQUE DE MOHAMMEDIA d ENSET ‏المحمدية‎
‎UNIVERSITÉ HASSAN II DE CASABLANCA ‏جامعة الحسن الثاني بالدار البيضاء‎
Questions :
1. Donner les declarations nécessaires pour contruire la structure de la table de hachage. On
supposera que le nombre de documents du corpus noté m est constant.
2. Soit di le ième document du corpus connu par son URL. Donner le jeu des fonctions
(méthodes) nécessaire pour extraire les mots de di et les placer avec leurs fréquences dans la
table T. On supposera que T est une variable static déjà déclarée et on utilisera la fonction de
pré-traitement dont le prototype est :
char** preTraitement(char* url, int *nbMots) ; //langage C
String[] preTraitement(String url ) ; // langage Java
3. Ecrire la fonction qui calcule le code de hachage d’un mot k.
4. Ecrire la fonction de construction d’un nouveau nœud (constructeur) pour un mot ‏ا‎ extrait du
document di. Les fréquences d’un mot ‏عا‎ pour les autres documents sont initialisées à la valeur
5. Ecrire la fonction qui ajoute un mot k à la table 1. La fonction doit mettre à jour la fréquence
si le mot Kk est déjà placé dans 1. Les nouveaux nœuds sont toujours ajoutés en tête.
6. Ecrire la fonction qui permet de traiter l’extration et le placement dans la table T de tous les
documents du corpus.
7. Ecrire la fonction qui permet de rechercher la liste des mots les plus fréquents dans chaque
document.
‎Page 14 sur 15‏
نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

»» | - ‏يت‎ CR MERE ‏التترل لكاي‎
Concours d'accès en 1è"° année des Cycles d'Ingénieurs 61510 et II-BDCC
Numéro de l’examen : Lo | Signature :
Grille de réponses pour la partie QCM
" Cocher, avec stylo à encre, la case correspondante à la bonne
réponse.
" Réponse juste : 2 pts
"Réponse fausse : Opt
‏ل[ ا ا‎
‏لا )17 | ا‎ || | | [
En, 117) ‏ا نا‎
‏]ا ا‎ [| ١ ‏لقا‎ | | | | [|
Es ‏ا‎ | || nn | | | |
En, ‏لا ,)1 ]ا‎ | | | | [|
En, ‏ان ,11 انا ان‎ 1117
‏اا ا‎ En ‏ا‎
‏لا | |[ ]ا اق‎ | | | | [|
Es, En || | |
‏]ا ا‎ [| | En | | | | [|
‏نا هن تاكن‎ 777) En 1117
CNRS RER
En, 1117) En ‏ا‎ | | |
‏ا 0 اا لق‎
‏لا |[ [ |[ ] اق‎ || | | |
‎Page 15 sur 15‏
نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

✅ التصحيح المقترح

هذا تصحيح مقترح من إعداد فريق wadifa-info لمساعدتك على فهم منهجية الإجابة — وليس تصحيحاً رسمياً صادراً عن الإدارة المنظِّمة. أسئلة هذا الامتحان محررة بالفرنسية، لذلك التصحيح محرر بالفرنسية أيضاً.

Ce modèle est l'épreuve d'informatique du concours d'accès en 1re année du cycle d'ingénieurs de l'ENSET Mohammedia (filières GLSID et II-BDCC), session de juillet 2018. Durée : 3 heures, sans calculatrice ni documents. Deux parties : un QCM de 30 questions (60 points ; +2 par bonne réponse, 0 pour une mauvaise) et une partie algorithmique et programmation (40 points, deux exercices). Les extraits de code sont en C ou en Java. Voici une correction proposée.

💡 Méthode : une mauvaise réponse vaut 0 (pas de point négatif) : ne laissez aucune case vide. Pour les codes à dérouler, tenez un tableau des variables tour par tour ; c'est la seule méthode fiable sans machine.

Partie 1 — QCM (60 points)

  1. A) ||. Ordre de priorité en C : & > ^ > | > && > || ; le OU logique est le plus faible des quatre.
  2. D) <<=. Les opérateurs d'affectation (=, +=, <<=…) s'associent de droite à gauche ; la virgule, << et && s'associent de gauche à droite.
  3. D) 0.75. 11U/22L est une division entière : 0 ; 0 × (3.75F−2) = 0.0 ; 3./6 = 0.5 (double) ; .25/1.F = 0.25. Total : 0.75.
  4. B) double. 3U/2 = 1 (unsigned) ; × 3.14F → float ; 1./1UL → double (1. est un double) ; float + double → double.
  5. C) −32768. 30*1000+2768 = 32768, qui dépasse le maximum d'un short (32767) ; en complément à deux sur 16 bits, 32768 est converti en −32768 (comportement de toutes les machines usuelles).
  6. B) x = 0x22. 0x10 = 16 (hexadécimal), 010 = 8 (octal), 10 = 10 : x = 34 = 0x22 ; le format « 0x%x » affiche donc x = 0x22.
  7. A) y=13, x=0. y = 3*x-- = 12 puis x = 3. Dans le if, = a la plus faible priorité : x = (!5 || y++>12). !5 vaut 0, on évalue donc y++>12 : 12>12 est faux et y devient 13. x reçoit 0, la condition est fausse : on passe dans le else qui affiche « y= 13, x=0 ».
  8. C) x = 1. La boucle s'arrête quand x++ vaut 0 : x monte jusqu'à 127, passe à −128 (char signé), remonte jusqu'à 0 ; à ce test la valeur 0 arrête la boucle mais l'incrément a lieu quand même : x = 1.
  9. D) 29 47 45. (a, b, c) après chaque tour : (3, 4, 2), (5, 9, 7), (10, 16, 14), (17, 29, 27), (29, 47, 45).
  10. B) 6 3 1. c = 1 est impair et n'est jamais modifié (on passe toujours dans i--) ; i avance donc de +1 par tour (8 tours). a = 2b et b = c+2 = 3 : à la fin a = 6, b = 3, c = 1.
  11. A) 14 20. À l'étape i, a augmente de i×i : a = 0, 1, 5, 14 ; b cumule a : 0+1+5+14 = 20.
  12. A) 1 1 2 5 14 42. T[i] = Σ T[j]·T[i−j−1] : c'est la récurrence des nombres de Catalan (1, 1, 2, 5, 14, 42).
  13. A) 35 165 290. a = somme des T[i] = 35 ; b initial = Σ i·T[i] = 165, puis on calcule les « sommes pondérées par rotation » b = b + a − n·T[n−j] : −5, 110, 105, 220, −25, 290, 165 (dernier b = 165), dont le maximum c = 290.
  14. D) 72. Pour chaque rotation i, b = Σ j·T[(i+j)%4] : i=0 : 0·1+1·20+2·2+3·10 = 54 ; i=1 : 0·20+1·2+2·10+3·1 = 25 ; i=2 : 0·2+1·10+2·1+3·20 = 72 ; i=3 : 0·10+1·1+2·20+3·2 = 47. Maximum : 72.
  15. D) C A C B. Le tableau est trié puis tourné : la rupture est en i=1 (15 > 6). a = 2 (plus petit, 6), b = 1 (plus grand, 15). 6+15 = 21 > 18 → b = 0 ; 6+11 = 17 < 18 → a = 3, « C » ; 8+11 = 19 → b = 5 ; 8+10 = 18 → « A », puis ce n'est pas < 18 donc b = 4 ; 8+9 = 17 → « C », a = 4 = b : sortie, puis « B ». Affichage : CACB.
  16. C) 3. La fonction place chaque valeur v ∈ [1, n] à la case v−1 (tri par permutation cyclique) puis renvoie le plus petit entier positif absent. Valeurs présentes dans [1, 8] : 1, 2, 6, 7 ; le premier manquant est 3.
  17. C) 13. Suite de Fibonacci avec T[0] = 0, T[1] = 1 : 0, 1, 1, 2, 3, 5, 8, 13 → T[7] = 13.
  18. Réponse probable : B) 10 10. Pour chaque taille de fenêtre k, la boucle calcule a = maximum, sur toutes les fenêtres de k cases consécutives, du minimum de la fenêtre ; b garde le minimum de la dernière fenêtre. Tel qu'il est écrit, l'affichage est dans la boucle sur k et produit 7 paires collées : « 70 30 », « 30 30 », « 20 10 », puis « 10 10 » quatre fois. Aucune option ne reproduit cette suite ; la valeur finale (k = n : minimum du tableau entier) est « 10 10 », ce qui correspond à B si l'on considère que l'affichage était prévu après la boucle. Si l'on ne retient que la première paire affichée, ce serait C.
  19. B) 8 octets et 4 octets. Structure : char (1) + 1 octet de remplissage pour aligner le short sur 2 + short (2) + float (4) = 8. Union : taille du plus grand membre (float) = 4.
  20. B) L'invariant est une propriété (expression booléenne) vraie avant la boucle et après chaque itération, donc pendant toute l'exécution de la boucle.
  21. D) (6, 0). C'est l'algorithme d'Euclide : (24, 30) → (30, 24) → (24, 6) → (6, 0). x contient le PGCD 6.
  22. B) f utilise plus de mémoire que g. Chaque appel récursif empile un contexte (paramètres, variables locales, adresse de retour) sur la pile d'exécution.
  23. A) une boucle. Une récursivité terminale (l'appel récursif est la dernière action) se transforme directement en boucle while, sans pile.
  24. C) non terminale. Après l'appel récursif f(x, y, n−1), il reste une instruction à exécuter (g(&x, &y)) : l'appel n'est pas la dernière action.
  25. A) 43. f(2,1) = f(1,2) = f(0,4) = 4. Puis g(0) = g(1) = 1, g(2) = 3·1+1 = 4, g(3) = 3·4+1 = 13, g(4) = 3·13+4 = 43.
  26. C) 4 3 2 1 1 2 1 1 3 2 1 1 2 1 1. f(n) affiche n puis appelle deux fois f(n−1) : f(1) = « 1 », f(2) = « 2 1 1 », f(3) = « 3 2 1 1 2 1 1 », f(4) = « 4 » + f(3) + f(3) (15 nombres).
  27. D) 4 3 2 1 0 1 2 3. À la descente on affiche 4, 3, 2, 1 ; à la remontée chaque appel affiche n−1 : 0 (pour n=1), 1, 2, 3.
  28. A) 4 3 12 7 9. Arbre obtenu : racine 4, fils gauche 3, fils droit 12 ; 7 à gauche de 12 ; 9 à droite de 7. Préfixe (racine, gauche, droite) : 4 3 12 7 9.
  29. C) Θ(log n). Un arbre équilibré a une hauteur en log n, et la recherche suit un seul chemin racine–feuille.
  30. C) 9 2 1 7 6 4 5 8 3. La procédure affiche gauche, droite, puis la racine : parcours postfixe. Sous-arbre 7 : 9 2 1 7 ; sous-arbre 8 : 6 4 5 8 ; puis 3.

Partie 2 — Algorithmique et programmation (40 points)

Exercice 1 (20 points) — image en niveaux de gris

1. Variables globales

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int *image = NULL;   // vecteur de W*H pixels, stocké ligne par ligne
int W = 0, H = 0;    // largeur et hauteur
// le pixel (ligne l, colonne c) est image[l*W + c]

2. initData

void initData(int largeur, int hauteur) {
    W = largeur; H = hauteur;
    free(image);
    image = (int*) malloc(W * H * sizeof(int));
    for (int p = 0; p < W * H; p++)
        image[p] = rand() % 256;          // valeur aléatoire entre 0 et 255
}

3. afficherImage

void afficherImage() {
    for (int l = 0; l < H; l++) {
        for (int c = 0; c < W; c++)
            printf("%4d", image[l * W + c]);
        printf("\n");
    }
}

4. Histogramme

int* histogramme() {
    int *h = (int*) calloc(256, sizeof(int));   // 256 cases à 0
    for (int p = 0; p < W * H; p++)
        h[image[p]]++;
    return h;
}

Sur l'exemple 4×3 de l'énoncé : h[12] = 2, h[3] = 2, h[11] = 2, h[33] = h[55] = h[16] = h[20] = h[1] = h[0] = 1.

5. Remplacement par la moyenne des 8 voisins (fonction nommée « getHistogramme » dans l'énoncé)

Il faut travailler sur une copie : sinon les pixels déjà modifiés fausseraient la moyenne de leurs voisins. Aux bords, on fait la moyenne des voisins qui existent (3 dans un coin, 5 sur un bord).

void getHistogramme() {          // nom imposé par l'énoncé ; il s'agit d'un lissage
    int *copie = (int*) malloc(W * H * sizeof(int));
    for (int p = 0; p < W * H; p++) copie[p] = image[p];
    for (int l = 0; l < H; l++)
        for (int c = 0; c < W; c++) {
            int somme = 0, nb = 0;
            for (int dl = -1; dl <= 1; dl++)
                for (int dc = -1; dc <= 1; dc++) {
                    int l2 = l + dl, c2 = c + dc;
                    if ((dl != 0 || dc != 0) && l2 >= 0 && l2 < H && c2 >= 0 && c2 < W) {
                        somme += copie[l2 * W + c2]; nb++;
                    }
                }
            image[l * W + c] = somme / nb;
        }
    free(copie);
}

6. Complexités (N = W×H pixels)

FonctionComplexitéJustification
initDataO(W·H)un tirage par pixel
afficherImageO(W·H)un affichage par pixel
histogrammeO(W·H)un passage ; l'initialisation des 256 cases est une constante
getHistogramme (lissage)O(W·H)8 voisins par pixel, soit 8·N opérations

7. Programme principal

int main() {
    srand(time(NULL));
    initData(20, 10);
    printf("Image initiale :\n");   afficherImage();
    int *h = histogramme();
    for (int m = 0; m < 256; m++)
        if (h[m] > 0) printf("niveau %d : %d pixel(s)\n", m, h[m]);
    free(h);
    getHistogramme();
    printf("Image lissee :\n");     afficherImage();
    free(image);
    return 0;
}

Exercice 2 (20 points) — table de hachage pour le text mining

1. Déclarations

#define M 100          // nombre de documents du corpus (constant)
#define N 10007        // taille de la table : nombre premier assez grand
#define A 31           // paramètre a : entier > 0, pas une puissance de 2

typedef struct Noeud {
    char *mot;                 // la clé
    int freq[M];               // freq[i] = nombre d'occurrences du mot dans le document i
    struct Noeud *suivant;     // chaînage des collisions
} Noeud;

static Noeud *T[N];            // T[h] = tête de la liste des mots de code h (NULL au départ)
char *URLS[M];                 // liste des URLs des documents

2. Jeu de fonctions nécessaires

  • unsigned long hachage(char *k) : calcule h(k) (question 3) ;
  • Noeud* creerNoeud(char *k, int i) : crée un nœud pour le mot k trouvé dans di (question 4) ;
  • void ajouterMot(char *k, int i) : insère ou met à jour (question 5) ;
  • void traiterDocument(int i) : appelle la fonction de prétraitement puis ajoute chaque mot :
void traiterDocument(int i) {
    int nbMots;
    char **mots = preTraitement(URLS[i], &nbMots);
    for (int p = 0; p < nbMots; p++)
        ajouterMot(mots[p], i);
}

3. Code de hachage

vk = Σ ci·ai, puis h(k) = vk mod n. On calcule les puissances au fur et à mesure et on réduit modulo n à chaque étape pour éviter le dépassement de capacité (le résultat est le même, car (x·y) mod n = ((x mod n)·(y mod n)) mod n).

unsigned long hachage(char *k) {
    unsigned long v = 0, puiss = 1;
    for (int i = 0; k[i] != '\0'; i++) {
        v = (v + (unsigned char)k[i] * puiss) % N;
        puiss = (puiss * A) % N;
    }
    return v;            // compris entre 0 et N-1
}

4. Constructeur d'un nœud

Noeud* creerNoeud(char *k, int i) {
    Noeud *nd = (Noeud*) malloc(sizeof(Noeud));
    nd->mot = strdup(k);                     // copie du mot
    for (int d = 0; d < M; d++) nd->freq[d] = 0;
    nd->freq[i] = 1;                         // première occurrence dans d_i
    nd->suivant = NULL;
    return nd;
}

5. Ajout d'un mot (mise à jour ou insertion en tête)

void ajouterMot(char *k, int i) {
    unsigned long h = hachage(k);
    for (Noeud *p = T[h]; p != NULL; p = p->suivant)
        if (strcmp(p->mot, k) == 0) { p->freq[i]++; return; }   // déjà présent
    Noeud *nd = creerNoeud(k, i);
    nd->suivant = T[h];                      // insertion en tête
    T[h] = nd;
}

6. Traitement de tout le corpus

void traiterCorpus() {
    for (int h = 0; h < N; h++) T[h] = NULL;
    for (int i = 0; i < M; i++)
        traiterDocument(i);
}

7. Mots les plus fréquents de chaque document

Pour chaque document, un premier passage sur toute la table trouve la fréquence maximale, un second affiche tous les mots qui l'atteignent (il peut y avoir des ex æquo, d'où une « liste »).

void motsLesPlusFrequents() {
    for (int i = 0; i < M; i++) {
        int max = 0;
        for (int h = 0; h < N; h++)
            for (Noeud *p = T[h]; p; p = p->suivant)
                if (p->freq[i] > max) max = p->freq[i];
        printf("Document %d (frequence max %d) :", i, max);
        for (int h = 0; h < N; h++)
            for (Noeud *p = T[h]; p; p = p->suivant)
                if (max > 0 && p->freq[i] == max) printf(" %s", p->mot);
        printf("\n");
    }
}

Coût : O(m·(n + nombre de mots distincts)). Pour obtenir les k mots les plus fréquents, on garderait un tas-min de taille k par document.

أسئلة شائعة حول هذا النموذج

هل يمكن تحميل هذا النموذج مجاناً؟
نعم. صفحات هذا النموذج (15) متاحة للاطلاع والتحميل مجاناً، وبدون تسجيل أو إنشاء حساب.
هل يتضمن هذا النموذج التصحيح؟
نعم. تجد في هذه الصفحة، أسفل صفحات الأسئلة، تصحيحاً مقترحاً يشرح منهجية الإجابة والعناصر المنتظرة، من إعداد فريق وظيفة إنفو.
ما هي الجهة المنظمة والدرجة المعنية بهذا النموذج؟
هذا النموذج من مباراة نظمتها المدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET). ويخصّ درجة: السنة الأولى من سلك المهندس - مسلكا GLSID وII-BDCC.
ما هي دورة هذا الامتحان ولغة أسئلته؟
الدورة: session de juillet 2018. والأسئلة باللغة الفرنسية.
أين أجد نماذج أخرى لنفس المباراة؟
جمعنا نماذج نفس العائلة في صفحة مباراة التعليم وأطر الأكاديميات: /نماذج-مباريات/مباراة-التعليم، مرتّبة حسب الدورة من الأحدث إلى الأقدم.

💬 ناقش هذا النموذج (0)

شارك إجاباتك أو صحّح التصحيح — إذا كان لديك رأي مختلف حول أي نقطة، اكتبه هنا ليستفيد باقي المترشحين.

لا يوجد نقاش بعد — شارك إجابتك أو سؤالك حول هذا النموذج.

⚠️ ممنوع نشر أرقام الهاتف أو الروابط أو أي عرض مقابل مال — تُحذف هذه المشاركات تلقائياً.

نماذج مشابهة قد تهمّك

نموذج مباراة ولوج السنة الأولى من سلك المهندسين (GLSID و II-BDCC) بالمدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET) - يوليوز 2017 - اختبار المعلوميات - الجزء الثاني فقط (الخوارزميات والبرمجة) 📅 session de juillet 2017 نموذج مباراة ولوج المدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET) 2018 - الهندسة الكهربائية 📅 session de juillet 2018 نموذج مباراة ولوج المدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET) 2018 - اختبار التخصص (الهندسة الميكانيكية) 📅 session du 21 juillet 2018 نموذج مباراة ولوج المدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET) 2016 - اختبار التخصص (الهندسة الكهربائية) مع السؤال الإجباري 📅 session 2016 نموذج مباراة ولوج المدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET) 2015 - اختبار التخصص (الهندسة الكهربائية) 📅 session du 24 juillet 2015 نموذج مباراة ولوج السنة الأولى من سلك المهندسين GLSID بالمدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET) - شتنبر 2014 - اختبار المعلوميات 📅 session de septembre 2014
عرض كل النماذج ←

المصدر: المواقع الرسمية للمؤسسات (نسخ أرشيفية من Wayback Machine)

📲
ثبّت تطبيق وظيفة إنفو على جهازك: اضغط زر المشاركة في أسفل سفاري، ثم اختر إضافة إلى الشاشة الرئيسية. تصلك المباريات الجديدة بسرعة ودون متصفح.