CODING ★ REDUCTION DU CODE BASIC (AMSTAR&CPC) ★

Reduction du Code Basic (Amstar&CPC)Menu - Soft - Basic
Le BASIC de votre Amstrad est très complet et assez rapide, mais il est possible, grâce à certains moyens simples, de raccourcir les lignes (et donc de gagner de la place en mémoire) et d'accélérer certaines fonctions, notamment les fonctions d'affichage.

Voyons tout d'abord comment réduire la longueur des lignes. Pour réduire la longueur des lignes, on va supprimer un certain nombre de caractères inutiles, En effet, dans un assez grand nombre de cas, on peut supprimer des caractères, comme les espaces, et ainsi, à chaque fois gagner 1 octet ! Vous me direz que pour gagner 1 octet sur 42289, ça ne vaut pas le coup de se fatiguer. Malgré tout, en supprimant systématiquement les caractères inutiles, sur un programme de 40 Ko, on peut gagner entre 3 et 5 Ko, ce qui représente souvent un gain appréciable.

Ainsi, la ligne :

10 IF a%=-1 THEN a%=b% ELSE PRINT "Non"


(37 octets)

peut être réduite en une ligne équivalente :

10 IF -1=a%THEN a%=b%ELSE PRINT"Non

de 32 octets, ce qui représente un gain de 13,5%.
Les 2 caractères pouvant être supprimés apparaissent dans l'exemple précédent, ce sont les ESPACES et les GUILLEMETS.

Dans quels cas les supprimer

1) Les guillemets : la règle est simple, ils ne peuvent être supprimés que quand c'est le dernier caractère d'une ligne.
On peut donc le faire dans les 2 cas suivants :

10 PRINT "Oui"
20 a$="O"

ce qui donne :

10 PRINT"Oui
20 a$="O

2) Les espaces : les cas sont plus fréquents, mais les règles un peu plus compliquées. Résumons-les dans un tableau :

On peut retirer l'espace:
CaractèreCode ASCIIAvant caractèreAprès le caractère
"34XX
#35XX
$36 X
%37 X
&38X
(40X
)41 X
-45X

Appliquons ces règles dans un petit programme d'exemple :

10 PRINT "Etes-vous abonné à CPC ?"
20 WHILE INKEY<>"":WEND:A$=""
30 WHILE AS<>"O" AND AS<>"N":A$=UPPERS(INKEY$):WEND
40 IF A$="O" THEN_PRINT "BRAVO!" ELSE PRINT"Il n'est jamais trop tard pour bien faire..."

Ce petit programme peut ainsi être optimisé de la façon suivante :

10 PRINT"Etes-vous abonné à CPC ?
20 WHILE<>INKEY$:WEND:A$="
30 WHILE"O""N">A$:A$=UPPER$(INKEYS):WEND
40 IF"O"=A$THEN PRINT"BRAVO!"ELSE PRINT"Il n'est jamais trop tard pour bien faire...

Pour raccourcir un programme BASIC, on peut aussi :

  • Supprimer les REM. (Si vous ne pouvez les supprimer, remplacez-les par des : ou reculez la ligne suivante).
  • Réduire la longueur des variables utilisées
  • Diminuer le nombre de lignes, en regroupant le plus d'instructions possible sur une même ligne (la création d'une ligne prend 5 octets). De plus, l'exécution sera accélérée.
  • Se servir des GOSUB pour toute opération répétée à plusieurs endroits dans le programme.
  • Employer des variables entières, là ou elles peuvent remplacer les variables réelles. Vous pouvez pour cela utiliser l'instruction DEFINT, ou le symbole % pour une variable unique.
  • Se servir des caractères de contrôle (nous allons revenir sur ce point).
  • Supprimer les Instructions inutiles ! Le CLS, dans le cas : MODE1 :CLS est par exemple tout à fait superflu.

Les caractères de contrôle

Le «manuel de l'utilisateur» fait en effet assez peu état de ces caractères (0 à 31, dans le code ASCII), mais leur utilisation a le grand avantage de réduire ta longueur du code BASIC et d'accélérer grandement l'affichage de paramètres et de messages à l'écran.
Pour obtenir ces caractères, tapez la ligne :

FOR I=0 TO 31 :?"Le caractère";i;";";CHR$(1);CHR$(i);" est obtenu en appuyant simultanément sur les touches :CONTROL et ";CHR$(I+64):NEXT Attention tout de même, ces caractères correspondant à des instructions, ils peuvent vous réserver quelques surprises si vous voulez lister le programme sur une imprimante.

L'utilisation conjuguée des caractères de contrôle et des règles précédemment évoquées permet d'accélérer sensiblement vos programmes, sans avoir recours à l'assembleur et peut libérer jusqu'à un cinquième, voire un quart de la place occupée par un programme, ce qui peut être très précieux.

AMSTAR&CPC n°32

★ ANNÉE: ???
★ AUTEUR: Sylvain VIEUJOT
 

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » Les Notions en Mémoires
» Coding » Basic - Table de References Croisees des Variables Basic (CPC Revue)
» Coding » Basic - Compatibilite Graphics Pen - Graphics Paper
» Coding » Calculons mieux et plus simplement
» Coding » Basic : Un poke économe
» Coding » Bas - Ruckfahrkarte Fur Parameter (CPC Amstrad International)
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 099 millisecondes et consultée 2303 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.