Il est nécessaire de structurer un programme afin qu'il adopte différents comportements selon son déroulement passé, ou selon les choix de l'utilisateur. Les structures de contrôle permettent ainsi de contrôler les parties du code qui ne doivent pas s'exécuter dans certaines circonstances, ou qui au contraire doivent se répéter. Les structures utilisées en QuickBasic sont des structures standard dont on retrouve des variantes dans la plupart des langages de programmation.
Un bloc IF, ou bloc conditionnel, est de la forme : IF ... THEN ... ELSE ... END IF. Un tel bloc peut prendre deux syntaxes. La première est la suivante :
IF [condition] THEN [instructions] ELSE [instructions] END IF
Cette syntaxe peut être utilisée dans le cas où les blocs d'instructions sont assez courts pour ne pas perturber la lisibilité du programme. La seconde syntaxe est de la forme qui suit :
IF [condition] THEN [instructions] ELSEIF [condition] THEN [instructions] (...) ELSE [instructions] END IF
Cette seconde syntaxe, plus aérée, permet de plus d'utiliser le mot-clef ELSEIF sans limitation.
Dans les deux cas, la condition qui suit le IF doit être vérifiée afin que le bloc d'instructions correspondant soit exécuté. Si ce n'est pas le cas, il en est de même avec chacun des ELSEIF qui se trouvent après. Si aucune condition n'est vérifiée, les instructions suivant le ELSE sont exécutées.
La boucle DO ... LOOP permet de réaliser tous les types de boucles conditionnelles possibles. Sa syntaxe la plus largement utilisée est la suivante :
DO [{WHILE|UNTIL} condition] [instructions] LOOP
Le bloc conditionnel qui suit le mot-clef DO débute soit par le mot-clef WHILE, dans quel cas la boucle doit se répéter TANT QUE la condition est vraie ; ou par le mot-clef UNTIL, qui indique à l'inverse que la boucle doit se répéter JUSQU'A CE QUE la condition soit vraie. Ce bloc conditionnel peut aussi être placé après le mot-clef LOOP, ce qui force la boucle à s'exécuter au moins une fois. Il peut aussi être omis, ce qui crée une boucle infinie qui doit être quittée par l'instruction EXIT DO.
La boucle FOR ... NEXT répète un bloc d'instructions un nombre prédéfini de fois, tout en maintenant à jour une variable-compteur. Sa syntaxe est la suivante :
FOR variable = début TO fin [STEP pas] [instructions] NEXT variable
La variable-compteur (appelée variable ci-dessus) prendra dans l'ordre toutes les valeurs comprises entre début et fin, avec le pas précisé, qui peut être négatif, et qui vaut 1 par défaut s'il est omis.
Un programme complet et souple nécessite forcément l'utilisation de variables (des mots auxquels on associe une valeur). Leur utilisation en QuickBasic est très simplifiée et est décrite dans les points suivants.
En QuickBasic, un nom de variable doit respecter les règles suivantes :
Afin de définir le type d'une variable en QuickBasic, il faut ajouter un caractère particulier à la fin de son nom. Voici les trois types de données les plus importants de ce langage :
Il existe aussi deux autres types numériques : les entiers longs et les réels à double précision, qui sont en fait l'équivalent des deux types numériques cités ci-dessus, mais dont la taille en mémoire est doublée, ce qui a tendance à ralentir le programme.
Enfin, le type booléen n'existe pas en soi, mais peut être reproduit en utilisant des types numériques prenant la valeur 0 pour FAUX et toute autre valeur non nulle pour VRAI.
Au vu des règles précédentes, les exemples suivants sont des noms de variables incorrects : Votre_Nom$, Pierre&Paul, 7aqui2jouer%, réponse$.
En revanche, les noms suivants sont valables : VotreNom$, PierreEtPaul, aqui2jouer%, reponse$.
Il faut aussi noter que les noms suivants : Variable, VARIABLE, variable, vArIaBlE sont entièrement équivalents et renvoient à la même variable. Si vous tapez le même nom avec une casse différente, l'éditeur QuickBasic modifiera automatiquement toutes les occurrences de ce nom afin de ne garder que la dernière version que vous aurez tapée.
Dans le langage QuickBasic, il n'est pas nécessaire de déclarer une variable pour l'utiliser. Ainsi, si une variable est utilisée dans une formule alors qu'elle n'avait pas été déclarée ni utilisée avant, elle prendra automatiquement la valeur nulle qui correspond à son type, sans déclencher d'erreur. Afin de déclarer une variable ou en modifier la valeur, on peut utiliser la syntaxe suivante :
NomDeLaVariable = Valeur
Lorsqu'une telle ligne s'exécute au sein du programme, la variable portant le nom NomDeLaVariable prendra la valeur située à droite du signe « = » (égal), qui peut être une valeur brute comme une expression mathématique aussi complexe que nécessaire. Il est aussi possible de réutiliser le nom de la variable dans le membre de droite (et donc de faire appel à sa valeur), comme dans l'exemple suivant :
Total = Total + Taxes
Le membre de droite est alors calculé (il s'agit de la somme des variables Total et Taxes) puis assigné à la variable Total. Il est important de noter aussi que les variables ne sont jamais modifiées en dehors des lignes d'assignation. Ainsi, dans cet exemple, même si la variable Taxes est modifiée plus loin, Total ne sera pas automatiquement modifiée en conséquence.
Les version plus anciennes dérivées du langage BASIC nécessitaient l'emploi de l'instruction LET en début de ligne pour effectuer une assignation, mais cette instruction est devenue facultative en QuickBasic.
Le langage QuickBasic dispose d'opérateurs basiques que l'on peut classer en quatre catégories. Leur priorité peut être précisée à l'aide de parenthèses.
Il s'agit des opérateurs mathématiques standards : « + » pour l'addition, « - » pour la soustraction, « * » pour la multiplication, « / » pour la division, « \ » pour la division entière, et « ^ » pour la puissance. Leur priorité est la priorité normale de ces opérations en mathématiques.
Ces opérateurs permettent de tester une relation entre deux données numériques, cette relation étant : « = » pour égal (à ne pas confondre avec l'assignation, qui utilise le même symbole), « <> » pour différent, « < » pour strictement inférieur, « <= » pour inférieur ou égal, « > » pour supérieur, et « >= » pour supérieur ou égal.
Les deux seuls opérateurs disponibles pour les chaînes de caractères sont l'opérateur de concaténation (qui permet de placer bout à bout deux chaînes de caractères), représenté par le symbole « + », et l'opérateur d'égalité (qui permet de tester si deux chaînes sont égales), représenté par le symbole « = ».
Les opérateurs booléens permettent de tester des relations entre les opérateurs relationnels. Les principaux sont : « AND » pour le ET, « NOT » pour le NON, « OR » pour le OU inclusif, et « XOR » pour le OU exclusif.