Section courante

A propos

Section administrative du site

 Langage  Elément  Tutoriel  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Introduction
Référence de commandes et fonctions
Les commandes
Bibliothèque de fonctions
Les chaînes de caractères
Raccourci clavier (Shortcut Keys)
Emplacements mémoire
Table des modes et des formats d'écran
Police de caractères ATASCII
Préface
Notes légal
Dictionnaire
Recherche

Les chaînes de caractères

Cette page décrit les chaînes de caractères et les fonctions associées à la gestion des chaînes de caractères. Chaque chaîne de caractères doit être dimensionnée (voir instruction DIM) et chaque variable de chaîne de caractères doit se terminer par un $. Une chaîne de caractères elle-même est un groupe de caractères «enchaînés» ensemble. Les caractères individuels peuvent être des lettres, des chiffres ou des symboles (y compris les symboles spéciaux du clavier ATARI). Une sous-chaîne de caractères fait partie d'une chaîne de caractères plus longue et toute sous-chaîne de caractères est accessible dans ATARI BASIC si la chaîne de caractères a été correctement dimensionnée. Les caractères d'une chaîne de caractères sont indexés de 1 à la longueur actuelle de la chaîne de caractères, étant inférieure ou égale à la longueur dimensionnée de la chaîne de caractères.

Les fonctions de chaîne de caractères décrites dans cette page sont :

ASC

Format : ASC(sexp)

Exemples : 100 A = ASC(AS)

Cette fonction renvoie le numéro de code ATASCII pour le premier caractère de l'expression de chaîne de caractères (sexp). Cette fonction peut être utilisée en mode direct ou différé. Le code source suivant est un court programme illustrant la fonction ASC :

  1. 10 DIM A$(3)
  2. 20 A$="E"
  3. 30 A=ASC(A$)
  4. 40 PRINT A

Une fois exécuté. Ce programme affiche un 69 étant le code ATASCII pour la lettre "E". Notez que lorsque la chaîne de caractères elle-même est utilisée, elle doit être placée entre guillemets.

CHR$

Format : CHR$(aexp)

Exemples : 100 PRINT CHR$(65)
                100 A$=CHR$(65)

Cette fonction de chaîne de caractères renvoie le caractère, au format chaîne de caractères, représenté par le numéro de code ATASCII entre parenthèses. Un seul caractère est renvoyé dans les exemples ci-dessus, la lettre A est renvoyée. À l'aide des fonctions ASC et CHR$, le programme du code source suivant permet d'afficher les lettres majuscules de l'alphabet :

  1. 10 FOR I=0 TO 25
  2. 20 PRINT CHR$(ASC("A")+I)
  3. 30 NEXT I

Remarque : Il ne peut y avoir qu'un seul STR$ et un seul CHR$ dans une comparaison logique. Par exemple, A=CHR$(1) (CHR$(2) n'est pas une opération valide.

LEN

Format : LEN(sexp)

Exemple : 100 PRINT LEN(A$)

Cette fonction renvoie la longueur en octets de la chaîne de caractères désignée. Cette information peut ensuite être affichée ou utilisée ultérieurement dans un programme. La longueur d'une variable chaîne de caractères est simplement l'index du caractère se trouvant actuellement à la fin de la chaîne de caractères. Les chaînes de caractères ont une longueur de 0 jusqu'à ce que des caractères y soient entreposés. Il est possible d'entreposer au milieu de la chaîne de caractères en utilisant des index. Cependant, le début de la chaîne de caractères contiendra des déchets à moins que quelque chose n'y ait été entreposé auparavant.

La routine du code source suivant illustre une utilisation de la fonction LEN :

  1. 10 DIM A$(10)
  2. 20 A$="ATARI"
  3. 30 PRINT LEN(A$)

Le résultat de l'exécution du programme ci-dessus serait 5.

STR$

Format : STR$(aexp)

Exemple : A$=STR$(65)

Cette fonction numérique sous forme de chaîne de caractères renvoie la forme chaîne de caractères du nombre entre parenthèses. L'exemple ci-dessus renverrait le nombre réel 65, mais il serait reconnu par l'ordinateur comme une chaîne de caractères.

Remarque : Il ne peut y avoir qu'un seul STR$ dans une comparaison logique. Par exemple, A=STR$(1) > STR$(2) n'est pas valide et ne fonctionnera pas correctement.

VAL

Format : VAL(sexp)

Exemple : 100 A=VAL(A$)

Cette fonction renvoie un nombre de même valeur que le nombre entreposé sous forme de chaîne de caractères. C'est l'opposé d'une fonction STR$. En utilisant cette fonction, l'ordinateur peut effectuer des opérations arithmétiques sur des chaînes de caractères comme indiqué dans l'exemple de programme du code source suivant :

  1. 10 DIM B$(5)
  2. 20 B$="10000"
  3. 30 B=SQR(VAL(B$))
  4. 40 ? "LA RACINE CARREE DE ";B$;" EST ";B"

Lors de l'exécution, l'écran affiche LA RACINE CARREE DE 10000 EST 100.

Il n'est pas possible d'utiliser la fonction VAL avec une chaîne de caractères ne commençant pas par un nombre ou ne pouvant pas être interprétée par l'ordinateur comme un nombre. Elle peut cependant interpréter des nombres à virgule flottante, par exemple VAL("1E9") renvoie le nombre 1000000000.

Seul le champ numérique sera traduit, tandis que le texte sera ignoré. Par exemple :

  1. A$="5 SUM"
  2. VAL(A$)=5

Manipulations de chaînes de caractères

Les chaînes de caractères peuvent être manipulées de différentes manières. Elles peuvent être divisées, concaténées, réorganisées et triés. Les paragraphes suivants décrivent les différentes manipulations.

Concaténation de chaînes

La concaténation signifie rassembler deux ou plusieurs chaînes de caractères pour former une seule grande chaîne de caractères. Chaque chaîne de caractères à inclure dans une chaîne de caractères plus grande est appelée une sous-chaîne de caractères. Chaque sous-chaîne de caractères doit être dimensionnée (voir DIM). Dans ATARI BASIC, une sous-chaîne de caractères peut contenir jusqu'à 99 caractères (espaces compris). Après la concaténation, les sous-chaînes de caractères peuvent être entreposées dans une autre variable de chaîne de caractères, affichées ou utilisées dans des sections ultérieures du programme. Le code source suivant est un exemple de programme illustrant la concaténation de chaînes de caractères. Dans ce programme, A$, B$ et C$ sont concaténés et placés dans A$ :

  1. 10 DIM A$(100),B$(100),C$(100)
  2. 20 A$="CHAINE DE CARACTERES/SOUS-CHAINE DE CARACTERES SONT DISCUTES"
  3. 30 B$="DANS ATARI BASIC-UN GUIDE D'APPRENTISSAGE"
  4. 40 C$="----LES CHAINES DE CARACTERES"
  5. 50 A$(LEN(A$)+1)=B$
  6. 60 A$(LEN(A$)+1)=C$
  7. 70 PRINT A$

Fractionnement des chaînes de caractères

Le format d'une variable de chaîne de caractères d'index est le suivant :

svar(aexp1[.aexp2])

Le svar est utilisé pour indiquer le nom de la variable chaîne de caractères sans index (avec $). aexp1 indique l'emplacement de début de la sous-chaîne de caractères et aexp2 (si utilisé) indique l'emplacement de fin de la sous-chaîne de caractères. Si aucun aexp2 n'est spécifié, alors la fin de la sous-chaîne de caractères est la fin actuelle de la chaîne de caractères. L'emplacement de départ ne peut pas être supérieur à la longueur actuelle de la chaîne de caractères. Les deux exemples de programmes du code source suivant illustrent une chaîne de caractères divisée sans emplacement de fin indiqué et une chaîne de caractères divisée avec un emplacement de fin indiqué :

  1. 10 DIM S$(5)
  2. 20 S$="ABCD#"     
  3. 30 PRINT S2(2)
  4. 40 END

Le résultat est BCD# (sans emplacement de fin)

  1. 10 DIM S$(20)
  2. 20 S$="ATARI 800 BASIC"     
  3. 30 PRINT S$(7,8)
  4. 40 END

Le résultat est 80 (avec emplacement de fin)

Comparaisons et tris de chaînes de caractères

Dans les comparaisons de chaînes de caractères, les opérateurs logiques sont utilisés exactement de la même manière qu'ils le sont avec les nombres.

Lorsque vous utilisez des opérateurs logiques, n'oubliez pas que chaque lettre, chiffre et le symbole reçoit un numéro de code ATASCII. Quelques règles générales s'appliquent à ces codes :

Remarque : le système de gestion de la mémoire d'ATARI BASIC déplace les chaînes de caractères dans la mémoire pour faire de la place à de nouvelles instructions. Cela fait varier l'adresse de la chaîne de caractères si un programme est modifié ou si le mode Direct est utilisé.



PARTAGER CETTE PAGE SUR
Dernière mise à jour : Dimanche, le 10 mars 2024