Final Exam Guide for INF1005B: Procedural Programming
School
École Polytechnique de Montréal**We aren't endorsed by this school
Course
INF 1005B
Subject
Arts & Humanities
Date
Dec 10, 2024
Pages
12
Uploaded by BrigadierDinosaurPerson1023
Questionnaire examen final INF1005B Sigle du cours Identification de l’étudiant(e)Nom : Prénom : Signature : Matricule : Groupe : Sigle et titre du cours Groupe Trimestre INF1005B –Programmation procédurale Tous 20153 Professeur Local Téléphone Martine Bellaïche, responsable M-3414 5193 / 4679 Jour Date Durée Heures Vendredi 18 décembre 2015 2 h 30 9 : 30 - 12 : 00 Documentation Calculatrice Aucune Aucune Les cellulaires, agendas électroniques ou téléavertisseurs sont interdits. Toute Toutes Voir directives particulières Non programmable Directives particulières Ne recopiez pas les déclarations ni les instructions déjà fournies dans le questionnaire. L’option Explicitest à ON. En annexe, vous avez la liste des fonctions de VBA. Vous n’avez pas à écrire de commentaires ni d’en-têtes. En cas de doute, veuillez faire vos suppositions et les écrire sur le cahier d’examen.ImportantCet examen contient x3 questions sur un total de x11 pages (excluant cette page)La pondération de cet examen est de 40 %Vous devez répondre sur : le questionnaire le cahier les deux Vous devez remettre le questionnaire : oui non L’étudiant doit honorer l’engagement pris lors de la signature du code de conduite.
Cours INF1005B –Programmation procédurale Examen final –Automne 2015 Polytechnique Montréal Page 1 sur 11 Département de génie informatique et génie logiciel Question 1 (5 points) 1.1)Donner l’instruction en VBA qui génère un nombre aléatoire entier entre [intMin, intMax] Dim intMin As Integer Dim intMax As Integer 1.2)Quelle est la différence entre Dim langues(nLangues) Et ReDim langues(nLangues) 1.3) Quel est le résultat de l’exécution?Dim liste(10) As Integer MsgBox (UBound(liste))1.4)Soient les instructions en VBA, Dim feuille As String Dim cellule As String Dim emplacement As Range Set emplacement = Worksheets(feuille).Range(cellule) Dim nb1 As Integer, nb2 As Integer nb1 = Range(emplacement.Offset(0, 0), emplacement.End(xlDown)).Count nb2 = Range(emplacement.Offset(0, 0), emplacement.End(xlToRight)).Count que représentent nb1et nb2? 1.5)Dans un userform, on peut insérer des contrôles checkBox(case à cocher)et optionButton (bouton d’option), quelle est la différence entre ces deux contrôles au niveau des instructions de VBA ?
Cours INF1005B –Programmation procédurale Examen final –Automne 2015 Polytechnique Montréal Page 2 sur 11 Département de génie informatique et génie logiciel Question 2 (5 points) « Un nombre premierest un entier naturel qui admet exactement deux diviseurs distincts entiers et positifs qui sont alors 1 et lui-même » 2.1)Écrire la fonction Function estPremier(ByVal nombre As Integer) As Boolean La fonction prend en paramètre un nombre entier positif et retourne la valeur vraie si le nombre est premier, faux sinon. 2.2)Écrire la macro main()en VBA qui demande à l’usager un nombre entier nPremiers(qui représente un nombre de fois); trouve les nPremiersnombres entiers; les stocke dans la colonne Aà partir de la ligne 1. Note, il faut faire appel à la fonction estPremier().
Cours INF1005B –Programmation procédurale Examen final –Automne 2015 Polytechnique Montréal Page 3 sur 11 Département de génie informatique et génie logiciel Question 3 (10 points) Avez-vous déjà joué aux mots cachés ? Il s’agit de trouver une liste de mots dans une grille de lettres. Une fois tous les mots de la grille identifiés, les lettres restantes de la grille forment le mot mystère. Soient la grille suivante et la liste de mots, on a trouvé les mots AIX, CASSIS, et HYERES…Grille Liste de mots AIX APT ARLES AUBAGNE AUPS AVIGNON BANDOL CANNES CASSIS DIGNE FREJUS HYERES LUNEL MIRAMAS NICE ORANGE SALON SORGUES TOULON VENCE Une fois tous les mots trouvés dans la grille, il restera un mot mystère MARSEILLE. On remarquera que les mots peuvent se trouver dans la grille à partir d’une position, dans toutes les directions suivantes : NORD, NORD-EST, EST, SUD-EST, SUD, SUD-OUEST, OUEST, NORD-OUEST. On désire, écrire en VBA, une macro qui permet de trouver le mot mystère de la grille ayant à votre disposition la grille et la liste de mots, mais comme vous êtes encore novice pour écrire toute la macro et les sous-programmes, on vous demandera d’écrire les sous-programmes suivants.
Cours INF1005B –Programmation procédurale Examen final –Automne 2015 Polytechnique Montréal Page 4 sur 11 Département de génie informatique et génie logiciel Question 3 (suite)3.1)Écrire la macro Sub range2Tab(ByVal feuille As String, ByVal cellule As String, _ ByRef tablettres() As String) qui permet de stocker les lettres de la grille (contenues dans une feuille d’Excel) dans un tableau 2D.La macro a comme paramètres : le nom de feuille, le nom de la cellule, le tableau 2D contenant les lettres de la grille. C’est à dire que chaque lettre de la grille sera stockée dans une case du tableau. On suppose que l’espace mémoire du tableau est déjà réservé et que les indices commencent à la position 0. 3.2)Écrire la fonction Function fichier2tab(ByVal nomFichier As String) As String() qui lit la liste de mots d’unfichier (un mot par ligne) et stocke ces mots dans un tableau 1D. On suppose que l’on ne connaît pas le nombre de mots dans le fichier et que l’espace mémoire du tableau 1D n’est pas réservé.La fonction a comme paramètre le nom du fichier et retourne le tableau 1D de mots. 3.3) Écrire la macro Sub supprimerMot(ByVal mot As string, _ ByRef tabString() As String) qui supprime du tableau 1D (liste de mots) le mot. On vous laisse libre de la stratégie à employer pour la suppression. Il n’est pas nécessaire de conserver l’ordre du tableau. Il faut aussi libérer l’espace mémoire pourne conserver que les éléments non supprimés. La fonction a comme paramètres le mot à supprimer dans le tableau et le tableau 1D de mots.
Cours INF1005B –Programmation procédurale Examen final –Automne 2015 Polytechnique Montréal Page 5 sur 11 Département de génie informatique et génie logiciel Question 3 (suite) 3.4)Écrire la fonction Function motNord(ByRef tablettres() As String, _ ByRef position As Coord, _ ByVal nbLettres As Integer) As String qui selon une position du tableau 2D de type, Type Coord i As Integer ‘ lignej As Integer ‘colonneEnd Type forme à partir du tableau 2D de la grille, le mot (chaîne de caractères) composé denbLettres selon la direction Nord. En concaténant les lettres du tableau 2D, il s’agit de trouver la chaîne de caractères à partir du tableau 2D (chaque case contient une lettre). Par exemple, dans le tableau 2D, le mot HYERES est dans la direction Nord. Si on n’a pas nbLettres au nord pour former le mot dans le tableau 2D, on retourne le mot vide. La fonction a comme paramètres : le tableau de lettres, la position (ligne, colonne) du tableau de lettres, et le nombre de lettres. La fonction retourne le mot concaténé. 3.5)Écrire la fonction Function motNordEst(ByRef tablettres() As String, _ ByRef position As Coord, _ ByVal nbLettres As Integer) As String qui selon une position du tableau 2D de type, Type Coord i As Integer ‘ lignej As Integer ‘colonneEnd Type forme à partir du tableau 2D de la grille, le mot (chaîne de caractères) composé denbLettres selon la direction Nord-Est. En concaténant les lettres du tableau 2D, il s’agit de trouver la chaîne de caractères à partir du tableau 2D (chaque case contient une lettre). Par exemple, dans le tableau 2D, le mot APT est dans la direction Nord-Est. Si on n’a pas nbLettres au Nord-Est pour former le mot dans le tableau 2D, on retourne le mot vide. La fonction a comme paramètres : le tableau de lettres, la position (ligne, colonne) du tableau de lettres, et le nombre de lettres. La fonction retourne le mot concaténé.
Cours INF1005B –Programmation procédurale ANNEXEExamen final –Automne 2015 Polytechnique Montréal Page 6 sur 11 Département de génie informatique et génie logiciel Fonctions Stringstring str1 & string str2 union de 2 chaînes str1 et str2 string LCASE(strings str) Convertir str minuscule string UCASE (string str) convertir str majuscule string LTRIM ( string str ) Supprimer les espaces à gauche de str string RTRIM (string, str) Supprimer les espaces à droite de str string LEFT (string str, integer intNb) extraire intNb caractères de str les plus à gauche string RIGHT(string str, integer intNb) extraire intNbr caractères de str les plus à droite string MID (string str,integer intPos, integer intNb) extraire intNb caractères à partir d'une position intPos de str integer INSTR(string str1, string str2) trouver la position de str2 dans la chaîne str1 à partir du début de la chaîne str1 integer INSTRREV (string str 1, string str2) Trouver la position de str2 dans la chaîne str1 à partir de la fin de la chaîne str1 integer LEN(string str) nombre de caractères de la chaîne str string REPLACE ( string str1, string str2) remplacer toutes les occurences de str2 dans str1 string SPACE( integer intNb) inserer intNb espaces string STRREVERSE (string str) renverser tous les caractères de str string () SPLIT (string str1, string str2) couper str1 en 2 chaînes selon le selon le délimiteur str2 integer STRCOMP (string str1,string2 str2) compare 2 chaînes de caractères 0 si str1 = str2 -1 si str1 < str2 1 si str1> str2 double VAL(string str) retourne le nombre trouvé dans la chaîne str integer ASC(string str) retourne le code ASCII de str string CHR (integer intCode) retourne le caractère du code ASCII intCode Conversion de type boolean CBOOL(expression) byte CBYTE (expression) currency CCUR(expression) double CDBL(expression) decimal CDEC(expression) Integer CINT(expression) Long CLNG(expression) single CSNG(expression)
Cours INF1005B –Programmation procédurale ANNEXEExamen final –Automne 2015 Polytechnique Montréal Page 7 sur 11 Département de génie informatique et génie logiciel string CSTR(expression) Fonctions Date Date DATE() retourne la date actuelle du système Date DATEADD ( interval, nombre, date ) Additionne un nombre à une date Interval : “yyyy” année, “q” quart “m” mois, “y” jour de l’année “d” jour “w” jour semaine” “ww” semaine, “h” heure “n” minute, “s” secondeDate DATEDIFF (interval, date1, date2 ) Différence entre date1 et date2 Date DATESERIAL( integer year, integer month, integer day ) Retourne la variable de type Date Integer DAY(Date) Retourne jour String MONTHNAME( nombre) Retourne le nom du mois Fonctions Temps Integer HOUR (string) Retourne l’heureInteger MINUTE (string) Retourne minutes integer SECOND(string) retourne seconde Long TIMER() retourne le nombre de secondes depuis minuit Date NOW() Retourne date et heure actuelles Fonctions mathématiques nombre ABS(nombre) valeur absolue double ATN(double) arctangent double TAN(double) Tangente double COS(double), double SIN(double) cosinus, sinus double EXP(double) eXdouble Log( double) ln integer FIX(double) partie entière integer INT(double) partie entière si le nombre <0, le premier entier plus petit que le nombre double ROUND ( double, nombreDecimal) arrondir aux nombres de décimal integer SGN (double) 1 si nombre >0 0 si nombre =0 -1 si nombre <0 double SQR (double) racine carrée RANDOMIZE(seed) initialiser nombres aléatoires double RND nombres aléatoires réel [0,1] INT ((upperbound - lowerbound + 1) * RND + lowerbound) nombres aléatoires entiers entre [lowerbound,upperbound]
Cours INF1005B –Programmation procédurale ANNEXEExamen final –Automne 2015 Polytechnique Montréal Page 8 sur 11 Département de génie informatique et génie logiciel Fonctions de vérifications Boolean ISDATE(string) vérifie si date Boolean ISEMPTY (variable) vérifie si variable a une valeur ou vide Boolean ISNUMERIC (variant) vérifie si variable a une valeur numérique Réel Function FormatNumber(Expression, nombreDecimal ) as stringFormatNumber(12.56832432, 3) donne “12.568”Tableau LBound ( tableau1D) indice inférieur première dimension UBound(tableau1D) indice supérieur première dimension LBound(tableau2D, 2)) indice inférieur deuxième dimension UBound(tableau2D, 2)) indice supérieur deuxième dimension Dim arr As Variant arr = Array("Orange", "Peche") Initialiser un tableau arr(0) ="Orange", arr(1) = "Peche" Dim s As String s = "rouge,jaune,vert,bleu" Dim arr() As String arr = Split(s, ",") arr(0) = “rouge” arr(1)=”jaune” arr(2) = “vert” arr(3) =”bleu”erase tableau Si le tableau n’est pas alloué dynamiquement les valeurs sont à 0, sinon l’espace mémoire du tableau est détruitObjet Range Propriétés .address Adresse absolue de la plage . Cells(x,y) Cellule à partir de la cellule de départ de la plage .offset (x,y) Cellule à partir d’un déplacement(x,y) de la cellule de départ de la plage .value Contenu de la cellule .column Index de la première colonne .row Index de la première ligne .formula .formula = ‘’sum(A1:A3 )‘’.name Nom de la plage .NumberFormat Modifie le format de la plage .count Retourne le nombre de cellules de la plage .currentRegion Retourne la plage délimitée par des cellules vides .End (xlUp).End(xlToLeft) Cellule en haut à gauche .End(xldown).End(xlToLeft) Cellule en bas à gauche
Cours INF1005B –Programmation procédurale ANNEXEExamen final –Automne 2015 Polytechnique Montréal Page 9 sur 11 Département de génie informatique et génie logiciel .End(xlUp).End(xlToRight) Cellule en haut à droite .End(xlDown).End(xlToRight) Cellule en bas à droite .Columns.Count nombre de colonnes .Rows.Count nombre de lignes .Cells.Count nombre de cellules Fonctions membres .clear Supprime le contenu et le format de la plage .ClearContents Supprime seulement le contenu .Copy Destination := AutrePlage Copie la plage dans AutrePlage .Sort Key1: = , Order1: =, Key2: = , Order2: = , Key3:= , Order3: = , Header: = Key = xlAscending ou xlDescending Header = XlYesNoGuess: spécifie si la première colonne a une entête, xlYes, xlNo default valeur, xlGuess Excel va déterminer s’il y a une entêteObjet Excel Workbook Fichier .xls (m) Workbooks Ensemble de fichiers ouverts Worksheet Feuille de calcul dans un WorkBook WorkSheets Ensemble des feuilles de calcul dans un WorkBook Chart graphique Charts Ensemble de graphiques Workbooks.Open Ouverture d’un fichier .xlsmWorkbooks([Fichier]).Close Fermeture d’un fichierWorkbooks([Fichier]).SaveAs Filename := FileFormat: spécifie le nom et l’emplacement du fichier lors de la sauvegarde Worksheets(« feuillX »). Add Ajouter une feuille Worksheets(« feuilleX »). delete Supprimer une feuille ThisWorkBookworkbook auquel la macro est écriteActiveWorkbook le fichier actif ( il est en premier dans la liste des fichiers ouverts ThisWorkbook.Path Répertoire du fichier excel ActiveSheet feuille de calcul qui est en premier dans la liste de feuilles de calcul ouvertes ActiveCell Cellule ou se trouve le curseur avant le début de l’exécution de la macro.
Cours INF1005B –Programmation procédurale ANNEXEExamen final –Automne 2015 Polytechnique Montréal Page 10 sur 11 Département de génie informatique et génie logiciel Contrôles graphiquesLabel étiquette TextBox Texte. Proprieté : .text : contenu du textBox ListBox Tableau d’élements.AddItem : ajouter un élément .Selected(i) = True : sélection d’un élément dans la liste optionButton Cocher une seule option. .caption : texte associé .change : l’utilisateur coche ou décoche l’option button.value = true ou false si l’usager a cochéCheckbox Cocher une ou plusieurs options. .caption : texte associé .change : l’utilisateur coche ou décoche le CheckBox. .value = true ou false si l’usager a coché.commandButton .caption : texte affiché sur le bouton Sub btOK_Click(): macro associé au bouton btOK lors d’un click de lasouris frame Grouper des contrôles Exemples: compter les lignes et colonnes de range Range("F1:H12").Rows.Count Compte le nombre de lignes, si on connait les valeurs du range. Dans cet exemple, le range est "F1:H12". Range("F1:H12").Columns.Count Compte le nombre de colonnes, si on connait les valeurs du range. . Dans cet exemple, le range est "F1:H12". Range(Range("F1"), Range("F1").End(xlDown)).Count Compte le nombre de lignes, si on connait la cellule de départ. Dans cet exemple, la cellule de départ est ("F1") Range(Range("F1"), Range("F1").End(xlToRight)).Count Compte le nombre de colonnes, si on connait la cellule de départ. Dans cet exemple, la cellule de départ est ("F1") With Range("A1") nbLigne = Range(.Offset(0, 0), .End(xlDown)).Count nbColonne = Range(.Offset(0, 0), .End(xlToRight)).Count End With Exemple de nombre de lignes et colonnes à partir d’une cellulerange("A1:B12").End(xlToLeft).Column Donne le numéro de la colonne à gauche , c’est à dire 1range("A1:B12").End(xlToRight).Column Donne le numéro de la colonne à droite, c’est à dire 2
Cours INF1005B –Programmation procédurale ANNEXEExamen final –Automne 2015 Polytechnique Montréal Page 11 sur 11 Département de génie informatique et génie logiciel range("A1:B12").End(xlup).row Donne le numéro de la ligne en haut , c’est à dire 1range("A1:B12").End(xldown).row Donne le numéro de la ligne en bas , c’est à dire 12