Académique Documents
Professionnel Documents
Culture Documents
PAD INPT
A LGORITHMIQUE ET
PROGRAMMATION 1
maijuin 2006
.
.
.
.
3
3
3
4
4
3 Variables
3.1 Quest ce quune variable ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Dfinition dune variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
4
4
4 Types fondamentaux
4.1 Les entiers . . . . . . . .
4.2 Les rels . . . . . . . . .
4.3 Les boolens . . . . . .
4.4 Les caractres . . . . . .
4.5 Les chanes de caractres
5
5
5
5
6
6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5 Constantes
6 Expressions
7 Instructions dentre/sorties
7.1 Opration dentre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2 Opration de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
6
7
8 Affectation
c INPTPAD
1/21
A LGORITHMIQUE
ET PROGRAMMATION
9 Structures de contrle
9.1 Enchanement squentiel . . . . . . . . .
9.2 Instructions conditionnelles . . . . . . . .
9.2.1 Conditionnelle Si ... Alors ...
9.2.2 Conditionnelle Si ... Alors ...
9.2.3 La clause SinonSi . . . . . . . .
9.2.4 Conditionnelle Selon . . . . . . .
9.3 Instructions de rptitions . . . . . . . . .
9.3.1 Rptition TantQue . . . . . . . .
9.3.2 Rptition Rpter ... Jusqu . .
9.3.3 Rptition Pour . . . . . . . . . .
9.3.4 Quelle rptition choisir ? . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
FinSi . . . . . . . . . .
Sinon ... FinSi . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
9
9
9
11
13
14
15
15
18
20
21
c INPTPAD
2/21
A LGORITHMIQUE
ET PROGRAMMATION
c INPTPAD
3/21
A LGORITHMIQUE
ET PROGRAMMATION
End Sub.
La constante PI est dfinie par le mot-cl Const. Il correspond donc une dfinition.
Notons quen Visual BASIC les constantes sont types. Les instructions sont les mmes que
celles prsentes en langage algorithmique mme si elles ont une forme un peu diffrente.
Remarque : Dans le cadre de lapplication de cet enseignement de lalgorithmique en Visual BASIC, nous utiliserons comme premire instruction de tous les exemples linstruction
EffacerEcran "Nom de lexemple" qui a pour effet deffacer la feuille de calcul courante (utilise comme cran daffichage) et dafficher en tte de la feuille le message mis entre guillemets
( adapter chaque exemple, bien videmment). Ceci permettra que les affichages raliss lors
de lexcution-test dun programme en cours de mise au point ne soient pas mlangs avec les
affichages raliss lors des prcdentes excutions.
2.3 Identificateurs
Un identificateur est un mot de la forme : une lettre (y compris le soulign) suivie dun
nombre quelconque de lettres et de chiffres ou du caractres soulign (mme touche de clavier
que le 8).
Remarque : Bien quil soit possible en VBA dutiliser des lettres accentues, cette pratique est
bannir pour des raisons de compatibilit !
2.4 Commentaires
Un commentaire commence par (caractre "quote" situ sur la touche 4) et se termine la
fin de la ligne.
3 Variables
3.1 Quest ce quune variable ?
3.2 Dfinition dune variable
En VBA, on utilise le mot-cl Dim suivi par le nom de la variable, le mot-cl As puis le type
de la variable.
1
2
3
Les types et leur signification seront prsents dans la suite du cours. On peut dclarer plusieurs
variables sur une mme ligne condition de sparer chaque dfinition (nom de variable puis
As puis le type) par une virgule. Ce raccourci est usuellement utilis si le mme commentaire
sapplique toutes les variables.
1
c INPTPAD
trois entiers
4/21
A LGORITHMIQUE
ET PROGRAMMATION
Attention : Le type doit imprativement tre rpt pour chaque variable (il serait incorrect
dcrire Dim a, b, c As Integer, les 2 premires variable a et b se voyant affecter un type par
dfaut qui nest pas Integer).
4 Types fondamentaux
Les oprateurs de comparaison entre les types fondamentaux se notent : <, >, <=, >=, = et <>.
20 \ 3
6 (le quotient de la division entire de 20 par 3)
20 mod 3
2 (le reste de la division entire de 20 par 3)
Remarque : Les dbordements de capacit sur les oprations entires provoquent une erreur
lexcution. Ainsi, le type Integer est limit des valeurs entre -32678 et +32767. Pour des
capacits plus grandes, on peut utiliser le type Long, permettant des valeurs entre + ou - 2 milliards.
c INPTPAD
5/21
A LGORITHMIQUE
ET PROGRAMMATION
c = "A"
la valeur de c est "A"
i = Asc(c)
la valeur de i est 65, code ASCII de "A"
5 Constantes
Les constantes sont dfinies en utilisant le mot-cl Const la place de Dim, en faisant suivre
le type de la variable par sa valeur derrire le symbole = :
1
2
3
4
5
6 Expressions
7 Instructions dentre/sorties
7.1 Opration dentre
En standard, le VBA utilise linstruction InputBox qui permet deffectuer une saisie dans une
bote-message fugitive. Dans le cadre de ce module dalgorithmique, nous utiliserons linstruction Saisir qui permet de saisir au clavier la valeur dune variable et de garder trace dans la
feuille de calcul courante de ce qui a t saisi :
1
Saisir Variable1
Attention : Il ne faut pas utiliser de parenthses autour de la variable, contrairement linstruction algorithmique Lire(Variable1). Une variante de linstruction de saisie permet de proposer
lutilisateur une valeur par dfaut qui sera affecte la variable sil se contente de valider la
saisie sans entrer de valeur particulire :
Cours VBA, Semaine 1
c INPTPAD
6/21
A LGORITHMIQUE
1
2
ET PROGRAMMATION
Saisir Duree, 5
la valeur 5 est affiche en prslection dans la bote-message :
si lusager valide directement par la touche Retour-chariot, la valeur 5 sera af
Noter lutilisation de loprateur de concatnation & pour composer un message unique rassemblant plusieurs informations mises bout bout (ici, une chane littrale et le contenu dune variable).
Attention : Tout comme pour linstruction de saisie, il ne faut pas utiliser de parenthses autour
des informations afficher, contrairement linstruction algorithmique Ecrire("La dure vaut", Duree).
Il est galement possible dutiliser la forme suivante utilisant la virgule comme sparateur :
1
Dans ce cas, la valeur de la variable Duree sera place dans la colonne suivante de la feuille
de calcul. Cette forme sera utile si on veut afficher des informations tabules. Noter que, si le
premier lment "La dure vaut " ne rentre pas dans la premire colonne, la partie qui dpasse
sera tronque laffichage et napparatra donc pas. Linstruction Afficher "" utilise avec un
chane vide (symbole " redoubl, et non pas 4 fois la quote simple) permet de sauter une ligne.
Exercice 1 : Cube dun rel
crire un programme qui affiche le cube dun nombre rel saisi au clavier.
Solution :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
8 Affectation
Laffectation se note avec un signe =.
Cours VBA, Semaine 1
c INPTPAD
7/21
A LGORITHMIQUE
ET PROGRAMMATION
Attention : Il ne faut pas confondre laffectation et le test dgalit, mme sils utilisent le mme
oprateur =. Le contexte permet de les diffrencier sans ambigut : un test dgalit apparat
dans une condition place derrire If, While ou Until (cf. chapitre suivant sur les structures de
contrle).
1
2
i = 10
affectation
If i=10 Then
test dgalit
6
7
c INPTPAD
8/21
A LGORITHMIQUE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ET PROGRAMMATION
9 Structures de contrle
9.1 Enchanement squentiel
La squence sexprime comme en algorithmique.
If condition Then une ou plusieurs instructions tenant sur cette unique ligne
Sil y a plusieurs instructions courtes qui tiennent sur la ligne, il faut utiliser : pour sparer
chaque instruction. Forme longue (la plus gnrale) :
Cours VBA, Semaine 1
c INPTPAD
9/21
A LGORITHMIQUE
1
2
3
4
5
ET PROGRAMMATION
If condition Then
instruction
...
instruction
End If
Bien noter que, pour la forme courte, la fin de lunique ligne tient lieu de End If implicite. Il est
tout fait possible dutiliser des parenthses autour de la condition si on prfre mieux la mettre
en valeur.
Exercice 4 : Une valeur entire est-elle paire ?
crire un algorithme qui lit une valeur entire au clavier et affiche paire si elle est paire.
Solution :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
:
-> paire
-> -----> paire
Dans le raffinage prcdent un point est noter. Il sagit du raffinage R2 qui dcompose
Afficher le verdict de parit . Nous navons pas directement mis la formule n Mod 2 = 0 .
Lintrt est que la formulation n est paire est plus facile comprendre. Avec la formule,
il faut dabord comprendre la formule, puis en dduire sa signification. n est paire nous
indique ce qui nous intresse comme information (facile lire et comprendre) et son raffinage
(R3) explique comment on dtermine si n est paire. Le lecteur peut alors vrifier la formule en
sachant ce quelle est sense reprsenter.
Raffiner est quelque chose de compliquer car on a souvent tendance descendre trop vite
dans les dtails de la solution sans sarrter sur les tapes intermdiaires du raffinage alors que
ce sont elles qui permettent dexpliquer et de donner du sens la solution.
Dans cet exercice, vous vous tes peut-tre pos la question : mais comment sait-on que
n est paire . Si vous avez trouv la solution vous avez peut-re donne directement la formule
alors que le point cl est la question. Il faut la conserver dans lexpression de votre algorithme
ou programme, donc en faire une tape du raffinage.
Si vous arrivez sur une tape que vous avez du mal dcrire, ce sera toujours une indication
dune tape qui doit apparatre dans le raffinage. Cependant, mme pour quelque chose de simple,
Cours VBA, Semaine 1
c INPTPAD
10/21
A LGORITHMIQUE
ET PROGRAMMATION
que vous savez faire directement, il faut tre capable de donner les tapes intermdiaires qui
conduisent vers et expliquent la solution propose. Ceci fait partie de lactivit de construction
dun programme ou algorithme.
Remarque : Il est gnralement conseill dviter de mlanger traitement et entres/sorties.
Cest pourtant ce qui a t fait ci-dessus. On aurait pu crire le premier niveau de raffinage
diffremment en faisant.
1
2
3
4
5
6
7
8
9
10
11
12
n: out Entier
n: in ; paire: out Boolen
paire: in Boolen
On constate ici que la variable intermdiaire paire permet davoir un programme plus
lisible car on a donn un nom la quantit (n Mod 2) = 0.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
If condition Then
instruction
...
Else
instruction
c INPTPAD
11/21
A LGORITHMIQUE
6
7
ET PROGRAMMATION
...
End If
3
4
5
6
tests
1
2
3
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
:
et 2 -> 2
et 1 -> 1
et 3 -> 3
c INPTPAD
12/21