Alternative Micro Système




Les formats graphiques
Construire un site Web
Protocoles de messagerie
Le protocoles FTP
Le dessin vectoriel
Cours de Basic
Retouche d'images
Le langage XML
Les associations
Le E-commerce
Les virus
La compression
Les cookies
Trouver un job
La comptabilité
Comprendre la paie

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.

Logiciels en rapport
Ams Basic