Visual Basic

Transcription

Visual Basic
MINISTÈRE DE L’ÉGALITÉ DES TERRITOIRES
ET DU LOGEMENT
MINISTÈRE DE L’ÉCOLOGIE,
DU DÉVELOPPEMENT DURABLE ET DE L’ÉNERGIE
EXAMEN PROFESSIONNEL DE VÉRIFICATION
D’APTIDUDE AUX FONCTIONS DE
PROGRAMMEUR
___________
Session 2012
Langage :
Visual Basic
Durée :
5 heures
Coefficient :
4
Notation :
sur 20
Nombre de pages du sujet : 5 (y compris cette page)
Remarques générales
1 – le sujet comporte deux parties :
un sujet général commun aux différents langages noté sur 6 (temps estimé 1h30)
un sujet spécifique au langage choisi noté sur 14 (temps estimé 3h30)
2 – si éventuellement il vous manquait des informations particulières pour développer
votre sujet, il vous revient de retenir les hypothèses adaptées à votre solution, en les
explicitant clairement.
3 – aucun document ou matériel électronique (calculette, ordinateur …) n’est autorisé.
www.developpement-durable.gouv.fr
Sujet Visual Basic
Page 1/5
1ère partie
1. Sujet commun - le problème des huit dames.
1.1. Description
Ce problème a pour objet la résolution du problème des huit dames: il s'agit de placer huit
dames sur un échiquier de 64 cases sans qu'elles puissent se menacer.
Une dame peut prendre une autre dame si l'une des trois conditions suivantes est
remplie :
• Les deux dames sont sur une même ligne.
• Les deux dames sont sur une même colonne.
• Les deux dames sont sur une même diagonale.
(Ainsi, il ne doit pas exister deux dames sur une même ligne, une même colonne ou une
même diagonale).
Exemples de solutions valides.
Exemple de solution invalide (les dames en conflit sont entourées).
Sujet Visual Basic
Page 2/5
1.2. Travail demandé
Il vous est demandé de proposer un algorithme en pseudo-code pour résoudre ce
problème et trouver toutes les solutions. Pour plus de clarté, vous expliquerez en
début de chaque module le fonctionnement de cet algorithme.
1. Écrire, en pseudo-code, une fonction sontEnConflit(,,) qui permette de savoir si deux
dames sont ou non en conflit. En déduire une fonction estBienPlacee(,,,) qui permette de
savoir si une dame n'entre pas en conflit avec aucune des dames des colonnes d'indice
inférieur.
2. Écrire cet algorithme pour trouver toutes les solutions à ce problème.
Sujet Visual Basic
Page 3/5
2ème partie
2. Questions de syntaxe
1.1 Démarrage d'une application Visual Basic
a) Quelles sont les possibilités offertes comme point d'entrée d'un
programme ?
b) Pour chacune d'elles, préciser l'instruction ou l’événement qui se produit au
démarrage.
1.2 Formulaires
a) VB propose 2 types de formulaires (ou feuilles) : indiquer lesquels et
préciser ce qui les différencie
b) Une application MDI (multidocument) est une application qui gère plusieurs
feuilles à l'intérieur d'une seule feuille conteneur. VB permet de développer ce
type d'application.
Indiquer comment mettre en œuvre une telle application comprenant une
feuille conteneur et 2 feuilles filles.
1.3 Gestion des erreurs
Soit la procédure suivante, incomplètement écrite
Private Sub Test()
Dim reponse As String
Dim nombre As Integer
On Error GoTo GestionErreur
reponse = InputBox("Saisir un nombre entre 1 et 9")
nombre = CInt(reponse)
'…..............
Exit Sub
GestionErreur:
'…...........
End Sub
Complétez la procédure afin qu'elle affiche l'un des 3 messages suivants,
selon la réponse de l'utilisateur :
« Vous devez saisir un nombre »
« Vous devez saisir un nombre compris entre 1 et 9»
« Votre saisie est correcte »
3. Problème
3.1. Description
Sous linux, grep est un programme en ligne de commande de recherche de chaînes de
caractères. La syntaxe de grep est :
grep [OPTIONS] MOTIF FICHIER
Dans le cas le plus simple, grep est utilisé pour afficher les lignes contenant un certain
mot. Par exemple pour chercher les lignes contenant le nom "Durand" dans un fichier de
contact téléphonique "ListeNuméros.txt" :
Sujet Visual Basic
Page 4/5
grep "Durand" ListeNuméros.txt
retournera seulement les lignes contenant Durand :
Mathieu Durand, 0723237694
Bernard Durand, 0966324355
Pour les cas plus élaborés, grep permet de faire des recherches à l'aide d'expressions
rationnelles. Pour rechercher toutes les lignes contenant le nom "durand" ou "Durand"
(avec un d minuscule ou un D majuscule) dans le fichier de contact téléphonique :
grep '[Dd]urand' ListeNuméros.txt
Ce concept de classe de caractères autorise un ensemble de caractères, plutôt qu'un seul
caractère, à correspondre en un point particulier de l'expression rationnelle.
Les classes de caractères sont entourées de crochets [...] avec l'ensemble de caractères
placé à l'intérieur.
La commande grep a des options qui se présentent classiquement sous linux sous la
forme d'un tiret ("-") et d'une lettre.
Par exemple :
grep -v "Durand" ListeNuméros.txt
inverse la recherche et affiche les lignes qui ne contiennent pas "Durand".
3.2. Travail demandé
Vous devez écrire une commande "grep" simplifiée.
Pour plus de clarté, vous expliquerez en début de chaque module le
fonctionnement du sous-programme avant l'écriture du code.
- Écrire un sous-programme qui récupère les arguments de la ligne de commande (Option
"-v ", chaîne de caractère à rechercher et nom du fichier).
- Écrire un sous-programme qui ouvre le fichier et gère les cas d'erreur.
- Écrire un sous-programme qui traite l'argument chaîne de caractère à rechercher en
analysant la présence de classes de caractères. Ce sous-programme ne doit pas faire
appel aux fonctions évoluées du langage gérant les expressions régulières.
- Écrire un sous-programme qui affiche les lignes du fichier correspondant au résultat de
la recherche
- Écrire le programme d'ensemble, qui enchaîne les différents modules
Sujet Visual Basic
Page 5/5