Академический Документы
Профессиональный Документы
Культура Документы
http://www.courstechinfo.be/Programmation/InitProg.pdf 1
1. Introduction
1.1. Objectifs du cours
Le but du cours nest pas dappendre un langage particulier. Il est de donner des notions
gnrales de programmation utilisables avec diffrents logiciels et diffrents langages.
Nous nous y attacherons apprendre la logique de programmation plutt que dtudier
une syntaxe bien prcise.
Ceci dit, nous sommes bien obligs de choisir un langage pour cet apprentissage. Ce
choix entrane aussi le choix dun environnement de programmation.
Le langage choisi est driv du langage Basic (Beginners All-purpose Symbolic
Instruction Code) parce que cest un langage pour dbutant et quil permettra par la
suite ceux qui auront suivi ce cours de lutiliser dans le cadre de lutilisation des
logiciels bureautiques les plus courants (Word, Excel et Access). Nous utiliserons le
langage Basic sous trois formes diffrentes : le QBasic, le QuickBasic et le VisualBasic.
Le QBasic et le QuickBasic seront utiliss dans un premier temps pour se familiariser
la programmation procdurale. Ces environnements de programmations, dj anciens
puisquils datent du milieu des annes 80, conviennent cependant trs bien pour
dcouvrir un langage de programmation, aborder les notions de variables (types,
dclarations, assignations) et la logique de programmation (structures de tests, boucles,
fonctions et procdures).
Nous ferons avec ces langages de la programmation procdurale dans un environnement
DOS. Ces outils de programmation QB fonctionnent en mode invite de commande.
Le QBasic tient sur une sur une seule disquette et est interprt. Le QuickBasic est une
version plus complte qui permet la cration de fichiers excutables pouvant
fonctionner indpendamment de lenvironnement de programmation mais toujours en
mode invite de commande .
Ce mme langage pourra aussi tre utilis pour lcriture de script en VbScript dans
diffrents contextes dexcution :
des pages Web (lisibles uniquement sur Internet Explorer)
en utilisation directe sous Windows dans lenvironnement de programmation de
WSH Windows Scripting Host
ou encore pour programmer certaines fonctions avances dans les applications
de Microsoft Office : VBA Visual Basic for Applications
http://www.courstechinfo.be/Programmation/InitProg.pdf 2
2. Langages interprts ou compils
Pour tre excutable un programme doit tre comprhensible par lordinateur qui ne
peut dcoder que des 1 et des 0. Ce code, le langage machine, est loin de notre langage
de tous les jours. Notre langage parl est riche, nuanc mais trop ambigu pour
lordinateur qui ne dispose pas de lintuition ncessaire pour le comprendre.
Il nous faut donc un langage artificiel utilisable par lhomme et la machine. Les
langages de programmation sont nombreux mais il est inutile dtre polyglotte en la
matire pour tre un expert en programmation. Tous ces langages ont de nombreux
points communs, cest ceux-ci que nous nous intresserons. Nous insisterons sur les
principes transposables dun langage de programmation lautre en laissant de ct les
particularits trop spcifiques aux langages que nous utilisons pour notre apprentissage.
Le langage de programmation ressemble donc notre langage parl.
Le code crit dans ce langage est appel code source. Il doit tre traduit en langage
machine pour pouvoir tre excut par lordinateur. Il y a deux manires de raliser
cette traduction : la compilation et linterprtation.
Compilation Le code source est entirement traduit pour donner un code binaire,
appel code objet 1 Il se prsente alors sous la forme dun fichier
dont lextension est souvent .obj Diffrents fichiers objets
obtenus partir de diverses compilations de fichiers sources ( qui
nont pas ncessairement t crits dans le mme langage) sont
alors rassembls pour former un code excutable ( extension
.exe )
Interprtation Chaque ligne du code source est interprte puis excute
immdiatement avant de passer linterprtation de la suivante.
Cette mthode est plus lente mais elle est aussi plus facile pour le
dbutant puisque le programme sexcute instantanment sans
devoir passer par les tapes de la compilation. Ces tapes
constituent une difficult qui sajoute celle de lapprentissage du
langage.
Le QBasic est un langage interprt. Le QuickBasic et le VisualBasic peuvent la fois
tre interprt et compils.
1
Le mot objet na rien voir ici avec la programmation oriente objet.
http://www.courstechinfo.be/Programmation/InitProg.pdf 3
3. Installation de QBasic
Le QBasic tient dans seulement deux fichiers. Vous les trouverez dans les CD-ROM
dinstallation de Windows 95 dans le rpertoire \OTHER\OLDMSDOS ou dans le
CDROM dinstallation de Windows 98 dans le rpertoire \TOOLS\OLDMSDOS.
Il sagit des fichiers QBASIC.EXE et QBASIC.HLP. Les deux fichiers runis ne font
pas plus de 329 Ko. Ctait avant les manigances de lalliance Windows-Intel pour nous
pousser la consommation en produisant des logiciels toujours plus volumineux et
sassurer ainsi que nos ordinateurs seront toujours plus vite obsoltes !
Copiez ces deux fichiers dans votre rpertoire Windows ou WINNT suivant ce que vous
avez comme systme dexploitation.
Passez alors en mode invite de commande.
Crez un rpertoire o vous enregistrerez vos projets en QBasic.
Placez-vous ensuite dans ce rpertoire pour appeler QBasic.
C:\
C:\>MD QB
C:\
C:\>CD QB
C:\
C:\QB>QBasic
http://www.courstechinfo.be/Programmation/InitProg.pdf 4
4. Lenvironnement de programmation QBasic
Lenvironnement de programmation sert la fois dditeur de programme,
dinterprteur et de debuger (programme de mise au point).
Cet environnement vous donne accs 3 types de fentre.
- La fentre daide dont le fond est noir se referme en pressant la touche ESC.
- La fentre de programmation dont le titre est sans-nom tant que le programme qui
sy trouve na pas t sauv sous un autre nom.
- La fentre immdiate partir de laquelle nous testerons des instructions une une.
Les fentres peuvent tre redimensionnes en faisant glisser la barre de sparation
laide de la souris ou en pressant les touches Alt + ou Alt pour les agrandir ou les
rduire.
http://www.courstechinfo.be/Programmation/InitProg.pdf 5
5. Concepts fondamentaux de programmation
5.1. Les variables
Les donnes sont stockes dans des variables. Ces variables sont des emplacements
dans la mmoire de lordinateur. Elles ont un nom et un type (fixes) elles contiennent
une valeur qui elle peut varier.
Le nom dune variable permet de retrouver son emplacement en mmoire. Il quivaut
son adresse.
Le type de la variable dtermine lespace lui rserver en mmoire et les traitements
qui lui sont appropris. Une addition entre nombres entiers ne se fait pas avec les
mmes algorithmes que si ces nombres sont en format virgule flottante .
Les types de variables diffrent dun langage lautre. Tous ont des types entier et
rel Par contre, en langage C par exemple il ny a pas de type chane de caractre.
Dautres langages tels que le VisualBasic supportent des types supplmentaires comme
les types DATE et BOOLEAN.
http://www.courstechinfo.be/Programmation/InitProg.pdf 6
5.4. Noms des variables
A ce sujet encore, chaque langage a ses propres conventions. Dune manire gnrale,
un nom de variable commence toujours par une lettre et est suivi dautres lettres et/ou
de chiffres. Certains langages autorisent dautres types de caractres. Le caractre
soulign est gnralement admis mais les autres caractres spciaux sont soit
interdits ou ont des significations trs particulires. Le mieux, est donc de ne jamais
utiliser de caractres spciaux (ponctuation, #, $ etc.) ni de caractres accentus.
Les noms dinstructions sont rservs, ils ne sauraient convenir comme nom de variable.
La taille maximum des noms des variables varie aussi dun langage lautre. En QB,
cette taille est limite 40 caractres cest bien suffisant.
5.5. Assignations
Assigner une valeur une variable, cest crire cette valeur dans lemplacement
mmoire rserv cette variable.
AGE = 19 assignation avec une valeur constante
Nom = "Lambert" la valeur est ici une chane de caractres
Candidat = Nom la valeur est issue dune autre variable
N1 = (N1 + N2)/2 la valeur est ici une expression
5.6. Oprateurs
Oprateur Description Exemple Rsultat
+ Addition 3 + 7 10
- Soustraction 7.5 5 2.5
* Multiplication 2.54 * 2 5.08
/ Division 5.2 / 2 2.6
\ Division entire 17 \ 3 5
MOD Reste de la division entire 17 MOD 3 2
2 ^ 10 1024
^ Elvation la puissance
25 ^ (1/2) 5
+ Concatnation de chanes Bart + Bart Simpson
Simpson
Exercices
Ex 5a Les noms de ces variables sont-ils valides ?
Variables Oui / Non Pourquoi ?
Num007
4000LIEGE
Tartempion
Jean-Paul
Cls
Nom
Prnom
N
http://www.courstechinfo.be/Programmation/InitProg.pdf 7
Ex 5b Dterminez les valeurs de A, B et C aprs excution des instructions suivantes :
DIM A AS INTEGER, B AS INTEGER, C AS INTEGER
A = 2
B = 3
C = A + B
A = C + 2 * B
B = (C + B) ^ 2
C = C \ 3
http://www.courstechinfo.be/Programmation/InitProg.pdf 8
5.7. Entres / Sorties
Considrons prsent quun programme est une moulinette o entrent des donnes
et do sortent des rsultats.
La premire chose faire pour exprimenter un langage est donc dapprendre comment
entrer une donne et sortir un rsultat lcran.
PRINT
Instruction Rsultat
PRINT "Salut Herv" Salut Herv
PRINT " 3 + 4 " 3 + 4
PRINT 3 + 4 7
PRINT Age + 1 20
PRINT "Bonjour " + Nom Bonjour Lambert
PRINT "Age = " ; Age Age = 19
NB. Le point-virgule [;] sert de sparateur dans la commande PRINT pour imprimer
plusieurs donnes les unes la suite des autres. Il se met aussi la fin de la commande
PRINT quand on souhaite que celle-ci ne soit pas suivie dun retour la ligne.
INPUT
INPUT "Quel est ton nom ? ", Nom
Cet exemple suffit pour montrer comment inviter lutilisateur entrer une information
et comment est prcis le nom de la variable qui va recevoir cette donne.
NB. Beaucoup de choses pourraient encore tre dites sur cette instruction INPUT mais
tous ces dtails ne nous intressent pas. Concentrons-nous sur la logique de
programmation plutt que sur les spcificits du QBasic.
Exercices
Ex 5c Ecrivez et testez un petit programme qui vous demande votre nom puis votre prnom. Il
vous salue ensuite comme suit :
Ex 5d Aprs vous avoir demand votre nom, le programme vous demande votre ge. Il conclut
en vous indiquant le nombre dannes quil vous reste avant de profiter de votre retraite.
Ex 5e Variante pas bien plus complique du mme exercice ( faites la tout de mme)
Quel est ton Nom ? Tartempion
Bonjour Tartempion, quel est ton ge ? 20
Dans ce cas il te reste 45 ans avant la retraite.
Courage !
http://www.courstechinfo.be/Programmation/InitProg.pdf 9
6. Structures de programmation
6.1. Programmation structure
Un programme est un ensemble dinstructions excutes par lordinateur. Les langages
tels que le BASIC possdent depuis longtemps des instructions telles que le GOTO qui
permette de faire des sauts dun endroit lautre dans un programme. Grce ces sauts
combins avec linstruction IF on sait demander au programme de changer sa marche
suivre en fonction des valeurs que prennent les variables. On a bidouill ainsi pendant
de nombreuses annes en sautant comme bon semblait dun point lautre du
programme. Ctait le temps de la programmation spaghetti .
Les programmes crits de la sorte pour peu quils ne soient pas abandonns en cours de
route finissent parfois par marcher mais sont difficiles modifier et faire voluer.
Depuis des thoriciens ont dmontr que trois structures suffisent pour crire nimporte
quel programme. On est entr dans laire de la programmation structure. Les
instructions de type GOTO sont depuis considres comme des abominations par tout
programmeur qui se respecte et les langages structurs tels que le Pascal et le C sont
apparus.
Un programme se doit dtre un ensemble structur dinstructions.
http://www.courstechinfo.be/Programmation/InitProg.pdf 10
6.3. Lalternative
IF . . . THEN . . . ENDIF
Le QBasic comme la plupart des langages de programmation possde une instruction IF
pour changer le cours de lexcution dun programme en fonction du rsultat dun test
de comparaison. La syntaxe varie dun langage lautre, voici comment il conviendrait
dcrire ces structures de dcision en QBasic :
Syntaxe Exemples
IF condition THEN IF n = 0 THEN
Squence dinstructions Print "Valeur nulle"
ENDIF ENDIF
IF condition THEN IF Age >= 18 THEN
Squence dinstructions A PRINT "Majeur"
ELSE ELSE
Squence dinstructions B PRINT "Mineur"
ENDIF ENDIF
IF condition THEN IF Age < 25 THEN
Squence dinstructions A PRINT "Tarif Jeunes"
ELSEIF condition 2 ELSEIF Age >= 60
Squence dinstructions B PRINT "Tarif Seniors"
ELSE ELSE
Squence dinstructions C PRINT "Tarif plein"
ENDIF ENDIF
SELECT CASE . . .
Linstruction SELECT CASE convient mieux ds quil y a plus de trois conditions
tester
SELECT CASE expression
CASE liste_de_valeurs_1 Les listes de valeurs peuvent se prsenter
Squence dinstruction 1 comme suit :
CASE liste_de_valeurs_1 2 = une valeur
Squence dinstruction 2 12, 15, 21 = plusieurs valeurs
10 TO 20 = une plage de valeurs
CASE ELSE IS > 12 = au-del dune valeur
Squence dinstruction N
END CASE
http://www.courstechinfo.be/Programmation/InitProg.pdf 11
6.4. Les boucles
DO . . . LOOP
Le nombre de rptitions est contrl par un test relationnel qui est soit
plac au-dessus de la boucle soit en fin de boucle.
Dans le premier cas, puisque le test est fait en premier lieu, la squence
dinstructions pourrait trs bien ne jamais tre excute.
Par contre, la squence qui prcde est toujours excute au moins une fois
quand le test est mis en fin de boucle.
Les conditions de rptitions sont introduites par WHILE ( = tant que )
ou avec une condition inverse par UNTIL ( = jusqu ce que )
Le mot LOOP a ici le sens de boucler / rpter
DO DO
| |
LOOP WHILE condition LOOP UNTIL condition
FOR . . . NEXT
La boucle FOR . . . NEXT offre une notation plus concise pour les rptitions gres
par un compteur.
CLS
FOR i = 0 to 6 Affiche tous les nombres de 1 6
PRINT i
NEXT i
Linstruction NEXT au bas de la boucle incrmente la valeur du compteur. La valeur de
celui-ci est ensuite teste pour dterminer si la boucle doit tre rpte.
Lincrmentation ( le comptage) est par dfaut dune unit chaque passage moins
quun pas diffrent ne soit prcis en ajoutant une instruction STEP:
CLS
FOR i = 0 to 6 STEP 2 Affiche les nombres pairs de 0 6
PRINT i
NEXT i
Plantage dune boucle
Une cause de plantage frquent est d au problme de terminaison dune boucle.
Une condition darrt qui nest jamais vrifie fera boucler le programme indfiniment.
La seule solution pour en sortir alors sera de presser les touche Ctrl+Break
Exit
Linstruction EXIT permet de commander la sortie prmature dune boucle quand on
saperoit que les rptitions ultrieures deviennent inutiles
Suivant le type de boucle on crira EXIT DO ou EXIT FOR
http://www.courstechinfo.be/Programmation/InitProg.pdf 12
Exercices
Ex 6a Le prix dentre dune attraction est fix comme suit :
En semaine Le week-end
Enfants de moins de 10 ans Gratuit Gratuit
Moins de 18 ans et plus de 60 ans 2 Euros 4 Euros
Prix plein 3 Euros 6 Euros
Ecrivez un petit programme qui indique le prix du billet en fonction de lge du
visiteur et du moment du jour de la visite ( demi-tarif en semaine)
Ex 6b Ecrivez un petit programme qui demande un nombre entier puis qui affiche les
10 premiers multiples de ce nombre.
Exemple : Donnez un nombre entier : 12
1 x 12 = 12
2 x 12 = 24
. . .
http://www.courstechinfo.be/Programmation/InitProg.pdf 13
7. Les tableaux et les types structurs
7.1. Tableaux
Nous avons vu ce quest une variable. Elle possde un nom et un type. Elle contient une
valeur. Un tableau possde lui aussi un nom et un type mais il est destin contenir
plusieurs valeurs. Chaque valeur est dsigne par le nom du tableau suivi dun ou de
plusieurs indices mis entre parenthses.
La ligne suivante dclare un tableau destin contenir les noms dune vingtaine
dtudiants. Ce tableau comportera en ralit 21 lments, les indices pouvant aller de 0
20.
DIM Etudiants(20) AS STRING
Les tableaux plusieurs dimensions sont aussi possibles. Voici par exemple comment
on dclare un tableau pour y noter 10 ctes pour 20 tudiants.
DIM Cotes( 20, 10) AS INTEGER
Chaque lment dun tableau est du mme type que le tableau. Pour enregistrer des
informations de types diffrents, il faudrait recourir des tableaux parallles. Les
informations correspondantes y seraient repres par un mme indice mais rparties
dans les tableaux de diffrents types.
Ici Inscription nest pas une variable mais un nouveau type de donne que nous
venons de dfinir pour regrouper une famille dinformations. Il peut servir rassembler
les informations sur un tudiant :
Etudiant.Nom = "Lambert"
Etudiant.Prenom = "Grard"
Nous pouvons mme crer un tableau dont le type est notre type personnalis :
DIM Classe(25) AS Inscription
Classe(1).Nom = "Lambert"
Classe(1).Prenom = "Grard"
http://www.courstechinfo.be/Programmation/InitProg.pdf 14
Exercices
Ex 7a Ecrire un programme qui vous demande un chiffre de 0 9 et vous laffiche en
toutes lettres.
http://www.courstechinfo.be/Programmation/InitProg.pdf 15
8. Procdures
Ce que nous appelons les procdures en QBasic ou en VisualBasic sappellent dans
dautres contextes des sous-programmes ou encore des sous-routines . Ce sont
des morceaux de programme crits sparment pour subdiviser les dveloppements en
sous-ensembles plus simples. Plus un programme est subdivis et plus il sera facile
apprhender et faire voluer et ceci pour deux raisons :
- Les procdures peuvent tre crites et testes indpendamment du reste du
programme dont la complexit devient sans cela plus que proportionnelle la taille.
- Les procdures sont crites une fois pour toute puis peuvent tres rutilises dans
dautres programmes.
http://www.courstechinfo.be/Programmation/InitProg.pdf 16
Maxi = N2
END FUNCTION
Voici comment elle sutilise prsent :
MeilleurScore AS LONG
MeilleurScore = Maxi( Score1, Score2)
Fonctions mathmatiques
ABS( n) valeur absolue de n
ABS( -5.7) 5.7
CINT( n) conversion du nombre n en entier ( arrondi)
CINT( -5.7) -6
FIX( n) Partie entire tronque de n
FIX( -5.7) -5
INT( n) partie entire de n
INT( -5.7) -6
CLNG( n) conversion du nombre n en LONG
CSNG( n) conversion du nombre n en SINGLE
CDBL( n) conversion du nombre n en DOUBLE
http://www.courstechinfo.be/Programmation/InitProg.pdf 17
UCASE$( chane) met la chane en majuscules ( upper case)
http://www.courstechinfo.be/Programmation/InitProg.pdf 18
http://www.courstechinfo.be/Programmation/InitProg.pdf 19
9. Index
MID$ ......................................................... 15
A
PRINT ......................................................... 7
Assignation ....................................................... 6 RIGHT$ ..................................................... 15
RND........................................................... 14
B RTRIM$ .................................................... 15
Boucles ........................................................... 10 STR$ .......................................................... 15
STRING$ ................................................... 15
C UCASE$ .................................................... 15
Compilation ...................................................... 3 VAL ........................................................... 15
D I
Dclaration Instruction
Dclaration d'une vaiable ............................. 5 DO ... LOOP .............................................. 10
EXIT DO ................................................... 10
E EXIT FOR ................................................. 10
Entres/Sorties .................................................. 7 FOR ... NEXT ............................................ 10
IF ... THEN ... ELSE ................................... 9
F SELECT ... CASE ... END CASE ............... 9
Fonction interne UNTIL ....................................................... 10
ABS ............................................................ 14 WHILE ...................................................... 10
ASC ............................................................ 15 Interprtation .................................................... 3
CDBL ......................................................... 14 O
CHR$ ......................................................... 15
CINT .......................................................... 14 Oprateur .......................................................... 6
CLNG ......................................................... 14 T
CSNG ......................................................... 14
FIX ............................................................. 14 Tableaux ......................................................... 12
HEX$ ......................................................... 14 Type
INPUT .......................................................... 7 Types de variables ....................................... 5
INSTR$ ...................................................... 15 Types structurs ......................................... 12
INT ............................................................. 14 V
LCASE$ ..................................................... 15
LEFT$ ........................................................ 15 Variable ............................................................ 5
LEN ............................................................ 15
LTRIM$ ..................................................... 15
http://www.courstechinfo.be/Programmation/InitProg.pdf 20