Modèle de concours d'accès à l'ENSIAS pour les titulaires du DEUG — Université Mohammed V de Rabat — session du 12 juillet 2023 — épreuve d'informatique
⬇️ Télécharger le PDF Adresse permanente : wadifa-info.com/fr/modele-concours/4834
En bref
Ce document est une ancienne épreuve écrite du concours de Accès au cycle ingénieur (titulaires du DEUG) organisé par ENSIAS — Université Mohammed V de Rabat (2023), publiée sur Wadifa Info en consultation et téléchargement PDF gratuits.
- Organisme
- ENSIAS — Université Mohammed V de Rabat
- Grade
- Accès au cycle ingénieur (titulaires du DEUG)
- Spécialité
- Informatique
- Année
- 2023
- Pages
- 6
- Langue des questions
- français
- Correction
- pas encore disponible
📝 Texte des questions (extrait automatiquement des pages scannées)
Ce texte est extrait automatiquement des images de l'épreuve et peut contenir des erreurs de lecture — les images ci-dessus font foi.
— صفحة 1 —
A Université Mohammed V de Rabat NOM et PRENOM :
- Ecole Nationale Supérieure d'Informatique CODE QR:
ENSIAS et d'Analyse des Systèmes
station D _ _
Correcteurs : Note :
Réservé à l'adn
Observations
Concours d’accès à l’ENSIAS pour les candidats titulaires du DEUG
Epreuve : Informatique
Mercredi 12 Juillet 2023
Horaire : de 11h45 à 12h45
La durée de l’épreuve est de 1 Heure.
Elle comporte III exercices sur 6 pages. Une réponse erronée sera comptabilisée par un 0.
Aucun document n’est autorisé. Le barême est donné seulement à titre indicatif.
Exercice I — Structure de données, Machine, Code et Calcul (10pts)
Une Pile est une mémoire théoriquement infinie à accès séquentiel organisée selon l'ordre d'arrivée des données stockées
(last-in/first-out ou LIFO où la dernière donnée entrée (empilée « Pushed »), est la première donnée sortie (dépilée « Poped ») -
comme une pile d'assiettes). Les machines disposant de mémoire sous forme de pile s'appellent des machines à pile (Stack
Machine). Les machines à pile ont servi à construire des machines pour des langages tels Smalltalk-80 et Java (JVM - Java Virtual
Machine). Les codes à 0-address (stack code) sont des codes très simples pour ces machines à pile. Les opérations d'un code à 0-
address supposent un opérande implicite (Une pile représentant la mémoire Stack de la machine abstraite). Un programme se
décompose d'une partie définition de variables (ex. X 1.000000 Y 0.000000) se terminant par le label begin: et une partie code
commençant après le label begin: (début du code) et se terminant par le label end: (fin du code). Le Jeu d'instruction d'un code à
0-address se compse de plusieurs instructions : LOAD, PUSH, STORE, POP, ADD, SUB, MULT, SWAP, DUPL, etc. LOAD : charge la
valeur d'une variable depuis la mémoire statique, puis l'empile vers la mémoire Pile [STATIC-STACK]. PUSH : empile une valeur
constante vers la mémoire Pile. STORE : dépile une valeur de la tête de la mémoire Pile et la stocke dans la variable en paramètre
[STACK-STATIC]. Chaque opération binaire OP parmi (ADD, SUB, MULT, IDIV (division euclidienne), DDIV (division décimale),
etc.) : dépile les deux éléments de Pile et empile leur résultat dans la Pile (Push(Pop() <op> Pop()). Par exemple, PUSH 1.0 PUSH
3.0 ADD donnera une pile avec un seul élement en tête de pile qui est 4.0, PUSH 1.0 PUSH 3.0 SUB donnera une pile avec un seul
élement en tête de pile qui est 2.0. SWAP inter-change les deux éléments de tête de Pile. SWAP est utile pour les opérations non
commutatives. Le label unlabel : en début d'instruction est l'adresse d'une instruction (ex. for:, endfor:). JMP <label> : effectue
un branchement (Go To) vers le label désigné (ex. JMP endfor : effectue un branchemen vers l'instruction dans l'étiquette est
endfor:). JEQ <label> : (signifie Jump if Equal) dépile la tête de Pile et la met dans une mémoire temporaire opl, dépile la nouvelle
tête de pile et la met dans une mémoire temporaire op2, si opl=opl, l'instruction effectue un branchement (Go To) vers le label
٠ désigné. JNE <label> : (signifie Jump if Not Equal) dépile la tête de pile et la met dans une mémoire temporaire opl, dépile la
nouvelle tête de pile et la met dans une mémoire temporaire op2, si op1 #opl1, l'instruction effectue un branchement (Go To) vers le
label désigné. JG <label> : (signifie Jump if Greater) dépile la tête de Pile et la met dans une mémoire temporaire opl, dépile la
nouvelle tête de Pile et la met dans une mémoire temporaire op2, si 01001, l'instruction effectue un branchement (goto) vers le
label désigné. DUPL duplique l'élément en tête de Pile. DUPL est utile pour l’exposant (**2) et pour la multiplication (*2). PRINTI :
dépile la tête de pile (entière/réelle) et l'affiche à l'écran. PRINTS <chaîne de caractères>: et affiche la chaîne de caratères à
l'écran.
Exemple de Programme Etat de la mémoire Pile de la machine abstraite
LOAD X 111. tête de pile = valeur de X | TT
PUSH 2 112. tête de pile = 2 Pile
LOAD Y 113. tête de pile = valeur de Y
MULT 11 4. tête de pile = valeur de 2 * لا |FNEC SA | RIRES
SWAP 11 5. têtes de pile 2*Y & X interverties [ 7 x
SUB 116. tête de pile = valeur de X - (2 * Y)
— صفحة 2 —
Concours d’accès à l’'ENSIAS pour les candidats titulaires du DEUG
ETATS جابعة يحبر
Univenié Mohamed V de Rat
(Mercredi 12 Juillet 2023) Epreuve : INFORMATIQUE
II 1. tête de pile = valeur deY
LOAD Y
Pile
PUSH 2 112. tête de pile = 2 -
MULT 113. tête de pile = valeur de 2 *Y X
LOAD X 11 4. tête de pile = valeur de X 24 ب
SUB 11 5. tête de pile = valeur de X - (2 * Y) Ball 22%] (L2*Y
1.1) Quel est l'état de la pile après les instructions O-address code suivantes (2pts) : Compléter les pointillés
Partie 1
PUSH 150.000000
X 2.000000
Y 100.000000
Z 0.000000
W 0.000000
begin:
LOAD X
SWAP
1.2) Que calculent et affichent les programmes suivants (NB. Les résultats sont de très grands nombres que vous ne
calculerez pas à la main, seul le nom de la fonction calculée et (ü) le paramètre initial de la fonction importent) :
F 2
F Partie 1 Partie 2 1 Partie 3 ٍ Compléter les pointillés
(2.1) (2pts) LOAD 1 ADD Réponses I.2.1
Al 1.000000 JG SORTIE STORE B1
B1 0.000000 LOAD BI JMP ENSIAS nom de la fonction unaire calculée + يا
begin: LOAD اخ SORTIE:
PUSH 1.000000 MULT LOAD AI 26176111176 initiQl se
STORE 1 STORE A1 PRINTI
ENSIAS: PUSH 1.000000 end:
PUSH 20.000000 LOAD 1
(1.2.2) (2pts) LOAD D2 PUSH 1.000000 Réponses 1.2.2
A2 1.000000 JG EXIT LOAD D2
B2 1.000000 LOAD B2 ADD nom de la fonction unaire calculée ...
C2 0.000000 LOAD A2 STORE D2
D2 0.000000 ADD JMP RABAT paramètre initial ss
begin: STORE C2 EXIT:
PUSH 2.000000 LOAD B2 LOAD C2
STORE D2 STORE A2 PRINTI
RABAT: LOAD C2 end:
PUSH 77.000000 STORE B2 _|
1.3) Compléter les pointillés par les instructions 0-address code manquantes :
Partie 2
Partie 1
)1.3.1( (2pts)
hauteur_triangle 15.000000
DDIV nom de la fonction binaires calculée surface d’un
triangle
paramètre : hauteur 15cm, base 10cm
PRINTS "Surface Trangle dont la Hauteur et la Base sont "
STORE surface_triangle
LOAD hauteur_triangle
base_triangle 10.000000
surface_triangle 0.000000
begin: PRINTI
LOAD hauteur_triangle LOAD base_riangle instruction (1.3.1.1) manquante تت اا
LOAD base_triangle PRINTI
MULT PRINTS "est ="
instruction (1.3.1.2) manquante
end:
LOAD surface_triangle
PRINTI
..(1.3.1.1)
..(1.3.1.2)
— صفحة 3 —
Concours d’accès à l’ENSIAS pour les candidats titulaires du DEUG
ENSIAS (Mercredi 12 Juillet 2023) Epreuve : INFORMATIQUE
Unnenité Meharaed V'de Rabat
(1.3.2) (2pts) eu (132. 1) nom de la fonction binaires calculée surface d'un
rayon_cercle 0.000000 |... és (1,3.2.2) cercle
surface_cercle 0.000000 STORE surface_cercle
pi 3.141593 PRINTS "Surface Cercle de Rayon (" paramètre : rayon 100cm
begin: LOAD rayon_cercle
PÈRE 00.000000 PRINTS ee instruction (1.3.2.1) manquante...
rayon_cercle à =
LOAD Fay cercle مس eerele instruction (1.3.2.2) manquante ته
on_cer
DUPL end:
Exercice II — Algorithmique (11pts)
Écrivez les lettres A, B, © ou Ddevant chaque proposition ou remplir les pointillées à l'endroit désigné
Compléter les
pointillés
(1.1) Compléter l'algorithme de calcul pour la valeur 120 de la fonction Factorielle écrit dans le langage | Réponse 1
de programmation pédagogique Hortensias par l'instruction correspondante (Hortensias n'est pas
Concept/Question/Algorithme
sensible à la casse, REM désigne un commentaire sur 1 ligne et = l'affectation) (1pt) : facto= .....................
nint 10; facto int 1; jint;
BEGIN
FOR i= 1 TO 120 DO
facto = RE mplé tte in: ion é] IL
ENDFOR
PRINT facto;
END
(1.2) Compléter l'algorithme de recherche du zéro d'une fonction croissante par méthode dichotomique | Réponse II.2.1
écrit dans le langage de programmation pédagogique Hortensias par les trois instructions
correspondantes (/= désigne l'opérateur de comparaison booléenne + ) (3pt):
REM programme recherchant la solution f(x) = 0 pour f(x) = x**2 - 2.x - 100 sctictement croissante entre
REM [minx, maxx]Javec f(minx) * f(maxx) > 0
minx double -20.0; maxx double 20.0; min double; a
max double; i double ; Réponse [1.2.2
BEGIN
min = minx; max = maxx; i= (min + max) /2;
WHILE (((i * i) - (2 *i) - 100) /= 0) DO
IF (((G *i)- (2 *i) - 100) * ((max * max) - (2 * max) - 1 00) < 0) THEN
1 17 L2 Réponse IL.2.3
ELSE E oser cette instruction di la Réponse 2
ENDIF
REM Proposer cette instruction dans la Réponse 11.23 |"
ENDWHILE
PRINTI;PRINT (i*i) -(2 *i) - 100;
END
(1.3) Compléter l'algorithme de calcul pour la valeur 1000 de la fonction Fibonacci écrit dans le langage Réponse 1.3.1
de programmation pédagogique Hortensias par les trois instructions correspondantes (3pts) :
REM fibonacci pf=..................
REM grand pere Fibo(i=0) = 1
gpint 1;
REM pere Fibo(i=1) = 1
int 1;
REM petit fils Réponse IL3.2
pfint 0;
iint;
BEGIN gp لله
REM calcul de Fibo(i=1000)
FOR i = 2 TO 1000 DO
pf = REM Compléter cette instruction dans la Réponse I1.3.1
gp = REM Compléter cette instruction dans la Réponse IL.3.2
م = REM Compléter cette instruction dans la Réponse IL3.3
ENDFOR
PRINT :م
— صفحة 4 —
A
جبعة بحبدنحبسباراط
Mchammed V de Rabat 1
VAN
ENSIAS
Concours d’accès à l'ENSIAS pour les candidats titulaires du DEUG
(Mercredi 12 Juillet 2023) Epreuve : INFORMATIQUE
Réponse 11.4.1. concise
Réponse II.5.1
PUISSANCE =
Réponse II.5.3
Que Calcule Y algorithme suivant, écrit dans le langage de programmation pédagogique 4 [[آ
Hortensias ? (== désigne l'opérateur de comparaison booléenne = ( (1pt)
51 string "Bonjour, " ; s2 string "hello world";
Lint 0; Xint; Yint; Z int 0; W bool; À double 1.0; B double 1 ; © double 1.0; N int 5473; VI int 0; VD Double ; D int;
BEGIN
PRINT sl; PRINT "Algorithme Mystère appliqué à" ; PRINT N;
FOR I = 2 TO 74 DO
X=((74-1) +2);
Y=N-((N/X)*X);
170 -- 0( THEN Z=Z+1;
ENDFOR
IF (Z == 0) THEN
PRINT "True :-)";
FOR I = 1 TO 180 DO
C=C*N;
A=2%*A*I*0.S;
B=B+(1/(A/C));
ENDFOR
PRINT "The image is ="
ELSE PRINT "False :-("
ENDIF
D=Xx; ENDIF
; PRINT B;
; PRINT "here =" ; PRINT D; PRINT "there =" ; PRINT Z;
END
)11.5( Compléter par les instructions correspondantes, l'algorithme de calcul, pour la valeur 15, de la
fonction Exponentielle par puissance du nombre d'Euler et approximée par la méthode de
développement limité, écrit dans le langage de programmation pédagogique Hortensias (3pts) :
Xint15:; intl;
PUISSANCE double 1.0;
TAUX _ERREUR DOUBLE;
FACTO double 1.0; EXPO X double 0.0 ;
NOMBRE_EULER double 2.71828182845904523536;
BEGIN
FOR I = 1 TO 180 DO
PUISSANCE = REM Compléter cette instruction dans la Réponse 1
FACTO = REM Compléter cette instruction dans la Réponse II.5.2
EXPO X = EXPO X + (PUISSANCE / FACTO);
ENDFOR
PRINT EXPO X;
REM Calcul de l’exponentielle par puissance du nombre d'Euler
PUISSANCE = 1.0;
FORI=1TO 15 DO
REM Compléter cette instruction dans la Réponse IL.5.3
ENDFOR
PRINT PUISSANCE;
TAUX_ERREUR = (EXPO X - PUISSANCE) / PUISSANCE ;
PRINT TAUX_ERREUR;
ram
— صفحة 5 —
VAN Concours d'accès À l'ENSTAS pour les candidats titulaires du DEUG
ENSIAS (Mercredi 12 Juillet 2023) Epreuve : INFORMATIQUE
Exercice 111 — Structure de données et Programmation en Langage (10pts)
Remplir les pointillées à l'endroit désigné
£
Concept/Question/Seript iles ss
QI. 1)Soit la fonction © reverse qui inverse une chaîne de caractères, compléter par les instructions | Réponse 1
correspondantes en © cette fonction et la fonction myitoa qui transforme un nombre entier en chaînes
de caractères (2pts):
#include <string.h>
#include <stdlib.h>
void reverse(char 1
int i, j;
char ©
for (i = 0, j = strlen(s)-1; i > j: i++, ل { Réponse III.1.2
ال جع
5]1[ = زاناة ٍ . . SL 44] mu
}
char * myitoa(int n){
inti=0; char s{100]; char * result;
do {
sli++] = é
} while ((n /= 10) > 0);
sfi] = 0°
reverse(s);
result = (char *) malloc(strlen(s) + 1);
strepy(result, s);
return result;
ins é *
)111.2( Soit la fonction © substring qui retourne une sous-chaîne d'une chaîne de caractère | Réponse 1
en entrée qui commence à partir d'une position donnée (>=1) et d'une taille donnée (>=1),
compléter par l'instruction correspondante : (1pt)
char *substring(char *string, int position, int length)
char *pointer;
int c:
pointer = malloc(length+1);
for (c=0;c< length; c++){
+ Pr i é *
*(pointer+c) = *(string+position-1);
string++;
}
*(pointer+c) = 7
return pointer; }
)111.3( Que fait le script shell unix suivant (en toronto cshell, $< signifie lecture au clavier, © précède
toute variable numérique en modification, $ précède toute variable en lecture, / désigne une division
Euclidienne et % désigne l'opérateur de modulo (congruence)) :
#\/bin/tcsh
© other = 2
touch complex.log
@ other-
echo -n "entrez un"
@ here =$<
@ other++
@ there = 157 * $other
while ($here > 0)
© real = (2 * $there * $here) / 100
© imaginary = (2 * $there * $here) % 100
echo "Resultat de "$here " => " $real"."$imaginary
echo "Resultat de "$here" => "$real"."$imaginary >> complex.log
echo -n "entrez un"
@ here =$<
continue
Réponse 111.3.1 concise
- 5/6 -
— صفحة 6 —
لم
Concours d'accès à l'ENSIAS pour les candidats titulaires du DEUG
(Mercredi 12 Juillet 2023) Epreuve : INFORMATIQUE جابعة بحبداحاسباراط
rame de ut ل
Écrivez les lettres À, Bou € devant chaque proposition :
Concept/Question/Script HAE Compléter par 0
A;,B;C 1
typedef enum { Falso=0 , True=1} 00160 :
typedef void* ptrgenerique: . :
typedef boolean Comparateur (ptraenorique el, plrgenerique 02):
typedef Comparateur* 01100111001017
boolean fnel (int لع int *e2) {if (tel > *e2) return True; else relurn False; }
boolean fne2 (char *e1, char * e2) { if (stremp(el,e2) > 0) return True; else return False; } | يي
boolean fnc3 (float *el, float *e2) { if (*el > *e2) return True; else return False;} ee
boolean generique(ptrgenerique el, ptrgenerique e2, ptrComparaleur C){ return (*C) (e1,e2); }
int main(){ int * 1ه = (int* ( malloc(sizeof(int)}; int * e2 = (int* ) malloc(sizeof(int));
(el) = 4; (*e2) = 5;
boolean Resultat = generique((ptrgenerique) e1, (ptrgencrique)e2, (ptrComparateur)&fnc1);
printf("%es\n",Resultat==True?"true":"false"); //..
} L'instruction printf affichera false. (A) Vrai, (B) Faux. (1pt)
(1.5) Resultat = gencrique((ptrgenerique)"abcd", (ptrgenerique)"aabyclo", (ptrComparateur)&fnc2);
printf("%s\n",Resultat==True?"true":"false"); L'instruction printf affichera false. (A) Vrai, (B) Faux.
(pt)
(111.6) float * e21 = (float* ) malloc(sizeof{(float)); float * e22 = (float* ( malloc(sizeof(float));
(*e21) = 100.6; (*e22) = 100.8;
Resultat = generique((ptrgenerique)e21, (ptrgenerique)e22, (ptrComparateur)&fnc3);
printf("%s\n",Resultat==True?"true":"false");L'instruction printf affichera false. (A) Vrai, (B) Faux.
(pt)
(1.7) Soit le type boolean défini plus haut et soit la fonction C échanger qui interchange le contenu entier de
deux emplacements mémoire. On définit fl comme :
void echanger(int *a, int *b){ int temp = *b; *b = *a; *a = temp; }
void f1(int * t, int taille){
inti = 0, j, mini, n=taille;
while ) >
mini=ij=i+l;
while (G<n){if(t{mini]>t{j]) mini =j;j++; }
Echanger(&t[i], &t[mini]):
++;
}
} La fonction f1 est une fonction C de (A) tri à bulles, (B) tri par selection, (C) de tri par insertion
Gpt)
)111.8( Soit le type boolean défini plus haut. On définit f2 comme :
void f2(int * t, int taille){
int interne, externe, ١ = taille;
for (externe = 1; externe > [: externe++) {
int ]ا = ع externe [: interne = externe;
while ( (interne > 0) && (t{interne - 1 ] >= e) ( { t{ interne ] = t{ interne - 1 ]; interne; }
1] interne ] = e;
}
} La fonction f2 est une fonction © de (A) tri à bulles, (B) tri par selection, (C) de tri par insertion
(pt)
(1.9) Soit le type boolean défini plus haut, la fonction echanger définie plus haut. On définit f3 comme :
void f3(int * t, int taille){
int n=taille; boolean modification = False;
do{
modification = False;
for(int i=0; i<n-1; i++){ if (t{ i] > t{ i+1 14
echanger(&(U i [(, لاا i+1 J)); modification = True; }}
رط
}while(modification == True); : :
La fonction f3 est une fonction C de (A) tri à bulles, (B) tri par selection, (C) de tri par insertion }
(pt)
- 6/6 -
Questions fréquentes sur ce sujet
Ce sujet est-il téléchargeable gratuitement ?
Le corrigé est-il inclus ?
Quel organisme et quel grade concerne ce sujet ?
De quelle session s'agit-il et dans quelle langue ?
Où trouver d'autres sujets du même concours ?
Vous préparez ce concours ?
Modèles similaires
Organisme : ENSIAS — Université Mohammed V de Rabat · 12 juillet 2023 — Copie issue de : archive de modèles de concours — document archivé tel que reçu ; l'avis officiel du concours fait foi.
}Citer cette page
Journaliste, blogueur, enseignant : copiez la référence ci-dessous et mettez un lien vers cette page.
Adresse permanente : https://www.wadifa-info.com/fr/modele-concours/4834/modele-de-concours-d-acces-a-l-ensias-pour-les-titulaires-du-deug-universite-mohammed-v-de
