Comprendre l'informatique
Le Basic, toute une histoire...
Du MBasic au Visual Basic
Le langage Basic à été inventé en 1964 par
2 professeurs pour enseigner la programmation à leurs élèves.
Il signifie d'ailleur le Beginners All purpose Symbolic Instruction Code.
Depuis il a eu plusieurs évolutions comme:
Le MBasic
Le PC Basic
Le GW Basic
Le Qbasic
Le BasicA
Le QuickBasic
Le QuickBasic Extended
Le Liberty Basic
Le FreeBasic
Le Visual Basic
...
Vous avez remarque en première ligne MBasic... Oui, M pour Microsoft
dejà ! et ce basic tournait sur les machines a base 8080 sous CP/M
!
Comme vous le constatez, il y a beaucoup de dérivé mais
celui que je vais expliciter dans ce cours est le Qbasic (compatible QuickBasic
et QBX)
Le point de vue:
Le langage basic est un langage dit de haut niveau, c'est à dire
qui pour une instruction écrite, il en correspond parfois plus
de quelques centaines en langage machine.
La programmation c'est un langage à part entière composé
de messages qu'il faut envoyer au processeur pour qu'il les executent.
Les instructions:
Une instruction intervient en début de ligne, c'est un orde.
PRINT "Hello world"
Est l'ordre d'afficher à l'ecran ce texte.
Les fonctions:
Une fonction vient après une instruction ou un nom de variable.
super$ = MID$(super$,4,2)
MID$ est la fonction qui retourne les caractères (ici) numéro
4 et 5 de la chaine super$
Les types de variables
Les types de variables dépendent du signe que on leur met derrière:
-NomDeVariable%
: type de variable numerique appelé INTEGER ne peut stocker que
des nombres entiers et de -32768 jusqu'a 32767 maximum.
-NomDeVariable!
: type de variable SINGLE, avec des chiffres apres la virgule et beaucoup
de capacité
-NomDeVariable#
: encore plus que la SINGLE, celle ci s'appelle la DOUBLE
-NomDeVariable&
: type LONG qui peut comporter beaucoup de nombreq de -2 milliards a +2
milliards et des nombres entiers seulement !
-NomDeVariable$
: type de variable STRING qui peut enregistrer seulement des caracteres,
ont peut y mettre des chiffres aussi mais ils seront reconnus comme des
caractères
Il y a une autre technique pour déclarer que les variables sont
de tel ou tel type, au début du programme, il faut écrire:
DIM [SHARED] NomDeVariable AS Type
les crochets veulent dire que ce qui est entre est facultatif, le mot
clé ici entre crochet singifie que la variable est partagée,
c'est a dire que toute les sous procédures y ont accès et
peuvent la modifier par référence. (ont y reviendra plus
bas dans ce cours)
Type remplace les mots clés:
INTEGER, SINGLE, DOUBLE, STRING etc...
une execption apparait pour la chaine; on peut ecrire:
DIM MaChaine AS STRING * 5
Ceci veut dire que dans toute la suite du programme la variable MaChaine
sera une chaine de longueure fixe 5 caractères, si il n'y a rien,
ce sont des espaces.
Les programmes d'initiations
Pour bien commencer le basic il faut essayer des exemples donné
par des ressources comme ce site.
Je vous propose les exemples suivants pour apprendre certaines instructions
élementaires:
CLS
PRINT "Waou c'est mon 1er programme!"
LOCATE 5,5
PRINT "EHEH"
COLOR 12
PRINT "BLABLA"
LOCATE 21
PRINT "En bas"
LOCATE 10,60
PRINT "A droite"
LOCATE ,5
COLOR 7
PRINT "A la ligne d'après et avec une marge a gauche"
SLEEP
END
Le programme ci-dessus est un programme dit linéaire ou l'utilisateur
n'intervient pas et toutes les instructions s'executent a la suite dans
la direction du bas bien sur.
Ici vous remarquez l'usage de l'instruction LOCATE, celle ci -vous l'aurez
compris- sert à localiser la position du curseur.
je dis bien du curseur, ne vous faites pas piéger, le texte affiché
avec PRINT apres une instruction LOCATE position sa 1ere lettre a la position
du curseur.
par exemple si vous afficher un texte sans LOCATE en amont, il s'affichera
tout de meme a la position du curseur qui se situe à la ligne d'en
dessous de l'ancien affichage de texte et collé a gauche.
L'instruction COLOR change la couleur, sous dos il y en a 16. Mais voyez
plutot le chapitre suivant:
Les Modes d'ecran
On utilise l'instruction
SCREEN 0|1|..|13
pour changer de mode d'ecran. Un mode d'ecran c'est une resolution, une
passage en mode graphique ou texte, une place de memoire prise dans la
carte video, une dépendance paterielle, une resolution.
Il y a 12 modes d'ecran:
-le 0: texte et non graphique, en 23 lignes par 80 colonnes
tout les autres mode suivant sont graphiques. On abordera seulement les
plus utilisés:
-Le 12: 640*480 en 16 couleurs
-Le 13: 320*100 en 256 couleurs
pour le reste consultez l'aide de l'editeur.
exemples (suite):
SCREEN 12
LINE (100,200)-(500,210), 4, BF
CIRCLE (20,20), 10, 2
LINE (0,0)-(639,479), 1
LINE (0,100)-(20,200), 5, B
Ceci passe en mode graphique (SCREEN 12) pour dessiner des lignes et
un cercle. Si vous etes en MODE 0 (texte) il y aura une erreur.
Le B est l'argument qui permet de dessiner un rectangle et BF il est plein.
Les structures de contrôle
C'est la manière sont va se dérouler le programme.
La 1ere est la boucle:
CLS
FOR i% = 1 TO 22
LOCATE i%
PRINT "Texte No:" + STR$(i%)
NEXT i%
SLEEP
END
L'instruction CLS efface l'ecran, SLEEP attend l'appui sur une touche
pour continuer la progression du programme, et END termine le programme,
il n'est que facultatif.
Entre tout ca, il y a 4 instructions qui vont jouer le role de 22 instructions.
En effet car il y a une boucle, cette boucle est de type FOR TO NEXT.
Elle commence au FOR, et se finit au NEXT, voila son fonctionnement:
La boucle FOR TO NEXT dite à variable incrémentée,
permet de répeter un algorithme inscrit dans sa contenance. C'est
à dire que ici les instructions LOCATE et PRINT vont etre repetees
22 fois.
LA boucle démarre, elle enregistre 1 dans i% (c'est son début),
i% etant la variable d'incremenation. Ensuite le programme execute normalement
LOCATE et PRINT , mais comment ? i% = 1 donc le PRINT sera affiché
ligne 1 et le programme arriv alors sur NEXT i% (note: le i% apres le
NEXT est facultatif) et le programme remonte au FOR et passe i% a 2 ainsi
de suite affichant de cette manière un texte sur la hauteur de
l'ecran.
le LOCATE n'etait pas obligatoire ici car le texte affiché par
PRINT s'affiche en dessous du dernier texte affiché si LOCATE est
omis.
SCREEN 13
DO
IF i% >= 319 THEN EXIT DO
i% = i% + 2
PSET (i%, 120), i% MOD 256
LOOP
dans ce programme, il y a 2 structures qui sont à prendre en compte,
la condition et la boucle, ici on emploie une boucle de type DO LOOP.
cette boucle est infinie. la variable i% est utilisée ici comme
une variable incrémentée mais manuelement. mais si i% dépasse
ou égal 319 que ce passe t'il ? et bien la boucle est quitéepar
l'instruction EXIT DO, bien sur on aurait pu remplacer le programme par
une FOR TO NEXT:
SCREEN 13
FOR i% = 2 to 319 STEP 2
PSET (i%, 120), i% MOD 255
NEXT
Vous voyez ici le programme a 2 lignes en moins, on appelle ca de l'optimisation
de code. On voit ici l'avantage de la boucle FOR TO NEXT, elle n'est pas
infinie. le role de la fonction STEP ici est de incrementer de 2 en 2
la variable i%. Le role de la fonction MOD est de retourner le reste d'une
division en entiere entre i% et 255 (ce qui a pour but d'afficher toute
les couleurs mais dans dépasser 255 car il y a 256 couleurs en
mode 13 (de 0 à 255).
Notions de "retourne" et "definit" on dit qu'une fonction
peux écrire ou retourner, c'est le cas de MID$:
chaine$ = "mega cool"
chaine2$ = MID$(chaine$,2,1)
PRINT chaine$
PRINT chaine2$
ici la fonction MID$ retourne dans la variable de type chaine chaine2$
le resultat
de son operation sur la variable chaine$ qui est de prendre 1 caractere
a partir du 4eme
caractere.
chaine$ = "mega cool"
' ** ici MID$ se transforme en instruction
MID$(chaine$,2,3)="AHA"
PRINT chaine$
Vous remarquez une ligne intrue dans le programme, c'est un commentaire,
la ligne n'est pas éxecutée, elle ne peut etre vue que dans
le code, pour cela il
faut l'introduire par '
Ici MID$ a remplacer les caracteres 2,3,4 de la chaine chaine$ par AHA.
Les conditions
On attaque les blocs conditionnels:
' pour initialiser les nbs aleatoires:
RANDOMIZE TIMER
var1% = RND * 150
var2% = RND * 20 ' RND retourne un nb aleatoire entre 0 et 1
' ** début du bloc IF THEN ELSE:
IF var1% <= 10 AND var2% >= 15 THEN
PRINT "le 1er chiffre est inferieur ou egal a 10 et le 2eme superieur
ou egal a 15"
ELSEIF var1% = 45
PRINT "le 1er chiffre vaut 45"
ELSEIF var2% = 19 OR var1% > 40
PRINT "le 1er chiffre est superieur a 40 ou le 2eme egal 19"
ELSE
PRINT "aucune des conditions recherchee n'a abouti"
END IF
Je vous laisse comprendre le programme ci-dessus, je vous dis juste que
si il
y a plusieurs conditions qui sont valides alors la 1ere dans l'orde d'execution
du programme (haut en bas) est executée.
|