READ
DESCRIPTION.
L'instruction READ retourne la donnée contenue dans une instruction DATA à la position du pointeur de lecture des données.
L'instruction READ # qui retourne les enregistrements d'un fichier terminés par un Retour Chariot (CR).
SYNTAXE.
READ donneea , doonneeb , ... , donneen
REMARQUES.
donnee doit être l'identifiant d'une variable de même type que la donnée retournée.
Les variables contenues dans une instruction READ peuvent ne pas être déclarées précédemment. Si elles ont été déclaré, leur valeur sera modifiée avec la valeur de la donnée lue à cet emplacement.
L'appel d'une instruction READ peut retourné plusieurs valeurs, à condition de séparer chaque identifiant par une virgule. Bien sûr, chaque identifiant doit être du même type que la valeur attendue.
Les données doivent être listées sur plusieurs instructions DATA.
Si le pointeur de lecture des données a atteint la dernière donnée contenue dans les instructions DATA du script, toute tentative de lecture d'une nouvelle valeur déclenchera une erreur, sauf si une instruction RESTORE, ou RESTORE DATA valide, est utilisée pour déplacer le pointeur de lecture des données sur une position valide.
Rappel : la ou les listes de données, déclarées par des instructions DATA doivent être présentent en début de script, avant toute autre instruction ou fonction BBC BASIC, à l’exception de l'instruction REM introduisant des ligne de commentaires ou une instruction RESTORE pour ignorer certaines données.
Voir l'instruction DATA pour insérer des données dans un script BBC BASIC.
Voir l'instruction LOCAL DATA pour plus de détails sur la mémorisation du pointeur de lecture des instructions DATA.
Voir l'instruction RESTORE pour plus détails sur la réinitialisation des données contenues dans les instructions DATA.
Voir l'instruction RESTORE DATA pour plus détails sur le rappel de la mémorisation d'une instruction LOCAL DATA.
EXEMPLES.
Exemple 1. Cas général.
DATA "Janvier" , 31 , "Fevrier" , 28 , "Mars" , 31
DATA "Avril" , 30 , "Mai" , 31 , "Juin" , 30
DATA "Juillet" , 31 , "Aout" , 31 , "Septembre" , 31
DATA "Octobre" , 31 , "Novembre" , 30 , "Decembre" , 31
FOR kvaleur = 1 TO 12
READ kmois$ , kjours : REM - retourne 2 donnees consécutives suivantes
PRINT "Le mois de " ; kmois$ ; " a " ; kjours " jours."
NEXT kvaleur
PRINT "Fin du test."
END
Exemple 2. Restaurer toutes les données.
DATA "Janvier" , 31 , "Fevrier" , 28 , "Mars" , 31
DATA "Avril" , 30 , "Mai" , 31 , "Juin" , 30
DATA "Juillet" , 31 , "Aout" , 31 , "Septembre" , 31
DATA "Octobre" , 31 , "Novembre" , 30 , "Decembre" , 31
REPEAT
REPEAT
INPUT "Quel mois (de 1 a 12 ) ou 0 pour quitter " , kmois
UNTIL kmois < 13
IF kmois = 0 THEN EXIT REPEAT
FOR kvaleur = 1 TO kmois : READ kmois$ , kjours : NEXT kvaleur
PRINT "Le mois de " ; kmois$ ; " a " ; kjours " jours."
RESTORE : REM - replace le ppointeur sur la premiere donnee de la premiere instruction DATA
UNTIL FALSE
PRINT "Fin du test."
END
Exemple 3. Ignorer certaines données.
Restore +3 : REM - ignorer les 2 premieres instructions DATA
DATA 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10
DATA 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20
DATA 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30
DATA 31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40
READ kdonnee : REM - retourne la premiere donnee de la troisieme instruction DATA
PRINT kdonnee
RESTORE : REM - replace le pointeur sur la premiere donnee de la premiere instruction DATA
READ kdonnee : REM - retourne la premiere donnee de la premiere instruction DATA
PRINT "Fin du test."
END
Exemple 4. Mémoriser et restituer la position du pointeur.
DATA 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10
DATA 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20
DATA 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30
DATA 31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40
khasard = RND( 10 ) + 15
PRINT "Premiere serie."
FOR kvaleur = 1 TO khasard
READ kentier
PRINT STR$( kentier ) ; " " ;
NEXT kvaleur
FOR ktour = 1 TO 2
LOCAL DATA : REM - memorise la position du pointeur de lecture
PRINT "Deuxieme serie - lecture : " ; ktour
FOR kvaleur = ( khasard + 1 ) TO 40
READ kentier
PRINT STR$( kentier ) ; " " ;
NEXT kvaleur
RESTORE DATA : REM - reposition le pointeur sur sa position memorise
NEXT ktour
READ kdebut
PRINT "La serie 2 commence a la valeur : " ; kdebut
PRINT "Fin du test."
END
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
avec un exemple de résolution à télécharger pour vous inspirer.