Le Quick Basic, toute une histoire...
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:
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.
super$ = MID$(super$,4,2)MID$ est la fonction qui retourne les caractères (ici) numéro 4 et 5 de la chaine super$
-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 Typeles 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)
DIM MaChaine AS STRING * 5Ceci 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.
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 ENDLe 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.
SCREEN 0|1|..|13pour 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.
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, BCeci 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.
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.SCREEN 13 DO IF i% >= 319 THEN EXIT DO i% = i% + 2 PSET (i%, 120), i% MOD 256 LOOPdans 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 NEXTVous 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).
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 IFJe 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.
Lisez le cours de QB avancé si vous etes deja connaisseurs
Lightness1024! ProgrammatO 16/5/1