DOMAINE: ANNEXES: GESTION DES EVENEMENTS-NOTION D'OBJETS
- Nombre de sujets: 7
- Nombre de propositions à cocher: 22
- Durée totale allouée: 533 secondes
SUJET N°1: DEFINITION DU FLOT DE CONTROLE-Donnez votre avis sur les propositions suivantes:
Proposition N° 1 (Valeur: 1
):Le flot de contrôle est un mécanisme qui permet de surveiller le fonctionnement de l'exécutant d'un
algorithme.
Proposition N° 2 (Valeur: 1
):Le flot de contrôle est constitué de l'ensemble des données qui influencent l'ordre d'exécution des
instructions d'un algorithmes.
Proposition N° 3 (Valeur: 1
):Lors de l'exécution d'un algorithme, le flot de contrôle est matérialisé par la suite des instructions
exécutées par le processeur.
SUJET N°2: DETERMINATION DU FLOT DE CONTROLE-Soit l'algorithme suivant:
00-
01-
02-
03-
04-
05-
06-
07-
08-
09-
DEBUT
Var N en numérique
Var I en numérique
ENTRER N
I ← 1
TANT QUE ( I*I <= N ) FAIRE
I ← I +1
FINFAIRE
SORTIR "Le premier carré de nombre entier positif plus grand que N est: ", I*I
FIN
Nous supposons que cet algorithme est isolé de toute influence extérieure, à part la saisie de la valeur de A. Si la
valeur 15.2 est saisie par l'instruction ENTRER, le flot de contrôle peut être matérialisé par une des listes de
numéros d'instructions suivantes?
Proposition N° 1 (Valeur: 1
):0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Proposition N° 2 (Valeur: 1
):0, 1, 2, 3, 4, 5, 6, 7, 5, 6, 7, 5, 6, 7, 5, 8, 9
Proposition N° 3 (Valeur: 1
):0, 1, 2, 3, 4, 5, 6, 7, 5, 6, 7, 5, 6, 7, 5, 6, 7, 8, 9
SUJET N°3: COUPLAGE PAR MEMOIRE PARTAGEE-Soient les algorithmes suivants:
DONNEES PARTAGEES
......................................
FIN DONNEES PARTAGEES
DEBUT
Var Message en Chaîne de caractères
...................................
Pointeur ← 0
TANTQUE ( 1 == 1 ) FAIRE
ENTRER Message // Depuis le réseau
SI ( Pointeur < 10 ) ALORS
T(Pointeur) ← Message
Pointeur) ← Pointeur + 1
FINSI
FIN TANTQUE
FIN
DEBUT
...................................
TANTQUE ( 1 == 1 ) FAIRE
SI ( Pointeur >= 1 ) ALORS
SORTIR T(Pointeur-1) // Sur l'imprimante
Pointeur ← Pointeur - 1
FINSI
FIN TANTQUE
FIN
NOTA: la notation TANTQUE ( 1 == 1 ) correspond à une itérative qui boucle indéfiniment. Ce procédé est
utilisé pour pallier l'absence d'une boucle REPETER sans condition d'arrêt.
Supposons que ces deux algorithmes soient exécutés par deux processeurs différents partageant des données.
Le premier algorithme fait l'acquisition de messages sur le réseau et les empile dans le tableau T (ce qui veut
dire qu'il les place dans la "dernière case libre" de T. Le deuxième algorithme dépile ces messages (donc,
en commençant par le dernier arrivé) et l'imprime.
Les données T et Pointeur ne sont pas déclarées. Ou et comment faut-il les déclarer? lesquelles de ces propositions
vous paraissent acceptables?
Proposition N° 1 (Valeur: 1
):Il faut déclarer T dans le segment DONNEES PARTAGEES:
Tableau T(9) en Chaîne de caractères
En revanche, la donnée Pointeur doit être déclarée dans chacune des deux procédures:
Var Pointeur en numerique
Proposition N° 2 (Valeur: 1
):Il faut les déclarer toutes deux dans le segment DONNEES PARTAGEES:
Tableau T(20) en Chaîne de caractères
Var Pointeur en numerique
Proposition N° 3 (Valeur: 1
):Il faut les déclarer toutes deux dans le segment DONNEES PARTAGEES:
Tableau T(9) en Chaîne de caractères
Var Pointeur en numerique
SUJET N°4: TRAITEMENT DES EVENEMENTS-Soit l'algorithmes suivant:
DONNEES PARTAGEES
Var SignalMA en booleen // Signal = VRAI si on a reçu un signal d'arrêt de l'algorithme, FAUX sinon
FIN DONNEES PARTAGEES
DEBUT
Var Date en numérique // Date en secondes depuis minuit
SignalMA ← FAUX
QUAND Réception signal d'arrêt FAIRE TraiterArret
ATTENDRE Signal de passage à une minute ronde
TANTQUE ( SignalMA != VRAI ) FAIRE
ENTRER Date // Lecture de la date en secondes depuis minuit
ATTENDRE Signal de passage à une minute ronde
SORTIR Date // Sur l'écran de contrôle
FINFAIRE
FIN
PROCEDURE TraiterArret
SignalMA ← VRAI
FIN PROCEDURE
Sachant que l'instruction ENTRER Date est synchronisée sur le passage à la seconde ronde, que la
survenue du signal de passage à la minute ronde est légèrement antérieur au passage à la seconde ronde
correspondante et que la durée d'exécution des autres instructions peut être considérée comme
négligeable, donnez votre avis sur les propositions suivantes:
Proposition N° 1 (Valeur: 1
):Le résultat de l'exécution est l'affichage de la date courante à chaque seconde ronde
Proposition N° 2 (Valeur: 1
):Le résultat de l'exécution est l'affichage de la date courante à chaque minute ronde.
Proposition N° 3 (Valeur: 1
):Pour que la date courante s'affiche à chaque minute ronde, il suffirait de permuter dans la
boucle TANTQUE les instructions ENTRER Date.. et
ATTENDRE Signal de passage à une minute ronde.
Proposition N° 4 (Valeur: 1
):En cas d'arrêt de l'exécution par le signal d'arrêt, la dernière date imprimée sera la date de survenue du
signal à une seconde près.
SUJET N°5: LA NOTION D'OBJET-CLASSES ET OBJETS.Soit l'algorithme suivant:
CLASSE Triangle
var Base en numérique // Longueur de base en cm
var Hauteur en numerique // Hauteur en cm
var Surface en numerique // Surface en cm2
PROCEDURE CalculSurface ()
Surface = Base * Hauteur / 2
FIN PROCEDURE
PROCEDURE Triangle ( var B en numerique, var H en numerique )
Base ← B
Hauteur &larr H
FIN PROCEDURE
FIN CLASSE
Que faut-il faire pour créer un objet triangle de base 20 cm et de hauteur 15 cm ?
Proposition N° 1 (Valeur: 1
):Il faut programmer:
Proposition N° 2 (Valeur: 1
):Mais non ! il faut programmer:
OBJET MonArbre = NOUVEAU Triangle
.................................
Triangle ( 20, 15 )
Proposition N° 3 (Valeur: 1
):Sûrement pas ! il suffit d'écrire:
OBJET MonTriangle = NOUVEAU Triangle (20, 15)
SUJET N°6: LA NOTION D'OBJET-OBJETS-METHODES ET ATTRIBUTS. Soit l'algorithme de la question
précédente. Après création d'un objet MonTriangle de base 20 et de hauteur 15, comment peut-on faire pour récupérer sa surface dans la
variable numérique MaSurface ?
Proposition N° 1 (Valeur: 1
):Il suffit d'écrire:
MaSurface &larr MonTriangle.CalculSurface ()
Proposition N° 2 (Valeur: 1
):ou plutôt:
MonTriangle.CalculSurface ()
MaSurface ← MonTriangle.Surface
Ne pensez-vous pas ?
Proposition N° 3 (Valeur: 1
):Un peu trop compliqué! la solution est, tout simplement:
CalculSurface ()
MaSurface ← MonTriangle.Surface
SUJET N°7: LA NOTION D'OBJET-CLASSES DERIVEES.Soit l'algorithme suivant:
CLASSE Segment
var Longueur en numérique
PROCEDURE Segment ( var L en numérique)
Longueur ← L
FIN PROCEDURE
FIN CLASSE
CLASSE Carre: Segment
var Surface en numérique
PROCEDURE CalculSurface ()
Surface = Longueur * Longueur
FIN PROCEDURE
FIN CLASSE
On veut créer un objet de la classe Carre de 20 cm de côté et afficher sa surface et la longueur de son coté. Parmi
les algorithmes suivants, dites s'ils vous semblent répondre ou pas à la question:
Proposition N° 1 (Valeur: 1
):Première solution:
DEBUT
OBJET MonCarre = NOUVEAU Carre (20)
MonCarre.CalculSurface ()
SORTIR "Surface du carré de ", 20, " = ", MonCarre.Surface, " cm2"
FIN
Proposition N° 2 (Valeur: 1
):Deuxième solution:
DEBUT
OBJET MonCarre = NOUVEAU Carre ()
OBJET MonSegment = NOUVEAU Segment (20)
MonCarre.CalculSurface ()
SORTIR "Surface du carré de ", MonSegment.Longueur, " = ", MonCarre.Surface, " cm2"
FIN
Proposition N° 3 (Valeur: 1
):Troisième solution:
DEBUT
OBJET MonCarre = NOUVEAU Carre (20)
MonCarre.CalculSurface ()
SORTIR "Surface du carré de ", MonCarre.Longueur, " = ", MonCarre.Surface, " cm2"
FIN