INT - NOT

Dictionnaire des mots-clés BASIC, C64

Du Commodore 64

Type : Fonction numérique

Syntaxe : INT(expression numérique)

Modes : Les modes direct et programme sont tous deux valides.

Jeton : $B5 (181)

Entrée abrégée : Aucune

Utilisation :

La fonction INT convertit l’expression numérique en l’entier inférieur ou égal le plus proche.

Par exemple, INT(10,4) vaut 10 et INT(-2,2) vaut -3.

L’expression est supposée être comprise dans l’ensemble des valeurs numériques, entre environ -1,7 × 10³⁸ et +1,7 × 10³⁸.

Ainsi, L = INT(123456,7) est valide.

En revanche, L % = INT(123456,7) génère une erreur, car le résultat est trop grand pour une variable entière.

Exemples :

1. 100 PRINT INT(X+.5) :REM ROUND TO NEAREST WHOLE NUMBER

L'exemple ci-dessus arrondit les nombres — y compris les nombres négatifs — à l'entier le plus proche.

2. 100 PRICE = INT(.5 + P*(1+MARKUP/100))

Ce calcul permet d'obtenir le prix au centime près à partir du pourcentage de majoration et du prix d'achat en centimes.

LEFT$

Type : Fonction de chaîne de caractères

Syntaxe : LEFT$(expression de chaîne, expression numérique)

Modes : Les modes direct et programme sont tous deux valides.

Jeton : $C8 (200)

Saisie abrégée : LE SHIFT-F (incluant le $.)

Utilisation :

LEFT$ renvoie une sous-chaîne composée des premiers caractères de l’expression de chaîne d’origine.

L’expression numérique (qui doit être comprise entre 0 et 255) est comparée à la longueur de la chaîne ; la plus petite des deux détermine la longueur de la sous-chaîne.

Exemples :

1. FOR J=0 TO 20: PRINT LEFT$("HELLO THERE",J): NEXT

Ce programme affiche 20 chaînes de caractères : « », « H », « HE », « HEL », etc.

Plus J augmente, plus le nombre de caractères affichés augmente également.

Cependant, ce nombre ne dépasse jamais 11, la longueur de la chaîne d'origine. Ainsi, les chaînes de la onzième à la vingtième affichées seront identiques.

2. PRINT LEFT$(X$ + "-------------------",20)

Cette astuce de formatage ajoute des tirets à X$ pour qu'il ait exactement 20 caractères. Ainsi, le résultat comporte toujours 20 caractères.

3. PRINT LEFT$(X$ + "-------------------",20)-LEN(X$)); X$

Cette ligne justifie X$ à droite, en le faisant précéder de tirets.

On suppose que X$ ne dépasse pas 20 caractères. D'autres caractères, notamment les espaces, peuvent être utilisés de la même manière pour formater la sortie.

LEN

Type : Fonction numérique

Syntaxe : LEN(expression de chaîne)

Modes : Les modes direct et programme sont tous deux valides.

Jeton : $C3 (195)

Entrée abrégée : Aucune

Utilisation :

LEN détermine la longueur d'une expression de chaîne. Le résultat est toujours compris entre 0 et 255.

Exemples :

1. 10 PRINT SPC(20-LEN(MSG$)/2);MSG$

Cette ligne permettra de centrer un court message sur l'écran de l'ordinateur en ajoutant des espaces en début de texte.

2. 50 IF LEN(IN$)<>L THEN PRINT "MUST BE" L "DIGITS": GOTO 40

L'extrait ci-dessus rejette une chaîne d'entrée de longueur incorrecte, renvoyant le programme à la ligne 40, où une autre tentative peut être effectuée.

3.

100 FOR J=1 TO LEN(W$): IF L$=MID$(W$,J,1) GOTO 200: NEXT
110 PRINT "NOT FOUND"

Cette fonction vérifie la présence de la lettre L dans le mot W$. L'utilisation de LEN(W$) permet au programme de définir le compteur de boucle pour n'importe quelle longueur de W$.

LET

Type : Instruction

Syntaxe : [LET] variable numérique = expression numérique ou logique

[LET] variable entière = expression numérique comprise entre -32768 et +32767 ou expression logique

[LET] variable chaîne = expression chaîne

Modes : Les modes Direct et Programme sont tous deux valides.

Jeton : $88 (136)

Saisie abrégée : L + MAJ + E

Fonction :

LET assigne un nombre ou une chaîne à une variable.

L'instruction LET est généralement omise, car le 64 l'utilise par défaut.

Des variables simples ou des tableaux peuvent être utilisés.

Si une variable simple ou un tableau n'existe pas déjà, LET lui réserve de l'espace dans la zone de stockage des variables en mémoire.

LET dimensionne un tableau à la taille par défaut de 11 (éléments 0 à 10) s'il n'a pas été préalablement dimensionné avec une instruction DIM.

Remarques :

1. Comme LET est rarement utilisé, il peut être modifié par l'utilisateur.

2. Les variables peuvent être réassignées librement ; il faut donc éviter d'utiliser une variable à deux fins simultanément. Cela pose souvent problème lors de l'utilisation de sous-programmes, car il est plus difficile de gérer les variables.

Exemples:

1. X=123456: LET X=123456

Ces deux instructions attribuent à X la valeur 123456.

2. Q%=Q/100

La ligne ci-dessus définit Q% comme étant égal à la partie entière de Q/100, donc si Q = 1234, Q% = 12.

3. LET QH%=Q/256: LET QL%=Q-QH%*256

Cela définit QH% et QL% comme étant égaux aux octets de poids fort et de poids faible du nombre Q.

LIST

Type : Commande

Syntaxe : LIST [numéro de ligne] [-] [numéro de ligne]

Modes : Les modes direct et programme sont tous deux valides.

Jeton : $9B (155)

Saisie abrégée : L MAJ-I

Fonction :

LIST affiche une partie ou la totalité du code BASIC en mémoire à l'écran, ou (avec CMD) sur disque, bande magnétique ou autre périphérique de sortie.

Remarques :

1. Les numéros de ligne doivent être des caractères ASCII, et non des variables.

2. LIST utilise de nombreuses adresses mémoire ; elle se termine toujours en mode READY si elle est utilisée dans un programme.

3. Des erreurs de chargement et d'autres erreurs peuvent apparaître dans LIST.

Par exemple, si un programme en langage machine conçu pour une autre zone de la mémoire est chargé dans la zone de programme BASIC, une tentative d'exécution de LIST n'affichera que des caractères aléatoires.

De plus, une documentation de référence sur LIST contient des programmes permettant de modifier LIST de manière utile. (Le chapitre 8 explique la procédure.)

L'entrée REM contient des notes sur la façon dont LIST interprète les caractères d'édition à l'écran et autres. TRACE est une version modifiée de LIST qui fonctionne pendant l'exécution d'un programme.

UNLIST présente des méthodes pour protéger vos programmes.

Exemples :

1. LIST 2000-2999

La ligne ci-dessus affiche les lignes BASIC de 2000 à 2999.

2. LOAD "$",8 followed by LIST

Ceci affiche un répertoire de disque, stocké en mémoire comme s'il s'agissait d'un programme BASIC.

3. 1000 LIST -10

Cette commande liste toutes les lignes d'un programme BASIC jusqu'à la ligne 10 incluse. Comme illustré dans cet exemple, la commande LIST peut être incluse dans une ligne de programme BASIC. Cependant, son exécution interrompt le programme, et CONT ne le redémarre pas.

4. LIST 1100-

Cette commande affiche toutes les lignes du programme BASIC courant dont le numéro est supérieur ou égal à 1100.

S'il n'y a pas de ligne numérotée 1100 dans le programme courant, la liste commence par la première ligne existante dont le numéro est supérieur à 1100.

LOAD

Type : Commande

Syntaxe :

Bande :

LOAD [expression chaîne [,expression numérique^ expression numérique]]]


Tous les paramètres sont facultatifs.

La première expression numérique, si elle est utilisée, doit être égale à 1 (numéro du périphérique). La seconde est généralement égale à 0 (LOAD BASIC) ou à 1 (LOAD forcé).

Disque : LOAD expression chaîne, expression numérique [, expression numérique]

Un nom et une expression numérique, généralement 8 (numéro du périphérique), sont requis.

Le second paramètre numérique a la même signification que pour le LOAD sur bande.

Voir le chapitre 15 pour plus de détails.

Modem :

La commande LOAD ne peut pas être utilisée avec un modem. Toute tentative d’utilisation du périphérique numéro
2 entraînera donc une erreur.

Modes : Les modes Direct et Programmation sont tous deux valides. (Voir « Remarques » ci-dessous.)

Jeton : $93 (147)

Saisie abrégée : L SHIFT-O

Fonction :

LOAD lit des données depuis un périphérique externe et remplit la RAM avec un programme BASIC, du ML, des graphiques ou d’autres données.

Dans sa forme la plus simple, LOAD {RETOUR}, puis RUN {RETOUR} charge le programme BASIC depuis une bande et l’exécute. (SHIFT-RUN/STOP permet également cette opération.)

Remarques :

1. LOAD est suivi d’une série de messages standard, tels que « APPUYEZ SUR LECTURE SUR CASSETTE », « OK » au démarrage de la cassette, etc.

Ces messages sont détaillés dans les chapitres relatifs à l’utilisation des bandes et des disques. Les commandes LOAD en mode programme n’affichent pas ces messages (à l’exception de « APPUYEZ SUR LECTURE SUR CASSETTE », qui est inévitable), ce qui permet de conserver un affichage clair à l’écran.

2. La commande LOAD sur cassette masque l’écran du téléviseur avec la couleur de bordure pendant toute lecture de bande. Lorsqu'un programme ou un en-tête de fichier est trouvé, le message « TROUVÉ » s'affiche à l'écran pendant une dizaine de secondes.

Si le nom du programme est valide, le chargement commence, puis l'écran s'éteint temporairement. Sinon, la recherche se poursuit. Appuyer sur la touche Commodore, ou sur une autre touche, interrompt cette pause.

3. La commande LOAD pour un programme BASIC requiert presque toujours que son troisième paramètre soit égal à 0. Cela permet à LOAD de relier le programme BASIC, de sorte que n'importe quelle position de début de programme BASIC soit acceptable.

Par exemple :

LOAD "BASIC PROG"

charge ce programme depuis une cassette vers le 64, quelle que soit la configuration mémoire, et le prépare pour l'exécution. En fait :

POKE 43,LO : POKE 44,HI : POKE HI*256+LO,0 : NEW suivi de la disquette ou de la cassette appropriée.

LOAD peut placer un programme BASIC où vous le souhaitez, s'il y a de la place.

4. Le chargement de ML, de définitions graphiques et d'autres données est généralement plus complexe que le chargement de programmes BASIC et nécessite une commande LOAD au format suivant :

LOAD "CHARSET",1,1

Pour garantir que les données soient replacées à leur emplacement d'origine, la commande `.L load` de Supermon's permet de le faire. La section `Block LOAD` permet de charger des blocs d'octets sans perturber le BASIC.

5. Les chargements en mode programme enchaînent généralement les instructions BASIC ; voir `CHAIN`, ainsi que `OLD`, qui explique comment enchaîner un programme long à partir d'un programme plus court.

Exemples :

1. LOAD: LOAD "",1

Il s'agit de chargements sur bande, ayant le même effet. Chacun charge le premier programme BASIC trouvé sur la bande.

2. LOAD "PROG"

Cette opération charge le programme portant le nom de fichier PROG depuis la bande.

En réalité, en raison du système de vérification des noms de fichiers utilisé, le premier programme trouvé sur la bande et dont le nom commence par PROG (PROGRAM ou PROGDEMO, par exemple) sera chargé.

3. LOAD "PROG",8

Cette ligne ne chargera que le programme PROG depuis le disque.

Si PROG est introuvable, aucun autre programme dont le nom commence par PROG ne sera chargé ; une erreur « Fichier introuvable » sera alors signalée.

4. LOAD "PAC*",8

Ceci illustre une commande LOAD typique de correspondance de motifs de disque, qui chargera PACMAN, PACKER ou le premier programme commençant par PAC.

5. 10000 PRINT "PLEASE WAIT": LOAD "PART2"

La ligne de code ci-dessus charge puis exécute le programme audio PART2 depuis BASIC. Si la touche correspondante du magnétophone est enfoncée, aucun message ne s'affiche sur le téléviseur.

6.

10 IF X=0 THEN X=1: LOAD "GRAPHICS",1,1
20 REM THE PROGRAM CONTINUES HERE AFTER THE LOAD

Cette commande charge les graphismes dans une zone mémoire fixe.

Une commande LOAD exécutée depuis un programme relance ce dernier depuis le début. La variable X sert d'indicateur, empêchant le chargement répété des graphismes et permettant ainsi au programme de poursuivre son exécution.

LOG

Type : Fonction numérique

Syntaxe : LOG(expression numérique)

Modes : Les modes direct et programme sont tous deux valides.

Jeton : $BC (188)

Entrée abrégée : Aucune

Utilisation :

LOG renvoie le logarithme népérien (logarithme en base e) d'une expression arithmétique positive. Cette fonction est l'inverse de EXP.

Les logarithmes transforment la multiplication et la division en addition et soustraction ; par exemple, LOG(1) vaut 0 car la multiplication par 1 est sans effet. Les logarithmes sont principalement utilisés dans les travaux scientifiques ; leur sensibilité aux erreurs d'arrondi les rend moins adaptés aux applications commerciales.

Exemples :

1.

PRINT LOG(X)/LOG(10) :REM LOG TO BASE 10
PRINT LOG(X)/LOG(2) :REM LOG TO BASE 2
PRINT EXP(LOG(A)+LOG(B)) :REM PRINTS A*B

Ce sont là des utilisations standard de la fonction LOG.

2. LF=(N+.5)*(LOG(N)-1) + 1.41894 + 1/(12*N)

Ceci définit LF, une approximation de LOG(N!), de sorte que EXP(LF) soit approximativement égal à N!. Cela illustre l'utilité du logarithme népérien lorsqu'on travaille avec de très grands nombres.

MID$

Type : Fonction de chaîne

Syntaxe : MlD$(expression de chaîne, expression numérique ^expression numérique])

Modes : Les modes direct et programme sont tous deux valides

Jeton : $CA (202)

Saisie abrégée : M MAJ-I (incluant le $.)

Utilisation :

MID$ extrait la sous-chaîne souhaitée d'une expression de chaîne. Le premier paramètre numérique indique le point de départ (1 représente le premier caractère de la chaîne d'origine, 2 le deuxième, etc.).

Le dernier paramètre indique la longueur de la sous-chaîne à extraire.

Si ce paramètre n'est pas spécifié, la sous-chaîne s'étend jusqu'à la fin de la chaîne d'origine.

Exemples :

1. N$=MID$(STR$(N),2) :REM REMOVE LEADING SPACE FROM N

Ceci est utile lorsqu'on ne souhaite pas inclure d'espaces en début de nombre. Cela fonctionne avec tous les nombres positifs compris dans la plage appropriée.

2.

10 INPUT X$: L=LEN(X$)
20 FOR J=1 TO L: PRINT MID$(X$,L-J+1,1);: NEXT

Ce programme prend une chaîne de caractères en entrée, puis l'affiche à l'envers, caractère par caractère.

NEW

Type : Commande

Syntaxe : NEW

Modes : Les modes direct et programme sont tous deux valides.

Jeton : $A2 (162)

Entrée abrégée : Aucune

Fonction :

NEW permet de saisir un nouveau programme BASIC en ignorant tout programme précédent.

Elle corrige les pointeurs après un chargement forcé (sans relocalisation) comme :

LOAD "ML",1,1

afin que BASIC puisse fonctionner sans erreur de mémoire insuffisante.

Remarques :

1. En réalité, la plupart des routines et données BASIC, ainsi que toutes les routines ML, restent inchangées ; NEW place des octets nuls au début du programme BASIC, réinitialise les pointeurs et effectue un CLR.

Entre autres, la commande interrompt la création de fichiers.

La commande OLD permet de récupérer le système BASIC après l'utilisation de NEW, à condition qu'aucune nouvelle ligne de programme n'ait été saisie.

2. La commande NEW peut parfois générer une erreur de syntaxe (?SYNTAX ERROR).

Exemples :

1. NEW

En mode direct, NEW prépare le 64 pour un nouveau programme. (Sans NEW, le programme serait simplement ajouté à celui déjà en cours d'exécution en BASIC, sous forme de lignes supplémentaires ou de remplacement.)

2. 20000 NEW: REM PROGRAM NO LONGER WANTED

Le système passe en mode PRÊT. Le programme ne s'affiche plus et semble avoir été effacé.

NEXT

Type : Instruction

Syntaxe : NEXT [variable numérique][,variable numérique...]

Modes : Les modes direct et programme sont tous deux valides.

Jeton : $82 (130)

Entrée abrégée : N MAJ-E

Fonction :

NEXT marque la fin d'une boucle FOR-NEXT. Voir FOR pour une description détaillée du traitement des boucles.

Exemples :

1. FOR 1=1 TO 10: FOR J=1 TO 10: PRINT I*J;:NEXT J: PRINT: NEXT

Ceci affiche une table de multiplication non formatée pour les valeurs jusqu'à 10 × 10.

Notez que NEXT:PRINT:NEXT fonctionne également.

En fait, c'est même un peu plus rapide. NEXT J: NEXT

I peut être remplacé par NEXT J,I.

Une fois le programme débogué, les variables suivant les instructions NEXT peuvent généralement être supprimées ; cependant, elles améliorent la lisibilité.

2.

80 FOR J=1 TO 2000: GET X$: IF X$="" THEN NEXT
81 FOR J=0 TO 0: NEXT

Cela retarde d'environ dix secondes, sauf si une touche est pressée ; si c'est le cas, la ligne 81 supprime la boucle J encore active.

3.

10 FOR J=1 TO 3: GOTO 40
20 NEXT K
30 NEXT J: END
40 FOR K=1 TO 2: GOTO 20

NEXT peut apparaître n'importe où, ce qui permet des constructions maladroites comme celle ci-dessus.

NOT

Type : Opérateur logique

Syntaxe : NOT une expression logique ou numérique.

Les expressions numériques doivent être évaluées après troncature à —32768 à +32767.

Modes : Les modes direct et programme sont tous deux valides.

Jeton : $A8 (168)

Saisie abrégée : N MAJ-O

Fonction :

La fonction NOT calcule le NON logique d'une expression. Les expressions logiques sont converties de faux à vrai, et inversement.

Les expressions numériques sont converties en binaire signé 16 bits, et chaque bit est inversé. Le résultat, comme l'original, est toujours compris entre -32 768 et +32 767, et est toujours égal à -1 moins la valeur d'origine.

Ainsi, la fonction NOT d'expressions arithmétiques ne convertit pas nécessairement vrai en faux.

Remarque : La fonction NOT est prioritaire sur les fonctions AND et OR.

Ainsi :

NOT A AND B
est identique à :

(NOT A) AND B

Les règles logiques habituelles s'appliquent aux fonctions NOT, AND et OR.

Exemples :

1. 55 IF X$=CHR$(34) THEN Q=NOT Q

Cette ligne inverse un indicateur de mode citation, indiquant si le mode citation est activé ou désactivé.

2. IF NOT OK THEN GOSUB 20000: REM ERROR MESSAGE AT 20000

La ligne ci-dessus utilise le résultat de la variable OK, définie lors de tests précédents, pour détecter les erreurs.