INF130 - Ordinateurs et programmation. Semaine 05. Document présenté par Frédérick Henri et conçu par les enseignants en informatique du SEG

Documents pareils
Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

TP 1. Prise en main du langage Python

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Algorithmique et programmation : les bases (VBA) Corrigé

Les chaînes de caractères

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Cours Informatique Master STEP

Codage d information. Codage d information : -Définition-

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

1 TD 2 : Construction d'une chier Acrobat et envoi par

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

DELIBERATION N CP

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

STAGE IREM 0- Premiers pas en Python

Utilisation d objets : String et ArrayList

Présentation du langage et premières fonctions

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

Les différents types de données et leurs opérations de base

Traitement de texte : Quelques rappels de quelques notions de base

Une version javascript sera disponible directement dans le cours prochainement.

Formation VBA 3 Interagir

Rapport de Mini-Projet en ArcGIS Engine

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Bases de programmation. Cours 5. Structurer les données

Jeux de caracte res et encodage (par Michel Michaud 2014)

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

2 Comment fonctionne un ordinateur, dans les grandes lignes

MODE OPERATOIRE OPENOFFICE BASE

Visual Basic for Applications

LES TYPES DE DONNÉES DU LANGAGE PASCAL

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

FORMATION au VBA Pour EXCEL. Version 2007 & +

Convers3 Documentation version Par Eric DAVID : vtopo@free.fr

Paginer les données côté serveur, mettre en cache côté client

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Programme awk------introduction rapide

Application 1- VBA : Test de comportements d'investissements

Apprendre à manipuler le clavier Médiathèque de Bussy Saint-Georges APPRENDRE A MANIPULER LE CLAVIER

Créer une base de données

Découverte de Python

Logiciel de Base. I. Représentation des nombres

Initiation à la programmation en Python

Utilitaires méconnus de StrataFrame

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

PROGRAMMATION EVENEMENTIELLE sur EXCEL

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Examen Médian - 1 heure 30

Algorithme. Table des matières

Licence Sciences et Technologies Examen janvier 2010

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

INF 321 : mémento de la syntaxe de Java

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Oracle Le langage procédural PL/SQL

Recherche dans un tableau

Programmation avec Microsoft Visual Basic. NET. Réponses aux questions Solutions des exercices

Chapitre 10 Arithmétique réelle

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Solutions du chapitre 4

Initiation à la Programmation en Logique avec SISCtus Prolog

Algorithmique et Programmation, IMA

Préparation à l examen EFA en Macro

1 Introduction au codage

Arbres binaires de recherche

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

IMPORTATION, CRÉATION, MANIPULATION, EXPORTATION DE DONNÉES STATISTIQUES

.NET - Classe de Log

Java Licence Professionnelle CISII,

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Pourquoi l apprentissage?

KL5121. Pour activer des sorties en fonction de la position d'un codeur

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Guide de formation avec cas pratiques. Programmation. Philippe Moreau Patrick Morié. Daniel-Jean David

Programme Compte bancaire (code)

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

OCL - Object Constraint Language

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

Les concepts de base, l organisation des données

Compléments de documentation Scilab : affichage de texte et formatage de nombres

TRIGONOMETRIE Algorithme : mesure principale

Plan du cours Cours théoriques. 29 septembre 2014

V- Manipulations de nombres en binaire

Programmer en JAVA. par Tama

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

1. Structure d'un programme FORTRAN 95


Microsoft Excel. Tableur

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Stockez et organisez vos données sous Excel. Une approche systématique, structurée et simplifiée

Les structures. Chapitre 3

Chapitre 2 Devine mon nombre!

TP Codage numérique des caractères. Un ordinateur ne manipule que des 0 et des 1 : Comment alors code-t-il du texte?

Premiers Pas en Programmation Objet : les Classes et les Objets

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Transcription:

INF130 - Ordinateurs et programmation Semaine 05 Document présenté par Frédérick Henri et conçu par les enseignants en informatique du SEG

Objectifs du cours Caractères - Table ASCII - Conversion Chaînes de caractères - Fonctions prédéfinies -Exercices INF130 - Cours 05 Objectifs

La table ASCII La table ASCIIest une liste qui contient 256 symboles (des caractères de l'alphabet ainsi que des caractères spéciaux et des caractères de contrôle) auquel est associé à chacun d'eux un code numérique L'acronyme ASCII provient de American Standards Committee for Information Interchange La table se compose des sections suivantes : -caractères0 à 31 : caractères de contrôle; - caractères 32 à 127 : caractères normaux; -caractères 128 à 255 : caractères de la table étendue (il en existe plusieurs version) Pourquoi se limiter à 256 caractères? Parce qu'il y a 256 valeurs possibles lorsqu'on emploie 8 bits (1 octet) Voici les caractères 32 (l'espace) à 255 selon Microsoft Excel : Code Car Code Car Code Car Code Car Code Car Code Car Code Car 32 64 @ 96 ` 128 160 192 À 224 à 33! 65 A 97 a 129 161 193 Á 225 á 34 " 66 B 98 b 130 162 194  226 â 35 # 67 C 99 c 131 ƒ 163 195 à 227 ã 36 $ 68 D 100 d 132 164 196 Ä 228 ä 37 % 69 E 101 e 133 165 197 Å 229 å 38 & 70 F 102 f 134 166 198 Æ 230 æ 39 ' 71 G 103 g 135 167 199 Ç 231 ç 40 ( 72 H 104 h 136 ˆ 168 200 È 232 è 41 ) 73 I 105 i 137 169 201 É 233 é 42 * 74 J 106 j 138 Š 170 ª 202 Ê 234 ê 43 + 75 K 107 k 139 171 «203 Ë 235 ë 44, 76 L 108 l 140 Œ 172 204 Ì 236 ì 45-77 M 109 m 141 173-205 Í 237 í 46 78 N 110 n 142 Ž 174 206 Î 238 î 47 / 79 O 111 o 143 175 207 Ï 239 ï 48 0 80 P 112 p 144 176 208 Ð 240 ð 49 1 81 Q 113 q 145 177 ± 209 Ñ 241 ñ 50 2 82 R 114 r 146 178 ² 210 Ò 242 ò 51 3 83 S 115 s 147 179 ³ 211 Ó 243 ó 52 4 84 T 116 t 148 180 212 Ô 244 ô 53 5 85 U 117 u 149 181 µ 213 Õ 245 õ 54 6 86 V 118 v 150 182 214 Ö 246 ö 55 7 87 W 119 w 151 183 215 247 56 8 88 X 120 x 152 184 216 Ø 248 ø 57 9 89 Y 121 y 153 185 ¹ 217 Ù 249 ù 58 : 90 Z 122 z 154 š 186 º 218 Ú 250 ú 59 ; 91 [ 123 { 155 187» 219 Û 251 û 60 < 92 \ 124 156 œ 188 ¼ 220 Ü 252 ü 61 = 93 ] 125 } 157 189 ½ 221 Ý 253 ý 62 > 94 ^ 126 ~ 158 ž 190 ¾ 222 Þ 254 þ 63? 95 _ 127 159 Ÿ 191 223 ß 255 ÿ INF130 - Cours 05 Table ASCII

Fonctions prédéfinies Il existe deux fonctions prédéfinies en VBA permettant de consulter la table ASCII Chr La fonction Chr retourne le caractères associé à un code ASCII Exemples: Chr(65) retourne "A" Chr(97) retourne "a" Chr(123) retourne "{" Asc À l'inverse, la fonction Asc retourne le code ASCII associé à un caractère donné Asc("A") retourne 65 Asc("a") retourne 97 Asc("{")retourne 123 INF130 - Cours 05 Fonctions VBA 1

Conversion de minuscule à majuscule Afin de convertir un caractère majuscule en caractère minuscule, il est important de remarquer où se situent les lettres majuscules et les lettres minuscules dans la table ASCII 0 65 = "A" 90 = "Z" 97 = "a" 122 = "z" Lettres majuscules Lettres minuscules Pour convertir un caractère en minuscules, il suffit de trouver la distance entre la lettre à convertir et la lettre "A" Ensuite, on se positionne à la même distance de "a" pour obtenir la lettre minuscule correspondante À titre d'exemple, pour convertir la lettre "E" en minuscule, nous ferions ceci : 1) Calcul de la distance entre "E" et "A" Asc("E") -Asc("A") = 69-65 = 4 2) Déplacement de cette distance par rapport à "a" Chr(Asc("a") + 4)= "e" INF130 - Cours 05 Majuscule à minuscule

Exercice Écrivez une fonction qui convertit un caractère représentant une lettre minuscule en lettre majuscule INF130 - Cours 05 Exercice 1

Solution Public Function convertir_en_majuscule(byval caractere As String) As String convertir_en_majuscule = Chr(Asc(caractere) - Asc("a") + Asc("A")) End Function Remarquons que Lors de l'appel de la fonctionci-dessus, sile paramètre effectif est un caractère qui représente autre chose qu'une lettre, la conversion semble donner n'importe quoi Par exemple, l'appel convertir_en_majuscule("r") retourne "2" De plus, sile paramètre effectif est une chaîne de caractères qui contient plus d'un caractères, alors la conversion ne traite que le premier caractères Ainsi, l'appel convertir_en_majuscule("fred") retourne "F" Nous verrons comment régler ces problèmes sous-peu INF130 - Cours 05 Solution 1

Opérateurs servant à manipuler des chaînes En VBA, le typestringpermet de conserver une chaîne de caractères Il existe plusieurs opérateurs permettant de manipuler des chaînes de caractères Opérateurs d'assignation = L'opérateur = permet d'assigner une chaîne à une variable Exemple Dim une_chaine As String une_chaine = "Allo" Opérateurs de comparaison < <= > >= = <> Les opérateurs de comparaison peuvent être employés pour comparer des chaînes de caractères Pour ce faire, VBA utilise la table des caractères ASCII pour savoir si un caractère est "supérieur" à un autre Exemples "A" < "B" retourne True "INF130" > "CHM131" retourne True "ALLO" = "allo" retourne False Opérateur de concaténation & L'opérateur de concaténation &permet de créer une nouvelle chaînes à partir de la juxtaposition de deux expressions Il est préféré à l'opérateur +pour concaténer deux chaînes de caractères, car il impose que le résultat soit de type String Ainsi, il n'y a pas de confusion possible lors de l'interprétation des expressions lorsque des variables de types numériques sont concaténées Exemple "INF" & "130" retourne "INF130" "V" & "B" & "A" retourne "VBA" INF130 - Cours 05 Opérations

Exercices Écrivez une fonction qui retourne Truesiun caractère représente un chiffre et Falsedans tous les autres cas Supposez que la chaîne reçue ne contient qu'une seul caractère et n'utilisez aucune des fonctions de VBA Écrivez une fonction qui retourne True si un caractère représente une lettre majuscule et False dans tous les autres cas Supposez que la chaîne reçue ne contient qu'une seul caractère et n'utilisez aucune des fonctions de VBA Écrivez une fonction qui retourne True si un caractère représente une lettre minuscule et False dans tous les autres cas Supposez que la chaîne reçue ne contient qu'une seul caractère et n'utilisez aucune des fonctions de VBA Écrivez une fonction qui retourne Truesiun caractère représente une lettre et Falsedans tous les autres cas Supposez que la chaîne reçue ne contient qu'une seul caractère et n'utilisez aucune des fonctions de VBA Écrivez une fonction qui convertit un caractèreen majuscule Si le caractère reçu n'est pas une lettre minuscule, alors il le retourne inchangé Supposez que la chaîne reçue ne contient qu'une seul caractère et n'utilisez aucune des fonctions de VBA INF130 - Cours 05 Exercices 2

Solutions Public Function est_un_chiffre(byval caractere As String) As Boolean est_un_chiffre = (caractere >= "0" And caractere <= "9") Public Function est_une_majuscule(byval caractere As String) As Boolean est_une_majuscule = (caractere >= "A" And caractere <= "Z") Public Function est_une_minuscule(byval caractere As String) As Boolean est_une_minuscule = (caractere >= "a" And caractere <= "z") Public Function est_une_lettre(byval caractere As String) As Boolean est_une_lettre = est_une_majuscule(caractere) Or _ est_une_minuscule(caractere) End Function Public Function convertir_en_majuscule(byval caractere As String) As String If (Not est_une_lettre_minuscule(caractere)) Then convertir_en_majuscule = caractere Else convertir_en_majuscule = Chr(Asc(caractere) - Asc("a") + Asc("A")) End If End Function INF130 - Cours 05 Solutions 2

Exercice sur les chaînes de caractères Écrivez une fonction nommée lpadqui reçoit une chaînede caractères et ajoute nblancs au début de la chaîne À titre d'exemple, l'appel lpad("allo", 3) retourne " allo" INF130 - Cours 05 Exercices 3

Solution de l'exercice sur les chaînes de caractères ' ' LPAD ' ' Cette fonction reçoit une chaîne de caractères, ajoute n blancs au ' début de celle-ci et la retourne ' ' PARAMÈTRES : ' - chaine : La chaîne initiale (type : String) ' - nb_blancs : Le nombre de blancs à ajouter (type : Integer) ' ' VALEUR DE RETOUR : La chaîne au début de laquelle des blancs ont été ' ajouté (type : String) ' ' EXEMPLE D'APPEL : ' lpad("allo", 3) retourne " allo" ' Public Function lpad(byval chaine As String, _ ByVal nb_blancs As Integer) As String Dim i As Integer ' Compte les blancs ajoutés au début ' On ajoute un blanc au début de la chaîne à nb_blancs reprises For i = 1 To nb_blancs chaine = " " & chaine Next i lpad = chaine End Function INF130 - Cours 05 Solutions 3

Fonctions servant à manipuler une chaîne VBA offre plusieurs fonctions permettant de manipuler des chaînes de caractères; en voici quelques-unes Référez-vous à l'aide en ligne de VBA pour connaître la syntaxe de ces fonctions Fonctions Len Cette fonction retourne la longueur d'une chaîne de caractères Len("Bonjour") retourne 7 Len("") retourne 0 UCase et LCase Les fonctions UCase(upper case) et LCase(lower case) retournent une chaîne de caractères où les lettres sont converties en majuscules ou en minuscules UCase("Bonjour") retourne "BONJOUR" LCase("Bonjour") retourne "bonjour" UCase("inf130") retourne "INF130" Left et Right Ces fonctions permettent d'extraire d'une chaîne de caractères un nombre donné de caractères respectivement à partir de la gauche ou de la droite Left("Bonjour", 3) retourne "Bon" Right("Bonjour", 4) retourne "jour" Right("Bonjour", Len("Bonjour") - 1) retourne "onjour" Mid Cette fonction permet d'extraire d'une chaîne de caractères une sous-chaîne située à une position donnée et d'une longueur donnée Mid("Bonjour", 1, 1) retourne "B" Mid("Bonjour", 2, 1) retourne "o" Mid("Bonjour", 1, 3) retourne "Bon" Mid("Bonjour", 4, 4) retourne "jour" Mid("Bonjour", 5, 2) retourne "ou" Trim Cette fonction retourne une copie de le chaîne de caractères reçue en paramètre mais sans ses espaces de gauche, ni ses espaces de droite Trim(" Bonjour ") retourne "Bonjour" Trim(" Bonjour") retourne "Bonjour" Trim(" ") retourne "" (une chaîne vide) InStr Cette fonction retourne la position de la première apparition d'une chaîne à l'intérieur de la chaîne reçue en paramètre, ou 0 (zéro) si la chaîne n'est pas trouvée InStr("Bonjour", "on") retourne 2 InStr("Bonjour", "o") retourne 2 InStr("Bonjour", "jour") retourne 4 InStr("Bonjour", "zzz") retourne 0 FormatNumber Cette fonction retourne une représentation en chaîne de caractères d'un nombre selon les désirs du programmeur (nombre de décimales à afficher après le point, regroupement des milliers, etc) Exemple : FormatNumber(123456789, 2, vbtrue) retourne "12 34568" IsNumeric Cette fonction retourne Truesi son paramètre peut être interprété comme étant un nombre Attention toutefois au signe "-", aux virgules et aux points ainsi qu'aux espaces qui peuvent être acceptés ou non en fonction des configurations de l'ordinateur Cette fonction est donc dangeureuse à utiliser! IsNumeric("-123") retourne True INF130 - Cours 05 Fonctions VBA 2

Exercices Écrivez une fonction nommée ltrimqui reçoit une chaînede caractères et retourne celle-ci sans les blancs se trouvant au début ltrim(" allo ") retourne "allo " ltrim("inf 130") retourne "INF 130" Écrivez une fonction qui reçoit une chaînede caractères et retourne celle-ci après l'avoir convertie en majuscules N'utilisez pas la fonction Ucase Écrivez une fonction qui reçoit une chaînede caractères et un caractère Elle retourne le nombre d'occurrences de ce caractère dans la chaîne (le nombre de fois que ce caractère se retrouve dans la chaîne) Écrivez une fonction qui reçoit deux chaînes de caractères;la première contient une phrase alors que la seconde contient une liste de caractères à conserver La fonction parcourt la phrase et à chaque fois qu'elle trouve un caractère qui n'est pas dans la seconde chaîne et qui n'est pas un blanc, elle le remplace par une étoile Elle retourne la phrase obtenue À titre d'exemple, l'appel phrase_censuree("vive le vent", "eit ")retourne la chaîne "*i*e *e *e*t" INF130 - Cours 05 Exercices 4

Solutions Public Function ltrim(byval chaine As String) As String ' On retire le caractère au début de la chaîne tant que c'est ' un blanc While (Left(chaine, 1) = " ") chaine = Right(chaine, Len(chaine) - 1) Wend ltrim = chaine End Function Public Function chaine_en_majuscule(byval chaine As String) As String Dim longueur_chaine As Long ' Le nombre de caractères de la chaîne Dim i As Long ' On calcule la longueur de la chaine longueur_chaine = Len(chaine) ' On convertit en majuscule chaque caractère et on l'ajoute à la ' chaîne solution chaine_en_majuscule = "" For i = 1 To longueur_chaine chaine_en_majuscule = chaine_en_majuscule & _ convertir_en_majuscule(mid(chaine, i, 1)) Next i End Function Public Function nb_occurrences_caractere(byval chaine As String, _ ByVal caractere As String) As Long Dim longueur_chaine As Long ' Le nombre de caractères de la chaîne Dim i As Long ' On calcule la longueur de la chaîne longueur_chaine = Len(chaine) ' On parcourt la chaîne et on compte le nombre de fois que le caractère ' est rencontré nb_occurrences_caractere = 0 For i = 1 To longueur_chaine If (mid(chaine, i, 1) = caractere) Then nb_occurrences_caractere = nb_occurrences_caractere + 1 End If Next i End Function Public Function phrase_censuree(byval phrase As String, _ ByVal caractere_a_conserver As String) _ As String Dim i As Integer ' Pour parcourir la phrase ' On consulte chaque caractère de la phrase For i = 1 To Len(phrase) ' Si le caractère est dans la liste des caractères à conserver, ' alors on ajoute le caractère à la réponse ' Sinon, on ajoute une étoile If (InStr(caractere_a_conserver, Mid(phrase, i, 1)) <> 0) Then phrase_censuree = phrase_censuree & Mid(phrase, i, 1) Else phrase_censuree = phrase_censuree & "*" End If Next i End Function INF130 - Cours 05 Solutions 4

Les chaînes de caractèresexistent dans tous les langages Cependant, leur manipulation varie énormément d'un langage à un autre Pour ce cours, il est intéressant de comprendre comment accéder aux caractères d'une chaîne, car cela aide également à mieux saisir le fonctionnement des tableaux - Terminer le travail pratique numéro I Conclusion À faire cette semaine Notions importantes vues cette semaine -Fonctions liéesaux codes ASCII : Chret Asc; -Opérations sur les chaînes : =, &, <, <=, =, >=et >; - Fonctions servant à manipuler des chaînes de caractères : Len, Ucase, LCase, Left, Right, Mid et InStr INF130 - Cours 05 Conclusion