Professional Documents
Culture Documents
http://www.maths-informatique-jeux.com/programmation/langages/cours_basic.php
Accs rapide
Pages spciales
Rpertoires parents
Rpertoire courant
Sommaire
Introduction Affichages et saisies Les oprations et les conditions Les boucles FOR-NEXT Encore des boucles ! Les variables et les calculs entres nombres Oprations sur les chanes de caractres Dessinons avec Qbasic
Introduction
Le langage BASIC permet de crer des programmes, c'est--dire une suite d'instructions donnes l'ordinateur. Pour cela on utilise des mots-cl qui sont toujours en majuscules. Par exemple, l'instruction CLS donne l'ordre d'effacer l'cran et END ordonne l'interruption du programme. Pour sparer deux instructions sur une mme ligne, on utilise les deux-points.
Affichages et saisies
Observation
Observez ce petit programme, rentrez-le dans QBASIC et regardez le rsultat en appuyant sur MAJ+F5 : CLS PRINT "Comment vous appelez vous "; INPUT Nom$ PRINT Nom$; PRINT "est un trs joli nom !" END
Exercice
A quoi peuvent servir les instructions PRINT et INPUT ? Que contient la variable Nom$ ? Supprimez les points-virgules la fin des instructions PRINT puis faites MAJ + F5. Quelle est l'utilit des points-virgules ?
A essayer
Vous pouvez aussi introduire avant un PRINT l'instruction COLOR suivie d'un nombre de 0 15 (D'aprs vous, pourquoi rien ne s'affiche avec COLOR 0 ?) ou l'instruction LOCATE suivie des coordonnes x et y (Attention de ne pas sortir de l'cran !). Par
1 sur 8
28/04/2012 09:46
http://www.maths-informatique-jeux.com/programmation/langages/cours_basic.php
Accs rapide
exemple, avant PRINT Nom$ insrez cette Rpertoires parents 25: COLOR 14 Excutez le programme pour comprendre quoi ligne : LOCATE 12, Pages spciales Rpertoire courant servent les deux instructions cites. Essayez aussi d'afficher une chane vide (PRINT "") ou d'espaces (PRINT " "). Quelle est la diffrence ?
Exercice
Pour remdier ce dernier problme, nous allons contrler la valeur de Co avec une condition. Ajoutez la ligne suivante aprs le INPUT Co et faites MAJ + F5 : IF Co < 0 THEN PRINT "Erreur: une longueur ne peut tre ngative !": END Expliquez comment est construite la condition IF...THEN.
Remarque
Si on veut mettre plusieurs conditions, on peut utiliser, entre autres, les oprateurs AND ou OR entre plusieurs conditions. Je pense que je n'ai pas besoin de traduire AND et OR...
2 sur 8
28/04/2012 09:46
http://www.maths-informatique-jeux.com/programmation/langages/cours_basic.php
Accs rapide
bouclent tropPages spciales longtemps. Si c'est le cas, stoppez l'excution du programme en faisant [Ctrl]courant Rpertoires parents Rpertoire + [Pause/Break].
Observation
Observez attentivement ce programme. CLS 'Efface l'cran FOR n = 5 TO 10 PRINT "Attention !" ' Affiche une phrase NEXT n Remarquons tout d'abord que la fonction des instructions que l'on connaissait dj on t commentes l'aide d'une apostrophe (en effet l'interprteur BASIC ne lit pas ce qui est crit aprs celle-ci, les commentaires seront pratiques pour faciliter la comprhension d'un programme). Maintenant on peut prvoir ce rsultat : L'cran est d'abord effac. Deux nouvelles instructions nommes FOR et TO vont effectuer qqchose. La phrase Attention ! va apparatre. L'instruction NEXT va effectuer quelque chose. Excutons le programme... L'ordinateur affiche 6 fois Attention !. Que s'est-il pass ???
Explication
Lorsque l'interprteur lit une instruction FOR, celle-ci lui indique qu'il va devoir rpter un groupe d'instructions (ici l'affichage d'une phrase) un certain nombre de fois (ici 6 fois). On appelle ce type de structure une boucle, la boucle FOR-NEXT est construite ainsi : FOR Variable = Depart TO Arrive STEP Pas -----Bloc d'instructions----NEXT Variable Lorsque l'interprteur arrive l'instruction FOR, la Variable (numrique) prends pour valeur le nombre Depart. Puis, tant que la Variable n'est pas gale Arrive il excute le Bloc d'instructions et ajoute le nombre Pas la variable Variable. A la sortie de la boucle, on a : Variable = Arrive + Pas.
Remarques
Si le Pas n'est pas prcis, comme dans l'exemple prcdent, il prends pour valeur 1. Un Pas peut aussi tre ngatif !
Avertissements
Ne mettez jamais un pas nul ! Une boucle du type FOR n = 6 TO 6: NEXT n n'effectue qu'une seule fois le blocs d'instructions.
3 sur 8
28/04/2012 09:46
http://www.maths-informatique-jeux.com/programmation/langages/cours_basic.php
Accs rapide
Une boucle du type FOR n = 5 TO 0 : Rpertoires parents pas le blocs d'instructions. NEXT n n'effectue Pages spciales Rpertoire courant Maintenant, on aimerait bien savoir pourquoi l'ordinateur a affich 6 Attention, alors qu'il aurait du en afficher 5, puisque ArriveDpart= 10 - 5 = 5. Pour cela, modifiez le programme de manire ce que l'ordinateur affiche la valeur de n. Combien de, et quelles valeurs prends la variable n ?
Exercice
En changeant le pas, inventez un programme effectuant le compte rebours suivant : 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0. Vous pouvez vous aidez de cette boucle, qui peut afficher jusqu' 100 valeurs de x. FOR x = TO STEP : PRINT x; "|"; : NEXT x
A essayer
Excutez, puis essayez de comprendre comment marche ce programme... CLS SCREEN 13'Passage en mode graphique FOR x = 0 TO 255 LINE(x, 0)-(x,319), x 'Trace une ligne verticale de couleur x. NEXT x SLEEP 'Attends l'appuie d'une touche pour continuer. END 'Fin du programme.
Observation
CLS PRINT "Vite ! Appuyez sur une touche..." WHILE INKEY$ = "" WEND PRINT "Merci..." Comme d'habitude, observez, puis excutez.
Remarque
INKEY$ retourne la touche appuye par l'utilisateur. Dire que INKEY$ = "" signifie qu'aucune touche n'est enfonce.
4 sur 8
28/04/2012 09:46
http://www.maths-informatique-jeux.com/programmation/langages/cours_basic.php
Accs rapide
Pages spciales
Rpertoires parents
Rpertoire courant
Exercice
Que signifie WHILE en anglais ? Comment est construite la boucle WHILE...WEND ?
Observation
CLS PRINT "Vite ! Appuyez sur une Entre..." DO TT$ = INKEY$ IF TT$ <> "" THEN IF TT$ <> CHR$(13) THEN PRINT "Non ! J'ai dit sur Entre !" LOOP UNTIL TT$ = CHR$(13) PRINT "Merci..."
Remarque
Ici, on a transfr le contenu de INKEY$ dans la variable TT$. Cela vite que la touche mmorise change pendant que l'on vrifie la touche appuye (Refaites le programme sans intoduire la variable TT$, et vous verrez le rsultat !). On remarque aussi que TT$ <> "" se lit TT$ est plus petit ou plus grand que la chane vide ( la relation d'ordre sur les chanes de caractre est du mme genre que l'ordre alphabtique du dictionnaire, mais on en reparlera plus tard...) mais cela se traduit mieux par TT$ n'est pas gale la chane vide. CHR$(13) est le caractre correspondant la touche Entre , mais a aussi on en reparlera aprs.
Exercice
Comment comprenez vous la construction de la double-condition aprs ce qu'on a dit dans les remarques ? Que signifient DO, LOOP et UNTIL en anglais ? Alors, comment marche ce type boucle ?
Remarque
On aurait pu remplacer la dernire ligne de la boucle par: LOOP WHILE TT$ <> CHR$(13).
5 sur 8
28/04/2012 09:46
http://www.maths-informatique-jeux.com/programmation/langages/cours_basic.php
Accs rapide
Pages spciales Rpertoires parents Rpertoire courant Pour calculer une variable partir d'une autre ont utilise le signe gale. De mme les 4 signes d'oprations seront : +-*/. Par exemple, l'instruction Co = Co * Co que j'ai propose au dbut est ne signifie pas Co est gale son propre carr mais est comprise ainsi par l'ordinateur: Multiplier la valeur de Co par la valeur de Co et dposer le rsultat dans la variable Co.De mme X = X + 1 ne signifie pas que X est gale son suivant mais Augmenter X de 1 (on parle d'incrmentation). Pour d'autres oprations plus complexes, il faudra utiliser des fonctions, comme SQR(X) pour la racine carre de X. On peut aussi faire une opration trs simple avec des chanes, que l'on appelle concatnation, c'est a dire la mise bout bout de 2 chanes. Par exemple, si A$ = "BON" alors A$ + A$ sera gale "BONBON".
Observation
CLS INPUT "Nom "; A$ INPUT "Prnom "; B$ INPUT "Age "; Age C$ = "Tu t'appelles " + B$ + " " + A$ + " et tu as" + STR$(Age) + " ans." PRINT C$ PRINT "Je connais quelqu'un qui est deux fois plus ag que toi: il a"; 2 * Age; " ans."
Exercice
Sachant que STR$(Age) convertit le contenu de la variable Age en chane de caractres, essayez de prvoir le rsultat avant d'excuter le programme. Quel est la diffrence entre les instructions PRINT A$; B$ et PRINT A$ + B$ ?
Remarque
VAL() est la fonction rciproque de STR$().
6 sur 8
28/04/2012 09:46
http://www.maths-informatique-jeux.com/programmation/langages/cours_basic.php
Accs rapide
Pages spciales
Rpertoires parents
Rpertoire courant
Remarque
Lorsque vous faites Alt + (Code d'un caractre) dans un traitement de texte, le caractre possdant ce code ASCII s'affiche. Par exemple, ALT + 144 affiche une majuscule . Les guillemets ouverts et ferms s'obtiennent par ALT + 174 et ALT + 175.
Exercice
Proposez une instruction qui affiche un guillemet ".
A essayer
CLS : PRINT CHR$(50); CHR$(43); CHR$(50); CHR$(61); CHR$(53) Si vous avez bien compris la fonction CHR$, vous comprendrez facilement pourquoi l'ordinateur fait un rsultat aussi idiot !
Observation
Excutez le programme suivant : CLS A$ = "MONDE" L$ = LEFT$(A$, 3) R$ = RIGHT$(A$, 2) COLOR 4: PRINT R$; : COLOR 3: PRINT L$ COLOR 3: PRINT L$; : COLOR 4: PRINT R$ COLOR 15: PRINT "LEN(A$)="; LEN(A$) END En vous aidant des traductions de LEFT, RIGHT et LEN, expliquez ces trois nouvelles fonctions. PRINT LEN(" PRINT LEFT$(" PRINT RIGHT$(" ") ", ", ) )
A essayer
CLS INPUT A$ FOR n = 1 TO LEN(A$) PRINT MID$(A$, n, 1) NEXT n Comment marche MID$() ?
7 sur 8
28/04/2012 09:46
http://www.maths-informatique-jeux.com/programmation/langages/cours_basic.php
Accs rapide
Rpertoire courant
Observation
Observez bien les effets et l'utilisation des instructions PSET, LINE, CIRCLE et PAINT en excutant le fichier instructions_graphiques.zip .
Cette page est conforme aux normes du W3C - Auteur : Frdric WANG - Dernire mise jour : mardi 17 juin 2003
8 sur 8
28/04/2012 09:46