C - Exm Ratt 2012 Exm 2016
C - Exm Ratt 2012 Exm 2016
C - Exm Ratt 2012 Exm 2016
Exercice 1 : (4 pts)
Instruction n p x y
5 9 - 1.2
n *= 5;
x = n == p ;
y = x < ++p/2;
x = (float) p / n ;
Exercice 2 : (6 pts)
};
1|Page
Université de M’SILA Master 1 / S2 / 2011-2012
Faculté de Technologie Option : Contrôle industriel
Département d’électronique Le 29 mai 2011
Exercice 3 : (8 pts)
#include <iostream.h> Questions :
class A {
public:
1. Donner les résultats d’exécution du
int x;
A(int); programme principal.
~A();
};
class B : public A{
main() {
public:
B *BB;
int y;
A *AA;
B(int, int); AA = new A(3);
~B(); BB = new B(1, 2);
};
A::A(int a) { deleteAA;
cout<<"++ A debut"<<endl; delete BB;
x = a; }
cout <<"++ A x = "<< x <<endl;
cout <<"++ A fin"<<endl;
}
A::~A(int a) {
cout<<"-- A debut x = "<< x <<endl;
cout <<"-- A fin"<<endl;
}
B::B(int a, int b) {
cout <<"++ B debut"<<endl;
y = b;
cout <<"++ B y = "<< y <<endl;
cout <<"++ B fin"<<endl;
}
B::~B() {
cout <<"-- B debut y = "<< y <<endl;
cout <<"-- B fin"<<endl;
}
2|Page
Université de M’SILA Master 1 / S2 / 2011-2012
Faculté de Technologie Option : Contrôle industriel
Département d’électronique Le 14 Juin 2011
1. Citer deux avantages de l’approche orientée objet par apport à l’approche structurelle.
2. Donner les caractéristiques d’un destructeur de classe C++.
Exercice 1 : (4 pts)
Instruction n p x y
5 9 - 1.2
n += 5; 10 9 - 1.2
x = n == p ; 10 9 0 1.2
p = x+(p/2); 10 4 0 1.2
y = (float) p / n ; 10 4 0 0.4
Exercice 2 : (7 pts)
};
1|Page
Université de M’SILA Master 1 / S2 / 2011-2012
Faculté de Technologie Option : Contrôle industriel
Département d’électronique Le 14 Juin 2011
Exercice 3 : (6 pts)
#include <iostream.h> Questions :
class A {
public:
1. Donner les résultats d’exécution du
int x;
int y; programme principal.
A(int, int);
~A();
}; main() {
class B : public A{
B *BB;
public:
int z; BB = new B(1, 2, 3);
B(int, int, int);
~B(); delete BB;
}; }
A::A(int a, int b) {
cout<<"++ A debut"<<endl;
x = a;
y = b;
cout <<"++ A x = "<< x <<endl;
cout <<"++ A y = "<< y<<endl;
cout <<"++ A fin"<<endl;
}
A::~A() {
cout<<"-- A debut x = "<< x <<endl;
cout <<"-- A fin"<<endl;
}
B::B(int a, int b, int c) : A(a, b){
cout <<"++ B debut"<<endl;
z = c;
cout <<"++ B y = "<< y <<endl;
cout <<"++ B fin"<<endl;
}
B::~B() {
cout <<"-- B debut y = "<< y <<endl;
cout <<"-- B fin"<<endl;
}
2|Page
Université de M’SILA Master 1 / 2èmesem / 2010-2011
Faculté de Technologie Option : Contrôle industriel
Département d’électronique Le 24 mai 2011
1. La différence entre les deux expressions est que l’opérateur & dans la première (Int x = &a)
renvoi l’adresse de a vers x, par contre la deuxième (int&x = a) définie une référence x sur a.
2. • Temps de mis en œuvre réduit
• Les logiciels réalisés sont de meilleures qualités
• Maintenance facile et applications évolutif
• Modularité
• Réutilisabilité
3. Les caractéristiques d’un constructeur de classe C++ sont :
a. Le constructeur d'une classe est une fonction membre spéciale,
b. Il l’a le même nom que la classe,
c. N'indique pas de type de retour (même pas un void),
d. Ne contient pas d'instruction return.
Exercice 1 : (4 pts)
Instruction n p x y
5 9 - 1.2
n *= 5; 25 9 - 1.2
x = n == p ; 25 9 0 1.2
y = x < ++p/2; 25 10 0 1
x///y = (float) p / n ; 25 10 0 0.4
Exercice 2 : (7 pts)
1|Page
Université de M’SILA Master 1 / 2èmesem / 2010-2011
Faculté de Technologie Option : Contrôle industriel
Département d’électronique Le 24 mai 2011
floatRecherche_min()
{
float min=ptr[0]; inti_min = 0;
for (int i=1; i<taille; i++)
{ if (min>ptr[i])
{
min= ptr[i]; i_min=i; }
}
return min;
}
3. La fonction somme()
tableau tableau::somme(tableau tab)
{ tableau A ;
for (int i=0; i<taille; i++)
A.ptr[i]=ptr[i]+tab.ptr[i];
return A ;
}
Exercice 3 : (6 pts)
++ A debut
++ A x = 3
++ A fin
++ A debut
++ A x = 1
++ A fin
++ B debut
++ B y = 2
++ B fin
-- A debut x = 3
-- A fin
-- B debut y = 2
-- B fin
-- A debut x = 1
-- A fin
2|Page
Université de M’SILA Master 1/ S2 / 2015-2016
Faculté de Technologie Option : Contrôle industriel
Département d’électronique Le 14 Mai 2016
Exercice 1 : (4 pts)
Ecrire une fonction voidcompter(int n) affichant les premiers entiers par ligne de taille croissante.
Exemple d’exécution :compter(4) 1
12
123
1234
Exercice 2 : (4 pts)
Prenant la structure de test suivante
switch (n)
{ case0 :cout<< "A" <<endl ;
case1 :
case3 :cout<< "B" <<endl ;
break ;
case 2 :
case4 :
case6 :cout<< "C" <<endl ;
default : cout << "D" <<endl ;;
}
Que va afficher le programme dans le cas où l'utilisateur donne comme valeur de n les cas suivants :
1) 0
2) 1
3) 6
4) -1
Exercice 3 : (4 pts)
Ecrire une fonction qui recherche le minimum d’un tableau d’entier.
voidgetMin(int& min, int& indice, int a[], int n);
Exercice 4 : (4 pts)
1. Réaliser une classe point permettant de manipuler un point d’un plan. La classe doit contenir au
minimum:
Une fonction membre deplace effectuant un déplacement vers de nouvelles coordonnées
définie par deux arguments.
Une fonction membre affiche qui permet d’afficher les coordonnées cartésiennes du point.
Les coordonnées du point seront des membres ‘ donnée ’ publiques.
2. Il faut aussi écrire, un programme d’essai (main) déclarant un point statique, qui initialise les
coordonnées du point, les affichant, les déplaçant et les affichant de nouveau.
Bonne chance
Université de M’SILA Master 1/ S2 / 2015-2016
Faculté de Technologie Option : Contrôle industriel
Département d’électronique Le 14 Mai 2016
Corrigé Type
Questions de cours : (4 pts)
1. La différence entre les deux expressions est que l’opérateur & dans la première (Int x = &a)
renvoi l’adresse de a vers x, par contre la deuxième (int&x = a) définie une référence x sur a.
2. Class et objet Encapsulation Héritage polymorphisme
3. Lescaractéristiques d’un destructeur de classe C++ sont :
a. Le constructeur d'une classe est une fonction membre spéciale,
b. Il l’a le même nom que la classe avec le signe ~ placé avant le nom,
c. N'indique pas de type de retour (même pas un void),
d. Ne contient pas d'instruction return.
4. En utilisant une fonction inline, le compilateur remplace le contenue de la fonction
directement dans le programme principal, ceci élimine les temps nécessaires pour l’appel de
la fonction et les passages de paramètres ce qui permet de réduire le temps d’exécution.
Exercice 1 : (4 pts)
voidcompter(intn)
{
for (intj=1; j <= n; j++)
{
for (inti=1; i<= j; i++)
cout<< i << " ";
cout<<endl ;
}
}
Exercice 2 : (4 pts)
Le programme affiche les résultats suivants :
(1) (2) (4) (5)
n= 0 1 6 -1
A B C D
B D
Exercice 3 : (4 pts)
voidgetMin(int& min, int&indice, int a[], int n)
{
Indice =0;
min = a[0];
for (inti=1; i<n; i++)
if (a[i] < min)
min = a[i];
indice = i;
}
Exercice 3 : (5 pts)