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