Tandy Color Computer 3 Manuel utilisateur
PDF
Télécharger
Document
I N ITIATION AU BASIC CO ULEUR ÉTENDU (VERSION 2) Color Computer 3 System Software: © 1982, 1986 Microsoft and and Microware Systems Corporation. Licensed to Tandy Corporation Ali Rights Reserved. Ali portions of this software are copyrighted and are the proprietary and trade secret information of Tandy Corporation and/or its licensor. Use, reproduction or publication of a n y portion of this material without the prior written authorization by Tandy Corporation is striotly prohibited. Co/or Computer 3 Extended BASIC © 1 986, Ta n dy Corporation. Ali Rights Reserved. Reproduction or use, without express written permission from Tandy Corporation and/or its licensor, of any portion of this manual is prohibited. While reasonable efforts have been taken in the preparation of this manual to assure its accuracy, Tandy Corporation assumes no liability resulting from any errors or omissions in this manual, or from th e use of th e information cont;:iined herein. Tandy and Radio Shack are registered trademarks of Tandy Corporation. 10 9 8 7 6 5 4 3 2 1 Au débutant . . . Si vous ne connaissez absolument rien aux ordinateurs. vous avez trouvé le livre qu'il vous laut1 Cet ouvrage vous aide à "prograr7lmer" votre ordinateur avec son propre langage: le BASIC étendu. Vous commencerez en: • Composant de la musique . • PrGarant des spectacles de lumire. • Utilisant des jeux. • Ralisant des oeuvres d'art . Si vous êtes pressé de passer à l ' action, laites preuve d'un peu de patience. C'est en vous amusant que vous apprendrez le plus rapidement. Consacrez donc un peu de temps à votre ordinateur. Tapez ce qui vous passe par la tête, amusez-vous et mettez-vous à l'aise. Vous avez entre les mains un outil sensationnel. et à l'utilisateur plus expérimenté Nous sommes heureux de vous compter encore dans la famille du BASIC couleun Vous connaissez déjà peut-être le BASIC couleur original et même le BASIC couleur étendu. La version 2 du BASIC couleur étendu, langage décrit dans ce livre, est une extension plus évoluée du BASIC couleur et du BASIC couleur étendu. Avec la version 2 du BASIC couleur étendu, vous pouvez: • Dessiner des images tèrs détaillées, grâce â des milliers de positions d'écran. • Colorier vos images en turquoise, indigo, violet et avec des douzaines d'autres couleurs éclatantes. • Créer des effets spéciaux en mélangeant par exemple du texte avec des graphiques â haute définition. • Détecter un problème, par exemple une pression sur la mauvaise touche qui fait tomber votre programme en panne. La table ci-dessous donne les commandes nouvelles que vous apporte la version 2 du BASIC couleur étendu. Chapitre Commande PALETTE RGB 7 WIDTH, LOCATE, ATTR, vraies) 8 ii CfilITITJ([) (pour minuscules PALETTE, PALETTE CMP, PALETTE RGB 18 BUTTON 23 PALETTE 29 HSCREEN, HCIRCLE, HCLS, HCOLOR, HDRAW, HUNE, HPAINT, HRESET, HSET, HPOINT, HPRINT, PALETTE 30 HBUFF, HPUT, HGET 37 HSTAT 38 ERLIN, ERNO, ONERR, ONBRK TABLE DES MATIÈRES PARTIE 1 I ÉLÉMENTS DE BASE Et voici votre ordinateur PRINT SOUNO CLS PALETTE RGB �([) ordinateur n'oublie jamais (sauf si vous lui coupez le courant) Variables en chaine LET 2 Votre 3 Un programme simple NEW INPUT GOTO RUN PRINT, PRINT; LIST 4 Une boucle FOR/NEXT 5 Une boucle dans une autre FOR/NEXT emboitée SHIFT @) 6 Des d écisions difficiles IFTHEN END ANDÔR 7 L' écran PRINT@ WIDTH '8 CfilIIT!)QD LOCATE ATTR Les co ul eurs PALETTE 9 Le jeu du hasard AND 10 Retour à l ' école DATA READ RESTORE 11 L'arithmétique plus facile GOSUB RETURN REM Notation exponentielle 12 L'ordinateur et LEN 13 LEFT$ INT ON GOSUB ON GOTO les mots RIGHT$ MID$ CLEAR Sauvegarde des programmes CLOAD CSAVE SKIPF 1 4 Édition des programmes EDIT DEL RENUM 15 questionnaire I NKEY$ VAL Un Ill TABLE DES MATIÈRES , PARTIE 2 I UN PEU DE DETENTE 16 De la musique PLAY 17 Des images SET RESET CHR$ 18 ASC Bâtons de commande BU l ION JOYSI K PARTIE 3 I DES IMAGES EXCEPTIONNELLES IV 19 L'ordina:eur fait le point PSET PRESET PPOINT 20 Une ligne à su iv re LINE COLOR 21 L'écran argenté SCREEN PCLS 22 Des PMODE à la mode PMODE 23 Un empoi différent de la couleur PALETTE 24 À la recherche de la bonne page PCLEAR PMODE PCOPY 25 Pour tourner en rond CIRCLE 26 Un grand coup de pinceau PAINT 27 Le trait de génie DRAW 28 Un écra1 qui va au tableau GET PUT TABLE DES MATIÈRES PARTIE 4 I UN TABLEAU D'ENSEMBLE 29 Des points par milliers INKEY$ VAL HCOLOR HDRAW H U N E HPAINT HRESET HSET HPOINT PALETIE HPRINT 30 Stockage des graphiques HBUFF HPUT HGET PARTIE 5 / PASSONS AUX CHOSES SÉRIEUSES ... 31 Stockage des donnes OPEN CLOSE PRINT # - 1 INPUT #- 1 EOF 32 Tableaux numériques DIM 33 Tableaux en chaine LUST PRINT # - 2 34 Tableaux multidimensionnels PARTIE 6 I RETOUR AUX ÉLÉMENTS DE BASE 35 Les nombres SOR SIN COS TAN FN SGN ABS 36 Les chaines STRING$ INSTR ATN LOG EXP MID$ RIGHT$ 37 Entrée et sortie UNE INPUT PRINT 38 Les erreurs STOP CONT TAON ONERR ONBRK FIX DEF LEFT$ STR$ USING POS TROFF ERLIN HSTAT TIMEA MEM ERNO 39 Sous-programmes en langage machine DEFUSR VARPTR PEEK POKE HEX$ LPEEK LPOKE V TABLE DES MATIÈRES PARTIE 7 I DE TOUT ET DE RIEN Réponses suggérées aux exercices Exemples de programmes Feuilles de programmation Écrans de texte à basse définition Écrans de texte à haute définition Écrans de graphiques à basse définition Écrans de graphiques à haute définition Codes des caractéres BASIC Codes 0-1 27/basse et haute définition Codes 1 28-255/basse définition Codes 1 28-255/haute définition Codes des couleJrs Accés de palette Couleurs du BASIC Tonalités musicales du BASIC Formules mathématiques Fonctions dérivées Variables d'imprimante Topographie de mémoire Sous-programmes de mémoire morte (ROM) Messages d'erreur du BASIC Résumé du BASIC VI IT IT PARTIE 1 /ELEM ENTS DE BASE Dans cette partie, vous apprendrez à programmer. Avant de commencer. il faut cependant vous mettre dans de bonnes di spositions. • Soyez détendu. Il n'est pas nécessaire d'essayer de tout comprendre d'un seul coup. • Essayez vos propres idées. Vous n'avez pas à nous suivre sans cesse servilement. • Amusez-vous donc avec votre ordinateur couleuri Si vous êtes prêt, tournez la page et commencez. 1 /ET VOICI VOTRE ORDINATEUR Dans ce chapitre et le suivant, nous vous présentons votre ordinateur; nous vous montrons sa façon de travailler, certaines de ses qualités et méme ::iuelques-unes de ses bizarreries. Quand vous arriverez au chapitre 3, vous serez prêt à prograf!imer. Pour commencer (Mise sous tension) Branchez votre ordinateur à un télécouleur ou à un écran vidéo. Le petit manuel d'introduction fourni avec votre ordinateur couleur donne des instructions à ce sujet. Ensuite: 1. Mettez le télécouleur ou l ' écran vidéo en marche. 2. Si vous utilisez à un télécouleur. réglez-le sur le canal 3 cu 4 et mettez le sélecteur d'antenne à la position d'ordi nateur (COMPUTER). 3. Mettez votre ordinateur en marche. L'interrupteur marche-arrêt (POWER) est à la partie arriére gauche du clavier. Le message de début du BASIC apparTat sur l'écran: D I S K E X T E N D E D COLOR BAS I C v.r. C O P R . 1982, 1986 B Y T A N D Y UNDER LI CENSE FROM M I C ROSOFT A N D M I C R OWARE S Y S T E M S C O R P . (v.r. correspond a u numéro d e version et d'autorisation du BASIC.) Si le message de début du BASIC n'apparat pas sur lé'cran: • Arrêtez l'ordinateur. Attendez 30 secondes et remettez l'ordinateur en marche. • Réglez la luminosité et le contraste du télécouleur ou de l ' écran vidéo. • Vérifiez tous les branchements. Si le message de début du BASIC n'apparait toujours pas, consultez la section "Recherche des pannes et entretien" du manuel d'introduction. Quand le message de début du BASIC apparait, vous pouvez commencer. 3 1 / ET VOICI VOTRE ORO/NA TEUR Uti lisation du clavier (Touches (SHI F T )[[)) Faites connaissance avec le clavier et tapez ce qui vous passe par la tête. Vous êtes maintenant en mode de majuscules seulement. Tous les caractéres tapés apparaissent en majuscules sur l'écran. Pressez la touche rnHID) et appu yez sur :L. Rel âchez ensuite les deux touches et tapez quelques autres caractéres. Ces caractéres apparaissent maintenant en couleurs inverses. Si les caractéres ne sont pas en couleurs inverses, p·essez de nouveau CSHIET OO. Veillez à appuyer sur CSHITJ) avant de presser ®· Quand vous pressez :sAIF.1J:0J, 'tous passez en mode de majuscweslminuscules. Les minuscules tapées apparaissent en c::iuleurs inverses. Les majuscules apparaissent en couleurs normales. Pour taper une maiuscule, pressez la touche (filiIFI:, comrn� vous le feriez avec une machine à écrire Maintenez �HIFI: et tapez la lettre désirée en majuscule. Pour revenir au 11ode de mai uscules seulement, pressez de nouveau ŒHIEI)CID. Il est préférable de rester en mode de majuscules seulement pour entrer des commandes. Entrée d'une commande (Commande PRINT) Pressez la touche � . Ne vous inquiétez que de la derniére ligne de votre écran qui indique: OK OK est un message de l'ordinateur. Il vous déclare: "OK, je suis à votre d1sposit1on." \ ' ' : 0 4 , ... ' : ' ' 0 ' \ , __ ' 1 0 ' ' ' -� \ ' 0 , ' ; � ' l 1 0 .. ' ' , : \ 1 ' ' ' ' ' ' ' 0 .: 0 , 1 / ET VOICI VOTRE ORO/NA TEUR Donnez votre premier ordre ou commande à l'ordinateur. Tapez exactement la ligne suivante: P R I N T ' ' B O N JO U R , JE S U I S V O T R E O R D I N A T EUR C O U L EUR'' Quand vous arrivez à la droite de l'écran, contintJez à taper. apparaî sur la ligne suivante. La derniére partie du message Votre cran doit indiquer: OK P R I N T ' 'B O N J OUR , J E S U I S VO T R E O R D I N A T E U R C O U L E U R ' ' Vérifiez maintenant la ligne. Avez-vous mis les gui l le mets aux bon s endroits? Avez-vous tapé PRINT en majuscules? (L'ordinateur ne comprend pas les commandes tapes en minuscules.) Si vous vous tes tromps, pressez simplement la touche El; le dernier caractére tapé disparaît. Pressez de nouveau ::::ette touche et l'avant-dernier caractére disparaît . . et ainsi de suite. Tapez maintenant les caractéres corrects. . Êtes-vous prêt? Pressez la touche CEN:'.ŒID . 011e se passe t- il? Votre écran doit indiquer: - OK P R I N T ' ' B O N JO U R , JE S U I S V O T R E O R D I N A T E UR C O U L E UR'' B O N JOUR , J E S U I S V O T R E O R D I N A T E U R C O U L E UR OK I Votre ordinateur vous a obèi en imprimant le message entre guillemets. 5 1 / ET VOICI VOTRE ORO/NA TEUR Entrée des nombres (Nombres et chaînes) Faites imprimer un autre message par l'ordinateur en tapant: P R I N T "2" Pressez�. L'ordinateur i mprime votre message. Essayez-en un autre: P R IN T ' ' 2 + 2 ' ' � L'ordinateur imprime: 2 + 2 Vous vous attendiez peut-être à bien plus qu'une simple reproduction électronique . . . . Vous vouliez peut-être une réponse1 Donnez à votre ordinateur des nombres sans guillemets. Tapez: PRINT 2 + 2 � Cette fois-ci, l'ordinateur donne la réponse: 4 Les guillemets ort sans aucun doute une s1gnif1cation. Utilisez-les encore un peu et tapez ces lignes: P R I NT P R I NT P R I NT PRINT PRINT PRINT 5+4 � ''5 +4'' �J ' ' 5+4 E G A L E ' ' 5+4 � 6/2 ' ' DO N N E 6/2 ' ' � ' ' 8/2'' ::EN.iEEJ 8/2 � Qu'en déduisez-vous? RÉGLES SUR LES CHAÎ NES ET LES NOMBRES L'ordinateur voit tout ce que vous tapez sous forme de chan /es ou de nombres. Entre les guillemets, l'ordinateur voit une chaîne exactement telle qu'elle est décrite. S'il n'y a pas de guillemets, l'ordinateur voit un nombre qu'il considére comme un probléme numérique. 6 1 / ET VOICI VOTRE ORO/NA TEUR Une calculatrice couleur ( + - , I, et CD) , * Pour l'ordinateur, un probléme d'arithmétique ne présente aucune difficuté. Faisons par exemple une divisior et tapez: P R I N T "3 8 6 2 D I V I S E P A R 1 3 2 E G A L E " 3 8 6 2 / 1 3 2 (ENTER) _ _ Faisons maintenant une multiplication: P R I N T 1 5 89 * 23 CEN:ïE1i) Remarquons que le signe de multiplication de l'ordinateur est un astérisque (*). Vous pouvez aussi élever un nombre à une puissance 3 à la puissance 2, tapez: à l 'aide de la touche CD. Pour élever P R I N T 3 CD 2 Œ:Nm) Essayons quelques autres problémes: P R I NT " 1 5 * 2 = " 1 5 *2 � P R I NT 1 8 * 1 8 " E S T L E C A R R E DE 1 8 " ŒNm) P R I N T 3 3 . 3 3 /2 2 . 8 2 ' � aintenant. à votre toJn Écrivez deux commandes qui i mpriment ces deux problémes et leurs reponses: 157 / 13.2 = 9 5 * 43 = EXERCICES SUR LES COMMANDES Si vou s utilisez les commandes correctes, l'ordinateur imprime sur l écran : ' 1 5 7 / 1 3 . 2 = 1 1 -8 9 3 9 3 9 4 95 * 43 = 4085 Êtes-vous prêt pour les réponses? Les commandes correctes sont: P R I N T " 1 5 7 / 1 3 . 2 = " 1 5 7 /1 3 . 2 P R I NT " 9 5 * 4 3 = " 9 5 * 4 3 7 1 / ET VOICI VOTRE ORO/NA TEUR Les erreurs (Messages d 'erreur) Tapez la ligne suivante en tapant délibérément "PRllNT" à la place de PRINT: PRIINT "BONJOUR" (ENTER) L'écran indique: ?SN ERROR ?SN ERROR indique une erreur de syntaxe. L'ordinateur vous dit ainsi que "PRllNT" n'est pas dans son vocabulaire et qu'il n'a aucune idée de ce que vous voulez lui faire faire. Quand le message ?SN ERROR apparait, vous avez probablement fait une faute de frappe. L' ordinateur vous donne aussi des messages d'erreur quand il comprend effectivement ce que vous voulez, mais qu'il estime qJe vous lui demandez une chose illogique ou impossible. Essayez par exemple: PRINT 5/1/J Œfil]ID L ' écran indique: ?11/J ERROR L'ordinateur vous indique ainsi qu' I ne peut pas diviser par O. car c'est impossible1 En cas de message d'erreur que vous ne comprenez pas, passez à l'annexe. Nous y avors '! 1-S. indiqué tous les messages d'erreur et leurs causes probables. /. Un écran de couleur différente (Commande CLS) Jusqu' présent, nous avons seulement vu que votre ordinateur affiche des caractéres sur un écran vert. Votre ordinateur couleur a pourtant d'autres couleurs dans son sac. Tapez: CLS8 ŒNill) Votre écran est maintenant orange, avec une bande verte en haut. La commande a indiqué à l'ordinateur d'effacer l ' écran et d'afficher la couleur 8 qui est l'orange. Mais à quoi sert la bande verte? Quand l'ordinateur affiche des caractéres, il doit le faire sur la couleur de fond courante. Par la suite, vous apprendrez à changer la couleur de fond qui, pour le moment, est le vert. Tapez d'autres caractéres. L'ordinateur utilise encore un fond vert. Pressez CEID:EID pour obtenir le message OK. Tapez ensuite: CLS4� 8 1 / ET VOICI VOTRE ORO/NA TEUR Gemme auparavant, une bande verte apparait en haut de l'écran; le reste est d'une autre couleur, suivant le type d'écran. • Avec un écran CMP (télécouleur ou écran vidéo à signal complet), le reste est rouge. • Avec un écran RGB (rougevertbleu), le reste est noir. Certaines couleurs, comme la 4, paraissent différentes, suivant que l'écran est de type à signal complet ou RGB (rougevertbleu). La commande CLS permet de produire neuf couleurs. Pour les afficher, entrez CLS avec un numéro de 0 à 8. (Si vous entrez un numéro en dehors de l'intervalle O à 8, l'écran indique le message d'erreur MICROSOFT.) Tapez maintenant CLS sans code de numro: CLS� Si vous n'utilisez pas d e numéro, l'ordinateur suppose que vous voulez afficher la couleur de fond courante qu , en ce moment, est le vert. Couleurs standard (Commande PALETTE) Les couleurs standard de l'ordinateur couleur sont les neuf permises avec la commande CLS sur un écran vidéo CMP (signal complet). Dans ce livre, nous utilisons surtout les couleurs standard. Ces couleurs sont: Code CLS Couleur standard 0 1 2 3 4 5 Noir Vert Jaune Bleu Rouge Chamois Turquoise Lilas Orange 6 7 8 Avoc un écran vidéo RGB, vous pouvez produire les couleurs standard en entrant la commande PALETIE RGB. Tapez: P A L E T T E R G B (ENTER) Vous pouvez maintenant utiliser la commande PALETTE RGB pour produire les couleurs standard sur votre cran RGB. Par exemple, tapez: C L S 4 r::e:N:lli) Avant d 'entrer la commande PALETIE RGB, CLS4 fait passer l'écran au noir. CLS4 rend maintenant votre écran rouge. Dorénavant, il ne faut pas oubller que, si vous avez un écran RGB et si vous désirez prodtne les couleurs standard, vous devez entrer la commande PALETIE RGB chaque io:s que vous mettez votre ordinateur en marche. 9 1 / ET VOICI VOTRE ORDINATEUR L'ordinateur se fait entendre . . . (Commande SOUND) Tapez: S 0 U N 0 1 , 1 0 0 (ENTER) Si vous n 'entendez rien, augmentez le volume et essayez de nouveau. Pendant six secondes, vous entendez la tonalité la plus basse que l'ord nateur est capable de "fredonner". Et la tonalité la plus élevée? Tapez: S 0 UN 0 2 5 5 , 1 0 0 (ENTER) Le deuxiéme code indique à l'ordi nateur la durée de tonalité. Vous pouvez utiliser tout nombre de 1 à 255. Essayez 1: S 0 UN 0 1 2 8 , 1 (ENTER) L'ordinateur produit la tonalité pendant 6100 de seconde environ. Essayez 1 0: S O U N O 1 2 8 , 1 0 (ENTER) L'ordinateur produit la tonalité pendant 610 de seconde. Essayez différentes combinaisons de nombres. Chaque nombre doit être compris entre 1 et 255. (Si vous entrez un nombre en dehors de cet intervalle, l'écran donne le message d'erreur ? F C E R R O R.) 10 1 / ET VOICI COTRE ORO/NA TEUR Le langage de l'ordinateur (Syntaxes des commandes) Dans ce chapitre, vous avez abordé quatre commandes: PRINT, SOUND, CLS et PALETIE. Er vous familiarisant avec ces commandes. vous avez appris les formats ou syntaxes nécessaires pour les entrer. Par exemple, quand vous entrez la commande PRINT, vous devez aussi introduire le message à imprimer. Si vous n'entrez pas de message, l'ordinateur donne une erreur de syntaxe. Par la suite, vous pouvez oublier la syntaxe d'une certaine commande. Pour cette raison, chaque fois que nous présentons une commande nouvelle, nous indiquons sa syntaxe. Celle-ci se trouve dans une case qui permet de la trouver plus facilement. Dans la plupart des syntaxes, nous utilisons des mots en italique ou des abréviations pour représenter l'information nécessaire. Par exemple, dans la syntaxe de PRINT, message correspond à un message réel (corrme "BONJOUR, JE SUIS VOTRE ORDINATEUR COULEUR") que vous devez indiquer. La syntaxe de PRINT est: P R I N T message Imprime le message sur l'écran. Le message peut correspondre à une chaine (le BASIC imprime alors la ::: haine telle quelle} ou à un nombre (le BASIC imprime alors la valeur du nombre). La syntaxe de CLS est: c L S c Efface l'écran de texte et affiche la couleur c. c correspond à un nombre de O à 8 qui représente la couleur dési'ée. Si vous omettez c, le BASIC affiche la couleur de fond courante. La syntaxe de SOUND est: S O U N D n1, n2 Reproduit la tonalité spécifiée (n1} pendant la durée précisée (n2). n1 et n2 sont des nombres de 1 à 255. La syntaxe de PALETIE est: P A L E T T E R G B Prépare l'ordinateur à afficher les couleurs standard �ur un écran vidéo RGB. Appris au chapitre 1 COMMANDES PRINT SOUND CLS PALETIE CARACTÉRES DU CLAVIER CONCEPTS Chaine et nombres Messages d'erreur Syntaxe Nous donnons un rappel de ce genre à la fin de chaque chapitre pour nous assurer que vous n'avez rien oublié. 11 2 I VOTRE ORDINATEU R N ' O U BLIE JAMAIS ( ...sauf si vous lui coupez le courant...) C'est à sa "mémoire" que votre ordinateur doit sa puissance. Dans ce chapitre, vous étudierez comment l'ordinateiir peut mémoriser l'information désirée. Quelques explications {Commande LET) Demandez à l'ordinateur de se "souvenir" du nombre 3. Tapez: · A = 13� Tapez maintenant ce qui vous passe par la tête puis pressez� . Voyons si l'ordinateur se souvient à quoi A correspond en tapant: PR I N T A � L'ordinateur se rappelle que A vaut ce que vous tapiez: 13 tant que vous le laissez dans sa mémoire ou jusqu'à A=17.2ŒNliID Si vous demandez à l'ordinateur d'imprimer maintenant A, il vous donne 1 7 .2. Vous n'avez pas à utiliser forcé ment la lettre A. Vous pouvez choisir des lettres quelconques de .A. à Z. En fait, vous pouvez utiliser deux lettres quelconques entre A et Z. Tapez: B = 15 (ENTER) c = 20 ŒNirn B C = 2 5 ŒNîŒ Demandez maintenant à l'ordinateur d'imprimer tous les nombres que vous lui avez demandés de se rappeler. Tapez: pR I N T AI B I c , B c :ENTER) 13 2 / VOTRE ORDINATEUR N'OUBLIE JAMAIS Si vous voulez que l'ordinateur se souvienne d'une "chaîne" de lettres ou de nombres, utilisez une lettre avec le signe du dollar ($). Tapez: A$ = " E SSAYEZ D E VOUS" 8$ = "RAPPELER" C $ = " C E C I , VO I C I U N " BC$ = "SUPERBE ORDI NATEUR" Tapez ensuite: P R I NT A$ , B$ , C$ , BC$ (ENTER) En programmation, toutes les lettres que vous avez utilisées sont des "varia bles". Jusqu'à pr ésent, nous avons utilisé les variables suivant es : MÉMOIRE DE L'ORDINATEUR NOMBRES CARACTÈRES A 17.2 B 15 c 20 BC = 25 A$ = " ESSAYEZ DE VOUS" B$ "RAPPELER" C$ = "CECI, VOICI U N " BC$ = "SUPERBE ORDINATEUR" = = = = Faites un sondage des variables ci-dessus pour voir si l'ordi nateur a bonne mémoire. Pc.r exemple, pour voir si BC contient encore 25, tapez: P R I N T B C (ENTERl Imaginez les variables comme des petites cases dans lesquelles vous pouvez stocker l'information. Un jeu de cases correspond aux chaînes et l'autre aux nombres. Chaque case possède une étiquette. Vous pouvez stocker l'information dans une variable. Vous pouvez aussi changer l'information déjà en place dans une variable ex:stante en entrant une commande simple comme A = 5. Cette commande est en fait la commande LET, mais l'ordinateur couleur vous permet d'omettre le mot LET. La syntaxe de la commande LET est: L E T variable= valeur Attribue à une valeur une variable. Vous pouvez omettre le mot LET et taper simplement varia ble = valeur. Remarque: Avec certaines versions du BASIC, vous devez inclure le mot LET. Ce mot est facultatif avec l ' ordinateur couleur. 14 2 I VOTRE ORO/NA TEUR N 'OUBLIE JAMAIS Des règles très strictes (Erreur TM) Quand vous stockez des données dans des variables, vous devez appliquer les règles suivantes: RÈGLES SUR LE STOCKAGE DES DONNÉES DANS DES VARIABLES • Des données entre guillemets sont des données en chRlne. Vo us ne pouvez stocker des données en chaine que dans des variables en cha i ne (variables avec le signe $). • En l'absen::::e de guillemets. les données sont numériques. Vous ne pouvez stocker des données numériques que dans des variables num ériques (variables sans signe $). Pour vous montrer les réactions de l'ordinateur quand vous désobéissez à ces règles, tapez les quatre commandes suivantes: 0 = "6"� Z = " V 0 I C I U N E 0 0 N N E E E N C H A I N E " :ENTER; 0 $ = 6� Z$ = 1 2 � L'ordinateur répond à chacune de ces commandes avec '™ E R ROR (erreuré de concordance). Vous avez en effet essay de stocker des données dans le mauvais type de variable. • Les deux premières commandes essaient de stocker des données en chaine dans des variables numériques • Les deux commandes suivantes essaient de stocker les données numériques dans des variables en chaine. Tapez les commandes suivantes; l'ordinateur doit les accepter: 0$ = " 6 " � Z $ = " V O I C I U N E D O N N E E E N CH A I N E " ŒfiŒ!1l 0 = 6 ŒNIEBJ Z = 1 2 (ENTER: Ces commandes on: maintenant été ajoutées la mémoire de l'ordinateur. MÉMOIRE DE L'ORDINATEUR NOMBRES Cl !AÎNES D-6 D$-"6" Z$- "VOICI UNE DONNE EN CHAINE" z-12 2 / VOTRE ORDINA TEUR N 'OUBLIE JAMAIS De l'arithmétique nouveau genre (Utilisation des variables numériques) Vous pouvez maintenant faire des opérations intéressantes avec ce que vous avez mis dans la mémoire de l'ordinateur. Tapez: P R l N T D * 2 (ENTERJ L'ordinateur imprime le produit de D par 2. (L'ordinateu r se souvient que D est égal à 6.) Essayez la ligne suivante: PRINT Z/D L'ordinateur imprime le quotient de Z par O. Que pouvez-vous obtenir avec la ligne suivante? P R I N T D $ * 2 !ENTER) Si vous l 'avez essayée, l 'ordinateur imprime? TM E R ROR. Il ne peut pas multiplier des données en chaîne. Biffez les commandes ci-dessous rejetes par l'ordinateur: EXERCICE AVEC LES VARIABLES F 22.9999999 " 1 9.2" M OZ$ = "VEUILLEZ VOUS RAPPELER DE CECI" 15 M$ FF z = Avez-vous terminé? Voici les commandes que l'ordinateur accepte. F 22.9999999 OZ$ = "VEUI LLEZ VOUS RAPPELER D E CECI" FF Z RÈGLES SUR LES VARIABLES Vous pouvez utiliser deux caractères de A à Z pour une variable. Le premier caractère doit être une lettre de A à Z; le deuxième peut toutefois être un nombre ou une lettre. Si vous dési rez attribuer des données en chaîne à la variable, faites suivre celle-ci d'un signe du dollar. Sinon, elle ne peut contenir que des données numériques. Les variables en chaîne peuvent stocker jusqu'à 249 caractères. Appris au chapitre 2 CONCEPTS Variables Variables numériques et en chaîne 16 3 I U N P ROGRAMME S I M PLE Vous avez appris quelques commandes qu'il faut maintenant combiner pour faire un programme. Un simple programme d 'une ligne (Commandes NEW et RUN) Tapez: N E W (ENTER) Cette commande efface le contenu éventuel de la mémoire de l'ordinateur. Tapez maintenant la ligne suivante. I l est important de taper d'abord le nombre 1 O. 1 0 P R I N T " B O N J OU R , J E S U I S V OT R E O R D I N A T E U R C O U L E U R "Œ:N:ITfü Vous avez pressé� et rien ne s'est passé! En tout cas, vous ne voyez riem Vous venez de taper votre premier programme. Tapez: R U N (ENTER) L'ordinateur exécute votre programme. Tapez RUN à plusieurs reprises. L' ordinateur exécute votre programme chaque fois que vous le désirez, autant de fois que vous le voulez. Dans votre premier programme, vous avez utilisé deux commandes nouvelles: NEW et R U N . Leurs syntaxes sont: NEW Efface la mmoire. R U N numéros de ligne Exécute les numéros de ligne spécifiés. Les numéros de ligne sont facultatifs; si vous les omettez, l'ordinateur exécute le programme entier. 17 3 / UN PROGRAMME SIMPLE Un programme de deux lignes {Commande LIST) Votre premier programme a donné de bons résultats; c.joutez-lui donc une autre ligne. Tapez: 20 P R I N T " C O M M E N T V O U S A P P E L E Z - V O U S ? " (ENTER) Si vous vous êtes trompé dans cette ligne (ou dans Jne autre), il suffit de la retaper. Tapez maintenant: L I S T (ENTER) L'ordinateur affiche le programme complet. L'écran indique: 10 20 P R I N T " B O N J O U R , J E S U I S VOTRE ORD I N ATEUR COULEUR" P R I N T " C O M M E N T V O U S A P P E L E Z-VO U S ? " Vous avez utilisé la commande LIST pour afficher le programme. Sa syntaxe est: L I s T numéros de ligne Affiche les numéros de ligne spécifiés. Les numéros de ligne sont facultatifs. Si vous les omettez, l'ordinateur affiche le programme entier. Entrée de votre nom {Commande INPUT) Pour exécuter le programme, tapez: R U N (ENTER: L'ordi nateur affiche: B ON J O U R , J E S U I S V O T R E O R D I N A T E U R C O U L E U R COMMENT VOUS A P P E LEZ-VO U S ? Que se passerait-il donc si vous répondiez à la question de l ' ordi nateu? Essayez donc. Quand vous tapez seulement votre nom, l'ordinateur ne vous comprend pas. En fait, l'ordinateur ne vous comprend que si vous parlez son langage. Utilisez un mot que l'ordi nateur comprend: I N PUT. La syntaxe de INPUT est: I N P u T "message"; variable Imprime votre message, attend que vous entriez l'information et l'affecte à une vara i ble. Le message est facultatif. Changez la ligne 20 pour utiliser le mot INPUT à la place de PRINT. Comment changez-vous une ligne de programme? Retapez-la simplement en utilisant le même nurréro de ligne. Tapez: 20 I N P U T " C OMM E N T V O U S A P P E L E Z - V O U S ? " ; A $ � Vous dites ainsi à l'ordinateur de: 18 • Imprimer "COMMENT VOUS APPELEZ-VOUS?" • Attendre que vous tapiez des caractères et pressiez COOEID • Affecter les caractères tapés A$ 3 / UN PROGRAMME SIMPLE Ajoutez une autre ligne au programme: 30 P R I N T " B O N J O U R , " A $ (EN TER) Listez de nouveau le programme pour voir de quoi i l a l'air. Tapez: L I S T (ENTER) Le programme doit ressembler à celui-ci: 10 20 30 P R I N T "BON J O U R , J E S U I S VOTRE O R D I NATEUR COULEUR" I N P U T " C O M M E N T V O U S APP E L E Z - V O U S ? " ; A $ P R I N T " BO N J O U R , " A $ Pouvez-vous deviner ce qui va se passer quand vous l'exécutez? Essayez donc: R U N (ENTER) Tout s'est vraiment bien passé! Voici ce qui s'est probablement passé quand vcus avez exécuté le programme (suivant le nom que vous avez tapé): B O N J O U R , J E S U I S VOT R E O R D I N A T E U R C O U L E U R COMM E N T VOUS A P P E L E Z - V O U S ? D I A N E B O N J O U R , D I AN E Exécutez (RUN) de nouveau le programme avec des noms différents. Par exemple: B O N J O U R , JE SU I S V O T R E O R D I N A T E U R C O U LEUR C O M M E N T V O U S A P P E L E Z-V O U S ? P I E R R E BONJOUR , P I ERRE Une répétition sans fin (Commande GOTO) Avec GOTO, autre commande nouvelle, l'ordi nateur peut exécuter les mêmes commandes à maintes reprises. La syntaxe de GOTO est: GOTO numro de ligne Va au num éro de ligne. Tapez cette ligne: 40 GOTO 3 0 o� o GQOOOOO O OOG 0 b. 0 0 0 00000000000 Exécutez mai ntenant le programme. L'ordinateur imprime votre nom à ma i ntes reprises, sans arrêt. GOTO indique à l'ordinateur de revenir à la ligne 30: 10 20 30 40 P R I N T " B O N J O U R , J E S U I S V O T R E O R D I NA T E U R C O U L E U R " I N P U T " C O M M E N T V O U S APP E L E Z - V O U S ? " ; A $ P R I N T " BO N J O U R , " A $ GOT0 1 0 3 / UN PROGRAMME SIMPLE Votre programme est maintenant exécuté en continu. Chaque fois qu'il arrive à la ligne 40, il revient à la ligne 30. Nous avons ici une "boucle". Vous pouvez arrêter cette boucle sans fin de deux man ères: • Appuyez sur ŒHIFIJ en pressant [email protected]. Le programme marque ainsi un temps de pause. Pressez une touche quelconque pour reprendre et continuer. • Pressez (BREAKJ pour terminer le programme. Impression avec espaces (Commandes PRINT, et PRINT;) Pressez ŒBEAKJ pour terminer le programme. Vous pouvez apporter un changement important en ajoutant simplement une virgule ou un point-virgule à la commande PRINT. Essayez d'abord la virgule. Retapez la ligne 30, avec une virgule à la fin: 30 P R I N T " B O N J O U R , " A$ , Exécutez le programme. L'ordinateu r affiche l'information en deux colonnes. Pressez� et essayez le point-virgule. Tapez: 30 P R I N T " B O N J OU R , " A$; Exécutez l e programme. Vous ne pourrez probablement pas savoir ce que l e programme fait tant que vous ne pressez pas �. Le point-virgule groupe les données. RÈGLES SUR LA PONCTUATION D'IMPRESSION Nous indiquons ici le rôle de la ponctuation à la fin d'une ligne PRINT. • Une virgule fait passer l'ordinateur à la colonne suivante. Vous pouvez vous en servir pour imprimer en colonnes. • Un point-virgule oblige l' ordinateur "à ne pas bouger". Vous pouvez vous en servir pour "grouper" des données. • En l'absence de ponctu �tion, l'ordinateur passe à la ligne suivante. Vous pouvez ainsi imprimer en rangees. Un programme compact (Les deux points (: )) À ce stade, vous supposez peut-être que chaque nouvelle commande ajoutée à un programme doit commencer sur une ligne nouvelle. En fait, vous pouvez combiner plusieurs commandes dans une ligne en les séparant à l'aide de deux points (:). Par exemple, vous pouvez combiner quatre commandes du programme ci-dessus en ure ligne. Changez d'abord la ligne 10 pour qu'elle comprenne les quatre commandes. Tapez: 10 20 P R I N T " B O NJOU R , J E S U I S V O T R E O R D I N A T E U R C O U L E U R " : I N P U T " C O MM E N T V O U S A P P E L E Z- V O U S ? " ; A$ : P R I N T " B O N J O U R , " A $ ; : G OTO 40� 3 I UN PROGRAMME SIMPLE Annulez ensuite les lignes 20, 30 et 40 en tapant: 20 30 40 (ENTER) (ENTER) (ENTER) Exécutez maintenant le programme. Il doit donner les mêmes résultats qu'avec quatre lignes. La combinaison des commandes conserve de la mémoire; elle est pratique quand vous écrivez un long programme qui exige une grande quantité de mémoire. La combinaison des commandes rend toutefois le programme plus difficile à li:e et à comprendre. Dans la suite de ce manuel, nous ne combinons pas les commandes pour que les programmes restent faciles à comprendre. RÈGLES SUR L'ENTÉRE DES LIGNES DE PROGRAM M E • Une ligne de programme comprend une ou plusieurs commandes séparées par des signes des deux points (:). • Une ligne de programme peut contenir autant de commandes qu'on le désire, pourvu qu'elle ne dépasse pas 249 caractères. Changement du programme {Insertion, annulation et changement de lignes de programme) Savez-vou s qu � vous connaissez maintenant trois moyens de changer u n programme? En . voici un resume: • Vous pouvez insérer une ligne de programme en l ' entrant. Le BASIC insère automatiquement la ligne au bon endroit dans le programme. Les n u méros de ligne se placent par ordre numérique croissant. Par exemple, pour insérer la ligne 20 entre les lignes 15 et 22, tapez: 20 • Vous pouvez changer une ligne de programrie en l' entrant de nouveau. Par exemple, pour changer la ligne 20, tapez: 20 • P R I NT " I l E S T F A C I L E D E C H ANG E R U N P RO G R AM M E " ŒN!EB) P R I N T " R E T A P E Z S I M P L E M ENT L A L I G N E " (ENTER) Vous pouvez annuler une ligne de programme en entrant seulement son numéro. Par exemple, pour annuler la ligne 20, tapez: 20 (ENTER) 2 3 / UN PROGRAMME SIMPLE Démonstration de couleur et de son (Exemple de programme) Voulez-vous revenir encore à la couleur et au son? Effacez d'abord la mémoire. Tapez: NEW� Entrez ensuite ce programme: 10 20 30 40 P R I NT "POUR M E F A I R E C H A N G E R D E TON" I N PUT " E N T R E Z U N NOMBRE D E 1 A 2 5 5 " ; T S O U N D TI 5 0 GOTO 1 0 Exécutez le programme pour vous faire une idée des tonalités de l'ordinateur. Que se passe-t-il si vous remplacez la ligne 30 par la suivante: 30 S O UN D 5 0 , T Conseil: Revenez au chapitre 1 où nous avons parlé de la commande SOUND. Avez-vous la réponse? Si vous avez fait le changement ci-dessus. l'orrlin;item produit chaque fois la tonalité, mais pendant une durée différente. même EXERCICE tBREAKl puis effacez le programme en tapant NEW. Essayez maintenant d'écrire un programme, similaire à celui ci-dessus, pour que l 'ordinateur présente une certaine couleur Vous ra ppelez- vous que vous pouvez afficher neuf couleurs avec la commande CLS et un numéro de 0 à 8? Pressez d'abord Voici notre programme: 10 20 30 40 P R I N T " P O U R M E F A I R E C H A N G E R D E CO U L E U R " I N P U T " E N T R E Z U N C H I F F R E E N T R E 0 E T 8" C LST GOT0 1 0 U n programme plus fini (Commande I F/THEN) La touche tBREAKl est un moyen brusque d'arrêter l'exécution d'un programme. Pourquoi l'ordinateur ne vous demanderait-il pas poliment si vous êtes prêt à arrêter? Pressez � pour arréter le programme puis changez la ligne 40 pour avoir: 40 I N P U T " V O U L E Z - V O U S V O I R U N E A U T R E C O U L E U R ? " ;R$ Ajoutez ensuite la ligne suivante: 50 22 I F R $ = "OUI" THEN 20 3 I UN PROGRAMME SIMPLE Exécutez le programme. Tapez OUI pour continuer l'exécution du programme. Tapez d'autres lettres et le programme s'arrête. Le programme a maintenant l'aspect suivant 10 20 30 40 50 P R I N T " PO U R M E F A I R E C H A N G E R D E C O U LE U R " I N P U T " E N T R E Z U N C H I F F R E E N T R E 0 e t 811; T C LS T I N P U T " V O U L E Z- V O U S V O I R U N E A U T R E CO U L E U R " ; R I F R $ = "OU I " T H E N 2 0 Les nouvelles lignes remplissent les fonctions suivantes: • • La ligne 40 imprime une question et indique à l'ordinateur de s'arrêter et d'attendre une réponse: R$. La ligne 50 indique à l 'ordinateur de revenir à 20 si (IF) (et seulement si) la réponse Dans le cas contraire, le programme se termine, car il n'a plus de lignes à exécuter. à (R$) est "oui". Appris au chapitre 3 COMMANDES CONCEPTS NEW Changement, insertion et annulation RUN d'une ligne de programme LIST Combinaison de commandes dans une INPUT ligne de programme. GOTO Création d'une boucle CLAVIER CJ PRINT, PRINT; IF/THEN 23 4 I U N E BOUCLE Dans ce chapitre, nous abordons les effets sonores avec l'ordinateur. Auparavant, vous devez utiliser les nouvelles commandes FOR et NEXT pour apprendre à l'ordinateur à compter. Pour compter . . . (Commandes FOR et NEXT) FOR et NEXT sont deux commandes que nous utilisons toujo:.irs ensemble. Leurs syntaxes sont: F o R variable n1 TO n2 STEP n3 Stocke n1 dans la variable et, chaque fois que l'ordinateur revient à FOR. ajoute n3 à la variable. STEP n3 est facultatif; si vous l'omettez, l'ordinateur utilise STEP 1. = NE X T variable _Si la variable est infrieure ou gale n2. l'ordi nateur revient 3 la commande correspondante. Dans le cas contraire, le BASIC passe à la commande suivante. FOR Ces syntaxes peuvent faire apparaitre FOR et NEXT compliquées, mais elles sont en fait simples à utiliser. Tapez NEW pour effacer la mémoire puis entrez: 10 20 30 40 FOR X = 1 T0 1 0 P R I N T "X = " X NEXT X P R I N T "J ' A I F I N I DE COMPT ER" Exécutez l e programme. �· 4 / UNE BOUCLE Avant d'essayer de comprendre le rôle de FOR et de NEXT, remplacez la ligne 1 O par chacune des lignes ci-dessus et exécutez le programme quatre fois de plus. 1 1 1 1 0 0 0 0 FOR FOR FOR FOR X X X X = = = = 1 T0 1 0 0 S T0 1 S -2 T 0 2 20 T0 24 FOR et NEXT font compter l 'ordinateur. Jetez un coup d'oeil à la derniére version de notre programme: 1 1/J 2 1/J 3 1/J 40 FOR X = 2 0 T0 24 PRINX "X = " X NEXT X P R I NT " J ' A I F I N I DE COMPTER" La ligne 1 0 indique à l' ordinateur que le premier nombre doit être 20 et le dernier 24. Elle utilise X pour libeller ces nombres. La ligne 30 indique à l'ordinateur de revenir à la ligne 1 0 pour le nombre suivant (NEXT X), jusqu'à ce qu'il arrive au dernier nombre (24). Jetons un coup d'oeil à la ligne 20. Cette ligne étant entre les lignes FOR et NEXT, l'ordinateur doit imprimer la valeur de X chaque fois qu'il compte: X X X X X = 20 = 21 = 22 = 23 = 24 Ajoutez une autre ligne entre FOR et NEXT: 15 P R I NT " · · · COMPTAGE • • • " Exécutez le programme. L'ordinateur exécute les lignes que vous insérez entre FOR et NEXT. EXERCICE 4-1 É crivez un programme qui fasse imprimer 1 0 fois votre nom par l'ordi nateur. Conseil: Le programme doit compter jusqu'à 1 0. EXERCICE 4-2 Écrivez un programme pour imprimer la table de multiplication par 9 (9 * 1 à 9 * 1 0). Conseil: PRINT 9*X constitue une commande tout à fait normale. EXERCICE 4-3 Écrivez un programme qui imprime la table de multiplication de 9 * 1 à 9 * 25. Conseil: En ajoutant une virgule dans la ligne PRINT, vous pouvez résoudre la totalité du problème et faire apparaître les résultats d'un seul coup sur l'écran. 26 4 / UNE BOUCLE Avez-vous terminé? Voici nos programmes: Programme 4-1 10 20 30 FO R X = 1 T 0 1 0 PR I NT "THOMAS" N E XT X Programme 4-2 10 20 30 FO R X = 1 T0 1 0 P R I N T "9*"X"="9* X NEXT X Programme 4-3 10 20 30 FOR X = 1 T0 2 5 P R I N T "9*"X" ="9*X , NEXT X Deux par deux (Option STEP) Nous allons maintenant faire compter l'ordinateur d'une autre manière. Effacez le programme en tapant NEW tENTERl. Tapez ensuite le nouveau programme suivant: 10 20 30 40 F O R X = 2 TO 1 0 S T E P 2 P R I N T "X= " X NEXT X P R I N T " J ' A I F I N I DE COM P T E R " 2 4 / UNE BOUCLE Exécutez le programme. Comprenez-vous le rôle de STEP 2? Cette instruction fait compter l'ordinateur deux par deux. La ligne 1 0 indique à l 'ordinateur que: premier X est 2 • Le • Le dernier X est 1 O ... ET STEP 2 ... • Tous les X entre 2 et 1 0 sont séparés de 2 unités (2, 4, 6, 8 et 10). STEP 2 indique à l'ordinateur d'ajouter 2 pour obtenir chaqLe NEXT X. Pour faire compter l'ordinateur par 3, séparez tous suivante: 10 les X de 3 unités. Essayez la ligne 1 O FOR X = 3 T 0 1 0 S T E P 3 Exécutez le programme. L'écran indique: X = 3 X = 6 X = 9 Voici d'autres lignes FOR . STEP pour vous aider à bien comprendre cette instruction: . 10 10 10 . F O R X = 5 TO 50 S T E P 5 FOR X = 1 0 TO 1 S T E P -1 FOR X = 1 TO 20 STEP 4 Vous vous posez peut-être des questions sur les programmes exécutés au début de ce chapitre, sans l'instruction STEP. Si vous omettez STEP, l'ordinateur suppose que vous voulez STEP 1 . Comptage des sons (Exemple avec FOR/NEXT) Vous avez appris l'ordinateur compter; vous pouvez maintenant le sonoriser. Effacez l'ancien programme et tapez le suivant: 10 20 30 40 FOR X = 1 TO 2 5 5 P R I N T "TON A L I T E SOUND X , 1 NEXT X 1 1 X Ce programme fait compter l'ordinateur de 1 à 255. Chaque fois qu'il passe à un nouveau nombre, il exécute les instructions des lignes 20 et 30: • Avec la ligne 20, il imprime X, qui est le comptage courant. • Avec la ligne 30, il reproduit la tonalité X. Par exemple: • Quand l 'ordinateur arrive pour la première fois à FOR, la ligne 1 0 , il rend X égal à 1 . • I l passe ensuite à la ligne 20 et imprime • A la ligne 30, il reproduit la tonalité 1 . • I l revient ensuite à la ligne 1 O et rend X égal 2. • valeur de X. L'ordinateur répéte ce processus jusqu'à ce que X (BREAK). 28 1, = 255 ou que vous pressiez 4 / UNE BOUCLE À votre avis, que fait l' ordinateur si vous changez la ligne 10 de la façon suivante: 10 F O R X = 2 55 T O 1 S T E P -1 EXERCICE DE PROGRAMMATION À l'aide de STE P, changez la ligne 1 0 pour que l'ordi nateur reproduise des tonalités: Du bas de sa gamme vers le haut, en reproduisant chaque dixime note. 2 Du haut de sa gamme vP.rs le bas, en 3 Du milieu de sa gamme vers le haut, en reproduisant chaque cinquime note. reprodLisant chaque dixime note. 10 10 10 Êtes-vous prêt pour les réponses? 10 10 10 FOR X = 1 TO 255 S T E P 1 0 F O R X = 255 T O 1 S T E P - 1 0 F O R X = 1 2 8 TO 2 55 S T E P 5 EXERCICE 4-4 É crivez maintenant un programme pour que l'ordi nateur: reproduise les sons du bas de sa gamme vers le haut; 2 du haut de sa gamme vers le bas. La réponse à cet exercice, ainsi qu'aux autres, est à la fin de ce livre. Pouvez-vous le faire chanter? Certainement. Au chapitre 1 1 , vous apprendrez l'ordinateur à reproduire vos airs favoris. Appris au chapitre 4 COMMANDES FOR. . . TO ...STEP NEXT 29 5 I U N E BOUCLE DANS UNE AUTRE Vous connaissez maintenant FOR/NEXT; vous pouvez donc apprendre à l'ordinateur à indiquer l' heure. Utilisez d'abord FOR/NEXT pot.. r fixer une pause de minuterie. Préparez ensuite une horloge à l'aide d'une commande FOR/NEXT emboîtée. Établissement d ' une pause de minuterie {Utilisation pratique de FOR/NEXT) Tapez: 10 20 30 FOR Z = 1 TO 460 * 2 NEXT Z P R I N T " J ' A I C O M P T E J U SQU ' A 9 2 0 " Exécutez le programme. Soyez patient et attendez quelques secondes. Deux secondes pour être exact. Il faut deux secondes à l'ordinateur pour compter jusqu'à 920. - -· \ ..<_,<.- . Les lignes 1 0 et 20 é:ablissent une pause de minuterie. En le faisant compter jusqu'à 920, vot..s tenez l'ordinateur occupé pendant deux secondes. Vous pouvez voir que nous avons là les bases d'un chronomètre. Effacez le programme et tapez: 10 20 30 40 50 P R I N T " CO M B I E N D E S E C O N D E S ? " I N P UT S FOR Z = 1 TO 460•S NEXT Z P R I N T S " S E CO N D E S SONT E C O U L E E S ! Exécutez le programme. Entrez le nombre de secondes que vous dêsrez cor�:e· 3· 5 / UNE BOUCLE DANS UNE AUTRE EXERCICE 5-1 Il serait intéressant que le chronomètre reproduise un signal sonore quelconque. Ajoutez des lignes à la fin du programme pour obtenir ce signal sonore. Une boucle dans une autre (Commandes FOR/NEXT emboîtées) Avant de réaliser une véritable horloge, vous devez apprendre à utiliser une boucle FOR/NEXT dans une autre. \. Tapez ce nouveau programme: FOR X = 1 TO 3 P R I N T "X = " X FOR Y = 1 TO 2 PRINT, "Y=" y N EXT Y NEXT X 10 20 30 40 50 60 Exécutez-le. Sur l'écran, vous devez avoir: X = 1 y = 1 y 2 = X = 2 y = 1 y = 2 X = 3 y = 1 y = 2 En programmation, nous avons là une boucle embo ite. Le programme exécute les opérations suivantes: 1. 32 I l compte X de 1 à 3. Chaque fois qu'il compte X: A. Il imprime la valeur de X. B. Il compte Y de 1 à 2. Chaque fois qu'il compte Y, il imprime sa valeur. C. Quand il a terminé de compter les suivant (ligne 10). Y, il revient au comptage du X 5 / UNE BOUCLE DANS UNE A UTRE Il. Quand le comptage des X est terminé, le programme prend fin. En écrivant ce programme, vous pouvez aussi combiner les lignes 30 et 40 en une seule ligne. 10 20 30 40 50 FOR X = 1 TO 3 P R I NT " X = " X FOR Y = 1 T O 2 P R I NT , " Y = " Y NEXT Y , X La ligne 50 indique à l'ordinateur de revenir au Y suivant puis, quand il a terminé le comptage de tous les Y, de revenir au X suivant. Quand vous utilisez des boucles emboitées dans un programme, n'oubliez jamais de fermer la boucle intérieure avant la boucle extérieure. Bon 10 20 30 40 FOR X = 1 T O 3 FOR Y = 1 T O 2 NEXT Y NEXT X Mauvais 10 20 30 40 Bon 10 20 30 F O R X = 1 TO 3 FOR Y = 1 TO 2 NEXT Y , X FOR X = 1 TO 3 FOR Y = 1 TO 2 NEXT X NEXT Y Mauvais 10 20 30 FOR X = 1 TO 3 FOR Y = 1 TO 2 NEXT X, Y Horloge d'ordinateur {Exemple de commandes FOR/NEXT emboîtées) Cet exemple montre l'utilisation des boucles FOR/NEXT emboites pour réaliser une horloge. Tapez: 10 15 20 30 40 50 60 70 F O R S = 0 T0 5 9 C LS P R I NT S SOUND 1 5 0 , 2 FOR T = 1 TO 390 NEXT T NEXT S P R I NT " U N E M I N U T E E S T E C O U L E E " 33 5 / UNE BOUCLE DANS UNE A UTRE Exécutez le programme qui passe par les oprations suivantes: 1. Il. Il compte les secondes de 0 à 59 (lignes 1 0 et 60). Chaque fois qu'il compte une seconde: A. Il efface l'écran (ligne 1 5). B. Il imprime la seconde (ligne 20). C. Il produit une tonalité (ligne 30). D. Il marque un temps de pause assez long pour l 'écoulement d'une seconde (lignes 40 et 50). Quand il termine le comptage des secondes de qu'une minute est écoulée (ligne 70). 0 à 59, i l imprime u n message qui dit Voici une horloge digne de ce nom: 10 20· 30 40 50 60 70 80 90 1 00 110 FOR H 0 T O 23 FOR M 0 TO 59 FOR S 0 T O 59 CLS PRINT H " : "M":"S SOUND 1 50, 2 F O R T "' 1 TO 3 7 5 NEXT T N EX T S NEXT M NEXT H "' "' "' Avec ce programme, l 'ordinateur exécute les opérations suivantes: 1. I l compte les heures de 0 à 23 (ligne 1 0). Chaque fois qu'il compte une nouvelle heure: A. Il compte les minutes de minute: 1. 2. B. Il. 34 o à 59 (ligne 20). Chaque fois qu'il compte une nouvelle Il compte les secondes de O à 59 (lignes 30 et 90). Chaque fois qu'il compte une nouvelle seconde: a. li efface l'écran (ligne 40). b. Il imprime l'heure, la minute et la seconde (ligne 50). c. Il d. Il marque un temps de pause assez long pour l'écoulement d'une seconde (lignes 70 et 80). produit une tonalité (ligne 60). Quand il termine le comptage des minute suivante (ligne 1 00). 59 secondes, il passe à la ligne 2 0 pour Quand i l termine l e comptage des 59 minutes. il passe à l a ligne suivante (ligne 1 1 0). la 1 O pour l'heure Quand i l termine l e comptage des heures ( 0 à 23), le programme prend fin. (En ajoutant la liçine 1 20 GOTO 1 0, l'horloge fonctionne en continu). 5 / UNE BOUCLE DANS UNE AUTRE EXERCICE 5-2 Entre les lignes 90 et 1 00, vous pouvez ajouter des tonalités qui marquent chaque minute. Écrivez un programme à cet effet. EXERCICE 5-3 Écrivez un programme qui oblige l'ordinateur à montrer chacune de ses neuf couleurs à chaque seconde. Listage des longs programmes (Commandes LIST et touches ( s H r F T )(:@)) Vos programmes ont maintenant une telle longueur qu'il vous faut un moyen de les lister autre que LIST CENIEID. Essayez les deux méthodes suivantes: • Ne spécifiez que les lignes que vous désirez afficher avec la commande LIST. Par exemple, pour ne lister que les lignes 5 0 à 1 OO, tapez: LI ST 50-100 � • Tapez LIST IENTERl. Quand la ligne que vous désirez voir apparait sur l'écran, appuyez sur CfilITEIJ puis pressez C@. Le listage marque ainsi un temps d'arrêt. Pressez une touche quelconque pour continuer. Appris au chapitre 5 COMMANDE FOR/NEXT CLAVIER CfililIT)@:l 35 6 I DES DÉCISIONS DIFFICILES . . . Voici une décision facile à prendre pour votre ordinateur: • Si (IF) vous tapez ORANGE . . . il rend alors (THEN) l'écran orange. ou • Si (IF) vous tapez CHAMOIS . . . il rend alors (THEN) l'écran chamois. Plutôt facile? Faites-le donc faire par l'ordinateur. Tapez ce programme: 10 20 30 40 1 00 110 200 P R I N T " V O U L E Z - V O U S UN E C R A N O R A N G E OU C H A MO I S ? " I N PUT C $ I F es = " O R A N G E " T H E N 1 0 0 I F es = " C H A M O I S " T H E N 2 0 0 C LS8 END C LSS Exécutez le programme à plusieurs reprises. Essayez les couleurs ORANGE et CHAMOIS comme réponses. Si (IF) vous répondez ORANGE . . . alors (THEN) . . . 1. La ligne 3 0 envoie l'ordinateur à l a ligne 1 OO. 2. Avec la ligne 1 OO, l'écran devient orange. 3. La ligne 1 1 0 termine le programme. (Si l 'ordinateur arrive à la ligne 1 1 0, il n'atteint jamais . la ligne 200.) D'autre part . . . Si (IF) vous répondez CHAMOIS . . . alors (THEN) . . . 1. La ligne 40 envoie l'ordinateur à la ligne 200. 2. Avec l a ligne 200, l'écran devient CHAMOIS. 3. La ligne 200 étant la dernière du programme, celui-ci se termine. 37 6 / DES DÉCIS/OINS DIFFICILES . . . Qu'arrive+il si vous donnez une réponse différente de ORANGE ou CHAMOIS? Exécutez à nouveau le programme. Cette fois-ci, répondez par VERT. L'écran devient orange. Pourquoi donc? Si la condition est fausse, l'ordinateur ne tient pas compte de la partie THEN de la ligne et il passe à la ligne suivante du programme. IF/THEN est la commande utilisée pour fair� prendre une décision à l'ordinateur. Voici la syntaxe de IF/TH E N ; ne comptez pas cependant la comprendre parfaitement avant d'arriver à la fin de ce chapitre. IF condition THEN commandes ELSE commandes Vérifie la condition. Si elle est vraie, le BASIC exécute les commandes qui suivent THEN. Si elle est fausse, le BASIC exécu:e les commandes qui suivent ELSE ou, si vous omettez ELSE, il ne fait rien. Vous avez aussi utilisé la commande END dont la syntaxe est: END Termine l'exécution du programme. Addition d'un autre nombre (Option ELSE et commandes IF/THEN emboitées) Jetez un coup d'oeil au programrre suivant: 10 20 30 40 100 110 200 P R I N T " V O U L E Z - V OUS U N E C R A N O R A N G E O U C H A M O I S ? " I N P UT C $ I F C $ ;: " O R A N G E " T H E N 1 0 0 I F C $ ;: " C H A M O I S " T H E N 2 0 0 C LS8 END C LS5 Avec ELSE, vous pouvez présenter la décision sous la forme suivante: Si (IF) vous tapez ORANGE . .. . . . alors (THEN) . . . L'écran devient orange. . . . ou autrement (ELSE) . . . Si (IF) vous tapez CHAMOIS . . alors (THEN) . . . L'écran devient chamois. Vous pouvez indiquer toutes ces irstructions à l'ordinateur en une ligne. Effacez les lignes 30 à 200 et tapez la nouvelle ligne 30 suivante: 30 38 I F C $ ;: " O R A N G E " T H E N C L S 8 E L S E I F C $ ;: " C H A M O I S " T H E N C LSS 6 / DES DÉCISIONS DIFFICILES . . . Exécutez le prograrrme. I l se déroule exactement comme auparavant. • • Si C$ est égal à "ORANGE ", l'ordi nateur exécute la commande qui suit THEN (commande CLS8). Si C$ n'est pas égal à "ORANGE", l'ordinateur exécute la commande qui suit E LSE (autre commande IFfrHEN). Remarquez que la ligne 30 emboîte une commande IFfrHE N dans une autre. Vous pouvez emboîter autant de commandes IFfrHEN que vous le désirez pourvu que la ligne de programme ne contienne pas plus de 249 caractères (longueur maximale). Encore d'autres niveaux . . . {Propositions ELSE supplémentaires) Supposons que, en plus des opérations déjà exécutées, vous voulez indiquer ce qu'il devrait autrement (ELSE) faire si C$ n'est pas égal à ORANGE. à l'ordinateur Autrement dit, vous voulez ajouter une autre proposition ELSE à votre décision: Si (IF) vous tapez ORANGE . . . . . . alors (THEN) . . . L'écran devient orange. . . . ou autrement (ELSE) . . . Si (IF) vous tapez CHAMOIS . . , . . . alors (THEN) L'écran devient chamois. . . . o u autrement (ELSE) . . . I mp r i me z "VOUS D E V E Z TAPER O R A N G E OU C H A M O I S " Pour ajouter cette nouvelle proposition ELSE, insérez ELSE, suivi de la commande PRINT, à la fin de la ligne 30: 30 I F C $ = " O R A N G E " T H E N C L S 8 E L S E I F C$ = " C H A M O I S " T H E N C L S S E L S E P R I N T " V O U S D E V E Z T A P E R O R A N G E O U C H A MO I S " Exécutez le programme, mais cette fois, répondez à l'ordinateur par une couleur autre que chamois ou orange. Votre réponse amène l'ordinateur à imprimer le message "VOUS DEVEZ TAPER ORANGE OU CHAMOIS". Vous pouvez ajouter autant de propositions ELSE que vous le désirez, pourvu que la ligne com plète ne dépasse pas 249 caractères. 39 6 / DES DÉCISIONS DIFFICILES . . . Une décision encore plus réfléchie (Les deux points (: )) Pour donner encore plus de puissance à la commande I F!TH EN. vous pouvez faire exécuter à l' ordinateur un certain nombre de commandes à la suite de chaque proposition THEN ou ELSE. Par exemple, vous voulez que l'ordinateur exécute les opérations suivantes: Si (IF) vous tapez ORANGE . . . . . . alors (THEN) . . . L'écran devient orange et le p·ogramme passe à la ligne 1 O. . . . ou autrement (ELSE) . . . Si (IF) vous tapez CHAMOIS . . . . . . alors (THEN) L'écran devient chamois et le programme passe à la ligne 1 O. . . . ou autrement (ELSE) . . . (1) li imprime un message et (2) il passe à la ligne 20. Vous pouvez grouper ces instructions en une ligne en séparant chaque commande avec deux points. Changez la ligne 30 pour avoir: 30 I F C $ = "ORA N G E " T H E N C L SS : GOTO 10 E L S E I F C $ = " C H A MO I S " T H E N C L S 5 : G O T O 1 0 E L S E P R I N T " V O U S D E V E Z T A P E R O R A N G E O U C H A M O I S " : G O T O 20 Vous pouvez ajouter autant de commandes que vous le désirez à une proposition THEN ou ELSE à condition de ne pas dépasser 249 caractères par ligne. Une décision plus raffinée {Conditions AND et OR) Avec les nouveaux mots AND et OR, vous pouvez demander à l'ordinateur de prendre une décision plus raffinée. Par exemple, supposons que vous voulez écrire un programme qui exige les conditions suivantes d'un candidat à un emploi: Un programmation ET de l'expérience en programmation diplôme en Effacez la mémoire. Tapez et exécutez ensuite ce programme: 10 20 30 40 50 40 P R I N T "AVEZ-VOUS--" I N PU T " U N D I P LO M E E N P R O G R A M M A T I O N " ; D $ I N PU T " D E L ' E X P E R I E N C E E N P R O G R AM M A T I O N " ; E $ I F D $ = " 0 U I " E T E $ = " 0U I " T H E N P R I N T " V O U S E T E S E M B A U C H E ! " E L S E P R I N T " D E S O L E , NOUS N E POUVONS PAS VOUS EMBAU C H E R " GOT0 1 0 6 / DES DÉCISIONS DIFFICILES . . . Si vous répondez par OUI aux deux questions, l'ordinateur décide: VOUS ÊTES EMBAUCHÉ! D'autre part, si vous répondez par OUI l'ordinateur est obligé de décider: à la première question et par NON à la deuxième, DESOLE, NOUS NE POUVONS PAS VOUS EMBAUCHER Supposons maintenant que les conditions changent et que "OU" remplace "ET". Les cor.ditions sont mai ntenant: Un diplôme en programmation ou de l'expérience en programmation Changez 40 la ligne 40 pour remplacer ET par OU: I F 0 $ = " 0 U I " OU E $ = " 0 U I " T H E N P R I N T " V O U S E T E S E M B A U C H E ! " E L S E P R I N T " D E S O L E , N O U S N E P O U V O N S P A S V O U S E M B AU C H E R " Exécutez le programme. Répondez par "OUI" à l a première question et par "NON" à la deuxième, comme vous l'avez précédemment fait pour voir la différence due au changement d'un mot: VOUS ÊTES EMBAUCHÉ! Appris au chapitre 6 COMMANDES 1 FffH EN/E LSE END 7 I L ' ÉCRAN Jusqu'à présent, vous n'avez utilisé qu'un écran. Dans l e présent chapitre, nous allons apprendre à utiliser un nouvel écran (de grande dimension) et quatre nouvelles commandes. Si vous avez un écran vidéo RGB (rouge/vert/bleu), tapez PALETTE RGB (ENTERJ avant de commencer. Vos couleurs correspondront ainsi aux nôtres. Le grand écran (Commande WIDTH) Vous utilisez maintenant un écran de texte de 32 x 1 6. Il peut afficher le texte (caractères alphanumériques) en format de 32 colonnes (numérotées de O à 31) de large et de 1 6 ranges (n:.Jmérotées de 0 à 1 5) de hauteur: 0 ' 2 3 • s G 1 • 9 " ' 1� , � 1 ' 1E 11 1 "'" 21 2 2 2 2'1� ,,,,,t ?.J 3{ 3t •O 13 43 7 / L ' ÉCRAN Votre ordinateur peut utiliser deux autres écrans de texte dont l'un est de 40 x 24: 1 2 3 0 5 5 ' 7 1 6 9 1( 11 1 1� 1 1 1 1E 1 1 2{ 21 2 2 2 · 2 21 27212 3 3i 3 " "I' > 3, "' " 1 IO i 12 13 1 14 15 15 17 " " " 11 22 23 L'autre est de 80 X 24: o i J 1 • s 6 ' 1 t 1 1 1 ' 1 ' 1 , ' • �" 111 ti• �� z • l � 29 :io l l l , :i.· 1 Jj l ) )! 1 oc •1 • l 4:1 .. � ". t � � 1 !!.:1� � �: 1o �1 !il s- i( , v1 1 "'t i!: • 1<1w , : : 1 , 1i1 �1 n 1. n 7 / L 'ÉCRAN La commande WIDTH sert à passer d'un écran à un autre. Sa syntaxe est: w I D T H 40, 80 ou 32 efface l'écran. Fait passer à l'écran de 40 x 24, de 80 x 24 ou de 32 x 1 6 puis Utilisez WIDTH pour passer à l'écran de 40 x 24. Tapez: W I D TH 40 � L'écran de 40 x 24 différe de celui de 32 x 1 6. Sa bordure est verte au lieu d'être noire. Le curseur est un caractère de soulignage clignotant au lieu d'être une case clignotante. Les tailles des c;:m:ir,tères sont également différentes. Pour passer à l'écran de 80 x 24, tapez: W I DT H 8 0 (ENTERl L'écran de 80 x 24 paraît identique à celui de 40 x 24, mais les caractères sont plus minces. Pour revenir à l'écran de 32 x 1 6 , tapez: W I DT H 3 2 (ENTERl Les écrans de 40 x 24 et de 80 x 24 sont tous deux à haute défin ition. L'écran de 32 x 1 6 est à basse défin ition. Positions sur l'écran (Commandes PRINT @ et LOCATE) Vous pouvez placer du texte sur l'écran à basse définiticn à l'aide de la commande PRINT. Vous pouvez mettre du texte sur l'écran à haute définition à l'aide de la commande LOCATE. La syntaxe de PRI NT @ est: P R r N T @ n. message imprime le message. Place le curseur à la position n sur l'écran à basse défi nition puis La syntaxe de LOCA TE est: LO c A T E x,y Place le curseur à la colonne x, rangée y. La colonne peut être comprise entre 0 et 39 avec un écran de 40 x 24 ou entre 0 et 79 avec un écran de 80 x 24. Pour chaque type d'écran, la rangée peut varier de 0 à 23. Le programme suivant, intitulé "Un cran magique", montre le rôle de la commande PRINT @ : 10 20 W I D TH 3 2 P R I NT @ 230 , "UN E C RAN M A G I Q U E " ; 7 / L 'ÉCRAN Quand vous exécutez ce programme, le BASIC passe à l'écran de texte à basse définition, place le curseur à la position 230 (224 + 6) et imprime le message " u N E c R A N MA G I Q u E " . 0 1 , 3 • 5 6 7 e 9 1( ,, 1 1 ,, 1 1( 1 H 1� 2( 21 2 , 2' 2! " " "29 3( 31 0 2 4 96 12a "0 192 224 • s C R E E N ' u l 0 ' H A G 1 c 256 0 352 . ' ' 0 Cette version de l'écran magique montre le rôle de LOCATE: 10 20 30 W I D TH 40 LOCATE 1 0 , 1 2 P R I NT "UN ECRAN MAGIQUE" Quand vous exécutez ce programme, le BASIC place le curseur à la colonne 1 0, rangée 1 2 et imprime l e message " U N E C R A N M A G I Q U E " . 0 1 , ' ' 5 ' 7 . 9 11 11 1� 1 1 1 1( 1 1 ' ' " ,, ,, , , '" ' '"' " " "1�3 35 3' 31� 39 1 10 1 " " " 15 17 18 19 1 22 " 46 • s c R E E ' ' u l 0 ' H A G 1 t 7 / L 'ÉCRAN et LOCATE sont analogues, mais elles présentent deux différences. Tout d'abord, place le curseur à une position PRINT @: LOCATE le place à une position de rangée et de colonne. Ensuite, PRINT @ imprime un message; LOCATE n'en imprime pas. PRINT @ PRINT @ ne s'utilise qu'avec l'écran de texte à basse définition; LOCATE ne fonctionne qu'avec un écran à haute définition. Si vous essayez d'utiliser ces commandes avec le mauvais écran, le BASIC envoie ? H P E R R O R . PRINT @ Minuscules {Touches c s H I F T )([)) Vous pouvez passer en mode de maj usculesminuscules avec les écrans à basse et haute définition. Chaque écran présente cependant les minuscules de façon différente. • L'écran à basse définition affiche les minuscules en couleurs inverses. • L'écran à raute définition affiche des minuscules vraies. Essayez d'utiliser le mode de maj uscules minuscules avec les deux écrans. Appuyez sur Cfilïiill et pressez ® · Retapez la ligne 30 du programme "Un écran magique". Utilisez ŒHIT:i) pour les maj uscules, comme avec une machine à écrire normale. Tapez: 30 P R I N T " U n é c r a n mag i qu e " Tapez LIST � pour lister le laspect suivant: 30 program me. Sur l'écran à basse définition, la ligne 30 a P R I N T "UN ECRAN MAG I QUE" Sur l'écran à haute définition. l a ligne 30 se présente 30 ainsi: P R I N T � -M- Mi- l- Qtl-E-'... .. !),.,, .u-� ' t>-e ;/'!.(#>. u 47 7 / L 'ÉCRAN Exécuter le programme. À cause de WIDTH 40 à la ligne 1 0 du programme, le BASIC passe à l'écran de texte à haute définition et affiche le message suivant: u 1 l :. 4 ) . ( ' ' 1( 1' 1 2 ,, , , , 1 ,, " 1 " 2 " 222I' " 2 "1•130 311• 3 3 " . 3, 1 J : 10 1 12 • s ' ( . . " f u l • f . . . ; ' 13 16 ' 18 " 21! ,, 1 1 22 l 1 1 Revenez en mode de majuscules seulement en appuyant sur '.SH IFT' et en pressant QD. Couleurs (Commande CLS) Vous pouvez utiliser l a commande C L S avec les écrans à basse et cependant un rôle lègérement différent avec chaque écran. haute définition. CLS joue • Sur l'écran à basse définition, CLS efface l'écran et affiche une couleur. • Sur l'écran à haute définition, CLS efface l'écran, affiche une couleur et change la couleur de fond. Avec un écran vidéo RGB (rouge/verlbleu), tapez PALETTE RGB ŒNJ:'.EID avant d'aller plus loin. Vos couleurs correspondront ainsi aux nôtres. Utilisez maintenant CLS avec les deux écrans. Passez d'abord à l'écran à basse définitior et entrez CLS avec le code de couleur 8 (orange). Tapez: W I DT H 32 � C L S 8 (ENTER) Un écran orange apparaît avec une bande verte à sa partie supérieure. Le vert est la couleur de fond courante. 7 / L 'ÉCRAN Passez maintenant à l'écran à haute définition et entrez la même commande. Tapez: W I D T H 40 ŒN:'ŒID C L S 8 (ENTER) Un écran �f(lsans bande verte, apparaît. La commande CLS a changé aussi la couleur de fond à l'orange. Essayez d'autres couleurs de fond. Utilisez un code queconque entre 1 et 8. Pour comprendre le rôle de CLS dans un programme, ajoutez la ligne 1 5 à notre programme "Un écran magique": 10 15 20 30 W I D T H 40 C LS3 LOC ATE 1 0 , 1 2 P R I N T "Un é c r a n m a g i que" Exécutez le programme. L'ordinateur affiche "Un écran magique" sur un fond bleu. Une mise en valeur remarquable (Commande ATTR) Vous pouvez utiliser la commande spéciale ATIR pour mettre du texte en valeur sur l'écran à haute définition. ATTR ne s'utilise qu'avec l'écran à haute définition; elle ne donne aucun résultat avec l'écran à basse définition. Sa syntaxe est: A TT R c 1, c2, 8, U Met le texte en valeur en fixant le premier plan à la couleur c 1 (1 à 8) et le fond à la couleur c2 (1 à 8). Si vous spécifiez B, le texte clignote. Si vous spécifiez U, vous le soulignez. Pour comprendre le rôle de ATIR, tapez: A T T R 3 , 2 (ENTER) Tapez ensuite quelques caractères. Ceux-ci sont mis en valeur. La couleur de premier plan est chamois et la couleur de fond bleu. Tapez maintenant: A T T R 2 , 3 , B (ENTER) Les caractères tapés sont mis en valeur d'une autre manière. La couleur de premier plan est noire, la couleur de fond rouge et les caractères clignotent tous. Pour souligner des caractres, tapez: A T T R 2 , 3 , U ŒNI:EfD Essayez d'autres couleurs de premier plan et de fond. Utilisez un code quelconque entre 1 et 8 pour les couleurs de premier plan et de fond. 49 7 / L 'ÉCRAN Dans le programme suivant, nous utilisons ATTR pour mettre en valeur le message prodLit avec le programme " U n écran magique": 10 15 20 25 30 W I D T H 40 C L S4 LOCATE 1 0 , 1 2 ATTR 2 , 3 , B PRINT "Un écran magi que"; Quand vous exécutez le programme, les mots "Un écran magique" sont mis en valeur. Le premier plan est noir, le fond rouge et les caractères clignotent tous. Codes des couleurs Vous avez peut-être remarqué que les codes donnent des couleurs différentes su ivant qu'on ATTR comme c01i l eur de premier plan ou ATTR comme couleur de fond. les 1itilise 8vec CLS, Par exemple, le code 3 donne: • Bleu avec CLS. • Chamois avec ATTR comme couleur de premier plan. • Rouge avec ATTR comme couleur de fond. Le chapitre suivant explique cette particularité. Appris au chapitre 7 COMMANDES WIDTH PRINT @ LOCATE ATTR CLS 50 TOUCHES 8 I LES COU L E U RS Votre ordinateur couleur peut produire 64 couleurs, mais jusqu'à présent, nous n'en avons utilisé que neuf. Dans ce chapitre, nous apprenons à utiliser les autres couleurs disponibles. Si vous avez un écran vidéo RGB (rouge/vert/bleu), n'oubliez pas de taper PALETTE RGB crnrEBJ chaque fois que vous mettez votre ordinateur en marche. Vos couleurs correspondront ainsi aux nôtres. Spécification des couleurs (Palette) Dans la mémoire de l'ordinateur couleur, une zone spéciale est réservée à la palette qui comprend 16 cases. Chaque case contient une couleur. Quand vous utilisez un code de couleur dans une commande BASIC, vous spécifiez une case de palette. Par exemple, tapez: C L S 3 (ENTER) L'écran est maintenant bleu parce que CLS3 spécifie la case 2; celle-ci contient le <:ode du bleu. Tapez encore: A TT R 3 , 3 (ENTERJ Tapez ensuite quelques caractères. Le premier plan est chamois et le fond rouge. En effet, ATIR 3,3 spécifie la case 1 1 pour le premier plan et la case 3 pour le fond. La case 1 1 contient le code de la couleur ch<imois. La case 3 contient le code du rouge. Vous pouvez remarqLer que les codes de couleur spécifient des cases différentes, suivant qu'on les utilise avec CLS. ATIR comme couleur de premier plan ou ATIR comme couleur de fond. Par exemple, le code 3 spécifie: • • La case • La case 1 1 avec ATIR comme couleur de premier plan. 2 avec CLS. La case 3 avec ATIR comme couleur de fond. Les tables suivantes montrent la case spécifiée par chaque code de couleur suivant qu'on l'utilise avec CLS, ATIR comme couleur de premier plan et ATIR comme couleur de fond. Elles m o nt rent aussi les couleurs cou rantes stockées dans chacune de ces cases. Table 8.1 CLS et la palette Code de couleur Case de palette 0 1 2 3 4 5 6 7 8 8 0 2 3 4 5 6 7 Couleur standard Noir Vert Jaune Bleu Rouge Chamois Turquo:se Lilas Orange 51 8 / LES COULEURS Table 8.2 Couleur de premier plan avec ATTR et palette Code de couleur Case de palette 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Table 8.3 Couleur standard Noir �rt Noir Chamois Noir Vert Noir Orange Couleur de fond avec ATTR et palette Code de couleur Case de palette 0 i 0 1 a.. = � 2� '1r E 6 i 5 6 � Couleur standard Vert Jaune Bleu Rouge Cha-nois Turquoise Lilas Orange Couleurs non standard (Commande PALETTE) La commande PALETIE permet de changer la couleur stockée dans une case de palette. La syntaxe de cette commande est: P A L E T T E case, code de couleur de palette (0 à 1 5). Stocke un code de couleur (0 à 63) dans une case Par exemple, tapez: C L S 3 (ENTER) L'écran est maintenant bleu. Vou� savez déjà que CLS3 spécifie la couleur stockée dans la case 2; celle-ci contient le code du bleu. Avec la commande PALETIE, stockez maintenant un code diffrent dans la case 2. Tapez: P A L E T T E 2 , 2 ŒNîIB) L'écran passe instantanément au vert. Essayez un autre code. Tapez: P A L E T T E 2 , 1 4 ŒNÏfID La couleur de l'écran change encore. Par rapport à un écran vidéo RGB (rouge/vert/bleu), certains codes donnent des couleurs différentes avec un écran CMP (signal complet). Essayez de stocker d'autres codes dans la case 2. Vous pouvez utiliser un code quelconque entre 0 et 63. 52 8 / LES COULEURS Chaque écran peut donner des couleurs différentes pour chaqu e'i"ôê'ê' de palette. Tapez l'exemple de programme 23 et exécutez-le. Ce programme montre les 64 couleurs sur l'écran. à raison de huit à la fois. Localisez la section "Codes de couleur" vers la fin de cet ouvrage Soixante-quatre lignes blanches sont libellées de 0 à 63. À côté du numéro approprié, écrivez un nom pour chacune des couleurs que vous voyez. Essayez maintenant l'exemple de programme 24. Un assortiment éclatant de couleurs, choisies au hasard parmi les 64 disponibles, apparaît. Dans la suite de ce chapitre, vous appren.drez à utiliser ces couleurs dans vos propres programmes. Couleurs non standard dans un programme (Exemple avec PALETTE) Voici le programme "Un cran magique" du chapitre précédent: 10 15 20 25 30 W I D TH 40 C L S4 LOCATE 1 0 , 1 2 ATTR 3 , 2 , B P R I N T "Un é c ran mag i que"; Supposons que vous voulez changer la palette pour que la commande ATIR 3,2, B donne un premier plan jaune soleil. Vous devez: 1. Déterminer la case de palette qui donne la couleur de premier plan (le "3'' de la commande ATIR 3,2,B). La table 8.2 indique que la case 1 1 donne cette couleur. 2. Chercher le code du jaune soleil dans "Codes de couleur" . 3. Stocker le code de l'étape 2 dans la case spécifiée de palette de l'étape 1 en ajoutant la ligne suivante à votre programrre: 2 P A L E T T E 1 1 , x x (XX correspond au code ce couleur) 4. Exécuter le programme. 8 / LES COULEURS Retour aux couleurs standard (Commandes PALETTE CMP et PALETTE RGB) Après avoir modifié la palette, vous pouvez désirer la remettre à son état standard. Dans ce but, utilisez les commandes PALETIE CMP et PALETTE RGB. Leurs synta x_es sont: P A L E T T E C M P Règle l'ordinateur pour afficher les couleurs standard sur un écran vidéo CMP (signal complet). P A L E T T E R G B Règle l'ordinateur pour afficher les couleurs standard RGB (rouge/vert/bleu). sur un écran vidéo Si vous avez un écran vidéo CMP, tapez: PALETTE CMP � Si vous avez un &r an RGB, vous avez déjà utilisé la commande PALETTE RGB. Tapez: P A L E T T E R G B ŒNliID Vous êtes maintenant revenu à la palette normale. Si vous tapez par exe:n ple l'écran est de nouveau bleu. Appris au chapitre 8 COMMANDE PALETTE 54 c L S 3 �. 9 I LE JEU DU HASARD Grâce aux nombres aléatoires du BASIC, l'ordi nateur peut jouer à la quasi-totalité des jeux de hasard. Choix d'un nombre au hasard {Fonction RND) Tapez le programme suivant: 10 PRINT RND ( 1 0) Exécutez-le. L'ordinateur a choisi un nombre au hasard entre 1 et 1 O. Exécutez ce programme quelques fois de plus. L'ordinateur se comporte comme s'il tirait un nombre de 1 à 10 d'un chapeau. Vous ne pouvez pas prévoir le nombre choisi. Tapez et exécutez le programme suivant. Pressez (BREAKl quand vous estimez que les nombres sont vraiment choisis au hasard. 10 20 PRINT RND (1 0) ; GOTO 1 0 Pour choisir des nombres au hasard entre 1 et 1 OO, changez la ligne 1 0 et exécutez le programme. 10 P R I N T RND (1 00) ; Au contraire des autres mots BASIC que vous avez utilisés, RND est une fonction. Autrement dit, RND donne une valeur qui, dans le cas présent, est un nombre. RND donnant un nombre, vous pouvez l'utiliser exactement comme un nombre. Voici des exemples d'utilisation de RND: P R I N T R N D ( 1 0 f1 S SOUND RND (255) , RND(255) C LS R N D < 8 ) FOR N=1 T O R N D ( S ) NEXT N • • • La syntaxe de RND est: R N o(n) Donne un nombre au hasard entre et 1 (si n est égal à 0). 0 1 et n (si n est supérieur à 1 ) ou entre Le reste de ce chapitre est consacré à la détente. Si vous voulez en a,op>er-.d'e Ga':arrage sur le BASIC, vous pouvez passer au chapitre suivant. 55 9 / LE JEU OU HASARD Un spectacle laissé au hasard (Exemple de RND) Faites composer par l'ordinateur u1 air constitué de tonalitsé au hasard. Tapez: 10 T = RNDC255) 20 SOUND T , 1 30 GOTO 1 0 Exécutez le programme. en avez assez. De la grande musique, n est ce-pas? Pressez :BREAK] q u an d vous ' - EXERCICE 9-1 Ajoutez des lignes pour que l'ordinateur présente une couleur au hasard (1 à 8) avant qu'il p rodui se chaque tonalité au hasard. Une partie de dés (Exemple avec RND) Dans ce jeu, l'ordinateur jette deux dés. Dans ce but, il doit donner deux nombres au hasard. Tapez: 20 CL S X = RN0(6) 30 Y = 40 R = X�0 60 PRINT 70 P R I N T "VOUS AVEZ OBTENU UN" R 10 80 90 RNDC6) Y PR INT X, I N P UT " V O U L E Z - V O U S J O U E R U N A U T R E C O U P ? " ; A$ A$ = "OU I " T H E N 1 0 SI Exécutez le programme. La ligne 1 0 efface l'écran. La ligne 20 chois;t un nombre au hasard entre 1 et 6, pour l'un des dés. La ligne 30 choist un nombre au hasard pour l'autre dé. La ligne 40 additionne les deux dés pour obtenir le total. Les lignes 50 à 70 impriment le résultat. La ligne 80 vous permet d'indiquer si vous voulez jouer encore. Si vous répondez "OUI" la ligne 90, le programme passe à la ligne 10 et recommence. Dans le cas contraire, le programme se termine. 56 9 / L E JEU OU HASARD EXERCICE 9-2 Vous savez jouer aux dés; vous pouvez donc écrire sans difficulté un programme de "Craps". Voici les régies du jeu, dans sa forme la plus simple: 1. Le joueur jette deux dés. Au premier jet, s'il obtient 2, 3 ou 1 2, le joueur perd et la partie est termine. 2. Si le premier jet donne 7 ou 1 1 , le joueur gagr.e et la partie est terminée. 3. S'il obtient un autre nombre a u premier jet, l e joueur marque un point. Le joueur doit continuer à jeter les dés jusqu'à ce q u ' i l "narque le po i nt en obtenant de nouveau le même nombre pour gagner ou Jn 7 qui le fait perdre. " Vous en savez déjà suffisamment pour écrire ce programme. Passez donc à l'action. Arrangez-vous pour présenter le programme sous un format élégant sur l'écran et tenir le joueur informé sur le déroulement de l'action. Ce programme peut vous demander du temps, mais faites de votre mieux. Bonne chance! Appris au chapitre 9 FONCTION AND 57 1 0 I RETOU R À L ' ÉCOLE Dans ce chapitre, vous apprenez à lire à l'ordinateur à l'aide de trois nouvelles commandes: READ, DATA et RESTORE. Vous apprenez aussi une fonction nouvelle: INT. Lecture des données {Commandes DATA et READ) Tapez le programme suivant et exécutez-le: 1 0 DATA POMM E S , ORA N G E S , P O I R E S 20 F O R X = 1 T0 3 30 READ F$ 40 NEXT X Rien ne se passe1 Pour voir ce que fait l'ordinateur, ajoutez la ligne suivante et exécutez le programme: 35 PRINT "F$ = :" F$ La ligne 30 indique à l ' ordinateur de: 1. Chercher une ligne DATA. 2. Lire (READ) le premier article de 3. Donner à POMMES 4. Passer à l'article suivant. une la liste: POMMES. étiquette F$. 1 0 / RETOUR À L 'ÉCOLE Quand l'ordinateur arrive la deuxième fois à l'article 30, on lui demande de: 1. Chercher une ligne DATA . 2. Lire (READ) l e premier article q u i . c e l te fois-c;i, est ORANGES. 3. Donner ORANGES l'étiquette F$. 4. Passer l'article suivant. Vous pouvez insérer des lignes DATA partout dans le programme. Exécuter chacun des programmes suivants; ils suivent tous les mêmes principes. 1 0 DATA P O M M E S 1 0 DATA POMME S , ORAN G E S 20 DATA O R A N G E S 20 DATA P O I R E S 30 FOR X = 1 TO 3 30 F O R X = 1 T0 3 40 READ F$ 40 READ F $ 50 PRINT "F$ = : " F$ PRINT "F$ = : " F$ N EXT X 50 60 N EXT X 30 FOR X = 1 TO 3 30 FOR X = 40 READ F$ 40 READ F $ 60 70 DATA P O I R E S 1 TO 3 50 P R I NT " F $ = : " F $ PRINT "F$ = : " F$ N EXT X 50 60 60 N EXT X 70 DATA POMMES 70 DATA POMM E S , ORAN G E S , 80 DATA O R A N G E S 90 DATA P O I R ES La syntaxe de DATA DATA POIRES est: éléments de données La syntaxe de READ R E A D variable la variable. l nsére des éléments de données dans un programme. est: Lit l'élément suivant de données dans le programme et le stocke dans � Lecture des mmes donnes plusieurs reprises (Com mande RESTORE) Jetez un coup d'oeil au programme DATA original: 1 0 D A T A P OM M E S , O R A N G E S , P O I R E S 20 FOR X = 1 TO 3 30 READ F o/ 40 NEXT X ' Comment pouvez-vous amener l'ordinateu N ire la même liste plusieurs fois de suite? Tapez: 60 GOTO 1 0 Exécutez le programme. L'ordinateur affiche ?OO ERROR I N 30 (Erreur de;firi de donnée à la ligne 30). Quand il lit les éléments de données pour la première fois, l'ordinateur les biffe. Quand on lui demande ensuite de revenir à la ligne 30 et de lire les articles de données biffées. l'ordinateur indique ? O D E R R O R . Tapez cette ligne et exécutez l e programme: 50 60 RESTORE 1 0 / RETOUR À L 'ÉCOL E L'ordinateur paraît maintenant ne jamais avoir biffé les éléments de données. données à maintes reprises. li lit les mêmes La syntaxe de RESTORE est: R E sTORE Ram� e le pointeur de donn é�de l 'ordinateur au premieréffient de donn éS:- Pour développer votre vocabulaire (Fonction INT) Dans cet ex emple de programme, n ous utilisons DATA, READ et RESTORE pour que l'ordinateur vous questionne sur des définitions de mots. Nous avons utilisé les mots et définitions suivants: 10 20 30 40 50 DATA DATA DATA DATA DATA T A C I T U R N E , G E N E RALEMENT PEU CAUSEUR L O QU A C E , T R E S B A V A R D C R I A R D , B R U Y A N T ET V E H E M E N T B R E F , CON C I S E X U B E RAN T , DEMONS T R AT I F OU COMMU N I C AT I F Pour écrire un programme q u i conduise l'ordinateur à vous questionner sur ces mots et définitions, il faut choisir les mots au hasard. Tapez: 60 70 80 90 1 00 N = RND(10) FOR X = 1 t o N READ A$ N E XT X P R I N T " L E MOT A U H A S A R D E S T : " A$ Exécutez r:P. programme à plusieurs reprises. À ce stade, les résultats ne sont pas fameux. L'ordinateur s'arrête aussi souvent à une définition qu'à .Jn mot. I l faut que l'ordinateur choisisse un mot au hasard parmi les éléments 1 , 3, 5, 7 ou 9, plutôt que parmi la totalité des éléments. Autrement dit, le nombre au hasard N doit toujours être impair. Le BASIC n a pas de fonction qui convertisse les nombres pairs en nombres impai rs, mais sa fonction INT peut servir à faire cette conversion. ' INT convertit un n omb re à sa "partie entière" el annule la partie décimale. Par exemple. 1 T (3.9) est égal à 3. La syntaxe de INT est: I N T(n) Retourne la "partie entière" de n. n peut correspondre à �ou: îO.�;:,•e 6 1 0 / RETOUR À L 'ÉCOLE Vous pouvez utiliser N pour convertir des nombres pairs en nombres inpairs en tapant la ligne suivante: I F I NTCN/2) = N/2 THEN N = N - 1 65 La ligne 65 remplit le rôle suivant: • Si N est égal à un nombre pair, la ligne 65 soustrait 1 de N pour fai�e de celui-ci un nombre impair. Par exemple, si N est égal à 1 O, la ligne 65 fait le calcul suivant: INT(1 ô/2) 1 0/2 I NT(5) 5 5 5 = = = Le résultat étant vrai (5 • Si N est égal à un = 5), la ligne 65 soustrait 1 de N pour le rendre égal à 9. nombre impair, la ligne 65 ne le change pas. Par exemple, si N est égal à 9, la ligne 65 fait le calcul suivant: INT(9/2) INT(4.5) 4 4.5 = = 9/2 4.5 = Le résu ltat étant faux (4 n'est pas égal à 4.5), la ligne 65 ne change pas N. Ajoutez maintenant les lignes suivantes pour que l 'ordinateur lise chaque définition de mo:. 110 1 20 READ B$ P R I NT "LA D E F I N I T ION E S T : " B$ Ajoutez les lignes suivantes pour que l'ordinateur lise à plusieurs reprises dans l a même liste: 130 1 40 R ESTORE GOTO 6 0 Listez le programme; i l doit avoir l'aspect suivant: 10 20 30 40 S0 60 65 70 80 90 100 110 1 20 130 1 40 62 D A T A T A C I T U R N E , G E N E R A L EM E N T P E U C A U S E U R D A T A LOQU A C E , T R E S B A V A R D D A T A C R I A R D , B R U Y A N T ET V E H E M E N T D A T A B R E F , C ON C I S D A T A E X U B E R A N T , D E M 0 N S T R A T I F 0 U C 0 MM U N I C A T I F $; N = R N D C 1 0) I F INTCN/2) = N/2 THEN N = N - 1 FOR X = 1 T O N READ A$ NEXT X P R I NT " L E M O T C H O I S I E S T : " A $ R E A D B$ P R I NT " S A D E F I N I T ION E S T : " B $ R ESTORE GOTO 6 0 1 0 / RETOUR À L 'ÉCOLE EXERCICE 1 0-3 Pour compléter ce programme, ajoutez des lignes pour que l'ordinateur: 1. Imprime la définition seulement. 2. Vous demande le mot. 3. Compare le mot 4. Vous indique si votre réponse est juste. Si votre réponse est fausse, il imprime le mot juste. au mot choisi correct. Appris au chapitre 1 0 COMMANDES FONCTIONS DATA READ RESTO RE INT 63 11 I L'ARITHMÉTIQUE PLUS FACILE Votre ordinateur s'accommode avec aisance de la résolution rapide et précise de longs problèmes de maths. Avant de vous mettre à taper de longues formules difficiles, ce chapitre vous montre certai nes opérations qui facilitent les choses. Sous-programmes (Commandes GOSUB et RETURN) Les commandes GOSUB et RETURN permettent d'établir un sous-programme pour faciliter l ' utilisation des formules mathématiques complexes. GOSUB et RETURN s'utilisent toujours ensemble. Leu rs syntaxes sont: G o s u s numéro de ligne Va au sous-programme comm e-ççant au numéro de ligne. s R ETu R N Revient du sous-programme commande GOSUB correspondante. à la commande qui suit immédiatement la Tapez et exécutez le programme suivant: 10 20 30 40 500 510 P R I N T " E X E C U T I O N DU P R O G R A M M E P R I N C I P A L " GOSUB 5 00 P R I N T " R E T O U R A U P R O G R A M M E P R I N C I P A L" END P R I N T " E X E C U T I ON D U S O U S - P R O G R A M M E " RETURN ' GOSUB 500 indique l'ordinateur de passer au sous-programme qu cor...., e-x:i ;:: .ç-e � RETURN indique l'ordinateur de revenir au BASIC qui suit 1mmo·a:e....,er: GQS..,3 65 1 1 I L 'ARITHMÉTIQUE PLUS FACILE Libell& des sous-programmes (Commande REM) Le sous-programme suivant multiplie un nombre quelconque par 1 OO: I N PUT " T A P E Z U N NOMB R E " ; N 10 GOSUB 2000 20 30 P R I N T N " F O I S 1 00 EST" R GOT0 1 0 40 R E M FORMULE D E M U LT I P L I C A T I O N D ' U N NOMBRE PAR 1 0 0 2000 R = N * 1 00 201 0 RETURN 2020 La commande REM permet d'insérer une remarque cans u n programme, comme à la ligne 2000 ci-dessus. Sa syntaxe est: R E M commentaire 1 nsère un commentaire dans une commentaire n'a aucun effet sur le programme. ligne ce programme; ce Vous pouvez insérer des lignes REM en tout point d'un programme; elles n'ont aucune influence sur le déroulement du programme. Pour vous en rendre compte, ajoutez ces lignes et exécutez le programme: 5 R E M V O I C I UN P R O G R A M M E P A R T I C U L I E R 17 REM CETTE L I G N E CHANGE-T - E L L E LE PROGRAMME? R E M LA L I G N E S U I V A N T E S E P A R E LE SOUS-PROGRAMME 45 Utilisation de plusieurs sous-programmes (Commande ON GOSUB) La commande ON GOSUB permet d'insérer facilement plus d'un sous-programme dans un programme. Sa syntaxe est: O N n GOSUB numéros de lig ne Passe au sous-programme comm�nt au ne numéro 3 de ligne. Pour vous faire une idée de ON GOSUB, tapez ce programme: 10 20 30 I N P U T " T A P E Z 1 , 2 ou 3 " ; N ON N GOSU B 1 00 , 200, 300 GOTO 1 0 1 00 110 P R I NT "VOUS AVEZ TAPE 1 " RETURN 200 21 0 P R I N T "VOUS AVEZ TAPE 2 " RETURN 300 310 P R I NT "VOUS A V E Z T A P E 3 " RETURN Exécutez le programme. 66 1 1 / L 'A RITHMÉ TIQUE PLUS FACILE La ligne 20 fait le méme travail que ces trois commandes: I F N = 1 THEN GOSUB 1 00 I F N = 2 TH EN G O S U B 200 I F N = 3 T H E N G O S U B 300 18 20 22 ON GOSUB recherche le numéro de 1 gne qui suit ON, N dans le cas présent. Si N est éga à 1 , l' ordinateur passe au sous-programmé qui commence au premier numéro de ligne qui suit GOSUB. • • Si N est égal à 2, l 'ordinateur passe au sous-programme qui commence au deuxième numéro de ligne. • Si N est égal à 3, l'ordinateur passe au sous-programme qui commence au troisième numéro de ligne. Et si N vaut 4? Comme il n'y a pas de quatrième numéro de ligne à la ligne 20, l'ordinateur passe simplement à la ligne suivante du programme. Voici un s 10 20 30 40 50 60 70 programme avec ON GOSUB: F O R P = 1 TO 6 0 0 : N E X T P C L S : X::.R N D ( 1 0 0 ) : Y = RN D ( 1 0 0 ) PRINT " ( 1 ) ADDITI ON" P R I NT " (2 ) S O U S T R A C T I O N " P R I NT " (3 ) MUL T I P L I C ATION" P R I N T " (4 ) D I V I S ION" I N P U T "QUEL E X E R C I C E C 1 -4 ) " ; R C LS 80 90 ON R GOSUB 1 0 0 0 , 2000, 3000 , 4000 GOTO S 1 0 00 1010 1 0 20 P R I N T " Q U E V A U T " X ' !f! Y I N PUT A I F A = X-tV T H E N P R I N T " J U S T E " E L S E P R I N T " F A U X 2000 201 0 2020 2030 P R I N T "QUE VAUT " X "-" Y I N PUT A I F A = X - Y T H E N P R I NT " J U ST E " E L S E P R I N T " F AU X " RETURN 3000 301 0 3020 3030 P R I N T "QUE VAUT" X "*" Y I N PU T A I F A = X * Y T H E N P R I NT " J U S T E " E L S E P R I N T " F A U X " RETURN 4000 401 0 4020 4030 P R I N T " Q U E VAUT" X " / " Y I N PUT A I F A = X / Y T H E N P R I NT " J U S T E " E L S E P R I N T " F AU X " RETURN ") 03 0 RETURN 67 1 1 / L 'ARITHMÉ TIQUE PL US FACILE Un peu d'aide pour l'ordinateur (Parenthèses) À mesure que les formules mathématiques se compliquent, votre ordinateur a besoin d'aide pour arr ive r à les comprendre. Par exemple, vous désirez que l'ordinateur trouve la solution de ce problème: · Divisez la somme de 1 3 ' + 3 par 8 L'ordinateur peut arriver11ia réponse 13 + 3!8 16/8 = = de cette façon: 2 À la place, l'ordinateur vous donne une autre réponse. Tapez cette ligne de commande et observez les résultats. P R I N T 1 3 + 3 / 8 (ENTER; L'ordinateur résout les problèmes en appliquant les règles suivantes: RÈGLES D'ARITHMÈTIQUE L'ordinateur résout les problèmes d'arithmétique dans l'ordre suivant: 1. Il 2. Il calcule ensuite les multiplications et les divisions. 3. Enfin, il calcule les additions et les soustractions. 4. S' il résout d'abord les opérations exponentielles. y a plusieurs opérations de même niveau, (plusieus opérations exponentielles, multiplications et divisions ou additions et soustractions), il les calcule en allant de la gaL:che vers la dr oite. Dans le problème ci-dessus, l 'ordinateur applique ses règles de la façon suivante: fait d'abord la divisio n (3/8 • Il • Il calcule ensuite l'addition (13 = .375). + .375 = 1 3.375). Pour que l'ordinateur résolve différemment l e problème, vous devez insérer des par enth èses. Tapez cette ligne: PRINT (13 + 3 ) / 8 � Quand l'ordinateur arrive à une opération entre parenthèses, il la résout avant les autres. EXERCICE DE MATHS POUR L'ORDINATEUR Quels résultats l'ordinateur vous donnera-t-il avec chacun des problèmes suivants? PRINT 1 0 - (5 PRINT 1 0 - 5 - 5 PRINT (1 0 - 5) PRINT 1 0 68 - (5 1) / 2 ------- 1 / 2 ------- - 0 PRINT (1 - - - 1) / 2 ------ 1 / 2 ------ - 1 / 2 ) ------ 1 1 / L 'ARITHMÉ TIQUE PLUS FACILE Avez-vous terminé? Tapez chacune des lignes de commande pour vérifier vos réponses. Vous voulez maintenant que l'ordinateur s'attaque à ce problème: Divisez 10 moins la différence de 5 - 1 par 2 Vous demandez en fait à l'ordinateur de calculer: (1 0 - (5 - 1 )) / 2 Quand l'ordinateur "voit" un problème avec plusieurs jeux de parenthèses, il commence par les parenthèses intérieures et progresse vers les parenthèses extérieures. Il procède ainsi: 5 - 1 = 4 10 - 4 = 6 612 = 3 RÉGLES SUR LES PARENTH ÉSES • L'ordinateur calcule d'abord les opérations entre parenthèses; il passe ensuite aux autres. • L' ordinateur calcule d'abord les parenthèses intérieures et progresse vers les parenthèses extérieures. EXERCICE DE MATHS POUR L'ORDINATEUR Insérez des parenthèses dans le problème ci-dessous pour que l'ordinateur donne 28 comme réponse: PRINT 30 - 9 - 8 - 7 - 6 Réponse: P R I N T 30 - (9 - 8) - (7 - 6) Reprsentation des grands nombres {Notation E) Tapez le programme suivant et exécutez-le pour vous faire une idée de la représentation des nonbres importants par l'ordinateur: 10 20 30 40 X = 1 PRINT X; X = X * 10 GOTO 20 L'ordinateur représente les nombres très grands et très petits en notation exponentielle (E). Par exemple, l'ordinateur représente un milliard (1 ,000,000,000) sous la forme 1 E + 09 qui correspond au nombre 1 suivi de 9 zéros. Si l'::>rdinateur présente un nombre sous a forme 5E-06, vous devez dép!acer e oo-:: aéc.Ta' qui suit le 5 de six positions vers la gauche et insérer les zéros nécessares Ce -.o�o·e correspond à 5 * 1 0-6. soit 5 millionièmes (.000005). 69 1 1 / L 'ARITHMÉ TIQUE PLUS FACILE Quand vous exécutez le programme ci-dessus, l'ordinateur donne une erreur de dépassement de capacité (?OV ERROR) à la fin du programme. L'ordinateur n'accepte pas les nombres supérieurs à 1 E + 38 ou inférieurs à -1 E + 38. La notation exponentielle n'est pas difficile; il suffit de vous y habituer. Elle permet de se faire une idée des nom bres très grands ou très petits sans perdre le point décimal de vue. Appris au chapitre 1 1 COMMANDES GOSUB RETURN REM O N C9 0 S V B 70 SYMBOLES CONCEPTS Ordre des opérations Notation E 1 2 / L 'ORDI NATEU R ET LES MOTS Le BASIC possède plusieurs fonctions pour l'utilisation avec les chanîes. Celles-ci sont des constantes et des variables spéciales qui stockent des carac:ères. Avec les fonctions en chaîne, vous pouvez programmer l'ordinateur pour qu'il comprenne ouj et non ou pour qu'il vous donne des ph rases complètes. Comptage des mots (Fonction LEN) Tapez et exécutez ce programme: 20 P R I NT "TAPEZ U N E P H RASE" I N PUT S $ 30 P R I NT "VOTRE P H R A S E A " LEN C S $ ) " CARACT E R E S " 40 I N P U T " V O U L E Z - V O U S EN E S S A Y E R U N E A U T R E "; A $ 50 I F A$ = "0U I " THEN 1 0 10 Assez impressionné, n'est-ce pas? Ce programme utilise la fonction LEN. La syntaxe de cette fonction est: L E N (chaine) Donne la lono11eur de la chaîne. Dans ce programme, LEN (S$) calcule la longueur de la chaîne S$ qui est votre phrase. L'ordinateur compte chaque caractère de la phrase, y conpris les espaces et les signes de ponctuation. Combinaison des mots (Opérateur de concaténation ( + )) Effacez le programme et exécutez le suivant qui compose un genre de poème: 10 20 A$ = " U N E R O S E " 6$ = " 30 40 C$ = " C ' E ST UNE R O S E " D$ = B $ + C $ 50 E$ = "ET A I N S I DE SUI TE" " 60 F $ = A $ + 0 $ -f 0 $ + B $ + E $ 70 PRIN T F$ 71 12 I L 'ORO/NA TEUR ET LES MOTS Deux problèmes peuvent se présenter dans la combinaison des chaînes. Ajoutez la ligne suivante et exécutez le programme qui fait apparaît re les deux problèmes: 80 G $ = F$ + F$ + F$ + F$ + F $ + F $ + F$ Quand l'ordi nateJr arrive à l a ligne 80, il présente le premier problème e n imprimant cette ligne: ?OS ERROR IN 80 (espace hors de la chaîne). À la mise en marche, l'ordinateur ne réserve que 200 caractères d'espace pour le travail avec les chaînes. La ligne 80 lui demande de travailler avec 343 caractères. Pour réserver assez de place pour ce nombre de caractères au moins Gusqu'à 500), vous pouvez utiliser la commande CLEAR dont la syntaxe est: C LE AR n R�q;i/\!e; . Bra<::e n caracteres d' espace , = ,.., � C h aine Ajoutez la ligne suivante au début du programme et exécutez celui-ci: 5 C L EAR 5 0 0 Quand l'ordinateur arrive maintenant à la l ig ne 80, i l a assez d'espace de chaîne. I l présen:e cependant le deuxième problème avec cette ligne: ?LS ERROR IN 80 (chaîne trop longue). Une chaîne ne peut pas contenir plus de 249 caractères. Pour stocker plus de 249 caractères, il faut les diviser en groupes plus petits et stocker chacun de ceux-ci dans sa propre ch �e. Déformation des mots (Fonctions LEFT$ et RIGHT$) Vous savez maintenant combiner les chaînes. Essayons d'en décomposer une à l'aide de deux fonctions nouvelles: LEFT$ et RIGHT$. Les syntaxes de ces fonctions sont: L E F T $ (chaîne, n) Retourne les n premiers caractères de la chaîne. R I G H T $ (chaîne n) Retourne les n derniers caractères de la chaîne. Tapez et exécutez ce programme: 10 20 30 40 I N PUT PRINT PRINT GOT0 1 " T A P E Z U N M OT " ; W$ " L A P R E M I E R E L E T T R E EST : " LE FT$ ( W$ , 1 ) " L E S 2 D E R N I E R E S L E T T R E S S O N T : " R I G H T$ ( W $ , 2 ) 0 Le programme se déroule ainsi: À la ligne 1 O, vous avez entré la chaîne W$. Supposons que cette chaîne est le mot MACHINE: M É MOIRE DE L'ORDINATEUR W$ = MACH I N E Aux lignes 20 et 30, l 'ordinateur calcule l a première lettre de gauche et les deux dernières lettres de droite de la chaîne: LEFT$ (W$ , 1 ) M A C H 1 N E RI GHT$ (W$ , 2 ) Exécutez le programme à plusieurs reprises pour comprendre son déroulement. 72 12 / L 'ORO/NA TEUR ET LES MOTS AjoJtez maintenant cette ligne au programme. 5 CL EAR 500 L'ordinateur met assez de place de côté pour le travail avec les chaînes. Exécutez de nouveau le programme. Cette fois-ci, entrez une phrase à la place d'un mot. EXERCICE DE PROGRAMMATION Comment pouvez-vous changer les lignes 20 et 30 pour que l'ordinateur donne les cinq premières lettres et les six de-nières lettres de votre chaîne? 2 0 ������� 3 0 �� ��� Réponse: 20 P R I N T " L ES C I N Q P R E M I ERES LETTRES SONT : " LEFT$ ( W $ , 5) 30 P R I N T " L E S S I X D E R N I E R E S L E T T R E S S O N T : " R I G H T$ ( W $ , 6 ) Isolation de mots (Fonction MID$) La fonction MID$ pernet d'isoler certains mots. Sa syntaxe est: M r D $ (chaîne n11 n2) Retou rne une sous-chaîne de la chaîne , caractère de la chaîne et continue pendant n2 caractères. qui commence au n.! e, Effacez votre programme et tapez le suivant: 10 20 30 40 50 60 70 80 90 1 00 C LEAR INPUT PRINT IN PUT PRINT PRINT I N P UT PRINT PRINT GOTO 500 " T A P E Z UNE P H R A S E " ; S $ "TAPEZ UN NOMBRE DE 1 A " LEN (S$) X #ô ltV " L A C H A I N E I N T E R M E D I A I R E C O M M E N C E P A R tt C A R A C T E R E " X " T A P E Z U N N O M B R E D E 1 A " L E N ( S $ ) - X+1 Y " LA C H A I N E I N T E R M E D I A I R f�� .. Y " C A R A C T E R E S D E L O N G " " L A C H A I N E I N T E R M E D I A I R E 4J. : " M I D $ ( S $ , X , Y ) &.:::r20 Exécutez plusieurs fois ce programme pour essayer de déduire le déroulement de MID$. Le programme fonctionne ainsi: • À la ligne 20, supposons que vous avez entré VOICI UNE CHAINE: MÉMOIRE DE L'ORDINATEUR S$ • - VOICI UNE CHAINE À la ligne 30, l'ordinateur calcule la longueur de S$ qui est de 1 6 carac'.ères. Il vous demande ensuite de choisir un nombre entre 1 et 1 6. Supposons que vous c�0tsssez 6. 73 12 I L 'ORO/NA TEUR ET LES MOTS • À la ligne 60, l'ordinateur vous demande de choisir un autre nombre de 1 à 1 1 (16-6 + 1 ) . Supposons que vous choisissez 4. M É MOIRE DE L'ORDINATEUR X = 6 y 4 = • À la ligne 90, l'ordinateur vous donne une "chaîne intermédiaire" de S$ qui commence au sixième caractère et qui a quatre caractères de long: 1 H 2 3 4 s E R E 6 7 1 S 8 9 10 11 A S 12 T 13 R 14 1 5 N 1 16 G -4M I 0$ ( S $ , 6 , 4 ) Pour u n autre exemple de MID$, exécutez le programme suivant: 10 20 30 40 50 60 70 80 90 I N P UT " T A P E Z U N E P H R A S E " ; S $ I N P U T " T A P E Z U N MOT D E L A P H R A S E " ; W $ L = LEN C W$ ) F O R X = 1 TO L E N C S $ ) I F M I D $ ( S $ , X , U = W$ T H E N 90 NEXT X P R I N T "VOTRE MOT N ' E S T P A S D A N S LA P H R A S E " END P R I N T W $ " - - C OM M E N C E AU C A R A C T E R E N O " X Le programme se déroule a·1nsi:$ • À • À la ligne 30, l'ordinateur calcule la longueur de W$ qui est de trois caractères. la ligne 20, supposons que vous avez entré le mot UNE pour W$. M É MOIRE D E L'ORDINATEUR . S$ = VOICI L) NE CHAINE W$ L = 3 = UNE • Aux lignes 40 à 90 (boucle FOR/N EXT), l'ordinateur compte chaque caractère de S$ en commenant au caractère 1 et en terminant au caractère LEN (S$) qui est 16. • Chaque fois que l'ordinateur compte un nouveau caractère, il voit une nouvelle chane intermédiaire. Chacune d'elles commence au caractère X et a L (3) caractères de long. Par exemple, si X est égal à 1 , l'ordinateur voit cette chaîne intermédiaire: 1 I H E R E -2 MI0$(S1 ,1 ,2) 74 S A S T R I N G 12 / L 'ORO/NA TEUR ET LES MOTS Au quatrième passage dans la boucle, quand X est égal à 4, l'ordinateur voit cette chaîne intermédiaire: H 4 E R E 1 +- 2 - s A S T R 1 N G M I D$ ( S$ , 4 , 2) Quand X est égal à "t. l'ordinateur trouve fi nalement recherchée. EXERCICE Commencez par 10 un UNE qui est la chaîne intermédiaire 12-1 programme d'une ligne: A $ ::: " C H A N G E Z U N E P H R A S E . " Ajoutez une ligne qui insère ce qui suit au début de A$: I L EST FAC I LE DE Ajoutez une autre ligne qui imprime l a nouvelle phrase: I L EST FAC I LE DE CHANGER UNE PHRASE Voici notre programrTe: 10 20 30 40 A $ ::: " C H A N G E R U N E P H R A S E . " 0 $ ::: " I L E S T F A C I L E D E " C $ "'i' B $ + " " + A$ PRINT C$ 75 12 / L 'ORO/NA TEUR ET LES MOTS EXERCICE 1 2-2 Ajoutez des lignes au programme ci-dessus pour: 1. T rouve r le début de cette chaîne i nterm éd iai re: UNE PHRASE 2. Annuler la chaîne intermédiaire ci-dessus et former la nouvelle chaîne suivante: IL EST FACILE DE CHANGER 3. Ajoute r les mots ci-dessous à la fin de la nouvelle chaîne: CE QUE VOUS VOULEZ 4. Imprimer la nouvelle chaîne: IL EST FACILE DE CHANGER CE QUE VOUS VOULEZ CONSEIL: Pour former la chaîne IL EST FACILE DE CHANGER, vous devez avoir la partie de gauche de la chaîne IL EST FACILE DE CHANGER U N E PHRASE. Réponse: A$ = " C H A N G E Z U N E P H R A S E - " 10 B $ = 11 I L E S T F A C I L E D E 11 20 30 C $ = B$ + " " + A$ 40 PRINT C$ Y = LEN ("UNE PHRASE") 50 6 0 Fo� X = 1 T O L E N ( C $ ) I F M I D $ ( C $ , X , Y ) = " U N E P H R A S E " T H E N 90 70 N EXT X 80 85 END 90 0$ = LEFT$ ( C $ , X 1 ) E $ = D$.j.!' C E Q U E V O U S VO U L E Z " 1 00 P R I NT E$ 110 - EXERCICE AVANCE Écrivez u n programme qui: • vous demande d'entrer u1e phrase: • vous demande d ' entrer (1) une expression dans la phrase à annuler et (2) une expressi on pour la remplacer: • imprime la phrase� chang ée.- Cela peut vous prendre du temps, mais vous avez tous les éléments en main pour écrire le programme. Notre réponse se trouve à la fin de ce livre. Appris au chapitre 1 2 76 FONCTIONS SYMBOLES LEN LEFT$ RIGHT$ M I D$ CLEAR + 13 I SAUVEGARDE DES PROGRAMMES A ce stade, vous savez que votre programme disparaît chaque fois que vous arrêtez l'ordinateur. Pour faire une copie permanente d'un programme, il vous faut un magnétocassette ou une unité de disque. Si vous comptez utiliser un magnétocassette, lisez le présent chapitre qui vous apprend à utiliser CLOAO, CSAVE et SKIPF pour sauvegarder vos programmes BASIC sur cassette. Si vous projetez d' utiliser l'unité de disque, sautez ce chapitre et prenez connaissance du manuel intitulé "Systme à disque d'ordinateur couleur" qui accompagne l'unité. Ce manuel explique l'uti lisation des mots BASIC pour sauvegarder vos programmes sur disque. Sauvegarde des programmes BASIC sur cassette (Commande CSAVE) La commande CSAVE sert à sauvegarder vos programmes BASIC sur cassette. Sa syntaxe est: c s A v E " nom de fichier" cassette. Sauvegarde un programme BASIC intitulé nom de fichier sur Appliquez les instructions suivantes: 1. Reliez le magnétocassette à votre ordinateur couleur. Les instructions de branchement sont expliquées dans le manuel d'introduction qui accompagne l'ordinateur couleur. 2. Tapez un programme BASIC dans la mémoire de l'ordinateur. 3. Mettez une cassette vierge en place dans le magnétocassette. 4. Pressez les toucres de lecture (PLAY) et d'enregistrement (RECORD) du magnétocassette pour les verrouiller. 5. Donnez un nom au programme BASIC. c'est le nom de fichier. Vous pouvez utiliser un nom de fichier de 8 lettres au maximum. Par exemple: NOM 6. JEUX LETIRES Sauvegardez ce programme sur cassette à l'aide de CSAVE. Par exemple. pour sauvegarder le programme LETIRES, tapez: C S A V E " L E T T R E S " CENîfID Dès que vous pressez Œf:illlD , le moteur du magnétocassette se met en marche. Quand le moteur s'arrête, le BASIC affiche le message OK sur l'écran. Le programme est encore dans la mémoire de l'ordinateur, mais il est aussi sauvegardé sur la cassette. Il est bon de faire plusieurs copies d'un programme. de préférence sur des cassettes séparées. en cas de perte ou d'effacement accidentel. 77 13 / SAUVEGARDE DES PROGRAMMES Chargement d'un programme BASIC à partir d'une cassette (Commande CLOAD) La commande CLOAD sert à charger un programme BASIC à partir d'une cassetie. Sa syntaxe est: c L o A D "nom de fichier" d'une cassette. Charge u n programme BASIC intitulé nom de fichier à partir Appliquez les instructions suivantes: 1. Assurez-vous que la cassette est complètement rebobinée et que tous les branchements ont été faits. 2. Pressez la touche de lecture (PLAY) du magnétocassette pour la verrouiller. 3. Effacez les programmes exista1ts en tapant: N E W (ENTER) 4. Chargez le programme de la cassette à l'aide de la commande CLOAD. Par exemple, pour charçier le programme LETIRES à partir de la cassette, tapez: C L O A D " L E T T R E S " @TER; Dès que vous pressez :ENTERl, le moteur du magnétocassette se met en marche. Le BASIC commence la recherche du programme. Pendant la recherche, le BASIC affiche la lettre S dans le coin supérieur gauche de l'écran. Quand le BASIC trouve le programme, il affiche la lettre F et le nom de fichier en haut de l'écran: il commence à charger le programme. Quand le chargement du programme est terminé, le BASIC affiche le message OK. Si la cassette ne contient qu'un seul programme, vous pouvez taper CLOAD sans nom de fichier. L'ordinateur charge le prerrier programme qu'il rencontre. S1 vous essayez de charger un programme à partir d'une cassette vierge, l 'ordinateur couleur cherche jusqu'à la fin de la bande, sans indiquer qu 'elle ne contient rien. Pressez RESET (remise à l'état initial) pour arrêter le chargement. Sauvegarde de plusieurs programmes sur cassette (Commande SKIPF) Utilisez la commande SKIPF pour sauvegarder plus d'un programme sur la même cassette. SKIPF permet de positionner la bande à la fin du dernier programme de manière à ne pas sauvegarder le programme suivant par-dessus le précédent. La syntaxe de cette commande est: s K I P F nom de fichier Explore� l a bande jusqu'� a fin du nom de fichier. 78 13 / SA UVEGARDE DES PROGRAMMES Appliquez les instructions suivantes: 1. Rebobinez la cassette à son début. 2. Pressez la touche de lecture (PLAY) pour la verrouiller. 3. Entrez la commande SKIPF pour trouver la fin du dernier programme sauvegardé sur la cassette. Par exemple, si le dernier progranme sauvegardé était "LETTRES", tapez: SKI PF " L E T T R E S " (ENTERl L'ordi nateur vous avertit quand il trouve le programme LETTRES. À la fin du programme LETTRES, le moteur du magnétocassette s'arrête et lé'cran donne le message OK. 4. Pressez les touches d'enregistrement (RECORD) et de lecture (P LAY) et sauvegardez le programme suivant à l'aide de CSAVE. Si vous ne vous rappelez pas du nom du dernier programme, utilisez un nom de fichier tel que: S K 1 P F " X " (ENTERJ Observez ensuite l'écran. L'ordinateur affiche le nom de chaque programme trouvé sur la cassette. Il imprime 1/0 ERROR (erreur d'entrée/sortie) quand il arrive à la fin de la bande, mais il n'y a pas lieu de s'en inquiéter. Vous avez trouvé ce que vous cherchiez, c'est-à-dire le nom du dernier programme. Quelques conseils Les conseils suivants vous aideront à ré8lisP.r de bons enregistrements: • Quand vous n'utilisez pas l'ordinateur pour sauvegarder (SAVE) ou charger (LOAD) des programmes, ne laissez pas les touches d'enregistrement (RECORD) et de lecture (PLAY) du magnétocassette à la position enfoncée. Pressez la touche d'arrêt (STOP). • Vous éviterez de nombreux problèmes en utilisant des cassettes neuves de qualité supérieure pour ordinateur, comme le n° 26-301 du catalogue Radio Shack. • Si vous voulez réutiliser une cassette enregistrée, effacez-la d'abord complètement à l'aide du dispositif d'effacement, n° 44-21 0 du catalogue Radio Shack. Le processus d'enregistrement efface normalement la bande, mais il peut subsister suffisamment de données pour rendre le nouvel enregistrement i nutilisable. • Si vous désirez sauvegarder définitivement un programme enregistré, brisez la languette de protection contre l'erracernent de la cassette. À cet effet, consultez le manuel du magnétocassette. Sans cette languette, vous ne pouvez pas presser la touche d'enregistrement du magnétocassette. Il est ainsi impossible d'effacer accidentel lement le programme. 79 13 I SAUVEGARDE DES PROGRAMMES Appris au chapitre 1 3 COMMANDES CSAVE CLOAD SKIPF 80 1 4 I ÉDITIOIN DES PROGRAMMES Jusqu'à présent, vous avez probablement changé les programmes en les retapant. Dans le présent chapitre, vous apprendrez une méthode plus facile de changement des programmes, à l'aide des commandes EDIT, DELETE et RENUM. Édition des lignes (Commande EDIT) La commande EDIT sert passer en mode d'édition. Sa syntaxe est: E o I T numéro de ligne Fait passer en mode d'édition pour pouvoir éditer le numéro de ligne. En mode d'édition, vous pouvez utiliser les touches spéciales d'édition indiquées dans la table 1 4. 1 . Table 14.1 Touches d'édition (n est un nombre. Si vous omettez n, le BASIC utilise 1 .) Touche Fonction CD n©caractères Liste la ligne et revient au début. Change les n caractères suivants en nouveaux caractères. 1 nsère les caractères. Supprime n caractères. Détruit le reste de la ligne et vous met en mode d'insertion. Permet de prolonger la ligne. Cherche la ne apparition du caractère. Élimine le reste de la ligne. Élimine jusqu'à la ne apparition du caractère Avance de n espaces. Recule de n espaces. Revient en mode de ligne. m n@ C8) OO nCIDcaractère CKl nCKlcaractère n( SPACEBARl nEJ CfüITITJCD 81 1 4 I ÉDITION DES PROGRAMMES Faites une erreur en tapant un programme. Tapez: 50 DABA EXXUBERANT, PENSANT, ATRA B I L E Pour passer en mode d'édition. Tapez: E D I T 5 0 (ENTER) Nous avons: 50 50 D A B A E X X U B E R A N T , P E N S A N T , A TR A B I L E Pressez d'abord ::0, touche de liste. La touche OJ affiche la ligne entière puis vous ramène à son début. Déplacement du curseur (Tou�hes d'espacement, G et CID) Pressez plusieurs fois la touche d'espacement. Cette touche fait avancer le curseur. Pour revenir en arrière, pressez B. En mode d'édition, il faut noter que B fait revenir en arrière. Elle n'annule pas les caractères. Venez au début de la ligne 50 et pressez ® et la touche d'espacement. Vous avancez ainsi de 5 espaces, d'un seul coup. Faites de même avec 8. Pressez un nombre, CID par exemple, et a pour reculer d'autant d'espaces. Venez au début de la ligne 50. Pour revenir au premier E, pressez CID (recherche). Tapez E (caractère que vous recherchez) Vous pouvez venir au deuxième E de deux manières. • Tapez Œ pour chercher le premier E après la position courante du curseur. • Revenez au début 2 CID E . Changement de caractéres (Touche ©) Faites votre premier changement à la ligne 50. Changez DABA pour avoir DATA: 1. Venez au caractère "erroné" (B de DABA). 2. Pressez © pour changer. 3. Tapez le nouveau caractère (dans ce cas, T). 4. Pour vous assurer que le changement est fait, pressez le OJ; vous obtenez: 50 DATA E X X U B E R A N T , P E N S A N T A T R A B I L E Vous voulez maintenant changer PENSANT pour avoir CAUSANT. Cette fois-ci, vous devez changer 3 caractères à la fois: 1. Venez au premier caractère erroné (le P de PENSANT). 2. Pressez 3 © pour changer trois caractères. 3. Tapez les trois nouveaux caractères (CAU). La ligne 50 se présente ainsi: 50 82 DATA E X XU B E RA N T , C A U S A N T ATRAB I L E 14 / ÉDITION DES PROGRAMMES Si vous en aviez fini avec la ligne 50, vous pourriez presser � et sortir du mode d'édition. Vous pouvez cependant voir que vous avez encore du travail! Annulation de caractères (Touche CID) Vous devez annuler un caractère qui est un des X de EXXUBERANT. 1. Venez jusqu'au caractère en cause qui est le deuxième X de EXXUBERANT. 2. PresseL CID pour 3. Voilà qui est fait. Pour vous en assurer, pressez de nouveau CC 50 annuler. DATA E X U B E R A N T , C A U S A N T ATR A B I L E Vous pouvez annuler plus d'un caractère à la fois. Par exemple, si vous pressez 4 @, vous annulez quatre caractères d'un seul coup. Insertion de caractères (Touche CD) Vous devez maintenant insérer des caractères: ATRABILE doit devenir DEMO NSTRATI F OU ATRABILE. 1. Venez au point où vous voulez insérer des caractères, c'est-à-dire à l'espace avant le A de ATRABILE. 2. Pressez CD pour passer en mode d'insertion. 3. Tapez l'insertion: D E M O N S T R A T I F o u À ce point, vous êtes encore e n mode d'insertion. Par exemple, s i vous pressez l a touche d'espacement, vous insérez un espace; si vous pressez CD, vous insérez un L. Par conséquent, vous devez: 1. Presser �3J pour sortir du mode d'insertion. 2. Vous pouvez maintenant presser 50 CD pour lister la ligne: DATA E X U B E R A N T , C A U S A N T DEMONSTR A T I F O U ATRAB I L E Destruction de caractères (Touche ŒD) VoLs pouvez modifier une ligne en détruisant sa fin et en insérant les nouveaux caractères. Essayez de modifier la ligne 50. 1. Venez au premier caractère à éliminer. Le A de ATRABILE. 2. Pressez ŒD pour modifier. Vous éliminez ainsi le reste de la ligne et vous vous mettez en mode d'insertion. 3. Tapez l'i nsertion. (Dans ce cas, tapez VOLUBILE.) 4. Pressez Cfil!IIT)GJ pour sortir du mode d'insertion. 5. Si vous pressez maintenant (]J pour lister la ligne, vous avez 50 D A T A E X U B E R A N T , C A U S A N T , D E M O N S T R A T I F OU VO 3: " 83 1 4 I ÉDITION DES PROGRAMMES Élimination de caractères (Touche ŒJ) La touche ŒJ est presque le contraire de ŒD. Elle élimine tout jusqu'à la nfl apparition d'un caractère. Supposons par exemple que vous désirez éliminer la première moitié de la ligne 5_0 jusqu'à la virgule. 1. Venez au début de la ligne 50 et pressez ŒJO 2. Listez la ligne 50 50; vous avez: CAUS A N T , D E MON S T R A T I F O U V O L U B I L E Extension de caractères (Touche OO) Vous désirez peut-être "étendre" la ligne 50: 1. Pressez QD. Le curseur vient à la fin de la ligne et vous met en mode d'insertion. 2. Tapez l'insertion: ET C O M M U N [ C A T I F 3. Pressez CfillIEDCD pour 50 sortir du mode d'insertion. , C A U S A N T , D E M O N S T R A T I F O U V O L U B I L E E T C O M MU N I C A T I F Annulation de lignes (Commande DEL) Jusqu'à présent, nous avons annu'.é simplement les lignes en p rocéd ant ainsi: 50 (ENTER) Cette méthode est exc ellente avec une ou deux l i g n es mais comment si vous voulez annuler 50 ou 60 lignes? . Pour annuler plus , d'une l igne , vous pouvez utiliser la commande DEL vous y prenez-vous dont la syntaxe D E L numéros de ligne Annule les lignes spécifiées par les numéros de ligne. Par exemple. pour annuler les lignes 30 à DEL 30-50 � 84 50, tapez est: 14 / ÉDITION DES PROGRAMMES Renumérotation des lignes {Commande RENUM) La commande RENUM vous permet de changer les numéros de ligne d'un programme. Pour vous faire une idée de RENUM, tapez ce court programme: 10 20 30 40 P R I N T " VO I C I L A P R E M I E R E L I G N E " P R I N T "VO I C I L A D E U X I E M E L I G N E" P R I N T "VO I C I UNE A U T R E L I G N E " GOT0 1 0 Renumérotez maintenant les lignes en tapant: R EN UM 1 00 (ENTERl Listez le programme. Les nouveaux numéros de ligne commencent à 1 OO. La ligne 1 OO est la "nouvelle lig ne". 1 j1fi 110 1 20 130 P R I N T " VO I C I L A P R E M I E R E L I G N E " P R I N T " VO I C I L A D E U X I E M E L I G N E " P R I N T "VOI C I UNE AUTRE L I G N E " GOT0 1 00 Vous pouvez remarquer que la référence de numéro de la ligne GOTO est aussi renumérotée. Renumérotez encore une iois le programme avec la nouvelle ligne 200. Tapez: R EN UM 2 00 , 1 2 0 (ENTERl La nouvelle ligne est ici 200, mais la renumérotation commence à la ligne 1 20. La ligne 1 20 est dite "ligne de début" . 1 00 110 200 210 P R I N T "VOI C I LA P R E M I E R E L I G N E " P R I N T " VO I C I L A D E U X I E M E L I G N E " P R I N T "V O I C I U N E A U T R E L I G N E " GOTO 1 0 0 Renumérotez le programme une fois de plus en lui donnant une valeur de progression de 50 entre les lignes: R E N U M 3 00 , , 5 0 (ENTERl La nouvelle ligne est ici 300. Vous avez omis la ligne de début; de ce fait, le B.A.SIC renumérote le programme entier. La valeur de progression d'une ligne à l' autre est de 50: 3 0 0. 350 400 450 P R I N T "V O I C I LA P R E M I E R E L I G N E " P R I N T "VO I C I LA D E U X I EM E L I G N E " P R I N T "V O I C I U N E A U T R E L I G N E " GOTO 3 0 0 85 1 4 / ÉDITION DES PROGRAMMES Voici la syntaxe de la commande RENUM: R E Nu M nouvelle ligne, ligne de début, valeur de progression Sert à renuméroter programme. un nouvelle ligne Correspond à la première ligne nouvelle renumérotée. Si vous omettez la nouvelle ligne, le BASIC utilise 1 C. ligne de dbut Correspond au début de la renumérotation. Si vous omettez la ligne de début, le BASIC renumérote le programme entier. valeur de progression Correspond au degré de progression entre chaque ligne numérotée. Si vous omettez la valeur de progression, le BASIC utilise 1 O. Remarque: R E N U M ne change pas l'ordre des lignes. Essayez d'autres variantes de cette commande en tapant: R E N U M , , 20 Vous renumérotez ainsi le programme entier. La nouvelle ligne est 10 et la valeur de progression 20: 10 30 50 70 P R I N T " VO I C I L A P R E M I E R E L I G N E " P R I N T "VO I C I LA D E U X I E M E L I G N E " P R I N T "VO I C I U N E AUTRE L I G N E " GOT0 1 0 Tapez m aintenant R E N U M 4 0 , 3 0 , ŒNITiD. La nouvelle ligne est ici 40, la ligne de début 30 et la valeur de progression 1 0: 10 40 50 60 P R I NT " VO I C I L A P R E M I E R E L I G N E " P R I N T " VO I C I L A D E U X I E M E L I G N E " P R I N T "VO I C I U N E A U T R E L I G N E " GOTO 1 0 Tapez R E N U M 5 , 40 ŒlfiEiJ. Vous obtenez une erreur ?FC, car vous auriez mis la ligne 40 avant la ligne 1 O. Appris au chapitre 1 4 COMMANDES EDIT DEL RENUM 86 1 5 I U N Q U ESTIONNAI RE Nous sommes presque arrivés à l a fin de l a première partie de ce livre; u n petit "questionnaire" s'impose donc. Dans ce chapitre, vous apprendrez à utiliser les fonctions I N KEY$ et VAL pour mettre des tests sur pied. Contrôle du clavier (Fonction INKEY$) Avec INKEY$, l' ordinateur peut constamment "observer", "mi nuter" ou "contrôler" ce que vous tapez. Sa syntaxe est: I N K E Y $ Retourne la touche présentement pressée ou, si vous n'avez pressé aucune touche, ne retourne rien (" ). " Tapez et exécutez ce programme: A$ = I NKEY$ // I F A $ <>" 'G6Tù "'" !if 5 0 P R I N T "VOUS N ' AVEZ R I EN P R E S S E " GOT0 1 0 P R I N T "VOUS A V E Z P R E S S E L A TOU C H E---" A$ 10 20 30 40 50 INKEY$ vérifie e n une fraction de seconde si vous avec pressé une touche. Pendant les 20 premières vérifications au minimum, vous n'avez rien pressé (" ). " La ligne 1 0 libelle la touche que vous avez pressée avec A$. L'ordinateur prend ensuite une décision: • • Ajoutez 60 Si A$ est égal "à rien" (" "), il imprime VOUS N'AVEZ RIEN PRESSÉ et il revient à la ligne 1 0 pour vérifier de nouveau le clavier. Si A$ est égal "à quelque chose" (tout sauf " "), l'ordinateur passe à la ligne et imprime la touche. (La notation <> correspond à "n'est pas égal à".) cette lig n e el exécutez 50 le prog'amme: GOTO 1 0 Quelle que soit votre rapidité, l'ordinateJr va toujours plus vite que vous! Effacez la ligne 30 pour voir les touches que vous avez pressées. 87 15 I UN QUESTIONNAIRE Pour battre l'ordinateur à son jeu (Exemple avec INKEY$) Tapez ce programme: 10 20 30 40 50 60 70 80 90 1 00 X = RND(4) Y = RND (4) P R I N T "QUE VAUT" X "+" Y T = 0 A$ = I N K E Y $ T = T + 1 SOUND 1 28 , 1 IF T = 15 THEN 200 I F A$ = " " T H E N 5 0 GOTO 1 0 C LS ( 7 ) S O U N D 1 8 0 , 30 P R I NT " T R O P T A R D " 200 210 220 Le programme se déroule ainsi: • Les l i g nes 1 0, 20 et 30 font imprimer à l'ordinateur deux nombres au hasard et elles vous demandent leur somme. • La ligne 40 fixe • La ligne 50 vous donne votre première chance de répondre à la questi on • La ligne 60 ajoute 1 à T qui est la minuterie. T est maintenant égal à 1 . La fois suivante, quand l'ordinateur arrive à la ligne 60, il ajoute de nouveau 1 à la minuterie pOl,r rendre T égal à 2. Chaque fois que l'ordi nateur exécute la ligne 60, il ajoute 1 à T. • La ligne 70 sert à produire un bip. • La ligne 80 indique à l'ordinateur que vous avez 1 5 chances de répondre Quand T est égal à 1 5 , le temps accordé est écoulé. L'ordinateur vous provoque avec les lignes 200, 2 1 0 et 220. • La ligne 90 indique que, si vous n'avez pas répondu , l ordinateur revient en arrière et vous donne une autre chance. • L' ordinateur ne va à la li g ne 1 OO que si vous répondez. La ligne 1 OO renvoie l'ordinateur en arrière pour vous présenter un autre problème. T à O. T est une minuterie. . . ' Comment pouvez-vous décider l ' ordinateur à vous donner trois fois plus de temps pour répondre à chaque question? Réponse: Changez la ligne suivante: 80 88 IF T = 45 THEN 200 1 5 / UN QUESTIONNAIRE Vérification des réponses (Fonction V AL) Comment l 'ordinateur peut-il vérifier si à vos réponses sont justes? Essayez ce programme: 1 00 0 1 20 130 1 40 11 I F A $ :;: X + Y T H E N 1 3 0 P R I N T " FAU X "d' X " + " Y " :;: " X + Y GOTO 1 0 PRINT "JUSTE" GOT0 1 0 Si vous exécutez ce programme et réépondez à temps, vous obtenez ce message d'erreur: ? T M E R RO R I N 100 En effet, vous ne pouvez pas rendre une chaîne (A$) égale à un nombre (X + Y). Vous devez changer A$ en nombre. À cet effet, le BASIC possède la fonction VAL dont la syntaxe est: vA L Changez 100 (chaîne) Retourne la valeur numérique de la chaîne. la li gn e 1 OO en tapant: I F V A L C A $ ) :; X + Y T H E N 1 3 0 VAL(A$) convertit A$ à sa valeur numérique. Si A$ est égal à la ch � e "5", VAL(A$) est égal au nombre 5. Si VAL(A$) est égal à la chaîne "C", VAL(A$) est égal au nombre O. ("C" n'a pas de valeur numérique.) Pour rendre le programme encore plus intéressant, changez ces lignes: 10 20 90 1J/, X :;: R N D ( 4 9 ) + 4 Y :;: R N D ( 4 9 ) + 4 B $ :; B $ + A $ I F V A L C B $ ) :;: X + Y T H E N 130 89 1 5 / UN QUESTIONNAIRE Ajoutez ensuite ces lignes: 45 95 8 $ = 1 1 11 I F L E N C B $ ) <> 2 T H E N 5 0 Test de dactylographie avec l ' ordinateur (Exemple avec INKEY$) Ce programme vérifie votre rapidité de frappe: C LS I N P UT " P R E S S E Z < E N T E R > S I V O U S E T E S P R E T A T A P E R C E T T E P H RA S E " ; E $ P R I NT "VO I C I L E MOMENT POUR TOUS L E S HOMMES" 30 40 T = 1 50 A$ = I NKEY$ 60 I F A$ = " " THEN 1 0 0 70 P R I NT A $ ; 80 B$ = B$ + A$ I F LEN ( B $ ) = 3b T H E N 1 2 0 90 T = T + 1 1 00 110 GOTO 5 0 10 20 1 20 130 1 40 150 1 60 S = T/74 M = S / 60 R = 8/M PRINT P R I N T "VOUS T A P E Z A--"R"--MOT S / M I N " La ligne 40 fixe la min uterie T à 1 . La ligne 50 vous donne votre première chance de frapper une touche (A$). S i vous n'êtes pas assez rapide, �a ligne 60 envoie le programme la ligne 1 OO et ajoute un à la minuterie. La ligne 70 imprime la touche que vous avez tapée. 90 15 / UN QUESTIONNAIRE La ligne 80 forme la chaîne B$. Chaque fois que vous frappez une touche (A$), le programme l 'ajoute à B$. Par exemple, si vous avez d'abord frappé la touche "V" , vous obtenez: A$ et B$ B$ B$ = "V" = B$ + A$ = ,, + ''V " = "V" •• Si vous frappez ensuite la touche "O", vous obtenez: A$ et B$ B$ B$ = "O" = B$ + A$ = "V" + " O " = " VO" Si vous frappez ensuite la touche " I " , vous obtenez: 11111 A$ = et 8$ = "VO" + B$ = "VO i" 0111 Quand la longueur de 8$ arrive à 3 6 (longueur de VOICI LE MOMENT PO UR TOUS LES HOMMES), le programme suppose que vous avez fini de taper l'expression et il rasse à la ligne 1 20 pour calculer le nombre de mots par minute. Les lignes 1 20, 130 et 1 40 calculent votre vitesse de frappe. Elles divisent T par 74 (pour obten ir le nombre de secondes) et S par 60 (po ur obtenir la vitess e à la minute). Elles divisent ensuite les mots par M pour obtenir le nombre de mots par minute. Appris au chapitre 1 5 MOTS BASIC INKEY$ VAL 91 PARTE 2 I U N PEU DE DÉTENTE E n avez-vous assez des éléments du BASIC? Dans cette partie, nous allons nous détendre un peu et apprendre à: • Composer une chanson. • Dessiner une image. • Participer à un jeu avec les bâtons de commande. 93 1 6 I DE LA M USIQUE Dans ce chapitre, vous faites connaissance avec la commande PLAY qui vous permet d'écouter quelques airs de musique . La syntaxe de PLAY est: P L A Y chaÎne Joue la chaÎne. La chaîne peut comprendre les options suivantes: note (lettre de "A" à "G" ou nombre de 1 à 1 2). octave (0 sui vie d'un chiffre de 1 à 5). Si vous omettez l'octave, l'ordinateur utilise l' octave 2. durée de note (L suivie d'un nombre de 1 à 255). Si vous omettez la dure de note, l'ordinateur utilise la durée courante. tempo (T suivie d'un nombre de 1 à 255). Si vous omettez le tempo, l'ordinateur utilise T2. volume (V suivie d'un nombre de 1 à 31). Si vous omettez le volume, l'ordinateur utilise V15. durée de pause (P suivie d'un nombre de 1 à 255). sous-chaînes. Faites précéder les sous-chaînes d'un X et faites-les suivre d'un point virgule Exemple: XA$; - . 95 1 6 / DE LA MUSIQUE Notes (Option NOTE) Vous pouvez spécifier une note de musique de deux manières. Avec la première, entrez la lettre de la note: A, B, C, D, E, F ou G (do, ré, mi, fa, sol, la, si ou do). Pour. indiquer une note dièse, faites·la suivre du signe plus ( + ) ou du signe de la livre (#). Pour indiquer une note bémol, faites-la suivre d'un signe moins ( ). - Par exemple, A représente le A (la) natu rel, A# le A dièse et A - le A bémol. Tapez les commandes suivantes pour comprendre les différences entre les notes: P L A Y " A " (ENTER) P L A Y " A ; "# 1ENTER) P LA Y "A ; A ; A# ; A ; A " 1ENTERl - - Vous pouvez aussi spécifier une note de musique à l'aide d'un nombre entre 1 et 1 2 , précécé de la lettre N . (Vous pouvez omettre N si vous le désirez.) 4 2 3 96 7 5 6 9 8 11 10 12 1 6 I DE LA MUSIQUE Par exemple, pour écouter la gamme complète des 1 2 tonalités, exécutez le programme "Gamme" suivant: 5 C LS 10 FOR N = 1 à 1 2 15 P R I N T "NOTE# " ; N 20 P L A Y STR$ ( N ) 30 NEXT N Ajoutez un retard dans le programme pour pouvoir comparer les nombres aux notes à mesure que la gamme progresse de 1 à 1 2 (C à B). 25 F O R I = 1 TO 5 0 0 : N E X T I PLAY n'accepte pas la notation B# ou C - . Remplacez 3# par C et C - par B. EXERCICE� /6- 1 Modifiez le programme "Gamme" pour qu'il aille dans l'ordre décroissant (au lieu de l'ordre croissant). Rondes, blanches, noires . . . (Option LONGUEUR DE NOTE) Le programme "ga11me" ne spécifiant pas la longueur de note, l'ordi nateur utilise automatiquement des noires qu i représentent la "valeur courante" initiale. Pour spécifier une longueur de note différente, utilisez L suivie d'un nombre de 1 à 255. Par exemple, 1 correspond à une ronde, 2 à une blanche, 4 une noire, 8 à une simple croche, 1 6 à une double croche, etc. Lnombre Longueur de note L1 L2 L3 L4 L16 L32 L64 Ronde Blanche Noire po nte Noire Simple croche Double croche Tri pie croche Quadruple croche L255 Ronde/255 L8 Note 0 d J. _. " ) Faites varier les longueurs de note pour obtenir un roulement de tambour. Tapet: P LA Y 11 L 2 ; A ; L 4 ; A ; A ; L 2 ; A ; A " (ENTERl Avez-vous remarqué que vous n'avez pas répété l' option L pour chaque no:e? PLAY utilise valeur courante de note jusqu'à ce que vous entriez une autre commande L pour la changer la Essayez donc de reproduire trois notes de ronde/255: P L A Y " L 2 5 5 ; A ; A ; A - " CENITËD Voilà un staccato impressionnant! 97 1 6 / DE LA MUSIQUE Notes pointées (Notation de LONGUEUR DE NOTE ' ' . ' ') Le point indique d'augmenter la longueur de la note de la moitié de sa valeur normale. Par exemple une noire pointée vaut une noire et demie. Vous pouvez reproduire une telle note en ajoutant un point (.) ou une série de points ( . . . ) à la longueur de note (L). Chaque point augmente la longueur d'une note de la moitié de sa valeur normale. Par exemple: P L A Y L 4 . ; A Œ1'i.'ŒID Ce programme joue une noire et demie (1 /4 + 1 /8 = 318 de note). Essayez ce programme: P LA Y " L4 • ; A ; L 8 ; C ; L 4 ; E ; L 8 ; C ; E ; C ; E ; C ; L 4 ; A " (ENTER 1 • Octaves (Option OCTA VE) La lettre 0 suivie d'un chiffre de 1 à 5 permet de changer d'octave. Si vous ne spécifiez pas l' octave, l'ordi nateur utilise automatiquement l'octave 2 qui comprend do (middle C). Essayons par exemple de reproduire une gamme de do simple: P L A Y " C D E F G A B A G F E D C B A " CEN:ŒiD Oue s' est-il passé? G (sol) est la note la plus élevée de l ' octave 2. Quand l'ordinateur arrive à A (la), il recommence au début de l 'octave. Pour passer à l'octave 3, essayez: P L A Y " C C D E F G ; 0 3 ; A B A 0 2 ; F E D C B A " (ËNTERl 98 16 / DE LA MUSIQUE Volume (Option VOLUM E) Pour régler le volume, utilisez V suivie d u n nombre de 0 à 3 1 . Si vous ne spéc ifiez pas la valeur de V, l ' o rdi nate ur utilise V15. ' Excutez par exemple le programme suivant: 5 C LS P LAY "V 5 ; A ; V 1 0 ; A ; V 1 5 ; A ; V20 ; A ; V25 ; A ; V30 ; A" 10 GOT0 1 0 20 Quand vous en aurez entendu assez, presser � . Un peu de repos (Option PAUSE) Pour placer une pause entre les notes, utilisez P suivie d'un nombre de 1 à 255. Les longueurs de pause correspondent aux longueurs de note, mai s elles se distinguent par une différence importante. Vous ne pouvez pas utiliser de points avec P. En contrepartie, vous pouvez taper une série de pauses. Par exemple, pour une pause de 3f8, tapez P4P8. Changez la ligne 1 0 10 du dern i er programme pour avoir: P L A Y " V S ; A ; P 2 ; V 1 0 ; A ; P 2 ; V 1 5 ; A ; P 2 ; V 20 ; A ; P 2 ; V2 5 ; A ; P 2 ; V3 0 ; A ; P 2 " Tempo (Option TEMPO) Vous pouvez augmenter ou diminuer le tempo avec T suivie d un nombre de 1 à 255. Si vou s ne précisez pas le tempo, l'ordinateur utilise automatiquement T2. ' Notre programme a maintenant l'aspect suivant: 5 C LS P L A Y " V S ; A ; P2 ; V 1 0 ; A ; P2 ; V1 S ; A ; P2 ; V 20 ; A ; P2 ; 10 V 2 5 ; A ; P2 ; V3 0 ; A ; P 2 " GOT0 1 0 20 Ralentissez le tempo en changeant la ligne 1 0 pour avoir: 10 P LAY "T1 ; VS ; A ; P 2 ; V 1 0 ; A ; P 2 ; V1 5 ; A ; P 2 ; V2 0 ; A ; P 2 ; V 2 5 ; A ; P 2 ; V3 0 ; A ; P 2 " Accélérez-le maintenant en remplaant T1 par T1 5. Q u en pensez-vous? ' 99 1 6 / DE LA MUSIQUE Sous-chanes (Option SOUS-CHAINE (X)) PLAY posséde une option de sous-chaîne qui permet d'exécuter une sous-chaîne, de revenir à la chaîne initiale et de la terminer. La fonction d'exécution se présente sous cette forme: XA$; La variable A$ contient une chaîne d'options normales de reproduction. X indique à l'ordinateur de jouer (PLAY) la chaîne d'options stockées dans A$. Changez la disposition du programme de démonstration pour qu'il exécute une sous-chaîne: 5 10 20 30 40 C LS A$ = "A; A#; A-" 8 $ = "05 ; XA$ ; " C$ = "01 ; X A $ ; X B $ ; " P L A Y C$ Passez le programme et suivez son exécution. Remarque: Quand vous utilisez la fonction de sous-chaîne, un point-virgule (;) doit suivre le signe du dollar ($). Dans cet exemple, vous pouvez annule· tous les autres points-virgules. Encore une note (+ , - , < , > ) Non, nous n'avons pas une nouvelle note de musique en tête, mais nous avons une dernière idée sur l'utilisation de certaines options de PLAY. Avec 0 (octave), V (volume), T (tempo) et L (longueur de note), vous pouvez utiliser un des suffixes suivants au lieu d'ajouter u n nombre: Suffixe Objet + Ajoute 1 à la valeur courante. Soustrait 1 de la valeur courante. Multiplie la valeur courante par 2 . Divise l a valeur courante par 2. > < Familiarisez-vous avec ces fonctions à J'aide du programme de démonstration. 5 C LS PLAY "T2" 10 20 P LAY " A ; A # ; A-" GOTO 20 30 La ligne 1 0 établit l e tempo. Exécutez une fois l e programme pour "habituer votre oreille". Rien n'a changé. I nsérez maintenant T à la ligne 20. 20 P L A Y " T + ; A ; A # ; A -" Exécutez le programme. Le signe plus augmente automatiquement la valeur T de 1 à chaqLe exécution de la ligne 20. 100 16 / DE LA MUSIQUE Diminuez maintenant le tempo à l'aide d'un signe moins ( - ) : CLS 5 PLAY "T255" 10 20 P L A Y " T - ; A ; A# ; A -" GOTO 2 0 30 La multiplication ne va+elle pas plus vite que l'addition? À la ligne 1 O. remettez le tempo à 2. Changez T à la ligne 20 à T>. et laissez les choses suivre leur cours. 10 20 P LA Y " T 2 " P LA Y " T > ; A ; A # ; A - " Vous avez donc commencé par T2. L'ordinateur a multiplié cette valeur par 2 pour donner 4, 4 x 2 donne 8, 8 x 2 donne 1 6 , et ainsi de suite jusqu'à 255. Vous pouvez ralentir tout aussi rapidement en divisant le tempo courant par 2 avec 10 20 "<". PLAY "T255" P L A Y " î " < ; A ; A # ; A -" N 'oubliez pas que vous pouvez faire de même avec note, le volume et l'octave. L, V et 0 pour changer la longueur de Dormez en paix, Monsieur Beethoven (Exemple avec la commande PLAY) Après tout ce dur travail, vous méritez de vous détendre en musique. Tapez le programme suivant et essayez de trouver à quel air de musique il correspond. 101 1 6 I DE LA MUSIQUE 5 C LS 1 00 A $ = "T 5 ; C ; E ; F ; L 1 ; G ; P 4 ; L 4 ; C ; E ; F ; L 1 ; G " 8$ = " P 4 ; L 4 ; C ; E ; F ; L2 ; G ; E ; C ; E ; L 1 ; D " 1 05 110 C $ = " P8 ; L4 ; E ; E ; D ; L 2 . ; C ; L4 ; C ; L2 ; E " D $ = " L 4 ; G ; G ; G ; L1 ; F ; L 4 ; E ; F " 115 E$ = " L 2 ; G ; E ; L 4 ; C ; L8 ; D ; D + ; D ; E ; G ; L 4 ; A ; L 1 ; 03 ; C " 1 20 1 25 X$ = " X A $ ; X B $ ; X C $ ; X D $ ; X E $ ; " PLAY X$ 130 Avez-vous reconnu cette chanson? Donnez-lui u n peu plus d'allure e n ajoutant ces lignes: 10 20 30 35 40 45 50 55 60 65 70 PRINT P R I NT P R I NT PRINT FOR X C LS PRINT P R I NT PRINT PRINT PRINT @ @ @ @ = 96, STRING$ (32 , "*") 1 67 , " W H E N T H E S A I N T S " 232 , "GO MARC H I N G I N " 2 8 8 , STRING$ (32 , "*") 1 TO 5 0 0 : N E X T X @ @ @ @ @ 1 28 , 1 69 , 192, 224, 256, "OH WHEN THE SA INTS" "OH WHEN THE SA INTS" " O H W H E N T H E S A I N TS G O M A R C H I N I N" " Y E S I W A N T T O BE IN T H A T N U M B E R " " W H E N T H E S A I N TS G O M A R C H I N I N " Exécutez le programme et chantez en choeur avec votre ordi nateur couleur. Cela vous a tellement plu que vous voulez recommencer! Très bien, ajoutez les lignes suivantes: 1 50 1 60 1 65 1 70 175 1 80 1 85 CLS P R I N T @ 1 3 0 , "ENC ORE UNE FOI S , S . V . P . " F O R X = A TO 5 0 0 : N E X T X C LS P R I N T @ 2 3 3 , " J E N E D E M A N D E Q U E C A éi! " F O R I = 1 TO 5 0 0 : N E X T I GOTO 5 EXERCICE 1 6-2 Notre interprétation de "Saints" est assez bonne, mais elle ne ressemble pas au style du jazz de la Nouvelle-Orléans. Modifiez-la pour l'adapter à vos préférences musicale::;. Essayez de changer des octaves ou d'ajouter quelques dièses ou bémols. EXERCICE 1 6-3 Essayez vos propres arrangements musicaux. Nous en avons inclus plusieurs dans les exemples de programmes de la fin de ce livre. Appris au chapitre 1 6 MOT BASIC PLAY 102 1 7 I DES I MAGES Dans ce ct1aµitre, vous apprenez à dessiner une image sur l 'écran de texte à basse définition. Vous commencez par placer un point minuscule sur l'écran. Vous y placez ensuite plusieurs points. Enfin, vous combinez ces points pour faire une image. Avant de commencer, il faut que vous sachiez que ce chapitre explique la méthode la plus primitive de dessin sur l'écran. Les parties 3 et 4 de cet ouvrage aborden: les possibilités plus perfectionnées de graphiques de l'ordi nateu couleur. Placement d'un point (Commande SET) La commande SET sert à placer un point sur l'écran. Sa syntaxe est: s E T (x,y,c) Place un point sur l 'écran de texte à basse définition à la colonne x, rangée y, avec la couleur c. x est un nombre de 0 à 63, y un nombre de 0 à 31 et c un nombre de 0 à 9. Vous ne pouvez utiliser SET qu'avec l'écran de texte à basse définition. Passez donc à cet écr::in en tapant: W I D T H 3 2 [ENTER) Tapez ensuite le programme suivant 10 20 30 et exécutez-le: CLS(0) SE T C 0 , 0 , 3 ) GOTO 30 Voyez-vous le point bleu dans l e coin supérieur gauche? Pour placer u n point dans l e coin inférieur droit, changez la ligne 20 et exécutez le programme: 20 S E T ( 63 , 3 1 , 3 > Voulez-vous placer le point au centre? Utilisez la lignP. 20 20 suivante: S E T (3 1 , 1 4 , 3 ) SET indique à l'ordinateur de placer u n point sur l 'écran de texte à basse définition de 32 x 1 6. 103 17 / DES IMAGES Les deux premiers nombres précisent les positions de colonne et de rangée, avec la grille SET/RESET suivante: ,, H-H-H-t-+-t-+-+-+-+-+-+-+-+-+-+++H .. ,, .. H-t-+-t-+-+-+-+-+-++++-+-+-+-+� H-H-H-l-4-...+++++-+-+-+-+-+-+-+-+-+-+� " "' H-t-+-++++++-++-+-+++-+-+-+-+-+-+-+-+-+� " H-++++++-++-+-+++-+-+-+-+-+-+-+-+-+� " H-++++++-+-+++-+-+-+-+-+-+-+-+-+-+-+� 1-+-1-+-1-+-+-+-+-+-H-+-+-+-+-H-++++-l-l--l " ,. l-+-H-+-+-+-+-H-+-+-+-+-+++-+-++-l--1--l " " H-H-t-t-t-1-t-t-H-H-t-+-t-+-t-+-t-+-++++-+-+-+-H t-t-H-H-t-1-t-t-H-t-+-++++-+-+-++ ,. " l-+-1-+-+-+-t-t-+-+-+-+-++++-++-+-H 1-+-+-+-+-+-H-+-+-+-+-+-+-+-+-++++-l-l--l Le dernier nombre spécifie la couleur, suivant la palette de la table ci-dessous: Utilisation de la Table 17-1 palette avec la commande SET N uméro de couleur Case de palette 0 8 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 Cou leu r standa rd Noir Vert Jaune Bleu Rouge Chamois Turquoise Lil:iS Orange SET utilise la palette de la même manière que CLS. Par exemple, SET(3 1 , 1 4,8) et CLS8 produisent toutes deux la même couleur qui correspon d à l'orange (couleur standard). 104 1 7 / DES IMAGES Placement de deux points (Blocs dans la grille SET/RESET) Pour placer deux points sur un écran de texte, vous devez planifier. Pour vous en rendre compte, exécutez quelques programmes. Tapez et exécutez le suivant: 10 20 30 40 C L S0 SETC32 ,14, 3) SET C33 , 1 4 , 3 > GOTO 40 Vous devez avoir maintenant deux points bleus côte à côte au milieu d e l'écran. Changez la couleur du point de droite de façon à avoir un point bleu et un point rouge. Tapez: 30 S E T C 33 , 1 4 , 4 ) Exécutez de nouveaL le programme. Cette fois ci, les deux points sont rouges. Revenez à la grille que nous avons vue dans ce chapitre. Vous pouvez remarquer que les traits plus foncés groupent les points en "blocs". Chaque bloc contient quatre points. Par exemple, le bloc du milieu de la grille comprend les qua:re points suivants: Position Position Position Position Horizontale Verticale 32 33 32 33 14 14 15 15 Chaque point dans un bloc doit avoir la même couleur que les autres ou être noir. La 1 gne 30 demande à l'ordinateur de placer deux points de couleurs différentes (rouge et bleu) dans le même bloc. L'ordinateur ne pouvant pas donner à ces points des couleurs différentes, il leur attribue la deuxième couleur qui est le rouge. Tapez et exécutez ce programme: 30 SET C34 , 1 4 , 4 ) Le µoint de la position 34, 1 4 étant dans un bloc différent, l'ordinateur peut établir deux points de couleur différente. 105 1 7 I DES IMAGES Le visage de l 'ordinateur (Exemple avec SET) Dans cet exemple, nous utilisons SET pour dessiner le visage de l'ordinateur. Assurez-vous d'abord que votre ordinateur est réglé pour les couleurs standard. • • Si vous avez un écran RGB (rouge/vert/bleu), tapez PALETTE RGB � · Si vous avez un écran CMP (à signal complet) et si vous utilisez la commande PALETTE pour modifier la palette, tapez PALETTE CMP (ENTER) Tapez les lignes suivantes pour créer le haut et le bas du visage: 5 C LS0 F O R H = 1 5 TO 48 10 SET ( H , 5 , 5 ) 20 SE T ( H , 2 0 , 5 ) 30 40 N EXT H Exécutez le programme. L'écran a l'aspect suivant. (Les traits sont chamois, plutôt que blancs.) 106 17 / DES IMAGES Les lignes 1 O et 40 établissent une boucle FOR/NEXT pour H , avec les positions horizontales 1 5 à 48 pour les traits du haut et du bas. La ligne 20 fixe le trait supérieur. La ligne 30 établit le trait inférieur. PoJr établir les côtés gauche et droit du visage, tapez les lignes suivantes: 50 60 70 80 FOR V = 5 T0 20 S ET C 1 5 , V , 5 ) S E T < 48 , V , 5 ) NEXT V Pour avoir un nez orange, tapez: 90 SET C32 , 1 3 , 8) Pour avoir une bouche rouge, tapez: 1 00 110 1 20 F O R H = 2 8 T0 3 6 SET(H,1 6,4) NEXT H Pour avoir des yeux bleus, tapez: 130 1 40 150 S ET ( 2 5 , 1 0 , 3 ) S E T ( 38 , 1 0 , 3 ) GOTO 1 50 Exécutez le programme. L'écran a maintenant l' aspect suivant: Un clin d'oeil de l 'ordinateur (Commande RESET) Avec la commande RESET, l'ordinateur peut vous faire un clin d'oeil. La syntaxe de RESET est: R E s ET x,ye Enlève un point de l'écran de texte à basse définition à la colonne x, rangée y. x est un nombre de 0 à 63 et y un nombre de O à 31 . Tapez: 1 50 RESET C3 8 , 1 0 ) Exécutez le programme. Le visage est le même, mais son oeil droit manque. RESET a enlevé le point qui correspond à l'oeil droit à la position 38, 1 O. Pour faire clignoter !'oeil, placez et enlevez le point en ajoutant la ligne suivante: 1 60 GOT0 1 4 0 107 1 7 / DES IMAGES Appris au chapitre 1 7 COMMANDES SET RES ET 108 1 8 I BÂTONS DE COMMANDE Si vous possédez des bâtons de commande, branchez-les dans l'arrière de votre ordinateur. fis ne peuvent se brancher que dans les accès corrects; vous ne risquez pas de mal les brancher. Ce chapitre explique l' utilisation des bâtons de commande dans un programme BASIC. Si vo�s n'avez pas de bâtons de commande, sautez ce chapitre. '. - · -' I .· _.,,-... , ; \ Les manettes (Fonction JOYSTK) La fonction JOYSTK sert à trouver fa position des commandes flottantes des bâtons de commande. La syntaxe de JOYSTK est: J o Y s T K(n) Retourne fa position de n, manette de l'un des bâtons de commande. n est un nombre de O à 3: n 0 Coordonnée horizontale du bâton de commande de droite. n 1 Coordonnée verticale du bâton de commande de droite. n 2 Coordonnée horizontale du bâton de commande de gauche. n 3 Coordonnée verticale du bâton de commande de gauche. = = = = Exécutez le bref programme suivant pour comprendre JOYSTK: 10 20 30 40 50 60 W I DT H 3 2 PRINT @ 0, JOYSTK C0) ; P R I N T @ 5 , J OY S T K C 1 ) ; PRINT @ 1 0 , JOYST K C 2 ) ; PRINT @ 1 5 , JOYST K (3 ) ; GOTO 2 0 109 18 / B TONS DE COMMANDE Voyez-vous les quatre nombres sur l'écran? Ils correspondent aux positions horizontale s et verticales des manettes des deux bâtons de commande. Prenez la manette du bâton de commande de droite (branché dans la prise de bâton de commande de droite (RIGHT JOYSTI CK), à l'arrière de l ' ordinateur). Maintenez-la dans l 'axe central et déplacez-la de la gauche vers la droite. Le premier nombre de l'écran passe successivement par toutes les valeurs de 0 à 63. Déplacez maintenant la manette du bâton de commande de gauche de la gauche vers la droite. Sur l'écran, le troisième nombre change. Déplacez maintenant les manettes des deux bâtons de commande de haut en bas, en les maintenant dans l'axe central. Le déplacement de haut en bas de la manette du bâton de droite fait passer le deuxième nombre de 0 à 63. Le déplacement de haut en bas de la manette du bâton de gauche fait passer le quatrième nombre de 0 à 63. L'ordinateur lit les positions des bâtons de commande de la façon suivante: JOYSTK(O) et JOYSTK(1 ) lisent les positions du bâton de commande de droite: • JOYSTK(O) lit la coordonnée horizontale (mouvement de gauche à droite). • JOYSTK(1) lit la coordonnée verticale (mouvement de haut en bas). JOYSTK(2) et JOYSTK(3) lisent les positions du bâton de commande de gauche. • JOYSTK(2) lit la coordonnée horizonta le. • JOYSTK(3) lit la coordonnée verticale. Pour la lecture des bâtons de commande, il faut d'abord lire JOYSTK(O). Pour vous en rendre compte, annulez la ligne 50 et exécutez le programme. Il tourne de façon presque identique, mais il ne lit pas JOYSTK(3), coordonnée verticale du bâton de commande de gauche. Annulez 60 la ligne 20 et changez la ligne 60: GOTO 30 Exécutez l e programme et déplacez les manettes des bâtons. Cette fois-ci, l e programme ne donne rien. L'ordinateur ne peut lire les coordonnées que s'il est commandé par JOYSTK(O). Tapez les lignes suivantes et exécutez le programme: 20 60 A = J O Y S T K ( 0) GOTO 20 L'ordinateur n'imprime pas les coordonnées de JOYSTK(O), mais i l les lit quand même. De ce fait, il peut lire les coordonnées de l'autre bâton de commande. Pour l i re JOYSTK(1), JOYSTK(2) ou JOYSTK(3), il faut d'abord commence: par JOYSTK(O). 110 18 / B TONS DE COMMANDE La peinture avec les bâtons de commande (Exemple avec JOYSTK) Tapez et exécutez le programme suivant: 10 20 30 40 80 90 CLS(0) H = JOYS TK ( 0 ) V = JOYSTK ( 1 ) I F V > 31 T H E N V = V - 3 2 SET C H , V , 3 ) GOTO 20 Vous pouvez peindre une image à l'aide du bâton de commande de droite. (Déplacez lentement la manette pour que l 'ordinateur puisse lire ses coordonnées). La ligne 20 lit la position horizontale H du bâton de commande de droite. Cette position peut correspondre à un numéro de 0 à 63. La ligne 30 lit la position verticale (V) qui peut aussi être un nombre de 0 à 63. La position ver.icale la plus haute de l'écran étant 3 1 , on a besoin de la ligne 40 qui ·end V toujours égale à un nombre de 0 à 3 1 . La ligne 8 0 établit u n point bleu à H et V. La ligne 90 revient pour tirer les positions horizontale et verticale suivantes des bâtons de commande. Ce programme n'utilise que le bâton de commande de droite. Vous pourriez peut-être utiliser le bâton de gauche pour la couleur. Ajoutez les lignes suivantes et exécutez le programme: 50 60 70 80 C = JOYSTK C2) I F C < 31 THE N C = 3 I F C > = 31 THEN C = 4 S ET C H , V , C ) Déplacez le bâton de commande de gauche vers la droite; l'ordinateur rerd C égale à 4. Les points établis sont rouges. Déplacez le bâton de commande vers la gauche et l'ordinateur rend C égale à 3. Les points établis sont bleus. 111 18 / B TONS DE COMMANDE Boutons des bâtons de commande (Fonction BUTTON) Voulez-vous utiliser les boutons des bâtons de commande? Ajoutez les lignes suivantes au programme: I F BUTTON ( 0 ) = 1 T H E N 1 0 90 1 0 0 GOTO 20 Exécutez le programme et commencez à "peindre". Pressez le bouton de commande de droite pour effacer l'écran et recommencer. (Si vous avez un bâton de commande à deux boutons, pressez celui de droite). La syntaxe de la fonction BUTION est: B u T T O N (n) Retourne un 1 si le bouton n est en fonction et un O s'il est hors fonction. n est un nombre de O à 3. n = 0 Bouton 1 de droite (ou bâton de commande à un bouton) n = 1 Bouton 2 de droite n = 2 Bouton 1 de gauche (ou bâton de commande à un bouton) n 3 Bouton 2 de gauche = Appris au chapitre 1 8 FONCTIONS JOYSTK BUTION 112 ADDENDUM CHAPITRE 18 LE PROF. INFORMATISÉ PARLANT LE PROF. INFORMATISÉ PARLANT Qui dit qu'un ordinateur ne parle pas? Sa voix toutefois ressemblera à la vôtre. Vous pouvez faire parler votre ordinateur en utilisant une bande enregistrée de votre voix. Vos programmes seront bien plus intéressants et amusants s'ils peuvent vous répondre. Commençons. Débranchez le câble à trois fiches qui réunit votre magnétocassette à votre ordinateur. Branchez un microphone dans votre magnétocassette s'il n'en possède pas un intégré. Placez une cassette vierge dans le magnétocassette. Appuyez sur les touches de lecture (PLAY) et d'enregistrement (RECORD) du magnétocassette et commencez à parler. Dites n'importe quoi. Appuyez sur la touche d'arrêt (STOP) et de rebobinage (REWIND) pour rembobiner la cassette. Tapez ensuite ce programme: 5 CLS 10 INPUT "PRESS (ENTER) TO HEAR THE RECORDING";A$ 20 MOTOR ON 30 AUDIO ON Débranchez le microphone du magnétocassette. Branchez le câble à trois fiches entre le magnétocassette et l'ordinateur. Appuyez sur la touche de lecture (PLAY) du magnétocassette. Exécutez le programme. Vous entendrez votre propre voix. MOTOR ON AUDIo ON Met le magnétocassette en marche. Fait passer le son du magnétocassette au haut-parleur de l'écran d'affichage ou de l'amplificateur. On peut programmer l'ordinateur pour qu'il se ferme, mais pour le moment, appuyez sur le bouton RESET. Le bouton de remise à l'état initial (RESET) est an arrière, à droite de votre ordinateur lorsque vous lui faites face. Listez votre programme. Le fait d'avoir remis l'ordinateur à l'état initial (RESET) n'a pas effacé votre programme. Ajoutez ces lignes au programme: 35 CLS 40 A$= INKE Y $ 50 PRINT@ 225, "PRESS 60 00 TO TURN OFF RECORDER" IF AS$<> "X" TH EN 40 70 AUDIO OFF 80 MOTOR OFF A-1 Le Prof. Informatisé parlant Préparez votre cassette pour qu'elle soit prête à être lue et exécutez (RUN) le programme. La ligne 40 commande à l'ordinateur de lire le clavier sans faire de pause telle entrée (INPUl). La ligne 60 lit ce qui est indiqué à la ligne 40 et décide si vous avez ou non appuyé sur la touche X. Si vous n'avez pas appuyé sur la touche X, l'ordinateur revient à la ligne 40 et la relit de nouveau. Si vous avez appuyé sur la touche X, l'ordinateur passe à la ligne 70. La ligne 70 met à l'arrêt le son du magnétocassette. La ligne 80 ferme le magnétocassette. Maintenant que vous comprenez son fonctionnement, vous êtes prêt à enregistrer le Prof. informatisé. Voici la copie: "Bonjour, je suis votre Prof. informatisé. La première leçon est en mathématique. Je vais vous donner une série d'additions à résoudre. Appuyez sur la touche "W" . . . " (Faire une pause de quelques secondes) "C'est ce que vous entendrez, chaque fois que votre réponse sera fausse. Appuyez sur . la touche "R" . . . " (Faire une pause de quelques secondes) "C'est ce que je vous dirai chaque fois que votre réponse sera correcte. Vous n'entendrez plus ma voix jusqu'à ce que vous me donniez troi s réponses correctes. Bonne chance. Appuyez sur la touche "G" pour commencer." (Faire une pause de quelques secondes) "Me voici de nouveau. J'espère que vous avez aimé votre leçon. Appuyez sur la touche "E" pour fermer le magnétocassette." A-2 Le Prof. Informatisé parlant Fini? La prochaine chose à faire, c'est de dessiner le Prof. parant. Voici notre grille et ce a quoi elle ressemblera. • • · -t • • ' . ' • • • • • • • . • :tttlt:ltittWi tt! ::il: :LI : W : ::ll : :-1: · W . .:l:ijttttm-;tttJ ·� . . Dessinez la bouche en premier. Effacez la mémoire et tapez: 5 CLS 0 200 FOR H 210 FOR V =16 TO 21 = 26 TO 35 220 S E T (H,V,4) 230 NEXT V,H C'est une bouche fermée. Pour la faire parler, tapez: 500 RES ET(30,18) :RES ET(30,19) 510 GOTO 200 Exécutez le programme. Maintenant dessinez le visage. Tapez: 100 110 120 130 FOR H=16 T047 FOR V = 4 T 0 2 3 S E T CH,V,5) NEXT V,H Dessinez le corps. Tapez: 140 FOR H =0 TO 60 ST E P 4 150 FOR V = 24 T031 160 S ETCH,V,2) :SET (H+1,V,2) 170 SET (H+2,V,7) :S ET(H+3,V,7) 180 NEXT V,H Dessinez les yeux. Tapez: 300 FOR V 510 T011 310SET <24,V,3) : S E T ( 25,V,3) 320 S ETC36,V,3) :SETC37,V,3) 330 NEXT V 340 PRINT@ 0,"THE TA LKING COM PUTER T EACHER" Exécutez le programme. Faites clignoter les yeux. Tapez: 505 IF RND(4) = 4 THEN S ET(24,10,5) : S E T C37,10,5) A-3 Le Prof. Informatisé parlant Exécutez le programme. Voici ce qu'à l'air votre Prof. parlant. Maintenant, enseignez au Prof. à parler. Tapez: 400 MOTOR ON 410 AUDIO ON 420 A$= IN KEY$ 430 IF A$= "G" THEN MOTOR OFF:END 440 1 F A$= "W" THEN MOT OR 0 FF:GOSUB 2000 450 IF A$= "R" THEN MOTOR OFF:GOSUB 3000 2000 FOR T 2010 SOUNDT,1 2020 NEXT T = 176 TO 86 STEP -10 2030 RETURN 3000 FOR T 3010 SOUN DT,1 = 3020 NEXT T 3030 RETURN 86 TO 176 STEP 10 Rembobinez le bande dans le magnétocassette. Branchez le câble à trois fiches entre le magnétocassette et l'ordinateur. Appuyez sur la touche de lecture (PLAY) du magnétocassette. Exécutez le programme. Faites ce que le Prof. vous dit de faire. Est-ce que jusqu'à maintenant tout va bien? Lorsque vous appuyez sur la touche W, vous devriez entendre des tons ascendants. Si vous appuyez sur R, cela devrait vous donner des tons descendants. En appuyant sur la touche G, on termine le programme. Maintenant, programmons l'ordinateur pour vous donner des problèmes d'arithmétrique. Tapez: 430 460 IF A$= "G" THEN MOTOR OFF:GOSUB 1000 IF A$= " E" THEN MOTOR OFF: END 1000 X= RNDC100) :Y= RNDC1 00) 1010 PRINT@ 0, " WHAT IS" X "+" Y Remarquez la ligne 1015. Elle règle la position d'imprm i ante (PR/NT) pour ce que vous tapez à la ligne 1020. 1015 PRINT@20, 1020 INPUT A 1030 IF A= X + Y THEN GOSUB 3000:C = C + 1 1040 IF A<> X + Y THEN GOSUB 2000:PRINT@ 0, "WRONG THE ANSWER IS" X+ Y A-4 1050 1 F C = 3 THEN RETURN 1060 FOR P 1070 GOTO 1000 = 1 T O 500:NEXT P - Le Prof. Informatisé parlant Remarquez la ligne 1015. Elle réegle la position d'imprimante (PRINT) pour ce que vous tapez la ligne 1020. à Rebobinez la cassette et appuyez sur la touche de lecture (PLAY), puis exécutez le programme. Regardez, écoutez et apprenez avec le Prof. informatisé parlant. Appris au chapitre 18 COMMANDES AUDIO MOTEUR A-5 Custom Manufactured for RADIO SHACK A Division of INTER TAN Canada L TD/Barrie, Ontario, Canada L4M4W5 PARTIE 3 I DES IMAGES EXCEPTIONNELLES Êtes-vous prêt à faire un grand bond en avant? Dans cette partie, vous apprendr ez à utiliser l'écran de graphiques à basse définition qui est réservé uniquement aux graphiques. Avec cet écran vous pourrez facilement: . Tracer un cercle Peindre une case Déplacer une image etc., etc. 1 13 1 9 I L' ORDI NATEUR FAIT LE POINT L' ordinateur couleur se caractérise surtout par sa capacité à afficher des graphiques précis, variés et faciles à utiliser. Jusqu'à quel point ces graphiques sont-ils faciles à afficher? Commençons donc par l'élément de base qui est le point. Quelques mots sur la couleur. (Utilisation de la palette pour établir les couleurs standard) Dans cette partie, nous parlons beaucoup des couleurs. Il serait bon que les vôtres correspondent aux nôtres. Pour éviter toute confusion, prenez une minute pour vous assurer que la palette de votre ordinateur donne les couleurs standard. • Si vous utilisez un écran vidéo RGB (rouge/vert/bleu), tapez PALETIE RGB (ENTERl • Si vous utilisez un écran vidéo CMP (à signal complet) et si vous avez modifié la palette, tapez PALETIE CMP (ENTERl Passons maintenant à votre premier point. Votre premier point (Commande PSET) Avec votre ordinateur couleur, vous pouvez facilement mettre un point sur l'écran. Tapez donc le programme suivant: 2 5 10 20 30 40 W I DT H 3 2 PMODE 1 , 1 PCLS SCREEN 1 , 1 PSET (1 0 , 20 ,8) G O T O 40$ 115 19 I L 'ORO/NA TEUR FA IT LE POINT Exécutez ce programme. L'écran doit être de couleur chamois; si vous l' observez attentivemert, vous pouvez voir un petit point orange dans le coin supérieur gauche. Ce point a été placé par PSET (placement) à la ligne 30. PSET permet de placer un point n'importe où sur l'écran. Sa syntaxe est: P s E T (x,y,c,} place un point sur l'écran courant de graphiques x correspond à la position horizontale (0 à 255) y corresoond à la position verticale (0 à 1 91) c correspond à la couleur (0 à 8). Si vous omettez c, le BASIC utilise la couleur courante du premier plan. L'ordinateur divise l'écran en une grille de près de 50,000 points (256 horizontalement et 1 92 verticalement}. u n coup d'oeil à la ligne 30 pour c.;omprendre comment point: (1 o horizontalement et 20 verticalement): Jetez 30 PSET spécifie la position de PSET ( 1 0 , 20 , 8) La commande suivante permet de placer le point au centre de l'écran: P S E T ( 1 2 8 , 96 , 8 ) Ajoutez maintenant une ligne de programme qui place le point dans le coin inférieur droit (255 horizontalement et 1 9 1 verticalement). Avez-vous utilisé la ligne suivante? 35 P S ET ( 2 5 5 , 1 9 1 , 8 ) Si c'est le cas, félicitations! Vous avez marqué un point! Listez le programme qui doit avoir l ' aspect suivant: 2 W I DTH 32 PMODE 1 , 1 5 10 P C LS S C R E EN 1 , 1 20 P S E T ( 1 0 , 2 0 , 8) 30 P S E T ( 2 5 5 , 1 91 , 8 ) 35 GOTO 40 40 Vous avez p r i s un bon 116 dl p a rt . 1 9 / L 'ORO/NA TEUR FAIT LE POINT Mais et la couleur? (Spécification des couleurs avec PSET) A ce stade, vous avez probablement compris que vous pouvez faire varier les couleurs en donnant à c une valeur différente entre 0 et 8. C'est vrai jusqu'à un certain point, mais (ce mais est de taille) vous ne pouvez afficher que quatre couleurs. Nous en verrons plus tard la raison, aux chapitres 21 et 22, dans l'étude de PMODE et des jeux de couleurs. Pour le moment, ne vous inquiétez pas si vous n'obtenez pas toujours la couleur désirée. Avec la commande PMODE et le jeu de couleurs courants, vous disposez des couleurs suivantes: Code Case Couleur de couleur de palette standard Couleur Couleur Couleur Couleur 4 5 6 7 Chamois Turquoise Lilas Orange 1 ou 5 2 ou 6 3 ou 7 0, 4 ou 8 Par exemple, avec la commande PMODE et le jeu de couleurs courants, la couleur 1 et la couleur 5 spécifient toutes deux la couleur de la case 4. Si vctre palette est établie pour produire les couleurs standard, vous obtenez la couleur chamois. Si vous voulez changer les couleurs des points, utilisez le turquoise (2 ou 6) et le lilas (3 ou 7). Ramenez ensuite la couleur à l' orange (0, 4 ou 8) avant de continuer. Un jeu de cache-cache (Commande PRESET) Savez-vous faire disparaître un point? Disons que c'est facile et que c'est une question de couleur! En fait, vous ne faites pas vraiment disparaître le point; vous changez simplement sa couleur pour qu'il se mêle à la couleur de fond. Dans ce but, vous utilisez la nouve;Je co. -rmande PRESET (remise d'un point à l'état initial). PRESET "sait" que vous voulez ut.lise< 'a colieur de 'and; vous n'avez donc pas à l'indiquer. P R E s E T (x,y)e remet un point à la couleur de fond courante sur l"éc<a"l �-2:"" :::e graphiques à basse définition. x correspond à la position horizontale (0 à 255) y correspond à la position verticale (0 à 1 91) 117 19 I L 'ORO/NA TEUR FAI T LE POINT EXERCICE 1 9-1 Vous souvenez-vous de la fonction AND (nombre au hasard) de la partie 2? Si ce n'est pas le cas, jetez-y un coup d' oeil puis écrivez un court programme pour remplir l'écran de points en couleurs au hasard. Détermination d'un point (Fonction PPOINT) PPOINT est très voisin de PSET et RESET. Il permet de déterminer la couleur d'un point sur l'écran. P P O I N T (x,y) indique la couleur d'un point sur l'écran courant de graphiques: x correspond à la position horizontale du point (0 à 255) y correspond à la position verticale du poin: (0 à 1 9 1) Cet exemple montre l'utilité de PPOINT dans un programme: 2 W I DTH 32 5 PMODE 3 , 1 P C LS 10 15 SC REEN 1 , 1 X = RND ( 1 0 ) 30 35 Y = RND ( 1 0 ) C = RND(8) 40 50 PSET ( X , Y , C > IF PPOINT (5 , 5 ) =8 THEN GOTO 1 0 5 60 GOTO 3 0 70 C LS 1 05 P R I NT @ 1 0 0 , " LA POS I T I ON ( 5 , 5 ) A M A I N T E NANT LA COULEUR 8 " 110 L'ordinateur remplit un carré de 1 0 x 1 0 (dans le coin supérieur gauche de l'écran) de points de couleurs au hasard. Quand la position (5,5) a la couleur 8, l' ordinateur affiche le message "LA POSITION (5,5) A MAINTENANT LA COULEUR 8". Appris au chapitre 1 9 1 18 COMMANDES FONCTION PSET PRES ET PPOINT 20 I U N E LIGNE À S U IVRE! Vous pouvez maintenant placer un point sur l'écran; vous pouvez même en placer plusieurs. C'est pourtant là un point de départ bien modeste si vous êtes bien impatient de créer de "vrais graphiques". À cet égard, pensez à certains de vos tout premiers dessins. Rappelez-vous les dessins que vous avez faits en réunissant une série de points. Votre ordinateur "dessine" de la même manière. Vous devez lui indiquer les points à relier rom qu'il trace un trait. Tracé d'un trait (Commande LINE) Pour indiquer à l'ordinateur de tracer un trait entre des points, vous pouvez utiliser la commande UNE. Pour voir UNE à !'oeuvre, modifiez le programme qui établit les points. (Pour le côté pratique, appelons ce programme "TRAITS"). Changez d'abord la ligne 30 pour avoir: 30 L I N E ( 0 , 0) - (255 , 1 91 > , PSET Annulez ensuite la ligne 35 en tapant: 35 œrreID Votre programme a maintenant cette allure: 2 W I D TH 3 2 5 PMOOE 1 , 1 PCLS 10 20 S C REEN 1 , 1 30 LINE ( 0 , f D - <2 5 5 , 1 91 > , PSET GOTO 40 40 Exécutez ce programme. Sur l'écran, u n trait doit joindre l e com inférieur droit. suDér-e..!· ga...c-e a.. co., ­ Essayez donc maintenant de changer ce trait pour le ia:re a:e· c_ coin supérieur droit. ::c- �-::;:..- 7L'"-e a... 119 20 I Une Ligne à Suivre! Vous avez probablement déjà trouvé; dans l e cas contraire, voici l a nouvelle ligne 30: 30 LINE < 0 , 1 91 ) - (2 5 5 , 0) , PSET Tracé de deux traits (Exemple avec LINE) Comment tracer des traits qui se croisent? I nsérez de nouveau la ligne 30 initiale qui a tracé le premier trait. (Donnez-lui d'abord le numéro 25.) Exécutez le programme. L'écran présente-t-il deux traits qui se croisent au centre? En fait, vous pouvez placer autant de traits que vous le désirez sur l'écran, quand vous aurez appris la syntaxe qui est la suivante: L I N E (x1 ,y1)-(x2,y2),a, b trace un trait ou une case sur (x1,y1) correspond au point de départ du trait. (x2,y2) correspond au point de fin du trait. l ' écran courant de graphiques: a correspond à PSET (établissement) ou à PRESET (remise à l' état initial). b correspond à B (case) ou à BF (case rem plie). Cette valeur est facultative. Remarque: Comme nous le voyons ci-dessous, on peut omettre le point de départ. Il peut parfois arriver que vous dési riez tracer un trait qui commence au point final d'un autre. Dans un tel cas, vous pouvez omettre le point de départ du nouveau trai:. Voici un exemple: 30 35 LINE ( 0 , 0 ) - ( 255 , 1 9 1 ) , PSET L I N E - ( 1 9 1 , 0 ) , P S ET La ligne 20 trace un trait de (0,0) à (255, 1 9 1 ). La ligne 30 trace un autre trait qui va de (255, 1 9 1 ) à (191 ,0). Effacement d'un trait (Options PSET et PRESET) Vous avez peut-être remarqué que LINE n'a pas d'option de couleur. A la place, elle comprend les options PSET et PRESET qui permettent de spécifier si l'on veut utiliser la couleur de premier plan ou de fond. Jetons encore un coup d'oeil aux lignes de programme qui ont créé les traits croisés: 30 35 L I N E ( 0 , 0 ) - ( 255 , 1 91 ) , P SET L I N E ( 0 , 1 91 ) - ( 2 5 5 , 0 > , P S E T D'après votre expérience avec l'établissement et la suppression des points au chapitre 1 4, avez-vous une idée de ce qui se passerait si vous remplaciez PSET par PRESET? Essayez donc. Tapez: 30 1 20 LINE (0,0)- (255 , 1 91 ) , PRESET 20 / Une Ligne à Suivre! Si vous avez deviné que le trait du coin supérieur gauche au coin inférieur droit allait disparaître, vous avez raison. • PSET établit le trait • PRESET ranène le trait à la couleur de fond. A la couleur du premier pl an . Avant de continuer, ramenez le paramètre PRESET de la ligne 30 à PSET. Pour faire une case. {Option B) Nous en avons presque terminé avec UNE, mais il nous reste encore quelques points à voir. B correspond à " BOX" (case). Avec les graphiques à basse définition, vous pouvez tracer une case sans devoir écrire une ligne séparée de programme pour chaque côté. Il vous suffit de spécifier deux coins opposés de la case et d'ajouter ,B à l'instruction. Quand vous exécutez le programme, l'ordinateur crée une case, à la place d'un trait. Pour le montrer, remettez le programme "Traits" en service. 2 5 10 20 25 30 40 W I OT H 3 2 PMOOE 1 , 1 PCLS S CREEN 1 , 1 L I N E ( 0 , 0) - ( 25 5 , 1 9 1 > , P S E T L I N E ( 0 , 1 91 ) - ( 2 5 5 , 0 ) , P S E T GOTO 4 0 Tel quel, ce programme crée deux traits qui se croisent au centre de l'écran. Annulez la ligne et ajoutez le suffixe ,B à la ligne 25. 30 25 L I N E ( 0 , 0) - (255 , 1 9 1 > , PSET , B Que se passe-t-il quand vous exécutez le programme? Voilà certainement une case bien exécutée! EXERCICE'. :?0-1 Écrivez un programme qui crée une case avec deux traits se croisant au centre. Nous indiquerons pourquoi ces couleurs sont les seules disponibles quand nous étudierons PMODE et SCREEN dans les chapitres suivants. Une case bien remplie {Option BF) Nous en avons presque terminé avec LINE. Reportez-vous au format de LINE et vous verrez que vous disposez de r o o:-on au suffixe facultatif , B . F vous permet de remplir l a case avec l a couleur du premier plan Essa,ez la ligne 25 pour avoir: 25 c · a_ou�e r F c �-c c� a..,çez LINE < 0 , 0 ) - (255, 1 9 1 > , P S ET , B F Qu'en pensez-vous? Votre case est maintenant b;e'1 CO.O'ée î2i 20 / Une Ligne à Suivre! EXERCICE 20-2 Êtes-vous prêt à essayer votre propre programme "Traits"? Pouvez-vous bâtir une 20 du programme "Traits". N 'ou bl iez pas d'ajouter: maiso n? Commencez avec les lignes 5, 1 0 et • Une porte de devant. • Au moins une fenêtre. • Une cheminée. Le style d'ensemble vous appartient (ranch californien, maison à étages, etc.), mais nous avons inclus un exemple de programme de maison (vue agréable, pas d'animaux) à la fin de ce l ivre. Ne vous inquiétez pas des boutons de porte; nous les ajouterons par la suite. Sauvegardez ce programme sur cassette, car nous l'utiliserons plus tard. EXERCICE 20-3 Voici un exercice que vous devriez trouver vraiment intéressant. Vous savez que la ligne droite est la distance la plJs courte entre deux points. Pour mettre un peu plus d'écart entre nos deux points, utilisez l'instruction UNE pour tracer une ligne brisée. Pour commencer, utilisez les lignes 5, 1 0 et 20 du programme "Traits". Appris au chapitre 20 COMMANDE UNE 122 2 1 I L' ÉCRAN ARGENTÉ Êtes-vous prêt à faire connaissance d \.. ne autre commande? Si oui, éteignez les lumières et préparez-vous pour le spectacle, car nous allons lever le rideau sur l'écran argenté. Lumière sur l'écran argenté (Commande SCREEN) Jetez encore un coup d'oeil à notre programme "Traits" et en particulier à l'instruction SCREEN de la ligne 20. 2 5 10 20 25 30 40 W I DT H 3 2 PMODE 1 , 1 PCLS SCREEN 1 , 1 L I N E ( 0 , 0 ) - ( 2 5 5 , 1 91 > , P S E T L I N E ( 0 , 1 91 ) - ( 2 5 5 , 0 ) , P S E T GOTO 40 SCREEN indique a l'ordinateur d'afficher une image sur l'écran. Le genre d'image dépend des instructions données: • Vous devez d'abord indiquer à l'ordinateur si vous voulez utiliser l'écran pour le texte ou les graphiques. • Vous devez ensuite indiquer à l'ordinateur le jeu de couleurs s cR EEN type, jeu de couleurse affiche l'écran courant de grapt>·o_es o... Je type correspond à 0 (écran de texte) ou à 1 (écran de jeu de couleurs correspond à 0 ou 1 . Remarque: si le rype ou le jeu de couleurs corresporo 2 1 , l'ordinateur utilise la valeur 1 . à 2 u:'se- _- :eir.:e g ·a::r::: _ as i1!0i""':YE ::::cs:i 5'.;:;e-a· 123 21 I L'écran Argenté Dans le programme "Traits", changez la ligne 20 pour avoir: 20 S C R E EN 0 , 0 Exécutez le programme. L'ordinateur " raccroche-t-il " ? (Presser (BREAKJ pour reprendre les choses en main.) En fait, l'ordinateu· a exécuté "Traits· ', comme auparavant. Cette fois-ci, il n'a cépendant pas montré l'écran de graphiques. Vous lui avez demandé d'afficher l'écran de texte à la place. Changez maintenant la ligne 20 pour avoir: 20 S C REEN 1 , 0 Vous pouvez voir que vous avez encore changé l'écran de graphiques, mais cette fois-ci, vous avez aussi changé le jeu de couleurs. Au premier coup d'oeil, il semble que vous n'avez que deux choix de couleurs: O et 1 . En fait. vous avez un choix bien plus étendu. Vous changez des jeux de couleurs et non des couleurs individuelles. Les tables 21 . 1 et 2 1 .2 donnent les deux jeux de couleurs et précisent l' utilisation de la palette par l'ordinateur avec chaque jeu. Table 2 1 . 1 Jeu d e couleurs O Numéro de couleur Case de palette Couleur standard 1 ou 5 2 ou 6 3 ou 7 o. 4 ou 8 o· Vert Jaune Rouge Bleu 1 2 3*. * Couleur de fond par défaut. * * Couleur de premier plan par défaut. Table 2 1 .2 Jeu de couleurs 1 Numéro de couleur Case de palette Couleur standard 1 ou 5 2 ou 6 3 ou 7 0, 4 ou 8 4* 5 6 7** Chamois Turquoise Lilas Orange • Couleur de fond par défaut. * • Couleur de premier plan par défaut. Par exemple, dans le jeu de couleurs 0, l'ordinateur utilise la couleur mémorisée dans la case 1 comme couleur de fond par défaut. Si la palette de votre ordinateur est réglée pour donner les couleurs courantes, le jeu de couleurs 0 donne un fond vert. EXERCICE 2 1 - 1 Écrivez un programme qui per:nette de passer de l'écran de texte à l'écran de graphiques. Vous pouvez placer une boucle dans le programme pour qu'il change le jeu de couleurs après avoir exécuté la suite d'opérations. Vous pouvez ainsi voir toutes les fonctions de SCREEN à l'oeuvre. 21 I L 'écran Argenté Changement des couleurs de premier plan et de fond (Commande COLOR) Nous avons utilisé l'expression "par défaut" pour décrire les couleurs de premier plan et de fond. La commande COLOR permet de choisir vous-même le·s couleurs. La syntaxe de COLOR est: C O L O R c 1 ,c2 établit les couleurs de premier plan et de fond de l'écran courant de graphiques: et correspond à la couleur du premier plan (0 à 8). c2 correspond à la couleur de fond (0 à 8). Par exemple, insérez la ligne 6 dans le programme " Traits": 6 C O LOR 6 , 7 Exécutez le programme. 6 correspond à la couleur de premier plan et 7 à la couleur de fond. Pour inverser ces couleurs, changez la ligne 6 pour avoir: 6 C O LO R 7 , 5 Avant de continuer, annuler la ligne 6 de votre µrogramme. Un écran de texte qui commence bien (Commande WIDTH) Voyons maintenant une autre commande dans le programme "Traits": 2 W I DT H 3 2 Cette ligne sert uniquement de précaution. Quand vous exécutez "Traits", nous voulons nous assurer que l'ordinateur n'est pas réglé sur l'un des écrans de texte à haute définition (40 X 24 OU 80 X 24). Quelle est l'importance de cette précaution? Le BASIC ne peut pas donner de graphiques à basse définition sur un écran de texte à haute définition. PoJr vous en rendre compte, annulez la ligne 2, passez à un écran de texte à haute définition et exécutez le programme. D E L 2 ŒN:'.ŒID W I D T H 40 (ENTER) R U N ŒNifft:l L'ordinateur paraît "raccrocher". li n'a pas eu de problème avec le programme "Traits". ma:s il n'a pas pu exécuter la commande SCREEN à partir de l'écran de texte à haute déf.lli:;on. Revenez à l'écran 2 de texte à basse définition et exécutez le programme W I DT H 3 2 � 125 21 / L 'écran Argenté Effacement de l 'écran de graphiques (Commande PCLS) Votre programme "Traits" doit se présenter ainsi: 2 5 10 20 25 30 40 W I DTH 3 2 PMODE 1 , 1 P C LS S C REEN 1 , 1 L I N E (0 , 0 ) - ( 2 5 5 , 1 91 > , P S E T L I N E (0 , 1 9 1 ) - ( 2 5 5 , 0 ) , P S E T G O T O 40 J e t e z un c o u p d ' o e i l f a la l i g n e 1 0 q u i c o n t i e n t l a c o m m a n d e P C LS . C e t t e commande e f f a c e l ' J c r an de grap h i q u e s . ( E l l e remp l i t l a m}eme fon c t i o n a v e c l ' ] c ran de g r a p h i qu e s que C L S a v e c l ' J c ran d e t e x t e . ) Vo i c i l a s y n t a x e d e P C L S : P c L s couleur efface l'écran courant de graphiques: la couleur peut varier de 0 à 8. Si vous omettez la couleur, l'ordinateur efface l'écran et le ramène à la couleur de fond courante. Le programme "Traits" n'utilise pas l'option couleur de PCLS. Par suite, l'ordi nateur utilise la couleur de fond courante. Retapez la ligne 1 O pour avoir: 10 P C LS 6 6 correspond maintenant à la couleur de fond. Appris au chapitre 21 COMMANDES SCREEN WIDTH CO LOR PCLS PALETIE 126 22 I DES PMODE À LA MODE Quand vous écrivez un programme de graphiques à basse définition, vous devez prendre les trois éléments suivants en considération: • Positions sur l'écran-Vous pouvez utiliser simultanément jusqu'à 256 x 1 92 positions. • Couleurs-Vous pouvez utiliser jusqu'à quatre couleurs à la fois. • Écrans-Vous pouvez utiliser jusqu'à huit écrans à la fois. Le degré d'utilisation d'une fonction (par exemple, positions sur l'écran) réduit votre latitude avec les deux autres (couleurs et écrans). PMODE, nouvelle commande du programme "Traits", fixe les fonctions que vous désirez utiliser. PMODE vous donne un choix de cinq réglages qui sont indiqués à la table 22. 1 . Table 22.1 Réglages de PMODE Positions PMODE PMODE PMODE PMODE PMODE 4 3 2 1 0 256 1 28 1 28 1 28 1 28 1 92 1 92 X 192 X 96 X 96 X X Couleurs Écrans 2 4 2 4 4 4 2 8 2 2 127 22 / Des PMODE à la Mode "Traits" en PMODE 4 (Changement des réglages de PMODE) Rappelez le programme "Traits" pour voir son allure avec une commande PMODE différente Si vous l'aviez oublié, voici le programme "Traits" : 2 5 10 20 W I D TH 3 2 PMODE 1 , 1 P C LS S C R E EN 1 , 1 Passez maintenant de PMODE 1 à PMODE 4. 5 P M O D E 4, 1 Exécutez le programme. Vous devez apercevoir immédiatement deux changements: • Les traits sont bien plus fins parce que vous avez passé de PMODE avec 1 28 x 1 92 positions à PMODE avec 256 x 1 92 positions. • La couleur change parce que vous êtes passé de PMODE à quatre couleurs à PMODE à deux couleurs. (Le chapitre 23 parle de la troisième fonction qui permet d'utiliser plus d'un écran ) Changement des positions disponibles (Positions avec PMODE) Quand vous avez passé à un PMODE différent, vous 1'avez pas dû changer les positions des points. Le BASIC vous permet d'utiliser la même grille d'écran de 256 x 1 92, quelles que soient les positions d'écran disponibles. Par exemple, (128, 96) correspond toujours au centre de l'écran, quelle que soit la commande PMODE utilisée. (256, 1 92) correspond toujours au coin inférieur droit de l'écran. L'utilisation de la grille d'écran par le BASIC dépend de la commande PMODE. 128 • En PMODE avec 1 28 x 96 positions, le BASIC établit quatre points pour chaque point spécifié. Par exemple, si vous demandez au BASIC d'établir le point (0,0), il fixe aussi (1 ,0), (1 , 1 ) et (0, 1 ) . • En PMODE avec 1 28 x 1 92 positions, le BASIC établit deux points pour chaque point spécifié. Par exemple, si vous demandez au BASIC d'établir le point (0,0), il fixe aussi (1 ,0). • En PMODE avec 256 x 1 92 positions, le BASIC fixe un point pour chaque point spécifié. 22 / Des PMODE à la Mode Par suite, une diagonale en PMODE avec 1 28 x 96 positions ressemble davantage à un escalier qu'à un trait tracé en PMODE avec 256 x 192 positions. ->-. -• • • -� -- PMODE avc 1 28 x 96 positions • • • • • • • • PMODE avec 256 x 192 positions Le nombre permis de positions différentes d'écran en PMODE avec 1 28 x 96 positions est quatre fois plus bas que celui permis en PMODE avec 256 x 1 92 positions. Positions Available Screen Size of Dot Each High resolution 256 X 1 92 D Medium resolution 1 28 X 1 92 Low resolution 1 28 X 96 8 tE Dans la section "De tout et de rien", les feuilles de travail d'écran de graphiques donnent les positions disponibles avec chaque commande PMODE. Changement des modes de couleurs (Couleurs avec PMODE) Le mode à deux couleurs, comme le mode à quatre co u l eu rs. possède deux jeux de couleurs. Les tables 22.2 et 22.3 montrent les jeux de couleurs que vous pouvez utiliser en PMODE à deux couleurs. Table 22.2 Jeu de couleurs o Numéro de couleur Case de pal ette standard 2, 4, 6, 8 1 , 3, 5, 7 8* 9•. "._.::·:'° Couleur • Couleur de fond par défaut. • • Couleur de premier plan par défaut. 129 22 / Des PMODE à la Mode Table 22.3 Jeu de couleurs 1 Numéro de couleu r Case de palette Couleur standard 2, 4, 6, 8 1 , 3, 5, 7 10* 1 1 ** Noir _ Chamois Couleur de fond par défaut. * * Couleur de premier plan par défaut. • Comparez ces tables à celles du chapitre précédent qui donnent les deux jeux de couleurs disponi bles en PMODE à quatre couleurs. Cases avec PMODE (Avec exemple de changement de PMODE) Le programme suivant montre un cycle de cases dans chaque mode. Vous pouvez remarquer que, avec chaque mode, les traits de la case deviennent plus mi nces et les couleurs passent de deux à quatre. 2 5 10 20 30 40 50 60 70 W I DTH 3 2 FOR MODE = 0 T0 4 PMODE MO D E , 1 PCLS SC REEN 1 , 1 L I N E ( 7 5 , 5 0) - ( 1 2 5 , 1 0 0 ) , P S E T , B F O R Y = 0 T O 5 0 0 : N EX T Y NEXT MODE GOTO 5 Voici la syntaxe de PMODE. Le chapitre 24 explique l'utilisation du deuxième paramètre (page de début). PM o D E mode, page de début fixe l'écran courant de graphiques dans la mémoire de graphiques: mode spécifie les fonctions que vous voulez utiliser dans la mémoire de graohiques. Si vous omettez le mode, l 'ordinateur utilise le dernier mode ou (s'il n'en est précisé aucun) le mode 2. page de début spécifie la page de la mémoire de graphiques où débute u n écran de graphiques. Si vous omettez cette page, l'ordinateur utilise l a page de début précédente ou (s'il n'en est précisé aucune) la page 1 . De ce fait, si vous omettez PMODE, l'ordinateur utilise PMODE 2,1 . Appris au chapitre 2 2 COMMANDE PMODE 130 23 I U N EM PLOI DI FFÉRENT DE LA CO ULEUR Jusqu'à présent, nous nous sommes cantonnés aux couleurs standard dans tous nos programmes de graphiques. Dans ce chapitre, nous abordons les couleurs "non courantes" . Avant de commencer, reportez­ vous au chapitre 9 pour vous remémorer les codes de couleurs et la palette. Des traits genre rose (Utilisation graphique de la palette) Jetons encore un coup d'oeil au programme "Traits ". Utilisez la version avec la commande PCLS 6 . 2 5 10 20 25 30 40 WIDTH 32 PMODE 1 , 1 PCLS6 S CREEN 1 , 1 L I N E ( 0 , 0 ) - (255 , 1 9 1 ) , P SET L I N E ( 0 , 1 91 ) - ( 2 5 5 , 0 ) , P SET G O T O 40 Avec la palette standard, la commande PCLS6 donne un écra., :L� S "WO.S s::oc-:ez cependant le rose dans la case de palette qui crée la coc.Jet;· 6 :a m •a:U! ?OtSi � donne un écran rose. 131 23 I Un Emploi Différent de la Couleur Essayez donc et exécutez les opérations suivantes: 1. Notez la commande PMODE et le jeu de couleurs utilisés. Dans la version ci-dessus du programme ''Traits", vous utilisez PM ODE en quatre couleurs (PMODE 1 , 1 ) avec le jeu de couleurs 1 (SCREEN 1 , 1 ) . 2. Pour l a commande PMODE et l e jeu d e couleurs utilisés, déterminez la case d e palette qui donne la couleur 6. (Voir tables 2 1 . 1 et 2 1 .2). 4. Cherchez le code de couleur du rose dans la section "Codes de couleurs", à la fin de ce livre. Stockez ce code dans la case correspcndante de palette. 5. Exécutez le programme. Les traits croisés sont orange, comme auparavant, mais l'écran de fond est maintenant rose. 8 PALETTE 5 , code de cou l e u r EXERCICE 23-1 Changez la ligne 5 pour passer en PMODE avec deux couleurs: 5 PMODE 4 , 1 Essayez maintenant de faire passer l'écran au rose . . . . Avec un peu de brun foncé (Exemple avec palette et graphiques à définition moyenne) Les commandes de graphiques à basse définition utilisent toutes la palette de la même manière. Par exemple, changez la commande PCLS de la ligne 1 O pour avoir: 10 COLOR 7 , 6 Le programme "Traits" a mai ntenant l'aspect suivant: 2 5 10 20 25 30 40 W I DTH 3 2 PMODE 1 , 1 COLOR 7 , 6 S CREEN 1 , 1 L I N E ( 0 , 0 ) - ( 2 5 5 , 1 91 ) , P S E T L I N E ( 0 , 1 9 1 ) - ( 25 5 , 0 ) , P S E T GOTO 40 L a commande CO LOR rend l e premier plan lilas (couleur 7) et, après l a modification apportée à la palette, la couleur de fond devient rose (couleur 6). Dans cet exemple, nous modifions la palette pour que le premier plan passe au brun foncé, à la place du lilas. 132 23 / Un Emploi Différent de la Couleur Appliquez les opérations suivantes: 1. Notez la commande PMODE et le jeu de couleurs utilisés. Dans la version ci-dessus de "Traits". vous utilisez encore la commande PM ODE à quatre couleurs, avec le jeu de couleurs 1 . 2. Avec la commande PMODE et le jeu de couleurs que vous· utilisez, déterminez la case de palette qui donne la couleur 7. D'après la table 21 .2, la case 6 de la palette donne la couleur 7. 3. Cherchez le code du brun foncé. 4. Stockez ce code dans la case appropriée de palette. Tapez: 9 PA L E T T E 6 , c o d e de c o u l eu r s 5. Exécutez le programme. Le fond es: maintenant rose et les traits croisés sont brun foncé. EXERCICE 23-2 Changez la ligne 20 pour passer au jeu de couleurs 0: 5 PMODE 4 , 1 Essayez maintenant de faire passer le premier plan au brun foncé. Appris au chapitre 23 COMMANDE PALETIE 1 33 24 I À LA RECH ERCHE DE LA BO N N E PAG E En préparant ce livre, nous avons "stocké" des chapitres dans des pages. Certains chapitres demandent davantage de pages, d'autres moins. Dans le même ordre d'idées, le BASIC stocke les écrans de graphiques dars des pages de mémoire. Puur c;ertains écrans, il faut davantage de pages, pour d'autres moins. PMODE détermine le nombre de pages de mémoire nécessaires pour tracer un écran. D'après la table 24-1 , un écran dessiné avec une commande PMODE à définition plus élevée demande davantage de pages de mémoire qu'un écran préparé avec une commande PMODE à définition plus basse. Table 24-1 I Pages requises pour les écrans de graphiques Pages requises Écran Écran Écran Écran Écran Écran en en en en en PMODE PMODE PMODE PMODE PMODE 4 3 2 1 O 4 4 2 2 pages pages pages pages 1 page PMODE détermine aussi les pages stockées sur un écran. Changement de pages (Paramètre de page de début de PMODE) Voyons ce qui se passe si vous stockez maintenant l'écran "Traits" dans différentes pages 5 10 20 25 PMODE 1 , 1 P C LS S C REEN 1 , 1 L I N E ( 0 , 0 ) - (255 , 1 9 1 > , P SET 30 40 L I N E < 0 , 1 91 ) - (25 5 , 0) , P SET GOTO 40 135 24 / À la Recherche de la Bonne Page Arrêtons-nous à PMODE. Vous savez que le premier paramètre de PMODE indique à l'ordi nateur de commencer un écran en PMODE 1 . Comme l'indique la table 24-1, un écran en PMODE 1 requiert deux pages. Le deuxième paramètre indique à l'ordinateur de commencer l'écran à la page 1 . L'écran "Traits" de deux pages se trouve ainsi aux pages 1 et 2. Pour mettre l'écran "Traits" de deux pages aux pages 3 et 4, tapez: 5 PMO D E 1 , 3 Exécutez le programme. Nous avons encore le même écran, mais il est stocké dans des pages différentes. Des traits sur des écrans différents (Changement de l'écran courant de graphiques) Voulez-vous stocker un écran sur les pages 1 et 2 et un autre sur les pages 3 et 4? Tapez le programme suivant: 5 10 25 PMO D E 1 , 1 PC LS L I N E ( 0 , 0 ) - ( 2 5 5 , 1 91 > , PS ET stocke l'écran sur les pages 1 et 2 27 28 30 PMO D E 1 , 3 PC LS L I N E ( 0 , 1 91 ) - ( 2 5 5 , 0 ) , P SET stocke l'écran sur les pages 3 et 4 40 GOTO 40 La première partie d u programme commence u n écran en PMODE 1 sur les pages 1 et 2 . Elle efface cet écran et y trace u n trait. La partie suivante du programme commence un autre écran en PMODE 1 sur les pages 3 et 4. Elle efface cet écran et y trace un trait. Exécutez le programme. Aucun écran n'apparaît. car i l n'y a pas d'instructions SCREEN. Ajoutez donc cette commande: 35 S C REEN 1 , 1 Le programme a maintenant l 'aspect suivant: 5 10 25 PMODE 1 , 1 P C LS LINE ( 0 , 0 ) - (255 , 1 9 1 ) , PSET stocke l 'écran sur les pages 1 et 2 27 28 30 PMODE 1 , 3 PC LS L I N E ( 0 , 1 9 1 ) - ( 2 5 5 , 0 ) , P S ET stocke l'éc·an sur les pages 3 et 4 35 SCREEN 1 , 1 40 GOTO 40 Exécutez le programme. Seul l'écran courant de graphiques, stocké sur les pages 3 et 4, apparaît. L'ordinateur utilise votre commande PMODE la plus récente pour déterrriner l 'écran courant de graphiques. Dans le programme ci-dessus, la commande PMODE la plus récente est à la liQne 27. Elle spécifie l'écran stocké sur les pages 3 et 4. 136 24 / À la Recherche de la Bonne Page Insérez une autre ligne PMODE avant SCREEN: 32 PMOD E 1 , 1 Exécutez de nouveau le programme. L'ordinateur affiche maintenant un écran courant de graphiques différent qui est celui stocké sur les pages 1 et 2. EXERCICE 24-1 Avec le BASIC couleur, affichez un écran en PMODE 2 qui commence à la page 2. Avez-vous une idée de ce qui va apparaître? Changez la ligne 32 pour avoir PMODE 2 , 2 et exécutez le programme. PMODE 2 utilisant 2 pages, vous voyez le contenu des pages 2 et 3. L'ordinateur étant en PMODE 2, cet écran apparaît en deux couleurs, avec basse définition. Permutation des écrans (Exemple avec le paramètre de début de page de PMODE) Le dessin animé consiste à préparer de nombreuses images fixes et à les faire défiler rapidement. Voici donc le moment tant attendu! Ce programme fait défiler les écrans pour montrer deux traits en mouvement: 5 10 25 PMODE 1 , 1 P C LS LINE ( 0 , 0 ) - (255 , 1 91 > , PSET stocke l'écran sur les pages 1 et 2 27 28 30 PMODE 1 ,3 P C LS LINE < 0 , 1 91 ) - ( 2 5 5 , 0 ) ,PSET stocke l'écran pages 3 et 4 32 34 36 PMODE 1 , 1 SCREEN 1 , 1 FOR I=1 TO 200: NEXT I affiche l'écran des pages 1 et 2 38 40 42 PMODE 1 ,3 S C R E EN 1 , 3 F O R I = 1 TO 2 0 0 : N E X T I affiche l'écran des pages 3 et 4 44 GOTO 3 2 sur les Addition de pages (Commande PCLEAR) Vous pouvez utiliser un maximum de huit pages de mémoire de graphiques (pages 1 à 8). Toutefois, quand vous débutez, le BASIC ne vous en donne que la moitié (pages 1 à 4). Par exemple, apportez le changement suivant au programme "Traits": 5 PMODE 1 , 4 Pour remédier au problème, insérez la ligne 4. Vous disposez maintenant des huit pages. 4 PC LEAR 8 137 24 / À la Recherche de la Bonne Page PCLEAR permet de réserver de une à huit pages de mémoire. Vous devez utiliser PCLEJl.R comme première ou deuxième commande dans votre programme (après CLEAR, si vous l'utilisez). P c L E A R pages réserve les pages de mémoire de graphiques: les pages correspondent à la place de mémoire de graphiques à réserver (0 à 8). A la mise en marche, l'ordinateur réserve automatiquement quatre pages. Utilisez PCLEAR pour réserver plus ou moins de pages. Vous vous demandez peut-être pourquoi nous n'utilisons pas toujours PCLEAR 8. Cette instruction réduit la place de mémoire de programme. Il arrive que vous ayez besoin de plus de mémoire de programme; parfois il vous faut davantage de mémoires de graphiques. PCLEAR permet de fixer vos besoins. De haut en bas et de bas en haut (Exemple avec PCLEAR) Vous pouvez utiliser les pages réservées avec PCLEAR pour stocker plusieurs écrans. Si vous dessinez différentes images sur chaque écran, vous pouvez leur donner l'impression du mouvement avec PMODE. 10 20 30 40 50 60 70 80 90 100 110 1 20 130 1 40 P C LEAR 8 FOR P=I TO 8 PMODE 0 , P P C LS L I N E ( 1 2 8 , 0 ) - ( 1 3 8 , 1 0 + ( P -1 ) * 1 5 ) , P S E T C I R CLE C1 28, P*1 5 ) , 1 5 NEXT P F O R P=1 TO 8 : G O S U B 1 1 0 : N E X T P FOR P=7 TO 1 STEP - 2 : G O S U B 1 1 0 : N E X T P GOTO 80 PMODE 0 , P S CREEN 1 , 0 FOR T=1 TO 1 0 : NEXT T R ET U R N A l 'exception de CIRCLE (voir chapitre suivant), vous connaissez déjà toutes les fonctions utilisées avec ce programme. 138 24 / À la Recherche de la Bonne Page Copie de pages (Commande PCOPY) Avec PCOPY (copie de page), vous pouvez copier une page de mémoire de graphiques sur une autre. Voici le format de PCOPY: P c o P Y page 1 TO page 2e copie la page 1 sur la page 2 Par exemple, pour copier la page 3 sur la page 8, tapez: PCOPY 3 TO 8 PCOPY présente l'avantage de pouvoir abréger les programmes en éliminant la répétition. N ' oubliez pas que PCOPY copie une page de mémoire de graphiques. Excepté si vous êtes en PMODE 0, une page ne constitue pas un écran. Par exemple, en PMODE 4, l'instruction ci-de�sus ne copie qu'un quart d 'écran. EXERCICE 24-2 Le programme suivant présente quatre carrés disposés en même temps sur l'écran et couvrant quatre pages différentes de mémoire. Exécutez ce programme puis abrégez-le à l'aide de PCOPY. 4 5 10 11 12 20 21 22 30 31 32 40 41 42 50 PC LEAR 8 PMOD E 3 , 4 PC LS SCREEN 1 , 1 L I N E ( 1 1 0 , 2 0 ) - ( 1 20 , 3 0 ) PMODE 3 , 3 S C REEN 1 , 1 L I N E ( 1 1 0 , 20 ) - (1 20,30) PMODE 3 , 2 S C R EEN 1 , 1 L I N E (1 1 0 , 20 ) - ( 1 20 , 30) PMO DE 3 , 1 S C R EEN 1 , 1 L I N E ( 1 H J , 20 ) - ( 1 2 0 , 3 0 ) GOTO 50 , PSET B , PSET B , PSET B , P SET B EXERCICE 24-3 A l'aide de LINE et de page de début, simulez un orage. Placez des traits à des positions au hasard sur des pages différentes. Permutez ensuite les pages. Appris au chapitre 24 COMMANDES PMODE PCLEAR PCOPY 139 25 I POUR TOU RNER EN RON D Si les explications sur SCREEN, PMODE et PCLEAR vous étourdissent un peu, vous n'avez encore rien vu! Vous pouvez par exemple créer un cercle complet, un cercle partiel ou une ellipse (cercle oblong) avec la seule commande CIRCLE. Voici la syntaxe de CIRCLE: c r R c LE (h, v), r,c,hw,début,fin trace un cercle sur l'écran courant de graphiques: x correspond à la position horizontale du centre (0 à 255). y correspond à la position verticale du centre (0 à 1 9 1 ). r correspond au rayon en points d'écran. (Si r est supérieur à 95, le cercle s'aplatit contre les côtés de l'écran.) c correspond à toute couleur disponible (0 à 8). Si vous omettez c, l'ordinateur utilise la couleur du premier plan. hw correspond au rapport hauteur/largeur (0 à 255). Si vous omettez hw, l'ordinateur utilise 1 . début correspond au point de départ (0 à 1). Si vous omettez début, l' ordinateur commence à O. fin correspond au point de fin (0 à 1 ). Si vous omettez fin, l'ordi nateur utilise 1 . Si le point de début correspond au point de fin ou si vous omettez ces deux points. l'ordinateur trace l'ellipse complète. Avec CIRCLE, vous n'avez besoin que du centre du cercle et du rayon (dis:ance du centre au bord du cercle). Il est temps de remettre le programme "Traits" en service. 5 PMODE 1 , 1 PCLS 10 20 SCREEN 1 , 1 25 L I N E ( 0 , 0 ) - ( 2 5 5 , 1 91 > , P S E T 30 L I N E ( 0 , 1 91 > - ( 2 5 5 , 0 ) , P S E T G O T O 40 40 Annulez la ligne 30 2 5 et changez la ligne 30 pour avoir: C I R C L E ( 1 2 8 , 96) , 95 Exécutez le programme. L'écran présente un cercle plutôt mal fait. Pourquoi le cercle n'est-il pas vraiment rond? Jetez un coup d'oeil à la ligne 5 pour comprendre: l 'ordinateur est en PMODE 1 (vous n'avez que 1 28 x 1 92 positions). 141 25 / Pour Toumer en Rond Passez de PMODE 1 à PMODE 4 (256 x 1 92) de la façon suivante: 5 PMODE 4 , 1 PCLS 10 20 S C R E EN 1 , 1 30 C I R C LE ( 1 2 8 , 9 6 ) , 9 5 4 0 G O T O 40 Exécutez le programme. Vous avez maintenant un vrai cercle! EXERCICE 25-1 A l'aide du programme ci-dessus, créez une cible. Vous pouvez vous y prendre de deux manières: • Ajoutez une ligne séparée de programme pour chaque cercle concentrique et utilisez un centre commun (coordonnées h, v). • Utilisez une boucle FOR . . . NEXT avec STEP 1 O. EXERCICE 25-2 Avez-vous conservé votre programme de construction de maison? Avec C I RCLE, mettez un bouton sur la porte de devant. Pour une image plus détaillée, exécutez le programme en PMODE 4. De la couleur dans le cercle (Option de couleur) Quand vous déc idez du rayon d u cercle, choisissez sa coul eur. En PMODE avec deux couleurs, vous n'avez guère le choix, mais en ?MODE à quatre couleurs (PMODE 1 ou 3), vos options s'élargissent. Votre programme doit être: 5 PMODE 1 , 1 10 P C LS 20 SCREEN 1 , 1 30 C I R C LE ( 1 2 8 , 9 6 ) , 9 5 GOTO 40 40 Tracez d'abord u n cercle de taille plus raisonnable: 30 C I R C LE ( 1 2 8 , 9 6) , 3 0 Pour varier un peu, passez maintenant à la couleur 6: 30 C I R C LE ( 1 2 8 , 9 6 ) , 3 0 , 6 C' est tout! En fait, vous pouvez fai re passer le cercle à l'une quelconque des couleurs disponibles. 142 25 / Pour Tourner en Rond Un cercle sous pression (Option de hauteuri argeur} Vous est-il jamais arrivé de déformer un cerceau ou un pneu de bicyclette pour en faire une ellipse? Vous pouvez transformer de même le cercle de l'écran en une ellipse à l'aide du rapport hauteur/largeur (hw). Quand vous spécifiez hw, la largeur du cercle reste la même, mais la hauteur est toutefois déterminée par hw. • Si hw est égal à 1 , la hauteur est égale à la largeur. • Si hw est supérieur à 1 , la hauteur est plus grande que la largeu'. • Si hw est inférieur à 1 , la hauteur est plus petite que la largeur. Par exemple, dans ce programme, hw est égal à 1 ; par suite, le programme trace un cercle parfait. 2 5 10 20 30 40 W I DTH 32 PMODE 4 , 1 PCLS SCREEN 1 , 1 C I R C L E (1 2 8 , 9 6 ) , 3 0 , 1 GOTO 40 Dans ce programme, h w est égal à 3; le programme trac e donc une ellipse plus haute que large: 30 C I R C LE ( 1 28 , 96) , 3 0 , , 3 Dans ce programme, h w est égal à .25; de ce fait, le programme trace une ellipse plus large que haute: 30 C I R C L E ( 1 2 8 , 96 ) , 3 0 , , . 2 5 Les lignes ci-dessus ne précisent pas la couleur (c). Nous devons encore insérer une virgule pour indiquer que nous omettons c. Sans cette virgule. l'ordinateur confond hw avec c. Changez la ligne 30 comme on l' indique ci-dessous puis exécutez le programme: 30 30 C I R CLE ( 1 2 8 , 96 ) ,3 0 , . 0 C I RCL E ( 1 2 8 , 96 ) , 3 0 , . 1 00 Quand hw est égal à 0 , l'ellipse devient alors infiniment plus large eue ��-:e e.e œ . e-:: une ligne horizontale). Quand hw est égal à un nombre élevé. l 'e!!.pse ce'. er -.:;.�e- ��ç_e (ligne verticale). 143 25 / Pour Tourner en Rond Un cercle incomplet (Option d'arc) Supposons que vous désirez tracer une partie d'un cercle (un arc). Dans ce but, spécifiez le début et la fin de l'arc, d 'après les indications du tableau ci-dessous. N'ouqliez pas que l'ordinateur trace toujours dans le sens des aiguilles d'une montre. .75 .50 0 .25 Remarque: Pour tracer utilisez hw 1 . un cercle, vous devez spécifier hw. Pour un arc normal, Par exemple. supposons que vous désirez tracer cet arc: .75 .25 A cet effet, utilisez cette commande: 30 C I R C LE ( 1 2 8 , 9 6 ) , 3 0 , 1 , . 2 5 , . 7 5 Changez maintenant la commande pour tracer l ' arc suivant: .75 .25 Votre nouvelle ligne 30 ressemble-t-elle à celle-ci? 30 C I R C LE ( 1 2 8 , 9 6 ) , 3 0 , 1 , . 7 5 , . 2 5 EXERCICE 25-3 La nuit est-elle tombée sur la maison que vous avez aâtie? Si c'est le cas, vous voudrez peut-être y mettre un peu de lumière en plaçant un croissant de lune dans un coin. A cet effet. il vous faut deux arcs qui se croisent et un peu de tâtonnements de votre part. 144 25 / Pour Tourner en Rond EXERCICE 25-4 Votre maison est donc dans le froid et l'obscu rité. Pourquoi ne pas allumer un feu et faire sortir de la fumée par la c'ieminée? (Avec CIRCLE, créez une spirale qui simule la fumée.) Appris au chapitre 25 COMMANDE CIRCLE 145 26 I U N GRAND COU P DE PI NCEAU Il ne faut pas oublier que nous travaillons avec un ordinateur couleur. Jusqu'à présent, nous avons mis une petite touche de couleur ici et là. Nous n'avons pas encore créé de chef­ d'oeuvre! Il est maintenant temps d'ouvrir notre pot de peintur�. La commande PAINT permet de " pe'ndre" une forme quelconque avec toute couleur disponible. Sa syntaxe est: P A I N T (x,y),c,b peint l'écran cou rant de graphiques: x correspond à la position horizontale (0 à 255) du point où la peinture doit commencer. y correspond à la position verticale (0 à 1 91 ) . c correspond à l a couleur (0 à 8). b correspond à la couleur de la bordure où la peinture doit s' arrêter (0 à 8). Si l'ordinateur arrive à une bordure qui n'est pas de la couleur spécifiée, il dépasse cette bordure. Changez le programme "Traits" pour avoir: 2 W I D TH 3 2 5 PMODE 3 , 1 PC LS 10 20 SCREEN 1 , 1 3 0 L I N E ( 0 , 0 ) - (2 5 5 , 1 9 1 > , P S E T 40 L I N E ( 0 , 1 91 ) - ( 2 5 5 , 0 ) , P S E T 50 C I R C L E ( 1 2 8 , 96 ) , 9 0 60 PAINT (135 , 1 2 5 ) , 8 , 8 7 0 GOTO 70 147 26 / Un Grand Coup de Pinceau Pouvez-vous prévoir le résultat? Les lignes 30 et 40 donnent des lignes qui se croisent. La ligne 50 crée un cercle dont le centre est au point d'intersection des deux lignes. Cette premiére partie n'est pas difficile, mais que pensez-vous de PAINT à la ligne 60? Si vous avez deviné que l'écran passe à la position (1 35, 1 25) et qu'il peint l'écran de la couleur 8 jusqu'à ce qu'i arrive à une bordure de cette même couleur, vous avez raison! Annulez la ligne 30 puis exécutez le programme. Avec les bordures redéfinies, l'ordinateur peint la moitié du cercle. EXERCICE 26-1 Pouvez-vous peindre le cercle complet? Vous pouvez y arriver de deux manières. Avec la premiére, il faut ajouter une ligne; avec l 'autre, il faut en annuler une. EXERCICE 26-2 Avez-vous conservé votre maison? Elle manque probablement de caractère! Rendez­ la donc un peu plus gaie avec un peu de peinture! EXERCICE 26-3 Ajoutez un garage à votre maison. Ensuite, utilisez PAINT pour ouvrir et fermer la porte du garage. La peinture se faisant d'abord vers le haut, il vous faut faire preuve d'un peu d'imagination. Ajoutez un retard avant et après l' ouverture. Avec CIRCLE, ajoutez le soleil. Appris ua chapitre 26 MOT BASIC PAINT 148 27 I LE TRAIT DE GÉN I E Vous savez déjà créer des traits, des ellipses et des cases. Aimeriez-vous connaître un "raccourci" pour arriver au même résultat? Ce raccourci est la commande DRAW qui vous permet de tracer une forme quelconque en spécifiant le sens, l'angle et la couleur, le tout dans la même commande! Voici la syntaxe de DRAW: o R AW forme trace une forme sur l 'écran courant de graphiques: forme est une expression en chaîne qui peut comprendre les commandes, modes et options suivants de mouvement: Sous-commandes de mouvement BMx,y Vient à la position x,y Un Vers le haut de n points Dn Vers le bas de n pointa Ln Vers la gauche de nn points Rn Vers la droite de n points En Angle de 45 degrés à n points Fn Angle de 1 35 degrés à n points Gn Angle de 225 degrés à n points Hn Angle de 3 1 5 degrés à n points Exécution d'une sous-chaîne et retour X = Sn Cn An Modes Échelle n (1 à 62) Couleur n (0 à 8) Angle n (0 à 3) N B Options Pas de mise à jour de la position de tracé Blanc (pas de tracé, déplacement seulement) = = = = Remarque: Si vous omettez le point de début, l'ordinateur utilise la derniére pos::nl de DRAW ou, si l'on n'avait pas utilisé précédemment cette commanee, se ;:iac:e au centre de l'écran. Si vous omettez le nombre de points à tracer. rooa...a. ....a: ·�ace un point. 149 27 I Le Trait de Génie Tracé d'une forme (Sous-commandes de mouvement U, D, L et R) Avec DRAW, i l vous suffit de spécifier le point de départ puis d'indiquer le sens et la longueur du tracé. Changez le programme "Traits" pour avoir: 2 5 10 20 25 40 W I OT H 3 2 PMO D E 3 , 1 P C LS SCR EEN 1 , 1 ORAW "BM1 2 8 , 9 6 ; U 2 5 ; R25 ; 0 2 5 ; L25" GOTO 40 Et voilà! Vous avez peut-être deviné que l e coin infOrieur gauche du carré est à (1 28,96). La ligne 25 indique à l'ordinateur de commencer le tracé à (1 28,96), de tracer 25 points vers le haut (U), 25 points vers la droite (R), 25 points vers le bas (D) et enfin 25 autres points vers la gauche (L). Placez maintenant le carré sur l'un de ses côtés. Dans ce but, remplacez U, R, L et D par E, F, G et H à la ligne 25: 25 ORAW "BM1 28, 9 6 ; E25 ; F 2 5 ; G 2 5 ; H25" Le premier trait est incliné à 45 degrés, le deuxième à 1 35 degrés, le suivant à 225 degrés et le dernier à 3 1 5 degrés. Il existe cependant un petit problème dans le tracé des angles. Si vous êtes en PMODE O ou 1 et si vous tracez un angle à côtO de longueur impaire et avec au moins une coordonnée impaire (x,y), l es traits F et H présentent un léger décrochement en leur milieu. Si les deux coordonnées sont paires, les traits E et G présentent ce décrochement. Cet état de choses est normal. EXERCICE 27-1 Votre ordinateur est certainement une étoile de première grandeur, mais peut-il dessiner lui-même une étoile? Début à une position relative (Signes '' + et ' ' ) '' - ' ' Dans les exemples ci-dessus, vous avec demandé à l'ordinateur de commencer à une position absolue. Vous pouvez aussi lui demander de commencer le tracé à une position relative. Par exemple, utilisez la version suivante du programme "Traits". 2 5 10 20 25 40 150 W IOTH 32 PMOOE 3 , 1 P C LS S C R E EN 1 , 1 ORAW "BM1 2 8 , 9 6 ; U 2 5 ; R25 ; 0 2 5 ; L 2 5 " G O T O 40 27 / Le Traite de Génie Pour créer un deuxième carré à une position relative par rapport au premier. ajoutez la ligne suivante: 30 O R A W " BM + 1 5 , + 1 5 ; U 2 5 ; R 2 5 ; 0 2 5 ; L 2 5 " Le signe + correspond à u n Décalage. Quand l'ordinateur exécute la.ligne 30, l a position courante de tracé est (1 28,96), dernière position de tracé de la ligne 25. Pour tracer le nouveau carré, l'ordinateur commence à ( 1 28 + 1 5,96 + 1 5), soit (143, 1 1 .1). Vous pouvez aussi utiliser le signe - pour insérer un décalage. Changez la ligne 30 pour avoir: 30 O R A W " B M+1 5 , -1 5 ; U 2 5 ; R 2 5 ; 0 2 5 ; L 2 5 " Exécutez le programme. Le point de début du nouveau carré est à (128 + 25,96 - 1 5), soit (143,81). Essayez la ligne suivante: 30 ORAW "BM+1 5 , 1 5; U25 ; R25 ; 025 : L25" Si vous utilisez un signe de décalage pour la coordonnée x et si vous l'omettez pour la coordonnée y, l'ordinateur utilise le signe de décalage + pour ceete dernière. EXERCICE 27-2 Après cette activité forcenée, vous avez probablement besoin de vous rafraîchir. Pourquoi ne pas utiliser DRAW pour créer un cube de glace? Vous pouvez créer le cube entier à l'aide de DRAW. Vous pouvez aussi insérer deux commandes UNE dans le programme. Essayez d'utiliser les déplacements absolus et relatifs. C'est trop grand . . . c'est trop petit . . . (Mode d'échelle) Que se passe-t-il si les images que vous tracez sont trop grandes ou trop petites? La solution est simple. Il suffit d' utiliser le mode d'échelle de la commande DRAW. Sn permet de changer l'échelle d'un affichage. n correspond à un nombre de 1 à 62 qui indique le facteur d'échelle, par unités de 1 4. tel qu'indiqué ci-après: 1 2 3 4 5 8 12 etc. = = = = = = échelle de 1 4 échelle de 24 échelle de 34 échelle de 44 (un) échelle de 54 (1 25%) échelle de 84 (double) échelle de 1 24 (triple) = Si l'on omet n, l'ordinateur utilise 4 (44 = 1). Après que vous ayez entré Sn, l'ordinateur met à l'échelle en propomon commandes de déplacement. n.-:es es SOL;'S­ 151 27 I Le Trait de Génie Avec votre programme "Traits" maintenant perfectionné, tracez de nouveau u n carré. Dans ce but, annulez la ligne 30 et changez la ligne 25 pour avoir: 25 ORAW " S 2 ; BM1 2 8 , 9 6 ; U 2 5 ; R 2 5 ; 0 2 5 ; L25" Exécutez l e programme. Le carré du coin inférieur gauche doit avoir l a moitié des dimensions spécifiées. Pour vous faire une idée de la taille d'un carré, exécutez le programme suivant: 5 PMOOE 4 , 1 P C LS 10 20 S C R E EN 1 , 1 25 FOR SCALE = 1 TO 62 30 S$ = "S" + STR$ ( S CALE) + " ; " 35 O R A W S $ + " B M1 0 , 1 0 0 U 2 0 R 2 0 0 2 0 L 2 0 " 40 NEXT SCALE GOTO 5 0 50 Il ne faut pas croire que la ligne 35 spécifie le carré le plus petit. Le carré spécifié est le quatrième à partir du bord. / Quand vous utilisez l'option de "compression", l ordinateu r arrondit la longueur de ligne résultante au nombre entier le plus proche, à condition que le nombre ne soit pas déjà entier. ' Par exemple, "S2U25R25025L25" donne un carré de 12-1 2 x 12-1 2 . L'ordinateur trace alors un carré de 13 x 13. De la couleur dans les formes (Option de couleur) L'option C de DRAW permet de spécifier la couleur de votre dessin. Liste7 d'abord le programme "Traits" : 5 PMODE 3 , 1 PCLS 10 20 S C R E EN 1 , 1 30 ORAW " S 2 ; BM1 2 8 , 96; U 2 5 ; R25 ; 0 2 5 ; L25" 40 GOTO 40 152 27 I Le Trait de Génie Revenez à l'échelle 1 en remplacant 82 par 84 ou en annulant S2. Ensuite, à l'i ntérieur des guillemets de la ligne 30, insérez: C6; Exécutez le programme. Le carré est maintenant de la couleur 6. À la ligne 30, remplacez C6 par C8 et exécutez le programme. _Le carré es: maintenant de la couleur 8. Vous pouvez insérez Cn partout dans une commande DRAW Les opérations qui suivent concernent la couleur spécifiée. Par exemple, changez la ligne 30 pour avoir: 30 D R A W " C 8 ; BM1 2 8 , 9 6 ; U 2 5 ; R 2 5 ; C 6 ; 0 2 5 ; L 2 5 " Exécutez le programme. Le programme produit un carré en deux couleurs. Les deux premiers traits sont de la couleur 8 et les deux seconds de la couleur 6. Sous un certain angle (Mode d 'angle) Le mode A permet de spécifier l'angle de tracé d'un trait. Quand DRAW contient A, l'ordinateur trace tous les traits suivant l'angle précisé par An, jusqu'à ce qu'on change celui-ci. Voici la syntaxe de la commande A: An permet de spécifier l'angle d'un trait n correspond au code d'angle (0 à 3). Tous les angles se mesurent dans le sens des aiguilles d'une montre. 0 1 2 3 = = = = 0 degré 90 degrés 1 80 degrés 270 degrés Si vous omettez An, l'ordinateur utilise AO. Votre programme doit maintenant avoir cette allure: PMODE 3 , 1 5 P C LS 10 20 S C R EEN 1 , 1 D RAW " C 6 ; BM1 28 , 9 6 ; U 2 5 ; R 2 5 ; 0 2 5 ; L25" 30 GOTO 4 0 40 Changez la ligne 30: 30 D R A W " A 0 ; BM1 2 8 , 96 ; U 2 5 " Exécutez le programme. L:écran affiche un trait vertical de 25 points de long_ Changez maintenant la ligne 30 pour avoir: 30 DRA W "A1 ; B M 1 2 8 , 96 ; U2 5 " Exécutez le programme. Le trait est maintenant horizontal. 153 27 I Le Trait de Génie Un trait invisible (Option de ligne invisible) Si vous voulez tracer une ligne invisible, ajoutez l 'option B. Par exemple, supposons que vous dessinez des lettres de l'alphabet et que vous arrivez à la lettre C qui n'est rien d'autre qu'un carré sans son côté droit. Pour que le programme crée un C, changez la ligne 30 pour avoir: 30 D R A W " B M 1 2 8 , 9 6 ; U 2 5 ; R 2 5 ; B ; D 2 5 ; L2 5 " Exécutez le programme. N'oubliez pas que seul le trait qui suit le B est invisible. EXERCICE 27-3 Imprimez votre nom sur l 'écran à l'aide de DRAW. Dans ce but, vous devez garder l'écran de çiraphiques. I l serait certainement plus facile d'écrire votre nom sur l'écran de texte, mais il n'est pas possible d'avoir un texte "véritable" et des graphiques en même temps. Pour partir du même point (Option " Pas de mise à jour") N , option "Pas de mise à jour", est une autre des nombreuses fonctions de DRAW. N indiqLe à l' ordinateur de revenir à sa position initiale (courante) après avoir tracé le trait suivant. Pour vous faire une idée de cette option, changez la ligne 30 pour avoir: 30 DRAW "M1 2 8 , 9 6 ; N ; U25 ; N ; R 2 5 ; N; 0 2 5 ; N ; L25 ; " Exécutez le programme. L'ordinateJr trace u n trait de 25 points à partir :Je 1 28,96. I l revient ensuite à 1 28,96, trace le trait suivant, revient encore, trace encore un trait, etc. I l en résulte quatre traits qui rayonnent du centre de l 'écran, chacun dans u n sens différent (vers le haut, vers la çlroite, vers le bas et vers la gauche). EXERCICE 27-4 A l'aide de l'option N de DRAW (et de CIRCLE), tracez une tarte divisée en huit parts. Ensuite, découpez un morceau de la tarte et mettez-le de côté. Utilisation des sous-chaînes (Sous-commande X) Nous avons vu précédemment que la chaîne qui suit DRAW peut être une constante ou une variable. Par exemple, ajoutez la ligne 25 et changez la ligne 30 pour avoir: 25 30 A $ = " B M 1 2 8 , 9 6 ; C 8 ; U2 5 ; R 2 5 ; D 2 5 ; L 2 5 " DRAW A Exécutez le programme. Avec les instructions de A$, l 'ordinateur donne un carré de 25 x 25 qui commence à 1 28,96. 154 27 I Le Trait de Génie La sous-commande X permet d'exécuter une chaîne DRAW puis de revenir à une autre. Dans ce but, laisser la ligne 25 telle quelle pour qu'elle définisse A$; changez ensuite la ligne 30: vous devez avoir: 25 30 A$="BM1 2 8 , 9 6 ; C 8 ; U 2 5 ; R 25 ; D 25 ; L25" D R A W " BH95 , 5 0 ; U 2 5 ; R 2 5 ; X A $ ; D 2 5 ; L 2 5 " Exécutez le programme. L'ordinateur commence à tracer à 95,50 un trait qui monte (U25) puis la droite (R25). Il exécute ensuite A$ pour tracer un carré de 25 x 25, à partir de (128,96). Après avoi r exécuté A$, il revient à la chaîne initiale (courante) et termine son exécution (025,L25). va vers EXERCICE 27-5 D'après l'exercice 27-3, vous pouvez simuler le texte (lettres) sur l'écran de ;;iraphiques en y traçant des lettres. A l'aide de DRAW, créez les 26 lettres de l'alphabet. Stockez les sous-commandes DRAW dans des chaînes. Utilisez ensuite la sous-commande X pour disposer les lettres en mots. EXERCICE 27-6 Avez-vous toujours votre maison? Si c'est le cas, chargez de nouveau le programme et, à l'aide de DRAW, faites ouvrir et fermer la porte de devant. Appris au chapitre 27 COMMANDE DRAW 28 I U N ÉCRAN QUI VA AU TABLEAU Dans les chapitres précédents, vous avez appris plusieurs méthodes de déplacement d'images d'un écran à un autre, mais aucune n'est très efficace. Nous allons en voir de meilleures qui utilisent les instructioris GET et PUT. À quoi servent-elles? (Commandes GET et PUT) Avec les commandes GET et PUT, vous pouvez "tirer" (GEn une surface rectangulaire de l 'écran, stocker son contenu dans un "tableau" (zone de mémoire) et ensuite la "remettre" (PUT) en tout point de l 'écran. Cette méthode est la meilleure pour simuler le mouvement. [� Les syntaxes de GET et PUT sont: G E T (x 1 ,y1)-(x2,y2),tableau, G Tire un rectangle de l'écran courant de graphiques et le stocke dans un tableau. x1,y1 correspond au coin supérieur gauche du rectangle. x2,y2 correspond au coin inférieur droit du rectangle. tableau correspond à une zone de la mémoire où l'on stocke le rectangle. G stocke le tableau en détails graphiques intégraux. G est nécessaire quand on utilise la haute définition (PMODE 4 ou PMODE 3 avec couleurs) ou quand on utilise les paramètres d'intervention de PUT. P U T (x 1,y1)-(x2,y2),tableau,interventione Met un rectangle, stocké dans un tableau, sur l'écran cou rant de graphiques. x1,y1 correspond au coin supérieur gauche du rectangle. x2,y2 correspond au coin inférieur droit du rectangle. le tableau correspond à une zone de mémoire où l'on stocke le rectangle. l'intervention (voir la table 28.1) indique à l'ordinateur le mode d' utilisation des points stockés dans le rectangle. Remarque: Assurez-vous que l'ordinateur est à la même instruction PMODE pour GET et pour PUT, sinon on ne peut pas " remettre" sur l'écran ce que l'on en a "tiré". 157 28 / Un Ècran qui va au Tableau Tapez et exécutez c e programme pour mieux comprendre les commandes GET et PUT: P C LEAR 4 5 10 PMODE 3 , 1 P C LS 15 20 S CREEN 1 , 1 25 D I M V ( 2 0 , 20) 30 C I R C LE ( 2 0 , 20 ) , 1 0 35 GET ( 1 0 , 1 0 ) - (30,30) , V P C LS 40 F O R D L A Y = 1 T O 3 0 0 : N E X T D LA Y 42 45 PUT (11 0 , 1 1 0 )- (130, 130) ,V 50 FOR D L AY = 1 T O 3 0 0 : N E X T D LAY GOTO 60 60 Le programme trace u n cercle sur une partie de l'écran puis se déplace vers une autre. Dans ce but, l' ordinateur: 1. Crée un tableau V en mémoire (ligne 25). Le tableau V est assez grand pour recevoir un rectangle de 20 x 20. 2. Trace un cercle sur l'écran (lig1e 30). 3. Tire u n rectargle de 20 x 2 0 contenant l e cercle et l e stocke dans l e tableau V (ligne 35). 4. Efface l'écran (ligne 5. Remet le rectangle de 20 x 20 (stocké dans le tableau V) sur l'écran. 40). Stockage du rectangle (Commande DIM) GET et PUT utilisent un tableau pour stocker le rectangle; il vous faut donc lui réserver de la mémoire avant d'utiliser ces commandes. A cet effet, vous pouvez utiliser la commande DIM. o I M tableau (longueur.largeur) Crée un tableau pour stocker un rectangle défini par sa longueur et sa largeur en points. Remarque: DIM doit se trouver dans l'une des premières lignes de votre programme (après CLEAR et PCLEAR), si vous les utilisez). Quelle doit être la surface du tableau? Elle dépend de l'importance du rectangle que vous voulez "tirer" de l'écran ou y " remettre" : Largeur Longueur = x2 = - x1 y2 - y1 Par exemple, la commande GET du programme ci-dessus utilise (1 0, 1 0) et (30,30) pour spécifier un rectangle. Ce rectangle mesure donc 20 x 20. Il a une largeur et une longueur de 20. La commande PUT utilise le même rectangle de 20 x 20. 158 28 I Un Écran qui va au Tableau Certains rectangles peuvent être trop grands pour que vous puissiez les stocker dans un tableau. Chaque poin'. prend cinq octets dans un tableau; de ce fait, avec un système à mémoire vive (RAM) de 1 6 K (en supposant que votre programme ne prennent pas beaucoup de mémoire), vous pouvez stocker un maximum de 1 400 points dans un tableau. Toujours des i nterventions (Options PSET, PRESET, AND, OR et NOT) Jusqu'à présent, VOLS n'avez utilisé que l'intervention PSET avec la commande PUT. C'est celle que l'ordinateur utilise si vous ne précisez pas d' intervention. Pour comprendre les autres interventions, exécutez le programme suivant qui met 15 rectangles sur l 'écran à l'aide ce PSET. 5 PC LEAR 4 1 0 DIM V (30,30) 15 P MO D E 2 , 1 2 0 P C LS 25 SCREEN 1 , 1 3 0 C I R C L E ( 1 2 8 , 96) , 3 0 35 P A I N T ( 1 2 8 , 95 ) , 2 , 4 40 P A I N T ( 1 2 8 , 97 ) , 3 , 4 45 G E T (98 , 81 ) - ( 1 2 8 , 1 1 1 > , V , G P C LS 50 55 F O R 1 = 1 5 0 T O 1 S T E P -1 0 60 PUT ( l , 81 - I / 5 ) - ( 1 + 6 0 , 1 1 1 - I / 5 ) , V , P SET NEXT l 65 GOTO 70 70 P S E T établit et remet à l 'état initial chaque point tel qu'il est dans le rectangle du tableau. Chaque rectangle que PSET met sur 1 écran est identique à celui stocké dans le tableau. Changez maintenant la ligne 60 de plusieurs manières pour essayer d'autres interventions. Essayez d'abord PRESET. 60 PUT ( I /8 1 - I / 5 ) - ( 1 + 6 0 , 1 1 1 - I / 5 ) , V , P R E S E T P R E S E T établit et remet à l'état initial l'inverse de chaque point du rectangle du tableau. Chaque rectangle que PRESET met sur l'écran est l'inverse de celui stocké dans le tableau. Essayez l'intervention OR: 60 PUT ( l , 81 - I / 5 ) - ( 1 +60 , 1 1 1 - 1 / 5 ) , V , O R O R fixe chaque point qui est établi dans le rectangle du :ableau ou qui est déjà établi à la position où elle met le rectangle de l'écran. Chaque rectangle que OR met sur l'écran possède tous les points fixés qui sont stockés dans le tableau; il s'y ajoute les éléments qui se trouvent déjà sur l'écran. NOT a des effets bizarres: 60 PUT ( 1 , 8 1 - 1 / 5 ) - ( 1 + 60 , 1 1 1 - I / 5 ) , V , N OT N O T établit et remet à l'état initial l'inverse des éléments qui se trouvent sur l'écran (NOT ne se préoccupe pas des éléments stockés dans le tableau). Chaque rectangle que NOT met sur l'écran est l'inverse du précédent. 1 59 28 / Un Écran qui va au Tableau Pour ne plus rien y voir, essayez l'intervention AND avec le programme: 60 PUT ( l , 8 1 - I / 5 ) - ( ! +60 , 1 1 1 - I / 5 ) , V , A N D A N o fixe chaque ;)Oint qui est établi dans le tableau et qui est déjà établi sur l'écran, à la position où elle met le rectangle. Tous les points qui ne répondent pas à ces deux conditions sont remis à l' état initial. Dans le cas présent, tous les points de chaque rectangle et (AND) les instructions PUT sont remis à l'état initial. Vous ne voyez plus rien. Voici un résumé de chaque intervention: Option Fonction PSET Établit chaque point qui est fixé dans le tableau. PRESET Remet à l'état initial chaque point qui est établi dans le tableau; établit chaque point qui est remis à l'état initial dans le tableau. AND Compare chaque point du rectangle du tableau avec le rectangle de l'écran. Si les deux points sont établis, l'ordi nateur établit le point de l'écran. Dans le cas contraire, il remet le point de l'écran à l'état initial. OR Compare chaque point du rectangle du tableau au rectangle de l'écran. Si l'un ou l'autre est établi, l 'ordinateur établit le point de l'écran. NOT Inverse l'état de chaque point du rectangle de l'écran, quel que soit le contenu du rectangle du tableau. EXERCICE 28-1 À l'aide de GET et PUT, placez u n vaisseau spatial sur l'écran et "au-delà de ses limites". Vous pouvez y ajouter q uelques astérodes et des "ennemis cosmiques" pour rendre l'épopée encore plus passionnante! Appris au chapitre 28 COMMANDES GET PUT DIM 160 PARTIE 4 U N TABLEAU D ' ENSEMBLE Au chapitre 1 7, vous avez tracé de simples images point à point à l'aide de l 'écran de texte à basse définition. Dans la partie 2, l'écran de graphiques à basse définition vous a servi à tracer traits, cercles et cubes. Dans cette partie, vous dessinerez des images très détaillées et mobiles, aux multiples couleurs, sur l'écran plus puissant de graphiques à haute définition. Voici les caractéristiques de notre grande image: Maximum de positions Maximum de couleurs Maximum de mémoire Écran de texte à basse définition n4x32 9 Aucune Écran de graphiques à basse définition 256x192 4 Dans le BASIC Écran de graphiques à haute définition 640x 1 92 16 E n dehors du BASIC 161 29 I DES POINTS PAR M I LLIERS L'écran de graphiques à haute définition se comporte de façon très semblable à l'écran de graphiques à basse définition. L'écran à haute définition, tout en offrant davantage de fonctions, est cependant plus facile à utiliser. Création d 'un écran de graphiques (Commande HSCREEN) Les graphiques à haute définition permettent d e créer un écran d e graphiques avec l a seule commande HSCREEN. Celle-ci exécute les mêmes tâches que trois commandes à basse définition. • Elle fixe les fonctions à utiliser sur l'écran de graphiques. comme la commande PMODE. • Elle affiche l'écran de graphiques, comme la commande SCREEN. • Elle efface l'écran de graphiques. comme la commande PCLS. La syntaxe de HSCREEN est: H s c R E E N ne établit les fonctions. affiche et efface l'écran courant de graphiques à haute définition. n spécifie les fonctions que vous voulez utiliser (0.4). Pour vous faire une idée de HSCREEN. tapez ce programme: 1 1/1 20 HSCR EEN 1 GOTO 2 0 Quand vous exécutez le programme. un écran vide de graphiques à haute définition apparaît. Presser � pour revenir à l 'écran de texte. HSCREEN. comme PMODE, vous permet de choisir différents réglages qui spécifient les fonctions à utiliser. Vous pouvez utiliser les fonctions suivantes: • Positions de grille-Vous pouvez utiliser un maximum de 640 x 1 92 positions à la fois. • Couleu rs-Vous pouvez utiliser un maximum de 1 6 couleurs à la fois. Les réglages disponibles sont indiqués à la table 29. 1 . Table 29.1 I Réglages de HSCREEN HSCREEN HSCREEN HSCREEN HSCREEN 1 2 3 4 Positions de grille Couleurs 320 320 640 640 4 16 2 4 X X X X 192 1 92 1 92 1 92 Le réglage HSCREEN 1 . que nous avons utilisé ci-dessus, spécifie une grille de 320 x 1 92, avec un maximum de quatre couleurs. A ces quatre réglages. on peut en ajouter un cinquième: H SCREEN 0 163 29 I Des Points par Milliers Ce réglage renvoie au mode de graphiques à basse défi nition. En mode à haute définition et pendant l'exécution d'une commande HSCREEN 1 (2, 3 ou 4), vous ne pouvez pas afficher un écran de graphiques à basse définition sans exécuter d'abord une commande HSCREEN O. Il faut remarquer que, au contraire de PMODE, HSCREEN n'utilise pas de pages différentes de mémoire de graphiques. Tous les écrans à haute définition sont stockés dans la même zone de mémoire. Production de graphiques sur l 'écran (Commandes de graphiques à haute définition) Les graphiques à haute définition possèdent un équivalent pour la quasi-totalité des commandes de ba sse définition. La table 30.2 d o nn e les commandes de haute définition avec leurs équivalents à basse définition. Table 30.2 / Commandes de graphiques à haute et basse définition Haute définition Basse définition HCIRCLE HPCLS HCOLOR H DRAW HUNE H PA lNT HRESET HSET HPOINT CIRC LE PCLS COLOR DRAW UNE PAINT RESET SET PPOINT Par exemple, la commande HCIRCLE de haute définition correspond à la commande CIRCLE de basse définition. Toutes deux se comportent pratiquement de la même manière. (Nous étudions les quelques différences ci-dessous.) 164 29 / Des Points par Milliers Les commandes de haute et basse définition étant très semblables, on peut facilement convertir un programme des unes aux autres. Prenons par exemple le premier programme du chapitre 25 qui trace un cercle sur l'écran à basse définition. 5 PMO D E 4 , 1 PCLS 10 20 SCREEN 1 , 1 3 0 C I R C L E ( 1 2 8 , 96 ) , 9 5 40 GOTO 40 Pour convertir ce programme afin qu'il trace un cercle sur l 'écran à haute définition. tapez: 10 30 40 HSCREEN 2 H C I R C LE ( 1 60, 96) , 95 G O T O 40 Une autre utilisation des grilles (Commandes de haute et de basse définition) Au contraire des commandes de basse définition, les commandes de haute définition utilisent des positions de grille exactes plutôt que mises à l 'échelle. Si vous passez ainsi à une grille différente en haute définition, vous devez changer les positions de point du programme de haute définition. Par exemple, on utilise présentement une grille de 640 x - 92 pour le programme de cercle. 10 30 40 HSCREEN 2 H C I R C L E ( 1 6 0 , 96 ) , 9 5 GOTO 40 Changez le réglage de HSCREEN pour utiliser u n e grille d e 320 x 1 92 . 10 H S C REEN 1 Exécutez maintenant le programme. Vous êtes passé à une grille de 320 x 1 92; de ce fait, le cercle apparaît en un endroit différent de l'écran. Pour le faire apparaître au même endroit, changez les positions de point dans la commande HCIRCLE: 30 H C I R C L E ( 8 0 , 96 ) , 95 Une autre utilisation de la couleur (Commandes à haute et basse définition) Les commandes de graphiques à haute définition n' utilsent pas la palette comme leurs équivalents de basse définition. Ajoutez par exemple une ligne au programme de cercle pour que l' ordinateur peigne le cercle de la couleur 1 . 35 H P A I N T ( 1 60 , 96 ) , 1 , 1 Exécutez maintenant le programme. En mode à basse définition, le cercle aurait été peint avec une couleur parmi un choix de plusieurs, suivant le mode de couleur (2 ou 4 couleurs) et le jeu de couleurs Qeu 1 ou 2) utilisé. 1 65 29 / Des Points par Milliers En mode à haute définition, la couleur 1 spécifie toujours la même couleur qui est celle stockée dans la case 1 de palette. Pour peindre le cercle d'une couleur non courante (par exemple, code de couleur 23), stockez le code de couleur dans la case 1 de palette. TapeL la ligne suivante et exécutez le programme: 3 P A L E T T E 1 , 23 L a table 7 . 9 d u c1apitre " D e tout et de rien " montre l'utilisation d e l a palette d ans chaque mode de couleur HSCREEN par les commandes de graphiques à haute définition. Une meilleure impression (Commande HPRINT) U n écran de graphiques à basse définition présente un grand inconvénient: il ne permet pas d'imprimer facilement un message. On peut évidemment tracer chaque lettre à l'aide de la commande DRAW, mais cette méthode fastidieuse prend beaucoup de mémoire. En mode à haute définition, la commande HPRINT imprime directement un message sur l'écran de graphiques à haute définition. Sa syntaxe est: H P R I N T(x,y), messagee I mprime le message à la position de texte x,y, sur l'écran de graphiques à haute définition. Avec HPRINT, vous devez donner des positions de texte plutôt que des positions de graphiques. Un écran de graphiques de 320 x 1 92 correspond à un écran de texte de 40 x 24 et un écran de graphiques de 640 x 1 92 à un écran d e texte de 80 x 24. Avec HSCREEN 1 ou HSCREEN 2, vous disposez de 40 colonnes. Avec HSCREEN 3 ou HSCREEN 4, il y en a 80. Si la longueur du message dépasse le nombre de colonnes disponibles, la dernière partie en est coupée. Voici des exemples des commandes HSCREEN: H P R I N T ( 0 , 2 0 ) , " La ma rque e s t " , S C H P R I N T ( 0 , 0 ) , " V o t r e nom e s t " ; AS H P R I N T ( U , 1 0 ) , A$+B$ Appris au chapitre 2 9 166 COMMANDES FONCTION HSCREEN HCIRCLE, HCOLOR, HUNE, HRESET, HPOINT PALETIE HPRINT HPOINT HCLS, H DRAW HPAINT, HSET, 30 I STOCKAGE D ES GRAPHIQ U ES GET et PUT sont pratiques en mode à basse définition. Ces commandes permettent de "tirer" un rectangle, de le stocker dans un tableau et de le "mettre" en un endroit quelconque de l'écran. Un tableau prend cepe n dan t programme BASIC. beaucoup de place en mémoire, au détriment de votre Les équivalents de GET et PUT en haute définition ne stockent pas le rectangle à l'aide d ' u n tableau. E n fait, ils n' utilisent pas de place dans l a zone d u BASIC. I l s emploient plutôt des tampons GET/PUT spéciaux qui sont des zones de mémoire en dehors du BASIC. Un tampon réservé (Commande HBUFF) Avant de pouvoir utiliser un tampon GET/PUT, il faut indiquer au BASIC comment vous comptez vous y prendre. Dans ce but, vous utilisez la commande spéciale de haute définition HBUFF. La syntaxe de HBUFF est: H B u F F tampon, longueure Réserve un tampon GETiPUT. le tampon est un nombre qui libelle le tampon GET/PUT. les octets correspondent à la longueur du tampon GET/PUT (nombre d'octets 1 ) . - Pour utiliser HBUFF, le BASIC doit connaît re la longueur de mémoire à mettre de côté pour stocker le rectangle. L'octet est l'unité de mesure de la mémoire. Su ivant le mode HSCREEN utilisé, chaque octet peut stocker 2, 4 ou 8 points de l'écran. La table 30-1 indique le nombre de points stockés par le BASIC dans un octet, suivant le mode HSCREEN utilisé. 167 30 / Stockage des Graphiques Table 30.1 I Mémoire requise pour les graphiques Mode d'écran HSCREEN HSCREEN HSCREEN HSCREEN Points par octet 1 2 3 4 4 2 8 4 A titre d'exemple, supposons que vous voulez placer une commande HGET du rectangle ( 1 0,5)-(30, 1 5) dans HSCREEN 1 . Le BASIC arrondit les coordonnées X à l'octet le plus proche, suivant le mode d'écran de graphiques utilisé. Le BASIC lit l a premi ère valeur X de 1 0 ét la divise par le nombre de points par octet pour HSCREEN 1 (voir tabl e 30-1). 10 / 4 2.5 = Le BASIC arrondissant les coordonnées X de HGET/HPUT, ignorez la partie fractionnaire qui suit le point décimal. La réponse est donc 2. Multipliez ce chiffre par le nombre de points par octet pour HSCREEN 1 . Le résultat donne la première coordonnée X que le BASIC utilise pour HGET. 2 . 4 8 = Vous avez maintenant résolu près de la moitié du mystère. Procédez de même pour l'autre coordonnée X. 30 I 4 7 • 4 7.5 (Ne tenez pas compte de la partie fractionnaire) = 28 = Dans HSCREEN 1 , si vous indiquez don c au BASIC de placer HGET(10,5)-(30, 1 5) , il utilise réellement HGET(B,5)-(28, 1 5). Nous arrivons maintenant à la dernière partie du mystère. Quelle est la longueur nécessaire de HBUFF pour stocker HGET (8,5)-(28, 1 5) dans HSCREEN 1? Voici la solution. Soustrayez la plus petite coordonnée X (8) de la plus grande (28). 28 - 8 20 = Ajoutez 1 au résultat. 20 + 1 = 21 Divisez ce résultat (21) par le nombre de points par octet pour HSCREEN 1 (4). 21 / 4 5.25 = Si la réponse comprend une partie fractionnaire, arrondissez-la au nombre entier suivant le plus élevé. La réponse étant 5.25, arrondissez-la à 6 qui correspond au nombre d'octets requis pour stocker chaque rangée ou la largeur du rectangle HGET en octets. Soustrayez maintenant la plus petite coordonnée Y (5) de la plus grande (15). 15 - 5 10 = Ajoutez 1 au résultat. 10 + 1 = 11 Cette réponse correspond à la hauteur du rectangle en points. Pour déterminer le nombre total d'octets requis pour stocker le rectangle, multipliez la largeur en octets (6) par la hauteur en points (1 1 ) . 6 • 11 168 = 66 30 / Stockage des Graphiques La longueur étant égale au nombre d'octets moins 1 , soustrayez 1 de cette valeur. 66 - 1 = 65 De ce fait, HGET(10,5)-(30. 1 5) dans HPRINT 1 rrend un tampon HBUFF de longueur 65. Pour vous faire une idée de HBUFF dans son programme, examinez la ligne ci-dessous. Cette ligne attribue au tampon HBUFF n° 1 une longueur de 65. N'oubliez pas que cette longueur es: inférieure de 1 au nombre d'octets que le tampon peut stocker. Dans cet exemple, HBUFF peut stocker 66 octets. 10 HBUFF 1 , 65 Un rectangle dans le tampon (Commande HGET) La commande HGET vous permet de placer un rectangle dans le tampon. Cette commande est l'équivalent de GET. Sa syntaxe est: H G E T(x1 ,y1) - (x2,y2),tampon Tire Ln rectangle de l'écran de graphiques à haute définition et le stocke dans le tampon. Le programme suivant dessine une petite case dans le coin de l'écran et la place dans le tampon 1 . 10 20 30 40 50 H B U F F 1 , 43 H S C R E EN 4 H � I N E ( 1 0 , 0 ) - ( 2 0 , 1 0 ) ,PSET , B F HGET ( 1 0 , 0 ) - ( 20 , 1 0) ,1 GOTO 5 0 Le rectangle sur l'écran (Commande HPUT) La commande HPUT, qui correspond à PUT, vous permet de placer le rP.ctangle sur l'écran. Sa syntaxe est: H P U T (x1 ,y1)-(x2,y2),tampon, intervention Place un rectangle du tampon sur l 'écran de graphique à haute définition à l'aide de l'intervention spécifiée. L'intervention peut correspondre à PSET PRESET, AND, OR et NOT. , La ligne suivante place la case en un autre point du même écran: 45 H P U T ( 2 0 , 2 0 ) - ( 4 0 -3 0 ) , 1 , P S E T I l ne faut pas oublier que les codes de couleur placés sur l'écran correspondent à des cases de palette. Essayez d'utiliser AND et OR. Vous en tirerez peut-être des résultats étonnants, pleins de couleur. 169 30 / Stockage des Graphiques Appris au chapitre 30 170 Mots BASIC Concepts HBUFF Réservation d'un tampon HGET et HPUT Utilisation du tampon pour déplacer ou reproduire u n triangle PARTIE 5 I PASSONS AUX CHOSES SÉRIEUSES • • • Dans cette partie, nous abordons la gestion des données qui concernent entre autres votre chéquier, votre dossier d'impôt, des adresses et les livres. Vous apprendrez à organiser ces données avec de prog'ammes qui les classent, les mettent à jour, les impriment et les analysent. 1 71 3 1 I STOCKAGE DES DON NÉES Le stockage d'un programme BASIC est facile, avec la commande CSAVE. Le stockage des données demande un peu plus de travail; il vous faut un programme. Ce chapitre vous apprend à écrire deux programmes pour stocker les données. Le premier stocke les données sur cassette et le aeuxième les extré!Îl. Programme de sortie des données (Commandes OPEN, PRINT # et CLOSE) Supposons que vous désirez stocker les chèques suivants sur bande: ------------CH ÈQUES----------OOCTEU R BERTRAND SAFEWAY ARM É E DU SALUT MAISON DE LA PRESSE Commençons par un court programme simple qui stocke le premier chèque (DOCTEUR BERTRAND) sur bande. Tapez: 10 20 30 OPEN "0" , #-1 , " C H EQUES" W R I T E #-1 , " DOCTEUR B E R T R A N D " C LO S E # - 1 Préparez le magnétocassette pour l'enregistrement: 1. Branchez le magnétocassette. 2. Mettez une cassette dans le magnétocassette et rebobinez-la. 3. Pressez les touches d'enregistrement (RECORD) et de lecture (PLAY) du magnétocassette. 1 73 3 1 / Stockage des Données Exécutez ensuite le programme. Le magnétocassette se met en marche pendant que l'ordinateur exécute plusieurs tâches. • Il établit la communication avec le magnétocassette. • Il prépare le stockage des données. • Il donne à la zone de la bande où vont être stockées les données le nom '.' CHEQUES". Ces opérations se passent à la ligne 1 O. Notez la signification de #-1 . "O" et "CHEQUES " : • #-1 correspond au magnétocassette. • "O" correspond à la sortie. • "CHEQUES" indique un nom de fichier. La ligne 20 envoie "DOCTEUR BERTRAND " au magnétocassette. La ligne 30 termine la communication avec le magnétocassette. Nous avons écrit un programme de sortie avec trois commandes dont les syntaxes sont: o P E N mode, dispositif, fichiere Établit la commu nication avec le dispositif pour pouvoir transmettre l'information du fichier à l'aide du mode spécifié de transmission des données. le mode peut être "I" (entrée) ou "O" (sortie) le dispositif peut être *O (écran ou clavier), *-1 (magnétocassette) ou *-2 (imprimante). P R I N T *dispositif, messagee Sort un message vers le dispositif. c L O s E * dispositife Termine la communication avec le dispositif. Programme d'extraction des données (Com mande INPUT #) Vous devez disposer d'un programme d'entrée pour extraire des données et les mettre en mémoire. Effacez le programme de sortie présentement en mémoire et tapez: 1 00 11 0 1 20 130 OPEN " I " , #-1 , " C H EQ U E S " I N p UT # - 1 A $ P R I NT A $ C LO S E # 1 I Préparez le magnétocassette pour charger les données: 1. Rebobinez la cassette. 2. Pressez la touche de lecture (PLAY). 3. Exécutez ensuite le programme. La ligne 100 établit la communication avec le magnétocassette, cette fois-ci pour extraire ("I" ) des données d'un fichier intitulé "CHEQUES". La ligne 1 1 O entre un élément de donnée de "CHEQUES" et le libelle A$. La ligne 1 20 affiche A$. La ligne 1 20 termine la communication avec le magnétocassette. 174 3 1 / Stockage des Données Le programme d'entrée emploie une autre commande nouvelle dont la syntaxe est: I N P U T •dispositif Extrait l'information du dispositif jusqu'à l'un des caractères suivants: virgule (.), point-virgule (;) ou retour du chariot (&ENTERé). Localisation de la fin du fichier (Fonction EOF) Supposons que l'on ignore le nombre d'éléments de données dans "CHEQUES". On désire extraire tous les éléments de données jusqu'à la fin du fichier. Dans ce but, ajoutez les lignes suivantes au programme d'entrée présentement en mémoire: 1 05 1 25 I F EOF (-1 ) = 1 THEN 130 GOT0 1 05 La ligne 1 05 vérifie si vous êtes arrivé à la fin du fichier. • Si c' est le cas, EOF (-1) est égal à - 1 . L'ordi nateur passe à la ligne 30 et termine la communication avec le fichier. • Si ce n 'est pas le cas, EOF (-1) n'est à égal à -1 . L'ordinateur extrait l'élément suivant de donnée du fichier. Peur déterminer si vous avez atteint la fin du fichier, vous devez utiliser une nouvelle fonction dont la syntaxe est: E o F (dispositif'J Renvoie un nombre indiquant si vous avez atteint la fin du fichier sur le dispositif. Le nombre retourné est 1 (fin de fichier) ou 0 (autre qLe fin de fichier). Stockage d'autres données Jusqu'à présent, "CH ÈQUES" a été facile a manipuler, sans être très utile. Supposons que vous désirez stocker l'information suivante dans "CHÈQUES": CHÈQUES PAYABLE À MONTANT D ÉPENSES DOCTEUR BERTRAND SAFEWAY ARM É E DU SALUT MAISON DE LA PRFSSE 45.78 22.50 20.00 1 3.67 SOINS M É DICAUX ALIME NTATION CHARITÉ AFFAIRES Le programme de sortie suivant permet de stocker la totalité de l ' information ci-dessus, non seulement pour les quatres chèques indiqués, mais aussi pour tous ceux que vous désirez: 5 C LS 1 0 OPEN " 0 " , #-1 , " C H EQ U E S " I N P U T " PA Y A B L E A : " ; A$ 20 I F A $ = " " T H E N 80 30 I NPUT "MONTANT : $ " ; 8 40 I N P U T " D E P E N S E S : " ; C$ 50 60 PRINT #1 , A$, B , C $ GOTO 20 70 80 C LO S E # 1 ·.::. 31 / Stockage des Données Le programme d'entrée complémentaire suivant extrait tous les chèques stockés jusqu'à ce qu'il arrive en fin de fichier: 1 00 110 1 20 1 50 1 60 1 70 OPEN " ! " , #-1 , "C HEQUES" I F EOF C - 1 ) = - 1 T H EN 1 5 0 I N P UT A $ , B , C $ PRINT A$; B ; C$ GOTO 1 1 0 C LO S E # - 1 Appris au chapitre 3 1 COMMANDES OPEN CLOSE PRINT # I N PUT # 176 FONCTIONS EOF , 32 I TABLEAUX N U M ERIQU ES Dans ce chapitre, nous apprenons à organiser des groupes importants de nombres à l'aide d'un nouveau type de variable et d'une nouvelle méthode d'organisation des variables. Nouveau type de variable (Variables avec indice) Aux élections, supposons que vous désirez stocker les voix des districts 1 à 14 dans des variables: RÉSULTATS D'UNE ÉLECTION Circonscription 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Voix d'un candidat 143 21 5 1 25 331 442 324 213 115 318 314 223 1 52 314 92 Vous pouvez stocker ces voix dans le même genre de variable simple que vous avez utilisé jusqu'à présent. Par exemple, stockez les voix des trois premiers districts dans des variables simples en tapant: A = 1 4 3 (ENTER) B = 21 5 � c = 1 2 5 ŒNITB.) 177 32 I Tableaux Numériques Il est cependant préférable d'utiliser des variables avec indice. Tapez: A ( 1 ) = 1 43 � A ( 2 ) = 2 1 5 (ENTER) A ( 3 ) = 1 2 5 (ENTt:RJ Ces variables s'accompagnent d'indices comme 1 , 2 et 3. Les indices mis à part, elles s'utilisent comme des variables simples. Pour vous en rendre compte, tapez ces deux jignes. P R I N T A ; B ; C ŒNIEBJ P R I N T A ( 1 ) ; A ( 2 ) ; A ( 3 ) (ENTER) Organisation des variables avec indice (Tableaux et commande DIM) Comparez les deux programmes ci-dessous. Tous deux se déroulent d e façon identique. Le programme 1 utilise des variables simples et le programme 2 des variables avec indice. PROGRAMME 1 10 20 30 40 50 60 70 75 80 90 100 110 1 20 130 1 40 150 1 60 170 180 190 200 210 220 DATA 1 43 , 2 1 5 , 1 2 5 , 3 3 1 , 4 42 D A T A 32 4 , 2 1 3 , 1 1 5 , 3 1 8 , 3 1 4 DATA 223 , 1 5 2 , 3 1 4 , 9 2 READ A , B , C , D , E READ F , G , H , I , J READ K , L , M , N I N PUT " D I S T R I C T NO. ( 1 - 1 4 ) " ; Z I F Z>14 THEN 70 I F Z=1 T H E N P R I N T A "VO I X " I F Z=2 T H E N P R I N T B " V O I X " I F Z =3 T H E N P R I N T C " V O I X " I F Z=4 T H E N P R I N T D "VO I X " I F Z = 5 T H E N P R I N T E "VO I X " I F Z=6 T H E N P R I N T F "V O I X " I F Z=7 T H E N P R I N T G "VO I X " I F Z=8 T H E N P R I N T H " V O I X " I F Z=9 T H E N P R I N T r " V O I X " I F Z=1 0 T H E N P R I N T J "VO I X " I F Z = 1 1 T H E N P R I N T K "VO I X " I F Z=1 2 T H E N P R I N T L "VO I X " I F Z=1 3 T H E N P R I N T M "VO I X " I F Z=1 4 T H E N P R I N T N "VO I X " G O T O 70 PROGRAMME 2 10 20 30 40 50 60 70 80 85 90 1 00 178 DATA 1 43 , 2 1 5 , 1 2 5 , 33 1 , 4 42 DATA 32 4 , 2 1 3 , 1 1 5 , 31 8 , 3 1 4 D A T A 2 2 3 , 1 5 2 , 3 1 4 , 92 DIM A ( 1 4) F O R X = 1 TO 1 4 READ A(X) NEXT X I N PUT " D I S TR I C T NO (1 - 1 4 ) " ; Z I F Z> 1 4 T H E N 80 PRINT ACZ) "VOIX" GOTO 80 32 / Tableaux Numériques Le programme 1 est peu commode à écrire. Le programme 2 est au contraire court et simple. Entrez et exécutez le programme 2 qui se déroule ainsi: • La ligne 40 réserve ou dimensionne de la place pour un variables à indices s'étendant de A(O) à A(14). • Les lignes 50 et 70 établissent une boucle pour compter de 1 à 14. • La ligne 60 lit les 14 circonscriptions dans le tableau A. tableau intitulé A avec YOUR COMPUT E R ' S MEMORY • A ( 1 ) = 1 43 A (8) = 1 1 5 A(2) = 215 A (9) = 318 A (3 ) = 1 25 A(10) = 314 A (4 ) = 331 A <1 1 > = 223 A ( 5 ) = 4 42 A ( 6) = 324 A ( 1 2 ) = 1 52 A(13) = 314 A (7) = 213 A ( 1 4) = 92 La ligne 80 vous demande d'entrer un indice et la ligne 90 imprime l 'élément demandé. La ligne 40 utilise DIM, nouvelle commande BASIC, dont la syntaxe est: D I M variable(n) Dimensionne la variable sous forme de tableau avec n i ndices. Remarque: En fait, on ne doit utiliser DIM que si l'on compte utiliser des indices supérieurs à 1;tn. Si l'on n' utilise cependant pas d'i ndices supérieurs à 10, il est quand même bon d'utiliser DIM pour réserver la longueur exacte de mémoire. Quand vous avez stocké l'information dans u n tableau, i l devient facile de la manipuler. Par exemple. ajoutez les lignes suivantes pour changer l ' information: 92 94 96 97 98 I NPUT "VOULE Z-VOUS AJOUTER A C E C I " ; R$ I F R $ = " N O N " T H E N 80 I N PUT "C OM B I E N DE VOIX DE PLU S " ; X A ( Z ) =A ( Z ) + X P R I N T " L E S V O I X T O T A L E S P O U R LA C I R C O N S C R I P T I O N " Z " S O N T M A I N T E NANT" A ( Z ) Vous pouvez aussi ajouter ces lignes pour afficher l'information: 72 I N P U T " D E S I R E Z - V O U S VO I R T O U S L E S TOTA U X 11 ; S $ 74 I F S$="0U I " T H E N GOSUB 1 1 0 GOTO 72 1 00 110 PRINT "CI RCONS C R I PTION " , "VOIX" F O R X=1 T0 1 4 1 20 1 3 0 PRINT X , A (X) 1 40 N E X T X 1 50 RETURN 179 32 I Tableaux Numériques Un deuxième en plus (Utilisation de deux tableaux) Supposons que vous désirez aussi compter les voix d'un deuxième candidat (dandidat B): RÊSULTATS DE L'ÉLECTION Circonscription Voix pour le candidat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A Voix pour le candidat 8 678 514 430 475 302 520 613 694 420 518 370 412 460 502 1 43 215 1 25 331 442 324 213 115 318 314 223 1 52 314 92 Ajoutons un autre tableau (tableau B) au programme. Le programme suivant enregistre les voix du candidat A (tableau A) et du candidat B (tableauB): 10 20 30 40 50 60 70 80 90 1 00 110 1 20 130 1 40 1 45 1 50 1 60 1 70 1 80 D A T A 1 4 3 , 2 1 5 , 1 2 5 , 3 31 , 44 2 D A T A 32 4 , 2 1 3 , 1 1 5 , 3 1 8 , 3 1 4 DATA 223 , 1 5 2 , 3 1 4 , 92 D A T A 67 8 , 5 1 4 , 43 0 , 4 7 5 , 3 0 2 D A T A 5 2 0 , 6 1 3 , 69 4 , 4 2 0 , 5 1 8 DATA 370 , 4 1 2 , 46 0 , 502 DIM A C 1 4) , B C 1 4) FOR X = 1 TO 1 4 READ A(X) N EXT X FOR X = 1 TO 1 4 READ B ( X) N E XT X I N P U T " C I R C ON S C R I P T I O N N O . " ; Z I F Z>1 4 T H E N 1 40 I N P U T " C A N D I D AT A OU B " ; R $ I F R $ = 1 1 A 11 T H E N P R I N T A ( Z ) I F R$="B" T H E N P R I NT B C Z ) GOTO 1 40 EXERCICE 32· 1 Écrivez u nprogramme d'inventaire qui permette de suivre 1 2 articles, 1 à 1 2 , et la q uantité de chacun d'eux. 180 numérotés de 32 / Tab/eaux Numériques Distribution des cartes (Exemple de tableaux) Vous devez utiliser un tableau pour suivre les 52 cartes. Effacez le programme puis tapez et exécutez le suivant: F O R X=1 TO 5 2 40 C= R N D ( 5 2 ) 50 90 PRINT C; 1 00 NEXT X L' ordinateur distribue 52 cartes au hasard, mais si vous y regardez de plus prés, certaines des carte sont les mêmes. Pour vous assurere que l'ordinateur distribue une carte donnée une seule fois, vous pouvez établir un autre tableau (tableau T) qui suit chaque carte donnée. Ajoutez les lignes su ivantes: DIM (52) 5 10 FOR X=1 T0 52 T < X ) =X 20 NEXT X 30 Les lignes ci-dessus établissent le tableau T pour les 52 cartes: T(1) T(52) = 52 . = 1 , T(2) = 2, T(3) 3 . = Ajoutez ensuite quelques lignes pour "effacer" chaque carte d u tableau T quand elle a été donnée. Tapez: 60 80 I F T ( C ) =0 THEN 50 î ( C ) =0 L'ordinateur ne peut maintenant plus distribuer deux fois la même carte. Par exemple, supposons que l'ordinateur donne d'abord un 2. La ligne 80 fait passer la valeur de T(2) de 2 à o. Supposons ensuite que l'ordinateur distribue u n autre 2 . T(S2) étant maintenant égal à O, la ligne 60 revient à la ligne 50 pour distribuer une autre carte. Exécutez le programme. Vous pouvez remarquer que l'ordinateur ralentit vers la fin du jeu de cartes. I l doit essayer plusieurs cartes différentes avant d'en trouver une qui n'a pas encore été distribuée. Pour jouer à un jeu de cartes, vous devez suivre les cartes distribuées. Dans ce but, vous pouvez établir un autre tableau (tableau D). Ajoutez les lignes suivantes, qui stockent toutes les cartes dans leur ordre de distribution dans le tableau D: 7 70 90 D I M D C52) O (X) = T C C ) PRINT D (X) ; EXERCICE 32-2 Ajoutez des lignes au programme pour qu'il n'affiche que votre "main" Oes cinq premières cartes distribuées). 181 32 / Tableau Numériques Appris au chapitre 32 182 COMMANDE CONCEPT DIM tableaux 33 I TABLEAUX EN CHAÎNE Dans le dernier chapitre, nous avons utilisé des tableaux pour manipuler des nombres. Ici, nous les utilisons pour manipuler des mots en corrigeant, en mettant à jour et en i mprimant un essai entier. Stockage des mots dans des variables (Tableaux en chaine) Commencez par une liste simple de mots composés d'articles d'épicerie: 1. 2. 3. 4. 5. 6. OEUFS BACON POMMES DE TERRE SEL SUCRE LAITUE 7. 8. 9. 10. 11. 1 2. TOMATES PAIN LAIT FROMAGE POISSON JUS Attribuez chaque mot à une variable à indice. Cette fois-ci, utilisez une variable en chaîne à indice inférieur. Par exemple pour les trois premiers art'cles, tapez: "0 EU F S " (ENTERl ŒNill) S $ ( 3 ) = " P O M M E S D E T E R R E " (ENTER) S$ (1 ) = S $ ( 2 ) = " BA CON" Pour comprendre la nise en mémoire des articles, tapez: P R I N T S $ ( 1 ) , S $ ( 2 ) , S $ ( 3 ) ŒRŒ.ID 183 33 I Tableaux en Chaine Préparez maintenant un programme qui lise ces mots dans un tableau S$ et les affiche ensuite: DIM S$(12' 5 DATA OEUFS , BACON , POMMES DE T E R R E , S E L 10 DATA S U C R E , L A I T U E , TOM A T E S , P A I N 20 3 0 D A T A L A I T , F RO MA G E , P O I S S O N , J U S F O R X = 1 TO 1 2 40 READ S $ ( X ) 50 60 NEXT X PRINT " L I S TE DE MAGAS IN A G E : " 70 FOR X=1 T0 1 2 80 PRINT X ; S$(X) 90 1 00 NEXT X EXERCICE 33-1 Ajoutez des lignes au programme ci-dessus pour pouvoir changer un article quelconque de la liste. EXERCICE 33-2 Dans le programme suivant, un tableau sert à écrire les paroles d'une chanson. DIM A$(4) 5 P R I NT " T A P E Z 4 L I G N E S " 10 FOR X=1 TO 4 20 I N PUT A $ ( X ) 30 N EXT X 40 CLS 50 P R I N T " VO I C I V O T R E C H A N S O N " 60 70 PRINT F O R X=1 TO 4 80 PRINT X ; " " ; A$(X) 90 NEXT X 1 00 Ajoutez des lignes pour pouvoir réviser une ligne quelconque. 184 33 / Tableaux en Chaine Rédaction d'un essai (Exemple de tableaux en chaine) Vous avez appris à utiliser les tableaux en chaîne. Vous pouvez maintenant écrire facilement un programme qui stocke et édite les données tapées. Tapez le programme suivant: 1 C LEAR 5 D I M A $ ( 5 0) PRINT "TAPEZ U N PARAGRAPHE" 10 P R I N T " P R E S S EZ < / > S I VOUS A V E Z F I N I " 20 X = 1 30 A$ = I N KEY$ 40 I F A$ = " " T H EN 40 50 PRINT A$; 60 I F A$ = "/" THEN 1 1 0 70 A $ ( X ) = A $ ( X ) + A$ 80 IF A$ = " . " TH EN X = X + 1 90 GOTO 40 100 CLS 110 1 20 P R I N T "VOTRE PARAGRAP H E : " PRINT 130 FOR Y = 1 TO X 1 40 150 PRINT A$(Y) ; N EXT Y 1 60 Exécutez le programme. Pour comprendre le stockage de chaque phrase, tapez ces lignes: PR I NT A$ ( 1 ) (ENTERJ P R I N T A $ ( 2 ) (ENTER) PRINT A$(3) � Le programme se déroule ainsi: 1. La ligne 1 efface suffisamment d'espace de chaîne. 2. La ligne 5 garde de la place pour un tableau A$ qui peut contenir jusqu'à 50 phrases. 3. La ligne 30 rend X égal à 1 . X sert à libeller toutes les phrases. 4. La ligne 40 vérifie la touche que vous pressez. S'il n'y a rien (" "), la ligne 50 renvoie l' ordinateur à la ligne 40. 5. La ligne 60 imprime la touche pressée. 6. La ligne 70 renvoie l'ordinateur aux lignes qui impriment votre paragraphe quand vous avez pressé la touche "/". 7. La ligne 80 établit une chaîne et la libelle avec le nombre X qui est égal à 1 jusqu'à ce que vous pressiez un point (.) La ligne 90 rend ensu te X égal à X + 1 . 8. Les lignes 1 40 à 1 60 impriment votre paragraphe. Par exemple, si vous aviez d'abord pressé "R," A$(1) EST ÉGAL A "R". Si vous aviez ensuite pressé " O" , A$(1) EST ÉGAL A A$(1) QUI VAUT "R" + "O" ou "RO". 185 33 / Tab/eaux Chaine Supposons que si A$(1) est égal à ROSES ROUGES, vous pressez le point. A$(1) est alors égal à l'expression entière ROSES ROUGES. La lettre suivante pressée est dans A$(2). EXERCICE AVANCE 33-3 Voici un exercice plus difficile (mais vous pouvez quand même trouver la solution) qui se rapporte au traitement de :exte. Changez le programme ci-dessus pour pouvoir: • imprimer une phrase quelconque; • réviser une phrase quelconque. Vous devrez peut-être revoir l'exercice avancé du chapitre 1 4. Notre réponse est à la fin du livre. Utilisation de l' imprimante (Commandes PRINT # et LLIST) Si vous avez une imprimante, branchez-la dans la prise d'entrée/sortie série (SERIAL 1/0). Mettez l 'imprimante en marche et insérez du papier. Consultez les instructions du manuel de l'imprimante. Si vous êtes prêt, tapez le court programme suivant: 10 20 I N PUT A$ P R I N T #-2 , A$ Tapez ensuite: L L I ST (ENTER) Si votre programme n'apparaît pas sur l'imprimante, assurez-vous que celle-ci est en ligne et reliée à votre clavier. Tapez de nouveau LLIST (ENTERl. Exécutez le programme et observez l'imprimante au travail. PRINT #-2, indique à l 'ordinateur d'imprimer, non sur l'écran, mais sur le dispositif #-2, qui est l'imprimante. N'oubliez pas de taper une virgule après -2, sinon il se produit une erreur de syntaxe. EXERCICE 33-4 Jetez un coup d'oeil au programme "Rédaction d'un essai" donné dans ce chapitre. Changez les lignes 1 40 à 1 60 pour imprimer le paragraphe sur l'imprimante plutôt que sur l'écran. Appris au chapitre 33 186 COMMANDES CONCEPT$ LLIST PRINT #-2 Tableaux en chaîne 34 I TABLEAUX M U LTIDIMENSIONN ELS Les tableaux facilitent l'analyse de l'information. E n donnant à chaque article plus d'un indice, vous pouvez le faire passer par des dimensions différentes. ( "\ Prenons le programme d'élection du chapitre 32. Voici l'i nformation. (Nous n'utiliserons que les trois premières circonscriptions µour simplifier le programme.) Stockage des tables de nombres (Tableaux bidimensionnels) Circonscription 1 2 3 Voix pour Voix pour le candidat 1 le candidat 2 1 43 215 125 678 514 430 Au chapitre 32, vous avez stocké les "articles" ci-dessus (groupes de voix) dans deux tableaux une dimension: les tableaux A et B. Dans ce chapitre, vous allez les stocker dans un seul tableau bidimensionnel facile à manipu1er: le tableau V. à Le programme suivant met les articles dans le tableau V. 5 D I M V ( 3 , 2) 1 0 DATA 1 4 3 , 678 , 2 1 5 , 5 1 4 , 1 2 5 , 430 20 FOR 0=1 TO 3 30 FOR C=1 TO 2 40 READ V ( D , C ) 5 0 NEXT C 60 N E X T D I N PUT " C I R CO N S C R I P T I O N NO ( 1 -3 ) " ; 0 70 I F 0 < 1 O R D>3 T H E N 7 0 80 I N P U T " C A N D I D A T N O ( 1 -2 ) " ; 0 90 I F C <0 OF C > 2 T H E N 9 0 1 00 110 PRINT V(O,C) 1 2 0 GOTO 70 187 34 / Tableaux Multidimensionnels Tapez et exécutez le programme. Vous pouvez voir que chaque article est libellé par deux indices inférieurs. Le programme se déroule ainsi: La ligne 5 réserve de la place en mémoire pour le tableau V. Chaque article du tableau V peut avoir deux indices inférieurs dont le premier ne dépasse pas 3 et le deJxième ne dépasse pas 2. Les lignes 20 à 60 lisent toutes les voix dans le tableau V en don nant deux indices inférieurs à chacune. • Le premier indice inférieur correspond à la circonscription (circonscriptions 1-3). • Le second indice inférieur correspond au candidat (candidats 1-2). YOUR COMPUT E R ' S MEMORY V ( 1 , 1 ) = 1 43 V C 1 , 2 ) = 678 V C2 , 1 > = 21 5 V C 2 , 2 ) = 51 4 V C3 , 1 > = 1 25 V C 3 , 2 ) = 430 Par exemple, 678 est libellé V(1,2). Autrement dit, 678 vient de l a ci rconscription 1 et est destiné au candidat 2. Toutes les voix étant dans un tableau bidimensionnel, il devient facile de les analyser en deux dimensions. En ajoutant par exemple les lignes suivantes, vous pouvez mprimer toutes les voix de deux façons: par circonscription et par candidat. (Annulez d'abord les lignes 70 à 1 20.) 70 80 1 00 110 188 I N P U T " T A P E Z <1 > P O U R LA C I R C O N S C R I P T I O N O U < 2 > P O U R LE C AN D I D AT " ; R I F R < 1 O R R > 2 T H E N 70 ON R G O S U B 1 0 0 0 , 2 0 0 0 G OT O 7 0 1 0 00 1 01 0 1015 I N PUT " C I R C ON S C R I PT ION NO ( 1 -3 ) " ; D I F D < 1 OR D > 3 T H E N 1 0 00 C LS 1 02 0 1 03 0 1 04 0 1 050 1 0 60 1 07 0 1 08 0 P R I N T @ 1 3 2 , " V O I X D E L A C I R C O N S C R I P T I O N" D PR INT F O R C = 1 TO 2 PRINT "CANDIDAT: C , PRINT V ( D , C) NEXT C RETURN 2000 201 0 201 5 2020 2 03 0 2040 2050 2060 2070 2080 I N PUT " C A N D I DAT N O C 1 - 2 ) " ; C I F C < 1 OR C>2 THEN 2000 CLS PRINT @ 1 3 2 , "VOIX POUR LE C A N D I D AT"C PRINT FOR D=1 TO 3 P R I N T " D I ST R I C T " D , PRINT V ( D , C ) N E XT D RETURN 34 ! Tableaux Multidimensionnels La troisième dimension (Tableaux tridimensionnels) Vous pouvez continuer avec autant de dimensions que vcus le voulez. Vous n'êtes limité que par la quantité de données que peut accepter la mémoire de l 'ordinateur. Ajoutez une troisième dimension au tableau V pour les groupes d'intérêt. Voici les données: VOIX DU GROUPE D'INTÉRÊT 1 Candidat 1 Circonscription 1 Circonscription 2 Circonscription 3 Candidat 1 43 2 678 514 430 215 1 25 VOIX DU GROUPE D'INTÉRÊT 2 Candidat 1 Circonscription 1 Circonscription 2 Circonscriptoin 3 Candidat 525 318 2 54 158 200 254 VOIX DU GROUPE D'INTÉRÊT 3 Candidat 1 Circonscription 1 Circonscription 2 Circonscription 3 400 1 24 75 Pour placer ces données dans l a mémoire de votre ordinateur, Candidat 2 119 300 419 effacez l e prug ·amme et tapez: 5 D I M V C3 , 3 , 2 ) 10 D A T A 1 43 , 6 7 8 , 2 1 5 , 5 1 4 , 1 2 5 , 43 0 20 30 40 50 60 70 80 90 1 00 110 1 20 130 140 1 50 1 60 1 70 1 80 DATA 5 2 5 , 5 4 , 3 1 8 , 1 5 8 , 2 5 4 , 200 DATA 400, 1 1 9 , 1 2 4 , 3 0 0 , 7 5 , 41 9 F O R G = 1 TO 3 F O R 0 "' 1 T O 3 FOR C=1 TO 2 READ V (G , D , C) NEXT C NEXT D NEXT G I NPUT I F G <1 I N PUT I F D <1 I N PUT I F C<1 P R I NT GOT0 1 "GROUPE D ' INTERET N O ( 1 -3) " ; D 0 R G>3 T H E N 1 3 0 " C I R C ON S C R I P T I O N N O C 1 - 3 ) ; D O R D>3 T H E N 1 3 0 " C A N D I D AT N O ( 1 - 2 ) " ; C O R C>2 T H E N 1 5 0 V(G, D,C) 10 189 34 / Tableaux Multidimensionnels Exécutez l e programme et vérifiez les indices inférieurs. Les lignes 4 0 à 100 mettent toutes les voix dans le tableau V en donnant trois indices inférieurs à chacune: • Le premier indice inférieur correspond au groupe d'intérêt (1-3). • Le deuxième correspond • Le troisième correspond au candidat (1-2). à la circonscription (1-3). YOUR COMPUTE R ' S MEMORY V(1 , 1 , 1 VC1 ,2,1 VC1 ,3,1 V(2,1 ,1 V(2,2,1 V(2,3 ,1 V<3 , 1 , 1 V(3 , 2 , 1 V(3,3 , 1 ) ) ) ) ) ) ) > > = = = = = = 1 43 21 5 1 25 525 31 8 25 4 = 400 = 1 24 = 75 V(1 ,1 ,2) V (1 , 2 , 2) V (1 , 3 , 2) V(2,1 ,2) VC2,2 ,2) VC2,3,2) V(3 , 1 ,2) VC3 , 2,2) V(3,3 , 2) = = = = = = = = = 67 8 514 43 0 54 1 57 200 119 3 00 41 9 Par exemple, 678 est maintenant libellé V(1 ,1,2). 678 correspond donc au groupe d'intérêt 1 de la circonscription 1 et revient au candidat 2. Pour profiter des trois dimensions, annulez les lignes 110 à 180 et tapez: 110 P R I N T : P R I N T "TAPEZ < 1 > POUR L E G ROUPE" 1 20 130 P R I N T " < 2 > P O U R L A C I R C O N S C R I P T I O N OU < 3 > P O U R L E C A N D I D A T " P=224 : I N PUT R ON R GOSUB 1 0 0 , 2000 , 3000 1 40 1 50 1 1 1 1 1 1 000 01 0 020 03 0 040 050 1 1 1 1 06 0 07 0 08 0 1 00 1110 1 1 20 1 1 30 1 1 40 190 GOT0 1 1 0 I N P UT " G R OU P E ( 1 -3 ) " ; G I F G < 1 OU G > 3 T H E N 1 0 00 CLS PRINT @ 1 0 2 , "VOI X DU GROUPE"G P R I N T @ 1 6 8 , : C A N O . 1 11 PRINT @ 1 7 6 , "CAN O . 2" F O R D = 1 TO 3 PRINT @P, "CIRC."D FOR C=1 TO 2 P R I N T @P + 8* C , V ( G , D , C ) ; N E XT C P=P+32 N EXT D R ET U R N 34 / Tableaux Multidimensionnels 2000 201 0 2020 2030 2040 2050 2060 2070 2080 2 1 00 21 1 0 2120 2130 2 1 40 3000 301 0 3020 3030 3040 3050 3060 3 07 0 3080 31 1 0 3120 3130 3 1 40 I N P UT " C I R C O N S C R I P T I ON ( 1 -3 ) " ; 0 I F 0 <1 O R D > 3 T H E N 2 0 0 0 C LS P R I NT @ 1 0 2 , "VOIX DE C I R C . " D PRINT @168, "CANO. 1 " P R I NT @ 1 7 6 , " C A N O . 3 " FOR G=1 TO 3 PRINT @ P , " GROUPE"G FOR C=1 TO 2 P R I N T @ P , 8* C , V ( G , O , C ) ; NEXT C P=P+32 NEXT G R E TURN I N P UT " C A N D I D A T ( 1 - 2 ) " ; C I F C < 1 OR C>2 T H E N 3000 CLS P R I N T @ 1 0 2 , "VOIX POUR CAND . " C PRINT @168, " C I R C . PRINT @176, "CIRC . P R I NT @ 1 8 4 , " C I R C . FOR G=1 TO 3 PRINT @P + 8*0 , V < G NEXT D P=P+32 NEXT G 1" 2" 3" ,D,C) ; R E TURN Exécutez le programme. Vous pouvez maintenant voir l 'information sous trois angles. EXERCICE 34·1 Ecrivez un programme pour distribuer les cartes à l'aide d'un tableau bidimensionnel. La première dimension doit correspondre à la couleur des cartes {1 ·4) et la deuxième à leur valeur (1 -13). Appris au chapitre 34 CONCEPT Tableaux multidimensionnels 191 T H E REAL THING lntroducing . . . coco 3! Sample program no. 22 lntro highlights some of the new features of Color BASIC version 2. ·� P ..... i tï .... .: c r- i.:- � r ·. � t or Computer Art Sample program no. 29 Random lines, circles, and boxes create colorful computer art. Try our program, then change it. The Coco Rainbow Sample program no. 23 Hcolors lets you see ail colors, eight at a time. sixty-four The Artists Palette Sample program no. 24 Palette shows you a mixture of sixteen colors randomly selected fmm the sixty-four available colors_ - - -- - - - �- - -· eoocf••o• c)•o• OC)ee()eOOeC>eeo� _ Color Doodle Sample program no. 30 Color Doodle lets you draw your own computer art on the screen. Look at the program, and add your own special function keys. Going Everywhere at Once Sample program no. 5 ln-Out draws moving patterns of lines in exc;iting colors. Change the colors for more variety. Pick a Lucky Clover Sample program no. 1 7 Grow your own 8-Leaf Clover. Transplant it to other parts of the screen. String Art Sample program no. 28 Moving lines draw colorful string art. The program uses random starting points for a line, and twists them until they bounce off the screen edges. A Sine of the Times Sample program no. 9 Weave a wave across your screen with a loop and some t ricky trigonometry. This Fan is a Breeze Sample program no. 19 Cool off in front of your own computerized fan. Change the colors for different effects. 1 CAO, Can Vou? Sample program no. 7 Projection Studies gives you a first encounter with Computer Aided Desig n (CAO). This is your BASIC tunnel . . . See do it yourse/f program no. 24- 1 Dig an electronic tunnel. Look at how do it yourself program no 24-1 draws chimney smoke. Delete lines 25-90 and design your own tunnel. Hint: Try a larger radius. Experiment with the program to change the depth and width of the tunnel. . Looping Loops Sample program no. 27 Watch circles change in color and grow. The sizes change at random. Colorful Boxes Sample program no. 25 Colorbox draws a screen full of boxes, then changes the colors. An Electronic Blanket Sample program no. 1 3 Navaho Blanket to keep yourself warm. Experiment with different sizes and colors. Weave a Build Your Own House Do it yourself program no. 26-4 Build a house, complete with smoking chimney. Build your own additions. PART I E 6 I RETOUR AUX ÉLÉM ENTS D E BASE Dans la partie qui suit de ce livre, vous apprendrez de nouvea�x mots du BASIC qui vous aideront à perfectiorner et raffiner vos programmes. 1 93 35 I Les Nombres Vous pouvez utiliser de nombreuses fonctions numériques pour vous aider dans les calculs mathématiques. Ce chapitre énumère ces fonctions et vous apprend aussi à créer les vôtres. Fonctions arithmétiques (Fonctions SQR, FIX, ABS et SGN) Le premier groupe de fonctions, qui réunit SOR, FIX, ABS et SGN, se rapporte aux problèmes arithmétiques. SOR permet d'extraire la racine carrée d'un nombre. En voici la syntaxe: s Q R (nombre) Le nombre correspond à zéro ou à un nombre positif. A titre d'exemple de SOR, tapez: P R I N T SQR ( 1 0 0) � L'ordinateur indique 1 O qui est la racine carrée de 1 OO. FIX convertit un nombre à sa partie entière en éliminant tous les chiffres à la droite du point décimal. Sa syntaxe est: F I x (nombre) A titre d'exemple de FIX, tapez: P R I NT F I X ( 2 . 7 6 4 3 9 5 1 ) (ENTER) L'ordinateur donne 2 qui est la partie entière de 2. 764395 1 . Oa1s cet autre exemple avec FIX, ce programme décompose un nombre en sa partie entière et sa partie fractionnaire. 10 20 30 40 50 60 70 C LS I N P U T "UN N O M B R E COMME X . Y Z " ; X W= F I X ( X ) F=ABS ( X ) -A B S ( W ) P R I N T "PART I E EN T I E R E=" ; W P R I N T "PART I E F R A C T I O N N A I RE=" ; F GOTO 20 1 95 35 / Les Nombres SGN vous indique si u n nombre est positif, négatif ou nul. Sa syntaxe est: s G N (nombre) Comme exemple de SGN. exécutez le programme suivant: 10 20 30 40 50 I N PU T " T A P E Z U N N O M B R E " ; X I F SGN ( X ) = 1 T H E N P R I N T "POS I T I F" I F S G N ( X ) = 0 T H E N P R I N T " N U L" I F S G N ( X ) = -1 T H E N P R I N T " N E G A T I F " G O T0 1 0 ABS vous donne la valeur absolue d'un nombre (grandeur du nombre, sans considération de son signe). Sa syntaxe est: A B s (nombre) Comme exemple d'ABS. exécutez ce programme: 10 20 30 I N PUT "TAPEZ U N NOMB R E " ; N P R I N T " LA VALEUR ABSOLUE EST" ABS ( N ) GOTO 1 0 Fonctions trigonométriques (Fonctions SIN, COS, LOG et EXP) Le groupe suivant, composé des fonctions SIN, COS. LOG et EXP, sert aux calculs des opérations trigonométriques (calculs des côtés et des angles inconnus d'un triangle). SIN calcule le sinus d'un angle. Sa syntaxe est: s r N (angle) L'angle correspond à la valeur de l'angle en radians. COS calcule le cosinus d'un angle. Sa syntaxe est: c o s (angle) L'angle correspond à la valeur de l'angle en radians. TAN calcule la tangente d'un angle. Sa syntaxe est: T A N (angle) L'angle correspond à la valeur de l'angle en radians. ATN calcule l'arc tangente d'un angle. Sa syntaxe est: A T N (angle) L'angle correspond à la valeur de l'angle en radians. Dans les programmes suivants de trigonométrie. on utilise les fonctions SIN, COS, TAN et ATN pour calculer les côtés et angles inconnus d'un triangle. Vous pouvez utiliser ces programmes dans de nombreuses applications pratiques sans avoir à connaître la trigonométrie. Parmi ces applications pratiques, citons la construction. Par exemple, si vous construisez un escalier, ces programmes peuvent vous aider à en calculer la pente et la hauteur. 1 96 35 / Les Nombres Dans chaque programme, nous utilisons les lettres SA, SB, SC, AA, AB et AC pour désigner les côtés et les angles d'un triangle, comme le montre l'illustration ci-dessous. AB SB Dans le premier programme, vous devez entrer le côté AC et les angles AA et AB. Le programme utilise ensuite la fonction SIN pour calculer les côtés SA et SB. 5 10 C LS I N P U T "QU E L E S T L ' AN G L E AA C EN D E G R E S ) " ; A A : I F AA<=0 OR 20 A A > = 1 80 T H E N 1 0 0 I N P U T " Q U E L E S T L ' A N G L E A B ( E N D E G R E S ) " ; A B : I F A A < = 0 OR 30 40 50 60 70 A B > = 1 8 0 T H EN 1 0 0 I N P UT " Q U E L EST LE COTE SC ( S C ) " ; S C : I F S C <=0 T H E N 1 0 0 AC=1 80- (AA+AB) ' VA L EU R D E L ' A N G L E AC I F (AA+AB+AC) <> 1 80 THEN 1 00 1 T R I A N G L E = 1 80 D E G R E S AA=A A / 5 7 . 29577 9 5 1 : AB=AB / 5 7 . 2957795 1 : AC=AC / 5 7 . 29577951 ' C O N V E R T I T L E S D E G R E S EN R A D I ANS SA = C C S I N ( A B ) ) / ( S I N ( A C ) ) 8 S C : I F S A < 0 T H E N 1 0 0 S B = C < S I N ( A B ) ) / ( S I N ( A C ) ) * S C : I F S B <0 T H E N 1 0 0 P R I N T " L E C O T E S A ( S A ) A" S A " D E L O N G " : P R I N T " L E C O T E S B ( S B ) A " SB " D E LO N G " : GOTO 1 0 P R I N T " D E S O L E , C E N ' E S T PAS UN T R I A N G L E , R E C O M M E N C E Z " : G O T 0 1 0 100 80 90 Dans le deuxième programme, vous entr.ez les côtés SA et SB et l'angle AC. Le programme utilise la fonction COS pour calculer le côté SC. 5 C LS 10 20 30 I N PUT " Q U E L E S T L ' A N G LE C C A C > " ; A C : I F A C < 0 0R A C > 1 8 0 T H E N 1 0 0 A C = A C / 5 7 . 2 9 5 7 7 9 5 1 ' C O N V E R T I T LES D E G R E S EN R A D I A N S I N P U T " Q U E L E S T L E C O T E A ( S A ) " ; S A : I F S A < =0 T H E N 1 0 0 I N P UT " Q U E L E S T L E C O T E B ( S B ) " ; S B : I F S B <=0 T H E N 1 0 0 40 S C = ( ( S A B2 ) + ( S B t2 ) ) - ( 2 * C S A * S B * C O S C A C ) ) ) : I F S C <0 T H E N 1 0 0 50 P R I N T " L E C O T E C ( S C ) A " S Q R ( S C ) " D E LO N G " : G O T O 1 0 60 P R I N T " D E S O L E , C E C I N ' E S T P A S U N T R I A N G L E , R E C OM M E N C E Z " : 1 00 GOTO 1 0 Dans le troisième programme, vous entrez le côté SB et l'angle AA. Le programme utilise la fonction TAN pour calculer le côté SA. 5 C LS I N PUT " Q U E L E S T L E COTE B ( S B ) " ; S B : I F S B <=0 T H E N 1 00 I N PUT " Q U E L E S T L ' A N G L E A C A A ) " ; A A : I F AA<=0 O R A A > = 1 80 T H E N 1 0 0 AA=A A / 5 7 . 29577951 ' C O N V E R T I T LES D E G R E S EN R A D IANS 30 SA=SB* (TAN (AA) ) : I F SA<=0 THEN 1 00 40 P R I N T " L E C O T E A ( S A ) A " S A " D E LO N G " : G O T O 1 0 50 1 00 P R I N T " D E S O L E , C E C I N ' E S T P A S U N T R I A N G L E , R E C O MM E N C E Z " : GOTO 1 0 10 20 197 35 I Les Nombres Dans le quatrième programme, vous entrez le côté SB et l ' angle AA. Le programme utilise les fonctions TAN et ARC pour calculer le côté SA. 10 20 30 40 50 60 70 80 90 1 00 110 1 20 1 30 1 40 1 50 C LS I N P U T " Q U E L E S T L E C O T E A C S A) " ; S A : I F S A < =0 T H E N 1 5 0 I N P U T " Q U E L E S T L E C O T E C ( S C ) " ; S C : I F S C < =0 T H E N 1 5 0 I N P U T " Q U E L E S T L ' A N G L E B ( A B ) " ; A B : I F A B < =0 0 R A B > = 1 80 T H E N 1 5 0 X = C 1 80-AB) ' A A+AC=1 80-AB X=X/57 . 29577951 ' CO N V E R T I T LES D E G R E S EN R A D I A N S Y = ( (SA- S C ) / (SA+S C ) ) *TAN ( X / 2 ) Z=ATN C Y ) AA= C X / 2 ) + ( Z ) A C = ( X / 2 ) - (Z ) AA=AA * 5 7 . 2 9 5 7 7 9 5 1 ' C O N V E R T I T L E S R A D I A N S E N D E G R E S A C =AC * 5 7 . 29577951 ' C O N V E R T I T LES R A D I A N S EN D E G R E S P R I NT " L ' A N G L E A (AA) A" AA " D E G R E S " P R I N T " L ' A N G L E C C A C ) A" A C " D E G R E S " : GOTO 20 P R I N T " D E S O L E , C E C I N ' E ST P A S UN T R I AN G L E , R E C O M M E N C E Z " : GOTO 2 0 Avec les fonctions trigonométriques, on utilise plutôt les radians que les degrés pour la mesure des angles. Pour cette raison, chacun des programmes précédents convertit les degrés en radians et vice-versa. Nous avons utilisé les formules suivantes pour ces conversions: Degrés en radians: degrés57.29577951 Radians en degrés: radians57.29577951 Logarithmes et exponentielles (Fonctions LOG et EXP) Le groupe suivant de fonctions permet le calcul des exponentielles et des logarithmes naturels des nombres. Elles servent dans les opérations mathématiques de niveau plus complexe. LOG calcule le logarithme naturel d'un nombre. Sa syntaxe est: L O G (nombre) Le nombre doit être supérieur à zéro. Le logarithme naturel d'un nombre est la puissance à laquelle on doit élever 2.71 8281828 (la base) pour obtenir ce nombre. Par exemple, tapez: P R I N T L O G ( 8 ) ŒNm) L'écran indique 2.079441 54 (logarithme naturel). En effet, on doit élever 2. 71 8281 828 (la base) à la puissance 2.079441 54 pour obtenir 8 (le nombre). Le logarithme d'un nombre est identique au logarithme naturel, mais la base peut correspondre à n'importe quel nombre et pas nécessairement à 2.71 8281828. On peut aussi utiliser la fonction LOG pour calculer le logarithme d'un nombre à l'aide de la formule suivante: LOG (nombre) LOG (base) Par exemple, tapez: PR I N T L 0 G ( 8 ) / L 0 G ( 2 ) (ENT ER1 198 35 / Les Nombres L'écran indique 3 (le logarithme). En effet, on doit élever 2 (la base) à la puissance 3 pour obtenir 8 (le nombre). EXP calcule l'exponentielle naturelle d'un nombre. Sa syntaxe est: E x P (nombre) Le nombre doit être inférieur à 87.3365. L'exponentielle naturelle d'un nombre correspond à la puissance à laquelle on doit élever 2.71 8281828 pour obtenir ce nombre. Par exemple, tapez: P R I N T E X P ( 8 ) ŒEITIB) L'écran indique 2980.95799 (exponentielle naturelle). En effet, il faut élever 2. 71 8281 828 (la base) à la puissance 2980.95799 pour obtenir 8. Création de vos propres fonctions {Commande DEF FN) La commande DEF FN vous permet de créer ou de définir vous-même une fonction numérique. Sa syntaxe est: D E F F N nom (variable fictive) Le nom formule correspond au nom attribué à = votre fonction. Les variable fictives correspondent à celles utilisées dans votre formule. La formule définit l 'opération exécutée par la fonction. A titre d'exemple de DEF FN, tapez la ligne suivante: 10 DEF F NDEUX (N) =N*2 Cette ligne définit la fonction DEUX. Cette fonction exécute une opération simple. Elle multiplie un nombre quelconque par 2. Ajoutez les lignes suivantes au programme: 20 30 I N PUT X P R I N T D EU X ( X ) 40 GOTO 20 Exécutez l e programme. L a ligne 3 0 utilise l a fonction DEUX pour multiplier l e nombre entré par 2 . Comme autre exemple de D E F F N , considérons l a conversion des degrés et des radians, opération mathématique que nous avons faite précédemment dans les programmes trigonométriques de ce chapitre. DEF FN permet de définir et d'utiliser votre propre fonction pour exécuter la conversion. Essayez les lignes suivantes dans le premier programme ae trigonométrie (programme avec la fonction SIN pour calculer les côtés SA et SB). Ajoutez la ligne 7 pour définir la fonction de conversion. Changez ensuite la ligne 60 pour utiliser la fonction de corversion. 7 60 D E F F N R C X > = X / 5 7 . 29577951 AA= F N R (AA) : A B = F N R C A B ) : A C = F N R ( A C ) Quand vous utilisez DEF F N , n'oubliez pas de défin i r une fonction au préalable. Sinon, vous obtenez ?UF ERROR (erreur de fonction non définie). 1 99 35 / Les Nombres EXERCICE 35-1 Utilisez DEF FN pour: 1. 2. Convertir les radians en degrés. Créer une fonction mathématique qui élève les nombres au cube. Le chapitre "De tout et de rien" donne une table de référence rapide de nombreuses formules mathématiques pratiques (géométrie plane, trigonométrie et algèbre). · Appris au chapitre 35 200 COMMANDE FONCTIONS DEF FN SOR SIN cos TAN ATN LOG EXP FIX SGN ABS 36 I LES CHAÎN ES Ce chapitre énumère trois fonctions et une commande qui servent à la manipulation des c h a '.i n e s . Affichage des chaines de caractères (Fonction STRING$) La fonction STRING$ permet de créer une chaîne de caractères pour produire des graphiques, des tables et tout autre affichage de texte. La syntaxe de STRING$ est: s T R I N G $ (longueur, caractère) La longueur est un nombre de 0 à 255. Le caractère correspond au caractère entre guillemets ou au code numérique du caractère. (Voir "Codes de caractère" pour le caractère numérique de chaque caractère.) Comme exemple de STRING$, tapez: P R I N T S T R I N G $ (3 0 , " A " ) (ENTERl L'écran donne 30 A. 201 36 / Les Chaînes Dans l'exemple suivant, changez le programme "Traits" pour avoir: 5 6 7 9 10 15 20 25 30 40 C LS X $ = S TR I N G $ ( 1 3 , " * " ) P R I N T @96 , X S ; "TRA I T S " ; X $ FOR X=1 TO 1 000 : N E X T X PMODE 3 , 1 P C LS S C R EEN 1 , 1 LINE ( 0 , 0 ) - (255 , 1 9 1 > , P SET LINE ( 0 , 1 9 1 ) - ( 255 , 0 ) , P SET GOTO 40 L a ligne 6 attribue à X $ l a valeur STRING$(1 3," •" ) chaîne d e 1 3 astérisques. , La ligne 7 indique à l'ordinateur d'imprimer (en commençant à la position d'impression d'écran 96) X$, puis le mot TRAITS, suivi de nouveau de X$. (Voir la feuille de travail d'écran de texte dans la partie 7.) X$ étant équivalant à 1 3 astérisques O. ces caractères sont imprimés avant et après TRAITS. Voulez-vous donner un peu plus d'allure au titre? Ajoutez les données suivantes: 8 Y$=ST R I N G $ (3 1 , 42) : P R I N T @ 38 4 , Y Cette fois-ci, vous dites à l'ordinateur d 'afficher le caractère représenté par le code 42 qui correspond à un astérisque. EXERCICE 36-1 Avez-vous déjà écrit des listes pour vérifier les travaux que vous devez faire? A l'aide de STRING$, écrivez un programme qui crée une liste de points à vérifier. Conversion des nombres en chaines (Fonction STR$) La fonction STR$ convertit une chaîne en nombre. Sa syntaxe est: s T R $(nombre) Retourne une chaîne contenant un nombre. Le court programme suivant vous fera comprendre la fonction STR$: 10 20 30 I N P U T " T A P E Z U N N OM B R E " ; N A$=STR$ ( N ) P R I NT A $ + " E S T M A I N T E N A N T U N E C H A I N E " À la recherche des chaines (Fonction INSTR) La fonction INSTR vous permet de chercher une chaîne dans une autre. Sa syntaxe est: I N s T R (position, recherche de chaîne, chaîne recherchée) La position correspond à la position dans la recherche de chaîne à laquelle la recherche doit commencer (0 à 255). Si vous omettez la position, l'ordinateur commence automatiquement au premier caractère. 202 36 / Les ChaÎnes La recherche de chaine correspono à la chaîne à chercher. La chaine recherchée correspond à la chaîne cherchée. INSTR donne un 0 si l'une des situations suivantes est vraie: • La position est supérieure au nombre de caractères de la recherche de chaîne. • La recherche de chaine est nulle (elle ne contient aucun caractère). • INSTR ne peut pas trouver la chaine recherchée. L e programme suivant met INSTR à l ' oeuvre: 5 C LEAR 500 10 C LS I N P U T " R E C H E R C H E D E T E XT E " ; S $ 15 20 I N P UT " T E X T E R E C H E R C H E" ; T $ 25 C = 0 : P = 1 ' P= P O S I T I O N 30 F=INST R C P , S $ , T$) 35 I F F=0 T H EN 6 0 C=C+1 40 P R I N T L E FT$ ( S $ , F - 1 ) + STR I N G $ ( LE N C T$) , C H R$ ( 1 28 ) ) + 45 R I G H T $ ( S $ , L E N ( S $ ) - F - L E N ( T $ ) +1 ) P=F+LEN (T$) 50 I F P <= L E N C S $ ) - L E N C T $ ) + 1 T H E N 3 0 55 60 P R I N T " T R O UV E" ; C ; " A P P AR I T I ON S " Nous donnons ci-dessous un exemple d'exécution du programme ci-dessus. Vous pouvez toutefois entrer le texte de votre choix. R E C H E R C H E D E TEXTE? E S S A Y E Z D ' U T I L I S E R VOTRE O R D I NATEUR COULEUR L E P L U S PO S S I B L E . TEXTE RECHERCHE? LE E S S A Y E Z D ' UT I L I S E R [ ] [ l T R S - 8 0 L E P LU S POS S I B L E . E S S A Y E Z D ' U T I L I S E R L E T R S -8 0 [ ) [ ] L E P L U S P O S S I B L E . T R O U V " E 2 A P P AR I T I O N S . OK Le programme se déroule ainsi: 1. La ligne 1 5 attri bue à S$ (recherche) la valeur: ESSAYEZ D'UTILISER LE TRS-80 LE PLUS POSSIBLE. 2. La ligne 20 attribue à TS (chaîne recherchée) la valeur de LE. 3. La ligne 30 indique à l'ordinateur de commencer la recherche de T$ à l a première position (P) dans S$. 4. Aux lignes 45 et 55, I NSTR localise T$ et imprime et cache ensuite T$ (CHR$(128)). Elle recherche l'apparition suivante de T$ et procède de même. 5. La ligne 60 indique à l 'ordinateur d'afficher le nombre d'apparitions de T$ dans SS. EXERCICE 36-2 É crivez un programme qui donne la première et la deuxième apparition de B dans ABCDEB. 203 36 / Les Chaînes Le programme suivant de stockage de données, qui contient une liste d'expédition de noms et d'adresses, constitue un moyen simple de mémoriser l'information. Remarquez que nous avons conservé de la place de mémoire en ne mettant pas d'espace entre les mots. Cette méthode rend la lecture difficile. mais ce n'est pas le cas pour l'ordinateur. Notez également que nous avons attribué un astérisque à gauche (*) aux codes postaux pour que l'ordinateur ne les confonde pas avec des numéros de rue. Dans le cas présent, nous cherchons les noms et adresses de toutes les personnes qui habitent dans la zone correspondant au code postal 650 . Par conséquent, *650 est la chaine recherchée (A$). -- 5 C LS A$="*650" X $ = " J A M E S S M I T H , 6 5 5 0 H A R R I S O N , D A L LA S T X * 7 5 0 0 2 : S U E S I M , R T3 , G R A V I O S M0 * 6 5 0 8 4 : L Y D I A L O N G , 3 4 4 5 S M I T H S T , A S B U R Y N J • 32044 : J O H N GARON E R , BOX60E OMONTON AL B ERTACA" 30 Y $ = " K E R R Y F E W E L L , 4 5 G M A P L E , N E WOR LEAN S • 89667 : B I L L O O L S E I N , 63 1 3 E 1 2 1 K A N S A S C I T Y M 0 * 6 4 1 3 4 : S T E V E H O D G E S , R T 4 F LO R E N C E M E • 6 5 0 8 8 " 40 Z = " K A R E N C R O S S , 3 1 4 H U R L E Y W A S H I N GT O N D C * 1 0 0 1 1 : A S H E R F I T Z G E R A L O , 2338HAR R I S O N F T W O R T H T X * 7 6 1 0 1 : L I Z D Y LAN , B O X 9 99 N E W Y O R K N Y * 8 6 8 6 6 " 10 20 Pour que votre ordinateur puisse rechercher X$, ajoutez la ligne suivante: 50 P R I N T I N S T R C X $ , A $) Exécutez l e programme. L'écran indique: 62 OK Vous savez ainsi que la chaîne contient un nom et une adresse que vous recherchez. Et Y$? Corrigez la ligne 50 pour que l'ordinateur cherche parmi ces adresses. Vous dit-il qu'il a trouvé le nom recherché? Essayez maintenant Z$. En affichant un zéro, votre ordi nateur vous indique: "Cette liste ne contient aucun des noms que vous cherchez." EXERCICE 36-3 Modifiez le programme de liste d'expédition pour que les conditions suivantes soient vraies: 204 • X$ contient deux adresses avec un code postal 650 --. • L'ordinateur recherche chaque apparition de *650 (pas seulement la première). 36 I Les ChaÎnes Remplacement des chaines (Commande MID$) La commande MID$ vous apporte une puissante possibilité de correction de chaîne en vous permettant de remplacer une partie de chaîne par une autre. La syntaxe de MID$ est la suivante: M I o $ (ancienne chaîne,position,longueur) = nouvelle chaîne L'ancienne chaîne correspond au nom de variable de la chaîne à remplacer. La position correspond au numéro de la position du premier caractère à changer. La longueur correspond à un nombre de caractères à remplacer. Si vous omettez longueur, l'ordinateur remplace la totalité de l'ancienne chaîne. La nouvelle chaîne correspond à la chaîne l'ancienne. qui remplace la partie spécifiée de Remarque: Si la nouvelle chaîne a moins de caractères que n'en spécifie la longueur, l'ordinateur substitue la totalité de la nouvelle chaîne. Cette dernière a toujours la même longueur que l'ancienne chaîne. Pour mieux comprendre la commande MIO$, exécutez le programme suivant: 5 10 20 30 C LS A$=" K A N S A S C I TY , MO" M I 0 $(A$ , 1 4 ) ="KS" P R I N T A$ La ligne 1 0 attribue à A$ la valeur KANSAS CITY, MO. La ligne 20 indique ensuite à l'ordinateur d'utiliser MID$ pour remplacer une partie de l 'ancienne cfla.îne (A$) par KS, à partir de la position 14. Remplacez la position 14 par 8 et exécutez le programme. Vous obtenez: K A N S A S C I T Y , MO Ajoutez maintenant l'option de longueur 20 à la ligne 20: M I O $ ( A4 , 1 4 , 2 ) =" K S " Vous pouvez remarquer que cette option n'affecte pas le résultat, car la nouvelle chaîne et l'ancienne chaîne ont toutes deux 2 caractères de long. Faites passer la longueur à 1 : 20 MID$(A$ , 1 4 , 1 > ="KS" L'ordinateur ne remplace qu'un caractère de l'ancienne chaîne. avec le premier caractère de KS. 205 36 / Les Chaînes MID$ est encore plus efficace quand vous l 'utilisez avec INSTR. Avec ces deux instructions, vous pouvez "rechercher et détruire" du texte. INSTR recherche et MID$ change ou "détruit". Le programme suivant donne un exemple de ces instructions: 5 CLS I N PUT " E N T R E Z U N M O I S E T UN J O U R (MM / J J ) , " ; X$ 10 20 P=INSTR (X$,"/") IF P=0 THEN 10 30 40 M I D $ ( X$ , P , 1 ) ="-" P R I N T X $ " E S T B I E N P L US F A C I L E A L I R E ? " 50 Dans ce programme, INSTR recherche une barre oblique ({). Quand elle en trouve une, MID$ la remplace par un tiret (-). EXERCICE 36·4 Supposons que vous avez travaillé dans une compagnie de téléphone à l'époque où les centraux adoptaient les chiffres à la plar.A rle8 caractères alphabétiques. Écrivez un programme qui utilise MID$ pour remplacer tous les caractères alphabétiques par des nombres. N'oubliez pas d'effacer assez de place de chaîne pour éviter d'obtenir une erreur ?OS. Appris au chapitre 36 206 COMMANDE FONCTIONS MID$ STRING$ INSTR STR$ 37 I ENTRÉE ET SORTI E Les instructions d'entréesortie vous permettent d'envoyer des données du clavier à l'ordinateur, de l'ordinateur au téléviseur ou à l'imprimante. Ces fonctions s'utilisent essentiellement dans des programmes pour envoyer des données, des résultats et des messages. Un autre moyen d'entrer (Commande LINE INPUT) LINE INPUT est analogue à INPUT, compte tenu des différences suivantes: • Pendant l'exécution de l'instruction, l'ordinateur n'affiche pas de point d'interrogation quand il attend l 'entrée depuis le clavier. • Chaque instruction LINE INPUT peut attribuer une valeur à une variable seulement. • L'ordinateur accepte les virgules et les points d'interrogation dans l'entrée de la chaîne. • Les espaces blancs de gauche, au lieu d'être ignorés, font partie de la variable en chaîne. La syntaxe de LINE INPUT est: L I N E I N P U T "guide-opérateur" varia ble en chaîne Le guide-opérateur correspond au message "guide-opérateur' '. La varia ble en chaîne correspond au nom attribué à la ligne entrée à partir du clavier. Avec UNE INPUT. vous pouvez entrer des données en chaîne sans vous inquiéter d'inclure par mégarde des séparateurs comme des virgules, des points d'interrogation et des deux points. L'ordinateur accepte tout. En fait, dans certains cas, vous devez entrer des virgules, des points d'interrogation et des espaces blancs de gauche dans les données. Exemples: L I N E I NPUT X$ � 3 7 / Entrée et Sortie Cette commande vous permet d'entrer X$ sans afficher de guide-opérateur. L I N E I N P U T " N 0 M , P R E N 0 M ? " ; N $ (ENTERJ Cette commande affiche le guide-opérateur "NOM, PRENOM?" et entre les données. Des virgules ne terminent pas la chaîne d'entrée. Remarquez que le guide-opérateur comprend le point d'interrogation et l'espace qui suit. Pour mieux comprendre LI N E IN PUT, entrez et exécutez le programne suivant: 10 20 30 40 50 60 70 80 90 C LEAR 300: C LS P R I N T TAB ( B ) ; " I N S T R U C T I O N L I N E I N PUT" : P R I NT P R I NT : P R I NT "*** ENTREZ TEXTE ***" ' * * * T I R E Z LA C H A I N E , P U I S I M P R I M E Z - L A * * * A $ = 11 1 1 ' F I X E Z A $ C O M M E C H A I N E N U L L E L I N E I N P U T 1 1 = = > 11 ; A $ I F A $= ' ' T H E N E N D ' S I C H A I N E E N C O R E N U L L E , A R R E T E Z ! P R I NT A$ G OTO 5 0 " Une impression personnalisée {Commande PRINT USING) PRINT USING vous permet d'afficrer chaînes et nombres sous un format "personnalisé " qui peut être très pratique avec les états de comptabilité, les chèques, les tables, les graphiq ues ou les autres données de sortie qui font appel à un format d'impression spécifique. Voici la syntaxe de PRINT USING: PR I NT us I N G format;liste d'articles Le format correspond à une expression en chaîne qui indique à l'ordi nateur le format à utiliser dans l'impression de chaque article de la liste d'articles. li comprend des "identificate urs de zone ' et d'autres caractères. Il forme un ensemble. La liste d'articles correspond aux données à mettre en format. Remarque: PRINT USING n'imprime pas automatiquement les espaces blancs de tête et de queue des nombres. Elle ne les imprime que si vous les indiquez dans le format. Vous pouvez utiliser les identificateurs de zone suivants dans le format: # ** $ 208 $$ * '> $ + tttt 37 / Entrée et Sortie Nous expliquons ci-dessous chaque identificateur de zone et nous en donnons des exemples d' utilisation. # Le signe du numéro spécifie la position de chaque chiffre dans le numéro à er:itrer. Le nombre de signes du numéro établit la longueur de la zone numérique. Si la zone est plus grande que le nombre, l'ordinateur affiche les positions inutilisées à la gauche du nombre sous forme d' espaces et à sa droite sous forme de zéros. P R I N T US I N G "#####" ; 6 6 . 2� 66 Si la zone est trop petite pour le nombre, l 'ordinateur affiche le nombre avec un signe Ç à sa gauche. P R I N T U S I N G 11 # 1 1 ; 6 6 . 2 ŒN.îED %66 Vous pouvez placer le point décimal à toute position de l a zone établie avec le signe du numéro. L'ordinateur arrondit automatiquement les chiffres à l a droite du point décimal qui n'entrent pas dans la zone. P R I N T U S I N G " # . # " ; 6 6 . 2 5 c:ENJ'.fID %66 . 3 • P R I N T U S I N G " # # . # " ; 5 8 7 6� 58.8 P R I N T U S I N G "## . ## " ; 1 0 . 2 , 5 . 3 , 6 6 . 7 89 , . 23 4� 0 . 23 6 6 . 69 5 . 30 1 0 . 20 Remarque: Dans le dernier exemple, le format contient trois espaces après le signe du numéro final. Ces espaces séparent les nombres quand l'ordi nateur les affiche . La virgule, placée à une position quelconque entre le premier c1iffre et le point décimal, affiche une virgule à la gauche de chaque tranche de trois chiffres. La virgule établit une position supplérrentaire dans la zone numérique. Pour éviter un dépassement de capacité (indiqué par un signe de pourcentage devant le nombre), placez une virgule à chaque troisième position, dans la zone numérique. I l se produit un dé pas sem ent de capacité quand la zone n est pas assez gran de. ' PR I NT U S I N G " # # # # # # ## # , " ; 1 2 3 4 5 6 78 1 2 ,3345 , 678 P R I N T U S I N G " # # # # # # # # # , " ; 1 23 4 5 6 7 8 9 %1 23 , 4 5 6 , 7 8 9 P R I N T U S I N G "# # # , # # # , # # # " ; 1 23 4 5 6 7 8 9 1 23 , 4 5 6 , 7 8 9 ** Quand vous placez deux asté risques au début de la zore numérique, l'ordinateur remplit toutes les positions inutilisées à la gauche du point décimal par des astérisq ues. Les deux astérisques établissent deux positions de plus dans la zone numérique. P R I N T U S I N G " * * ####" ; 4 4 . 0 ****44 $ Si vous mettez un signe de dollar devant la zone numérique, l'ordinateur place auSSI ce s;gne devant le nombre quand il l'affiche. Ce signe est pratique quand vous trav-c.::e.z avec des somrr .es d'argent. P R I N T U S I N G " $ # # # . # # " ; 1 8 . 67 3 5 $ 1 8 . 65 209 37 / Entrée et Sortie Si vous placez deux signes de dollar au début d e l a zone, l'ordinateur affiche un signe flottant de dollar immédiatement devant le premier chiffre. $$ P R I N T U S I N G " $ $ # # . # # " ; 1 8 . 6 735 $1 8 . 67 **$ Vous pouvez aussi placer cette combinaison de symboles au début de la zone. L'ordinateur remplit alors les positions vacantes à la - 404 gauche du nombre par des astérisques et il place un signe de dollar à la position immédiatement ·devant le premier chiffre. P R I N T U S I N G " * * $ . 11 11 " ; 8 . 3 33 * $8 . 33 Si vous placez un signe plus au début ou à la fin de la zone, l'ordi nateur fait précéder tous + les nombres positifs d'un signe plus et tous les nombres négatifs d'un signe moins. PR INT U S I N G "+**####" ; 75200 * * +7 5 2 0 0 PRINT USING "+###"; -21 6 -216 Si vous placez un signe moins à la fin de la zone, l' ordinateur fait suivre tous les nombres positifs d'un espace et précéder tous les nombres négatifs d'un signe moins. P R I N T U S I N G " 11 11 11 11 . 11 - " ; - 8 1 2 4 . 4 2 0 81 2 4 . 4 PRINT U S I N G "� � " ; " B L UE ' S STORE" BLUE ' S Exécutez le programme suivant pour voi r PRINT USING à !'oeuvre: 5 10 20 30 40 50 60 CLS A $ = " * * $ # # , # 11 # # # # . # 11 D O L L A R S " I N PUT " Q U E L EST VOTRE PRENOM " ; F $ I N PUT " Q U E L E S T VOTRE D E U X I E M E P R E N OM " ; M $ I N P U T " Q U E L E S T V O T R E N O M " ; L$ I NPUT "ENTREZ LA SOMME DUE" ; P C LS P R I N T "PAYEZ A L ' OR D R E DE " ; 70 80 P R I N T U S I N G 11 ! 11 ; F $ ; 11 • 1 1 ; M $ ; 11 • 11 ; P R I N T L$ 90 100 PRINT : PRINT USING A$;P GOTO 1 1 0 11 0 La ligne 1 O déf i nit le format en utilisant * * $ pour remplir les espaces de gauche d'astérisques et mettre un signe de dollar directement devant le premier nombre. Ce format sert parfois à empêcher la falsification des chèques. La ligne 10 établit aussi la zone numérique à l'aide du signe #. De ce fait, quand vous entrez un nombre plus petit que la zone numérique, l'ordinateur le fait précéder d'astérisques pour remplir les espaces inutilisés. La ligne 1 0 contient deux autres identificateurs de zone: le poin'. décimal et la virgule. L'ordinateur n'affiche le point décimal qu'aux positions spécifiées. Si vous indiquez à l'ordinateur d'inclure deux positions à la droite du point décimal (pour les cents), il arrondit à deux chiffres tous les nombres qui ont plus de deux chiffres. Si vous entrez un nombre qui a un ou pas de chiffre à la droite du point décimal, l'ordinateur insère des zéros. 210 37 / Entrée et Sortie À la ligne 80, les points d' exclamation indiquent à l 'ordinateur de n'utiliser que le premier caractère (initiale) de F$ (votre prénom) et de M$ (votre deuxième prénom). EXERCICE 37-1 Changez le programme pour qu 'aucun astérisque de gauche n'apparaisse sur le chèque. EXERCICE 37-2 Ecrivez un programme qui crée une table montrant votre revenu et vos dépenses de chaque mois. Ne vous préoccupez pas de détailler vos dépenses; calculez simplement les taux et le résultat net (plus ou moins). À l'aide de STRING$, disposer la table en la rendant assez flexible pour pouvoir l'utiliser d'un mois à l'autre sans devoir changer le programme complet. Localisation d'une position (Fonction POS) La fonction POS calcule la position courante du curseur sur l'écran de texte à basse définition ou la position du chariot de l'imprimante. En voici la syntaxe: P o S (numéro de dispositi� Le numéro de dispositif correspond à 0 (écran de texte à basse définition) ou à -2 (imprimante) A titre d'exemple de POS, tapez: P R I NT TAB (8) P O S ( 0 ) L'écran indique le chiffre 8 à la colonne 8 de la ligne courante. Remarque: L'espace qui précède 8 fait apparaître celui-ci dans la colonne 9. Vous pouvez utiliser POS pour invalider la fonction de bouclage automatique sur l'écran ou l'imprimante. Vous évitez ainsi de couper les mots en leur milieu. D'autre part, cette instruction raccourcit obligatoirement la longueur de ligne. Exécutez le programme suivant pour voir POS à !'oeuvre: 5 C LS A$= I N K E Y $ 10 I F A$= ' ' ' ' THEN 1 0 20 IF POS (0) >22 THEN I F A$=CHR$(32) THEN A$=C H R $ ( 1 3 ) 30 40 PRINT A$; GOTO 1 0 50 Ce programme vous permet d'utiliser le clavier comme une machine à écrire (mais vous ne pouvez pas corriger vos erreurs, sauf si vous avez d'abord invalidé l'imprimante). POS surveille la fin de la ligne de façon à ne couper aucun mot. À la ligne 30, l'ordinateur vérifie si la position "courante" du curseur dépasse la colonne 22. (L'écran a 32 colonnes de large.) Si le curseur est au-delà de la colonne 22, l'ordi nateur commence une nouvelle ligne quand vous pressez la barre d'espacement (CHR$(32)). La fois suivante. quand l'ordinateur décide de commencer une nouvelle ligne, il imprime un retour du chariot (CHR$(13)). En fait, l'ordinateur presse la touche (ENTERJ. 21 1 37 / Entrée et Sortie EXERCICE 32-3 Écrivez un programme où vous utilisez POS pour écarter uniformément les mots sur une ligne simple. Localisation d'une position (haute définition) (Commande HSTAT) POS ne donne rien avec l'écran à haute définition. Son équivalent HSTAT donne davantage de renseignements. La commande HSTAT renvoie les coordonnées x et y de la position courante du curseur. Elle donne aussi le caractère présent à cette position, ainsi que ses attributs que nous allons bientôt étudier. Au contraire de POS qui est une rorction, HSTAT est une commande. Sa syntaxe est: H s T A T variable fictive t , variable fictive2, variable fictive3, variable fic!ive4 La variable fictive 1 est une variable quelconque en chaîne. Après son exécution, HSTAT contient le caractère à la position courante. La variable fictive2 est une variable numérique quelconque. Après son exécution, HSTAT contient les attributs de la position courante. i La varable fictive3 est une variable numérique quelconque. Après son exécution, HSTAT contient la coordonnée x de la position courante. i La varia ble fict ve4 est une variable numérique quelconque. Après son exécution, HSTAT contient la coordonrn�e y de la position courante. À titre d'exemple de HSTAT, tapez: H S TAT A $ , B , C , D Après l'exécution de cette commande, A$ contient le caractère à la position courante, B contient les attributs de la position courante, C contient la coordonnée x de la pcsition courante et D la coordonnée y de la position courante. Le programme suivant affiche un "A" sur l'écran puis utilise HSTAT pour vérifier si "A" est vraiment à la bonne position. 10 20 30 40 50 60 70 W I D T H 40 LOCATE 1 9 , 1 1 PRINT "A"; LOCATE 1 9 , 1 1 H S TAT A$ , A , X , Y LOCATE 0 , 1 4 P R I NT A$ , X , Y Pour interpréter l'information concernant un attribut de caractère, on doit connaît re le langage L'écran à haute définition utilise deux octets ;:>our stocker chaque caractère. Un octet stocke le code du caractère et l 'autre ses attributs. machine. 212 37 I Entrée et Sortie L'octet d'attribut contient l'information suivante: Bits 0-2 Bits 3-5 Bit 6 Bit 7 Couleur de fond (Palette 0-7) Couleur de premier plan (Palette 8-15) Soulignage Clignotement à intervalles de 1/2 seconde Quand vous exécutez HSTAT, elle donne l'octet réel d'attribut Pour pouvoir interpréter cet octet, il faut le convertir à son équivalent binaire puis déterminer les octets fixés. La mesure du temps (Fonction TIMER) Votre ordinateur possède une minuterie intégrée qui mesure le temps par intervalles de 1 /60 de seconde (approximativement). Dès que vous mettez l'ordinateur sous tension. la minuterie commence à compter à partir de zéro. Quand elle arrive à 65535 (environ 1 8 minutes plus tard). la minuterie recommence à zéro. Elle marque un temps de pause pendant les opérations de magnétocassette et d'imprimante. À tout instant. vous pouvez connaître le comptage de la minuterie à l'aide de la fonction TIMER. Tapez: P R I N T T I H E R (ENTER) La fonction TIMER affiche une valeur de 0 à 65535. Vous pouvez aussi régler la minuterie à toute valeur spécifiée en tapant: T I M E R = n o m b r e (ENTER) Le nombre est compris dans l'i ntervalle de 0 à 65535. Pour voir TIMER et PnlNT @ USING, autre fonction "nouvelle" , exécutez le programme suivant dit "Questionnaire de maths". Ce programme vous présente un problème de maths. Quand vous pressez Œl, CID, © ou CID, l' ordinateur vous indique si votre réponse est juste ou fausse. L'ordinateur utilise ensuite la minuterie pour vous indiquer votre temps de réponse (à l'aide de TIMER). 10 20 30 D I M C H C 3 ) , L $ ( 3 ) ' C H ( # ) = C H OI X , L$=FOR MATS D E RE P O N S E L L= 1 0 : U L= 2 0 ' L I M I T E I N F . E T L I M I T E S U P . P O U R H E T V N V = U L - L L+ 1 40 50 60 70 P $ = " Q U E V A U T # # # + ### ? " 1 F O R M A T DE Q U E S T I O N F O R I = 0 T O 3 ' I N I T I A LI S E Z C H ( ) L$ ( l ) = C H R $ ( I + 6 5 ) +" ) # # # " N E XT I C LS 80 X = I N T < R ND ( N V C + L L- . 5) 'X AU HASARD ENTRE LL ET U L 90 Y = I N T C R N D ( N V ( + L L - . 5 ) ' Y AU H A S A R D E N T R E L L E T U L 1 00 110 R=INT (X+Y+ . 5 ) ' R EPONSE CORRECTE FOR I=0 TO 3 ' C HOIX MULT I P L E 130 C H ( I ) = I N T C R N D C N V ) + L L- . 5 ) 1 40 NEXT I 150 1 60 170 1 80 1 90 R C = R N D ( 4 ) -1 ' F A I T E S U N C H O I X J U STE CHCR C)=R P R I N T @ 3 2 , U S I N G P $ ; X , Y ' A F F I C H EZ LE PROBLEME F O R L N = 3 TO 6 213 37 / Entrée et Sortie 200 210 220 230 240 250 260 265 270 280 290 300 31 0 320 P R I N T @ L N * 3 2 + 1 0 , U S I N G L $ ( L N-3 ) ; C H ( L N-3 ) NEXT LN T I M E R =0 A $ = " " ' E F F A C E Z L E C LA V I E R A$=I N K E Y $ : IF A$=" " THEN 240 S V = T I M E R ' S I U N E TOU C H E E S T P R E S S E E , S A U V E G A R D E Z L E C O N T E N U DE LA M I NUTER I E I F A$<"A" OR A $ " D " T H E N 2 4 0 ' TO U C H E I N V A L I D E - R E V E N EZ PR INT @ 8*32+1 0 , A K=ASC (A$) -65 I F C H ( K ) = R T H E N P R I N T " J U S T E ! " : GOTO 3 0 0 P R I N T " F A U X ! L A R E PO N S E E S T " ; R PR INT "VOUS AVEZ P R I S " ; S V / 6 0 ; "SECONDES" I N P UT " P R E S S E Z < E N T E R > P O U R P R O B L E M E S U I V A N T " ; E N GOTO 80 Par tâtonnements, remplacez les limites supérieure et inférieure (ligne 20) par h et v. Faites faire au programme une opération mathématique autre que l'addition ou faites-lui tenir la marque, suivant votre temps. Ajoutez cinq secondes pour chaque réponse fausse. Changement de dispositifs (Utilisation des numéros de dispositif) Avez-vous jamais envisagé votre écran vidéo comme un dispositif de "sortie" et votre clavier comme un dispositif "d'entrée"? À l'aide de PRINT, PRINT USING, LI NE I N P UT et POS, vous pouvez utiliser des numéros de dispositif pour diriger l'entrée ou la sortie. Par exemple, supposons que vous tapez: P R I N T # - 2 , U S I N G 11 # # # . # # # 1 1 ; 1 2 3 . 4 5 6 7 8!ENTERJ L'écran reste "silencieux'', mais l'imprimante imprime: 1 23 . 4 5 6 Vous pouvez utiliser les identificateurs disponibles de zone avec PRINT #-2, USING. POS(-2) donne la position courante d'impression de l'im primante à mesure qu'elle change. Remarquez que la position est calc1Jée intérieurement et non mécaniquement. LIN E INPUT # fonctionne de façon analogue, mais elle vous permet de lire une "ligne de données" depuis un fichier de cassette. UNE INPUT # lit la totalité des données du premier caractère jusqu'à la première des éventualités suivantes: • Un caractère de retour du chariot qui n'est pas précédé d'un caractère de changement de ligne. • Le 249 e caractère de données • La fin de fichier Les autres caractères rencontrés (guillements, virgules, espaces blancs de gauche et séquences de retour du chariot/changement de ligne) sont inclus dans la chaîne. Par exemple: L I N E I N PUT #-1 , A envoie une ligne de données de fichier de cassette dans A$. 214 37 I Entrée et Sortie Dans le programme suivant, on utilise UNE INPUT # pour compter le nombre de lignes dans un programme sur cassette qui est sauvegardé (CSAVED) en format ASCII (à l'aide de l'option A): 10 20 30 40 50 60 70 80 90 1 00 110 C LEAR 500 L I N E I N PU T " N O M D U F I C H I E R D E D O N N E E S ? " ; F $ K=0 ' K EST L E COMPTEUR OPEN " I " , -1 , F $ I F EOF (-1 ) THEN 1 0 0 L I N E I N PUT #-1 , A$ K=K+1 PRINT A$ GOTO 5 0 C LO S E # - 1 PRINT "LE F I C H IER CONTENAIT" ; K ; " LI GNES" Appris au chapitre 37 COMMANDES FONCTIONS UNE INPUT PRINT USING HSTAT POS TIMEA 215 38 I LES ERREU RS Dans ce chapitre, nous abordons la question inévitable des erreurs dans vos programmes. Nous ne pouvons pas empêcher les erreurs, mais nous pouvons certainement vous donner les moyens de les localiser et de les supprimer pour qu'elles ne çausent plus de problèmes. Localisation des erreurs (Commandes STOP et CONT) Le BASIC permet de localiser une erreur à l'aide des commandes STOP et CONT dont les syntaxes sont: S T O P Arrête momentanément l'exécution d'un programme BASIC. C O N T Continue l'exécution d'un programme BASIC. À titre d'exemple de l' utilisation de ces commandes, supposons que vous avez entré le programme BASIC suivant qui exécute divers calculs avec un nombre et stocke le résultat dans la variable A: 10 15 20 30 40 A = 1 F O R N = 1 TO 1 0 A = A + 1 A = A * 2 N E XT N Pour une raison quelconque, la variable A ne contient pas le nombre qui devrait y figurer. Pour vous faire une idée de l'origine du problème, vous pouvez ajouter les lignes suivantes: 25 STOP 35 STOP Après avoir ajouté ces lignes, vous pouvez exécuter de nouveau l e programme. Quand l'ordinateur arrive à la première commande STOP, il imprime: BREAK IN 25 L'ordinateur a donc arrêté momentanément l'exécution du programme, mais il n'a pas terminé celui-ci. Vous pouvez ensuite taper: P R I N T A ( ENTERl À ce point de l 'exécution du programme. l'ordi nateur imprime la valeur de A. Pour continuer l'exécution, vous pouvez taper: CONT � Quand l'ordinateur arrive à la commande STOP suivante, il imprime: BREAK IN 35 Vous pouvez maintenant demander PRINT A à l'ordinateur. Celui-ci imprime alors l a valeur de A à ce point de l'exécution du programme. 21 7 38 / Les Erreurs En continuant ainsi, vous pouvez finalement arriver à localiser l'origine du problème et, après correction, éliminer les commandes STOP de votre programme. Dépistage des erreurs (Commandes TRON et TROFF) Les commandes TRON et TROFF permettent de suivre l'exécution du programme pour dépister une erreur. Leur syntaxe est: TRON ou T RO F F Met en ou hors fonction le dépistage d'erreur. À titre d'exemple de cette commande, suivez l 'exécution du programme "Traits". Tapez: T R O N CENTERl Exécutez ensuite le programme: 5 10 20 30 P C LS PMODE 3 , 1 SCREEN 1 , 1 L I N E ( 0 , 0 ) - ( 25 5 , 1 91 ) , PSET L'ordinateur indique: ( 5 ) ( 1 0) (20) (30) OK Vous savez ainsi que l'ordi nateur a exécuté les lignes 5, 1 0 , 20 et 30, dans cet ordre. Pour menre le dépistage hors fonc:ion, tapez: T R O F F (ENTER) Piégeage des erreurs {Commande ON ERR GOTO) Quelle que soit la qualité de votre programme, i l n 'est pas complet s'il ne peut pas prévoir les erreurs d'opérateur. ON ERR GOTO permet de prévoir une erreur et de la "piéger" avant qu'elle provoque l'arrêt de votre programme. La syntaxe de ON ERR GOTO est: ON E R R GOTO numéro de ligne Va au numéro de ligne en cas d'erreur pendant l ' exécution du programme. À titre d'exemple de ON 10 20 30 40 50 60 218 ERR GOTO, supposons que vous avez écrit le programme suivant: PRINT " C E PROGRAMME D I V I S E X PAR Y " : P R I NT I N P UT " E N T R E Z U N N O M B R E P O U R X " ; X I N PUT " E N T R E Z U N NOMBRE POUR Y " ; Y ANS=X/Y P R I NT A N S GOTO 1 0 38 I Les Erreurs Ce programme tourne à la pertection, mais uniquement si l'utilisateur sait que l'ordinateur ne peut pas diviser un nombre par O. Si l' utilisateur tape O {ENTERJ ou simplement (ENTERl, le programme se termine et l' utilisateur reçoit le message suivant: /0 E R R O R I N 40 . Pour piéger cette erreur, vous pouvez ajouter les lignes suivantes au programme: 5 O N E R R G OTO 1 0 0 REM SOUS-PROGRAMME DE TRAI TEMENT D ' ERR EUR P R I N T " L ' O R D I N A T E U R N E P E U T P A S D I V I S E R UN N O M B R E P A R 0" 110 P R I NT "V E U I L L E Z R E COMM E N C E R " 1 20 GOTO 2 0 130 100 Si l' utilisateur entre maintenant 0 (ENTERJ ou (E NTERJ , l'ordinateur donne les messages suivants: L ' O R D I N A T E U R N E P E U T P A S D I V I S E R UN N O M B R E P A R 0 V E U I L L E Z R E C O MM E N C E R ENTREZ U N NOMBRE POUR Y ? Piégeage de la "bonne" erreur (Fonction ERRNO) Avec u n sous-programme de piégeage, vous devez être certain d' arrêter l a bonne erreur. Par exemple, supposons que la ligne 50 contienne une erreur de syntaxe (faute d'orthographe dans PRINT): 50 P I RNT AN Quand l'ordinateur exécute la ligne 40, i l passe au même sous-programme de piégeage d'erreur. Cette fois-ci, il ne va pas au sous-programme de piégeage d' erreur à cause d'une erreur de division par O. Il passe à ce sous-programme à cause d'une erreur de syntaxe. Pour prévoir ce genre de problème, vous pouvez utiliser la fonction ERRNO dont la syntaxe est: ERRNO Donne un numéro d'erreur qui correspond à l'erreur rencontrée. ERRNO donne un numéro d'erreur, plutôt qu'un message d' erreur. Vous pouvez déterminer le numéro d'erreur qui correspond à chaque message d'erreur BASIC en consultant la section " Messages d'erreur BASIC", à la fin de ce livre. Avec ERRNO, vous pouvez échanger le sous-programme de piégeage d'erreur de cette façon: 1 00 1 05 110 120 130 REM SOUS-PROGRAMME DE TRAITEMENT D ' ERREUR I F E R R N O <> 1 0 T H E N P R I N T " E R R E U R F A T A L E " : E N D P R I N T " L ' OR D I N A T E U R N E P E U T P A S D I V I S E R U N N O M B R E P A R 0" P R I N T "VEU I L L E Z R E COM M E N C E R " GOTO 2 0 S'il se produit mai ntenant une erreur autre que l'erreur 1 O (erreur de division par 0), le programme imprime "ERREUR FATALE" et se termine . 219 38 / Les Erreurs Retour au piège correct (Fonction ERLIN) E n plus de piéger la "bonne" erreur, vous devez être certain de revenir au bon endroit du programme, après avoir piégé l'erreur. Supposons par exemple qu'un programme contienne deux lignes (20 de division par 0 peut se produire. et 70) où une erreur Pour déterminer celle de ces lignes qui provoque une erreur, le BASIC :::i ossède la fonction ERLIN dont la syntaxe est: ER L I N Donne le numéro de ligne où l'erreur s'est produite. À l ' aide de ERLIN, vous pouvez changer le sous-programme de piégeage d'erreur de cette façon: 1 00 1 05 110 R EM S O U S - P R O G R A M M E D E T R A I T E M E N T D ' E R R E U R I F E R R N O <> 1 0 T H E N P R I N T " E R R E U R F A TA L E " : E N D P R I N T " L ' O R D I N A T E U R N E P E U T PAS D I V I S E R U N NO M B R E P A R 0" 1 20 1 30 1 40 P R I NT " V E U I L L E Z RECOMM E N C E R " I F E R L I N = 20 T H E N 2 0 I F ERLIN = 70 THEN 70 Piégeage d'une interruption (Commande ON BRK GOTO) La commande ON BRK GOTO ressemble de Lrès près à la commande ON ERR GOTO. Cette commande va à un sous-programme de piégeage d'interruption si l'opérateur presse la touche �. Sa syntaxe est: o N B R K Go TO numéro de ligne Va au numéro de ligne si vous pressez la touche 1BREAKl pendant l'exécution du programme. Le court exemple suivant utilise ON BRK GOTO: ON B R K G O T 0 1 0 0 10 P R I N T " BO N J O U R " 20 GOTO 2 0 30 100 PRIN T " I L EST TEMPS D ' ARRETER CETTE P L A I S ANTERI E ! " Ce programme imprime "BONJOUR" indéfiniment jusqu'à ce que l'opérateur presse la touche �. Au lieu de donner le message B R E A K I N 2 o ou B R E A K I N 3 O, l'ordinateur indique: I L EST TEMPS D ' A R R E T E R C ETTE PLAI SANTER I E ! Le piégeage d'interruption n ' a pas d'équivalent pour les fonctions ERRNO et ERLIN, mais il constitue une meilleure alternative à l'arrêt pur et simple du programme quand l'opérateur presse c:EJITEID. 220 38 / Les Erreurs Appris au chapitre 38 COMMANDES FONCTIONS STOP CONT TRON/TROFF ON ERR GOTO ON BRK GOTO ERLIN ERRNO 221 39 I SOUS-PROGRAM MES EN LANGAGE MACH I N E Dans ce chapitre, nous supposons que vous savez écrire des squs-programmes en langage machine (sous-programmes contenant des instructions de 6809). Vous y apprendrez à appeler un sous-programme en langage macrine à partir d'un programme BASIC. De nombreux ouvrages sont disponibles sur les sous-programmes en langage machine. Vous pouvez vous procurer "6809 Assembly Language Programming" par Lance Leventhal, Osborne M cGraw Hi l', 1 981 . Appel d ' u n sous-programme en langage machine {Commandes CLEAR, CLOADM, LPOKE, DEFUSR et USR) {Sous-programme GIVABF en mémoire morte) Pour appeler un sous-programme en langage machine à partir d'un programme en BASIC, vous devez appliquer les six étapes suivantes. 1. Assemblage du sous-programme en langage machine en code objet Vous pouvez procéder vous-même à cette opération en cherchant le code de craque instruction ou en utilisant un assembleur comme l' EDTASM, n° 26-3250 du catalogue Radio Shack, ou l'EDTASM sur disque, n ° 26-32564. 223 39 / Sous-programmes en Langage Machine Nous donnons ci-dessous un exemple d'un sous-programme en langage machine appelé GETKEY que nous avons assemblé à l aide de l ' E DTASM. Vous pouvez remarquer que le code objet est en hexadécimal et non en décimal. ' Code objet Source Code Remarques LOOP JSR (POLCAT) ; I NTERROGATION D'UNE îOUCHE hexadécimal AD 9F AO OO 1 BEO LOOP1 27 FA 81 26 CMPA OA oc LOOP 2 AD 9F AO OO #10 BNE OUT ;NON, SORTIE JSR (POLCAT) ;OUI, DONC, TOUCHE SUIVANTE 27 FA BEO LOOP2 81 20 2D 02 80 40 I F 89 4F 73 84 F4 CMPA 2. #65 BLT OUT OUT SUBA #64 TFR A,B CLRA POLCAT GIVABF ;SI RIEN, RECOMMENCEZ ;TOUCHE CTRL (ON ARW)? JMP GIVABF EOU 40960 EOU 46324 ;SI RIEN, RECOMMENCEZ ;EST-CE A-Z? ;SI <A, SORTEZ ;CONVERSION A CTRL A/Z ;OCTET D E RETOUR PR ET ;ZERO LE PLUS SIGNIFICATIF ; R ETOURN E LA VALEUR AU BASIC Réservation de mémoire pour le sous-programme en langage machine Le deuxième paramètre de la commande CLEAR permet de réserver de la mémoire. La syntaxe de CLEAR est: n1, n2e Efface n1 octets d'espace de chaîne et fixe n2 comme l'ad resse la plus élevée utilisable par le BASIC. (En fixant n2 comme l'adresse la plus élevée, vous réservez cette zone pour votre sous-programme en langage machine.) c LE A R Par exemple, cette commande réserve une zone de mémoire allant de l'adresse 47200 jusqu'au haut de la mémoire pour le sous-programme GETKEY: 5 C LEAR 2 5 , 47200 Le BAS IC ne peut pas écrire en surimpression dans cette zone de mémoire. 3. Stockage du sous-programme en langage machine en mémoire Vous pouvez charger le sous-programme en langage machine à partir d'une bande, à l'aide de la commande CLOADM ou de la commande LPOKE. La syntaxe de C LOAD M est: c L O A D M nom de fichier, adresse de décalagee Charge un programme ou sous­ programme en langage machine à partir d'une cassette. Le nom de fichier correspond au programme ou sous-programme en langage machine. L.adresse de décalage est facultative; elle précise un décalage à ajouter à l 'adresse de chargement du programme ou sous-programme en lc.ngage machine. La syntaxe de L POK E est: L P O K E adresse, ne stocke un nombre en mémoire. n L.adresse 224 correspond au nombre à stocker. correspond à l'adresse de mémoire où l'on désire stocker le nombre. 39 / Sous-programmes en Langage Machine Par exemple, les lig nes suivantes stockent GETKEY en mémoire à l'aide de LPOKE: 20 30 40 50 60 FOR I = 1 TO 28 R E A D B : LPOKE 47200 + 8 , B NEXT I 70 80 D A T A 1 7 3 , 1 5 9 , 1 6 0 , 0, 3 9 , 2 5 0 D A T A 1 2 8 , 6 4 , 3 1 , 1 3 7 , 79 DATA 1 2 6 , 1 80 , 244 90 DATA 1 73 , 1 5 9 , 1 6 0 , 0 DATA 3 9 , 2 5 0 , 1 2 9 , 1 0 , 3 8 , 1 2 Les lignes 5 0 à 9 0 contiennent les codes objets assemblés d e GETKEY. (On peut remarquer que nous avons converti ces codes en décimal.) La ligne 30 introduit ces codes dans la zone de mémoire réservée à l'étape 2. 4. Indication de la position du sous-programme au BASIC A cet effet, on peut utiliser la commande DEFUSR dont la syntaxe est: D E F u s Rn adresse indique où commence u n sous-programme en langage machine en mémoire. = n correspond au numéro du sous-programme en langage machine (0-9). !.:adresse correspond à la première adresse en mémoire où est stocké le sous­ programme en langage machine. Par exemple, la commande suivante indique au BASIC où est stocké le sous-programme GETKEY: 10 D E F U S R 1 47200 Vous pouvez remarquer que GETKEY est libellé sous-programme 1 . 5. Appel d u sous-programme en langage machine Pour appeler le sous-programme, utilisez la commande USR dont la syntaxe est: var i ab L e f i ct i v e = USRn(valeur) appelle un sous-programme en langage machine. n correspond au numéro du sous-programme en langage machine (0-9). La valeur correspond à la valeur que l'on veut passer au sous-programme en langage machine. La variable fictive correspond à une variable que l'on peut utiliser pour stocker les données retournées par USR. Par exemple, la commande suivante appelle GETKEY (sous-programme 1): 110 A = U S R1 ( 0 ) Quand la commande ci-dessus appelle GETKEY, elle passe (donne) une valeur de O à GETKEY. Dans cet exemple, GETKEY n'utilise pas le O qui n'a donc aucune sig nification. Avec le retour de G ETKEY, la variable A contient une valeur passée par le sous-programme. 225 39 I Sous-programmes en Langage Machine 6. À Retour au BASIC depuis le sous-programme en langage machine cet effet, on peut employer deux méthodes: • On peut utiliser l'instruction RTS qui amène le retour du sous-programme en langaç:;e machine sans devoir passer de valeur à la variable fictive d'USR. • On peut charger une valeur entière dans le registre D et utiliser l'instruction JMP pour le branchement au sous-programme en mémoire morte GIVABF. On amène ainsi le retour du sous-programme en langage machine au BASIC et le passage de la valeur entière stockée dans le registre D à l'argument fictif d'USR. Notre sous-programme GETKEY applique le deuxième choix. Il charge la touche pressée dans le registre D et se branche à GIVABF. De cette manière, il passe la touche pressée à la variable A, à l'aide de l'argument fictif d'USR. Appel du sous-programme GETKEY {Exemple d'appel d'un sous-programme en langage machine) Nous donnons ci-dessous un exemple d'un programme BASIC qui appelle GETKEY, notre sous-programme en langage machine. GETKEY vérifie la touche que vous avez pressée et retourne son code au BASIC. Celui-ci indique ensuite ce code. Pour voir le programme à l'oeuvre, tapez-le soigneusement puis exécutez-le. Chaque fois que vous pressez une touche, son code apparaît. C L E A R 2 5 , 4 7 2 0 0 ' R E S E R V E D E LA M E M O I R E D E F U S R 1 =47200 C LS FOR 1=1 TO 2 8 ' STOCKE C H AQUE O C T E T D E C O D E OBJ ET 20 READ B : POKE 47200 + I , B 30 NEXT I 40 ' VO I C I L E CODE OBJET 45 DATA 1 73 , 1 5 9 , 1 60 , 0 50 DATA 3 9 , 2 5 0 , 1 29 , 1 0 , 3 8 , 1 2 60 DATA 1 7 3 , 1 5 9 , 1 6 0 , 0 , 39 , 2 5 0 70 75 DATA 1 29 , 6 5 , 4 5 , 2 80 D A T A 1 2 8 , 6 4 , 3 1 , 1 3 7 , 79 DATA 1 2 6 , 1 8 0 , 244 90 A = U S R 1 C 0 ) ' A P P E L L E LE S O U S - P R O G R A M M E ET D O N N E L E R E S U L T A T A A 110 I F A= 1 3 T H E N E N D 115 1 20 P R I N T " C ODE=" ; A GOTO 1 1 0 130 5 10 15 En plus de retourner les codes de toutes les touches pressées au clavier, GETKEY donne aussi les codes de 26 touches de commande. Pour entrer une touche de commande, pressez CD, relâchez-la puis appuyez sur une touche quelconque de Œl à m. Pour varier le programme, changez la ligne 120 µour avoir: 1 20 P R I N T C H R $ ( A ) ; ' A F F I C H E LE C A R A C T E R E Pressez CDŒD pour voir l e curseur reculer. 226 39 I Sous-programmes en Langage Machine Passage des valeurs à un sous-programme en langage machine (Sous-programme INTCNV en mémoire morte et fonction VARPTR) Vous pouvez passer de deux façons des valeurs à un sous-programme en langage machine. Vous pouvez utiliser le sous-programme INTCNV en mémoire morte ou la fonction VARPTR du BASIC. Sous-programme I NTCNV Pour passer une valeur entière à votre sous-programme en langage machine, utilisez-la comme argument dans votre fonction USR. Par exemple: A=U S R 1 ( 5 ) Vous appelez ainsi le programme 1 en code machine et lui passez l 'argument 5. Vous pouvez ensuite appeler le sous-programme INTCNV qui sort la valeur entière et la stocke dans le registre D. L.:adresse de I NTCNV est B3ED en hexadécimal. Fonction VARPTR Vous pouvez aussi passer un argument à votre sous-programme en langage machine en passant un "pointeur" à l'ad resse où une valeur de variable est stockée. Vous pouvez utiliser la fonction VARPTR à cet effet: vA R PT R Par variableeRetourne un pointeur où la valeur d'une variable est stockée. exemple: A=USR1 C VARPTR ( B ) ) appelle le sous-programme 1 en langage machine et place un pointeur à l'adresse de la variable B. Le pointeur est stocké dans le registre X. Votre sous-programme en langage machine doit savoir si la variable est numérique ou en chaîne. Si la variable est une chaîne, votre sous-programme en langage machine peut trouver le descripteur à 5 octets de la chaîne dans le registre X. Ce descripteur indique où se trouve la chaîne. Octet 1 longueur de la chaîne (en caractères) Octet 2 réservé à l ' usage de l'ordinateur Octets 3 et 4 adresse du premier octet dans la chaîne Octet 5 réservé à l ' usage de l'ordinateur = = = = Si la variable est numérique, votre programme peut trouver l 'adresse de la valeur du point flottant du nombre dans le registre X. Cette valeur de point flottant possède le format suivant: Octet Octet Octet Octet Octet 1 2 3 4 5 = = = = = exposant de la mantisse octet le plus significatif (MSB) de la mantsse octet le plus significatif suivant de la mantisse octet le plus significatif suivant de la mantisse octet le moins significatif (LSB) de la mantisse 227 39 / Sous-programmes en Langage Machine L'exposant est une valeur entière de 8 bits avec signe, à laquelle sont ajoutées 1 28 décimales. Un exposant 0 indique un nombre O; dans ce cas, la mantisse n'a aucune importance. Le bit le plus significatif de l'exposant stocke le signe de l'exposant: 0 (positif) ou 1 (négatif). La mantisse est stockée sous forme normalisée avec le bit le plus significatif de l 'octet le plus significatif (MSB) de la mantisse censé être 1 . Ce bit peut indiquer le signe de la mantisse: 0 (positif) ou 1 (négatif) . Vous pouvez désirer utiliser VARPTR pour passer un pointeur de variable en tableau à u 1 sous-programme en langage machine. Par exemple: A=USR1 (VARPTR ( B ( 5 ) ) ) appelle le sous-programme 1 en langage machine et passe un pointeur à l'élément 5 du tableau B. Votre sous-programme en langage machine peut trouver les valeurs des éléments en mémoire (de la mémoire basse à la mémoire haute): Valeur du premier élément de la dernière dimension Valeur du dernier élément de la dernière dimension Valeur du premier élément de la première dimension Valeur du dernier élément de la première dimension Chaque élément a cinq octets de long. Retour des valeurs au BASIC (Sous-programme GIVABF en mémoire morte) USR retourne toujours au moins une valeur au BASIC. Cette valeur correspond à l'argument fictif que vous avez initialement passé au sous-programme en langage machine, excepté si celui-ci l'a changée ou modifiée, comme on l'explique ci-dessous. Utilisation de GIVABF pour retourner une valeur entière Pour retourner une valeur entière spécifiée au BASIC, votre sous-programme en langage machine peut charger la valeur entière dans le registre D appelé GIVABF, comme nous l'avons précédemment montré. L'adresse de GIVABF est 84F4 en hexadécimal ou 46324 en décimal. Modification des variables BASIC Vous pouvez retourner une valeur spécifiée au BASIC er faisant modifier une valeur de variable BASIC par votre sous-programme en langage machine. Supposons, par exemple, que vous appelez u n sous-programme en langage machine avec l'instruction suivante: A $ = ( U S R 1 (VARPTR ( B$ ) ) Votre sous-programme en langage machine peut modifier la valeur de B$ et terminer ensuite avec une instruction RTS. USR donne ainsi la valeur modifiée de 8$. 228 39 / Sous-programmes en Langage Machine Si votre sous-programme en langage machine modifie une variable en chaîne, faites très attention aux points suivants: • Vous pouvez changer l' octet de longueur d'un descripteur de chaîne pour " raccourcir" celle-ci, mais vous ne pouvez pas "l'allonger". Si vous ne connaissez pas la dimension de la chaîne retournée par votre sous- programme, réserver 255 octets (longueur maximale) pour la valeur de la chaîne avant de passer au sousprogramme en langage machine. Par exemple: 8$=STR I N G $ ( 2 5 5 ) A$=USR0 (VARP T R ( B $ l ) Passe un pointeur à une chaîne de 255 caractères d'espaces vierges à la fonction USR. Le sous-programme en langag è machine peut ensuite mettre une chaîne de 255 caractères au maximum cans la mémoire indiquée par 8$ ou, le cas échéant, raccourcir l'octet de longueur de la chaîne. • Vous pouvez modifier l'adresse de début d'une chaîne en changeant l'indicateur à deux octets da11s le d esGr i pteu r de diaîne. Dans cette opération, nous recornmandons cependant d'inclure la nouvelle adresse de début dans la chaîne initiale. • Vous pouvez permuter les adresses de début de chaîne. Cette pratique peut servir dans le tri des chaînes. Faites cependant attention à ne pas "entrecroiser" deux chaînes. • Si votre sous-programme en langage machine modifie une variable déjà pointée sur un littéral de chaîne, vous changez votre programme BASIC. Par exemple, supposons que l ' instruction suivante se trouve dans votre programme BASIC: 8$="ABC" Si votre sous-programme en langage machine modifie 8$, votre prcgramme BASIC est changé. Pour éviter cet inconvénient, ajouter une chaîne nulle (" ") à tout littéral de chaîne modifiée par votre sous-programme. Par exemple: B $= 1 1 A B C 11 + " " L a chaîne nulle force l e BASIC à copier l a chaîne dans l 'espace de chaîne où votre sous-programme peut la modifier en toute sécurité. Utilisation de l'espace de pile U n sous-programme e n langage machine appelé par USR demandant plus de 30 octets de stockage en pile doit fournir sa propre zone de pile. Sauvegardez le pointeur de pile de BASIC à l'entrée dans la fonction USR, en établissant un nouveau pointeur et en rétablissant le pointeur de pile de BASIC avant de revenir au BASIC. Les valeurs des registres A, B, X et CC n'ont pas à être conservées par USR. 229 39 / Sous-programmes en Langage Machine Fonctions BASIC pratiques (Opérateur &H et fonctions HEX$ et LPEEK) Le BASIC possède plusieurs fonctions pratiques dans le traitement des sous-programmes en langage machine. L'opérateur "&H" convertit un nombre décimal en notation hexadécimale. Par exemple, la commande suivante stocke le nombre hexadécimal 20 dans l 'adresse de mémoire 47200: LPOKE 47200, &H20 La fonction HEX$ convertit un nomore décimal en craîne hexadécimale. Sa syntaxe est: H E X $ < n ) Retourne la valeur hexadécimale de n sous forme de chaîne. Par exemple, la commande suivante stocke " 1 0," valeur hexadécimale de 1 6 dans A$: A$=HEX$ (16) La fonction LPEEK vous permet de voir une valeur stockée dans une certaine adresse de mémoire. Sa syntaxe est: L P E e K(adresse) Retourne le nombre stocké dans l'adresse. Par exemple, la commande suivante indique le nombre, en notation hexadécimale, stocké dans l'adresse 47200: P R I N T L P E E K ( 47200) Appris au chapitre 230 39 COMMANDES FONCTIONS OPÉRATEUR CLEAR DEFUSR USA LPEEK LPOKE VARPTR HEX$ &H PARTIE 7 I DE TOUT ET DE RIEN 231 RÉPONSES SUGGÉRÉES AUX EXERCICES Exercice 4-4 Reproduction des tonalités du bas vers le haut de la gamme et vice-versa: 10 20 30 40 50 60 F O R X = 1 TO 2 5 5 SOUND X , 1 NEXT X F O R X = 2 5 5 TO 1 S T E P - 1 SOUND X , 1 NEXT X Exercice 5-1 10 20 30 40 50 60 70 P R I N T " CO M B I E N D E S E C ON D E S ? " I N P UT S FOR Z = 1 TO 460 * S NEXT Z P R I N T S " S E C O N D E S S O N T E C OU L E E S ! ! ! " F O R T = 1 2 0 T 0 1 80 SOUNT T , 1 NEXT T 80 F O R T T = 1 5 0 T O 1 4 0 S T E P -1 90 1 00 SOUND T , 1 NEXT T 110 GOTO 5 0 1 20 Exercice 5-2 Lignes ajoutées au programme d'horloge 92 94 95 97 98 99 FOR T=200 TO 2 1 0 STEP 5 SOUN D T , 1 NEXT T FOR T=21 0 TO 200 S T E P -5 SOUND T , 1 NEXT T Exercice 5-3 10 20 30 40 50 F O R C = 0 TO 8 CLS (C) F O R X = 1 T0 4 6 0 NEXT X NEXT C 233 Réponses Suggérées aux Exercices Exercice� q 10 14 16 20 30 - / T :;: R N D ( 2 5 5 ) C :;: R N D ( 8 ) C LS C SOU N D T , 1 G O TO 1 0 Exercice� q - � F O R N :;:1 T O 1 0 P R I N T " C HO I S I S S E Z VOTRE ALVEOLE ( 1 - 1 0 ) " I N P UT X 20 1 F X :;: R N D ( 1 0 ) T H E N 1 0 0 30 40 SOU ND 200 , 1 P R I N T " -- C L I C --" 50 NEXT N 60 C LS 65 P R I N T " F E L I C ITATIO NS ! ! ! " 70 P R I NT " V O U S E T E S " 80 P R I NT "ENCORE EN V I E " 90 END 95 1 00 F O R T :;: 1 3 3 TO 1 S T E P - 5 110 P R I N T " B AN G ! ! ! ! ! " 5 10 1 20 1 30 1 40 1 50 1 60 170 234 SOUND T , 1 N E XT 5 CLS P R I N T @ 230 , " D E SO L E , VOUS E T E S MORT" SOUND 1 , 50 P R I N T @ 290 , " L A V I C T I M E SU I V A N T E , S . V . P . " Réponses Suggérées aux Exercices Exercice � Cf 10 20 30 40 50 60 70 80 90 1 00 110 1 20 130 140 1 50 1 60 1 70 1 80 1 85 1 90 200 210 220 225 230 240 250 260 270 280 500 510 51 5 520 530 540 600 610 615 620 630 - 3 C LS A=RND (6) B=RND (6) R=A+B PRINT @ 200, A PRINT @ 21 4 , B P R I NT @ 3 9 4 , "VOUS AVEZ J ET E UN" R I F R=2 T H E N 600 I F R=3 T H E N 600 I F R=1 2 T H E N 6 0 0 I F R = 7 THEN 500 I F R = 1 1 THEN 500 FOR X = 1 T O 800 NEXT X CLS P R I N T a 1 9 5 , "J ETEZ UN A U T R E " R "ET VOUS G A G N E Z " P R I N T a 2 6 2 , " J ETEZ UN 7 ET VOUS P E R D E Z " P R I N T a 420 , " P R E S S EZ <ENTER> S I VOUS E T E S P R E T " P R I N T a 4 5 6 , "POUR VOTRE PROC H A I N J ET" I N PUT A$ �R N D ( 6 ) Y=RN D ( 6 ) Z=X+Y C LS P R I N T @ 200 , X PRINT @ 21 4 , Y PRINT @ 394, "VOUS AVEZ J ETE UN" Z IF Z=R THEN 500 IF Z=7 THEN 600 GOTO 1 80 F O R X = 1 T O 1 0 00 NEXT X C LS P R I N T @ 23 0 , " V O U S A V E Z G A G N E " PRINT @ 294, " F E L I C ITATIONS ! ! ! " G O T O 630 F O R X =1 T01 000 N EXT X C LS P R I N T @ 264, " D E S O L E , VOUS AVEZ P E R D U " P R I NT @ 458 " LA PARTIE EST T E R M I N E E" 235 Réponses Suggérées aux Exercices Exercice 1 1 -2 5 C LS 6 P R I NT @ 2 3 0 , "VOTRE NOM" ; 8 I N PUT N$ 10 C LS T=T+1 15 X=R N D ( 1 0 0) 20 Y=RN D ( 1 0 0) 30 40 P R I N T @ 228, "QUE VAUT" X "+" Y ; I N PU T A 45 50 I F A = X+Y THEN 82 P R I N T @ 3 2 6 , " L A R E PO N S E E S T " X + Y 60 PR INT @ 385 , "ESSAYEZ EN CORE , " N$ 70 GOTO 1 0 0 80 82 83 84 85 86 87 90 95 97 98 99 1 00 1 02 1 05 110 C LS (7) F O R M "' 1 TO 4 SOUND 1 75 , 1 SOU N D 2 00 , 1 NEXT M C LS P R I NT C=C+1 P R I NT PRINT PRINT @ 2 3 2 , " C O R R E C T , " N$ " ! ! ! " @ 2 9 9 , " C E LA F A I T " @ 3 2 2 , C "SUR" T "REPONSES J U STES" @ 3 6 2 , C / T * 1 00 " % C O R R E C T " : I F T = 1 0 T H E N E N D P R I NT @ 4 2 0 , " P R E S S E Z <ENTER> S I VOUS ETES PRET" P R I N T @ 4 5 8 , " P O U R U N E A U T R E P A RT I E " I N P UT A GOTO 1 0 Exercice � /o - � 5 C LEAR 500 DATA TAC ITUR N E , GENERA LEMENT PEU CAUSEUR 10 20 D A T A LOQUA C E , T R E S B A V A R D 30 D A T A C R I A R D , B R U Y A N T E T V E H E M E NT 40 DATA B R E F , CON C I S 50 DATA E X U B E R A N T , D EMONSTRAT I F O U COMMU N I C AT I F N = RND (1 0) 60 I F I N T C N / 2 ) = N / 2 THEN N = N - 1 65 F OR X = 1 TO N 70 80 READ A$ NEXT X 90 110 READ B$ P R I NT " Q U E L MOT S I GN I F I E : " B $ 1 20 RESTORE 130 I N PUT R$ 1 40 1 50 I F R $ = A $ T H E N 1 90 1 60 P R I NT " F AUX" 1 70 P R I NT " L E M O T J U S T E E S T : " A $ GOTO 60 1 80 P R I NT " J U S T E " 1 90 GOTO 6 0 200 236 Réponses Suggérées aux Exercices Exercice N 10 20 30 40 1 d -; A$ = " C H A N G E Z U N E P H R AS E . " 8$ = " I L E S T F A C I L E D E " C $ = 8 $ + 1 1 " + A$ P R I NT C$ Exercice avancé (chapitre j4i J ;) P R I NT "TAPEZ U N E P H R A S E : " 10 I N PUT S $ 15 P R I N T "TAPEZ UNE E X P R E S S I ON A A N N U L E R " 20 23 I N PUT 0$ L=LEN CD$) 25 P R I NT "TAPEZ U N E EXPRESS ION D E REMPLACEMENT" 30 INPUT R$ 35 40 50 60 70 80 1 00 110 1 20 130 FOR X=1 TO LEN C S $ ) I F M I D $ ( S $ , X , U = D$ T H E N 1 00 NEXT X P R I N T D$ "-- N ' EST PAS DANS VOTRE P H R A S E " GOTO 20 E = X-1 + L E N ( 0 $ ) N $ = L E F T $ ( S $ , X - 1 > + R $ + R I G H T$ ( S $ , L E N C S $ ) - E ) P R I N T " L A N OU V E L L E P H R A S E E S T : " P R I N T NJ $ Exercice 1 6-1 5 10 15 20 25 30 CLS FOR N=1 2 TO 1 S T E P - 1 P R I N T "NOT E " ; N P LAY STR$ ( N ) F O R I = 1 TO 5 0 0 : N E X T I NEXT N Exercice 1 6-2 Changez les lignes suivantes: 1 00 1 05 110 115 1 20 1 25 130 A $ = " TS ; C ; E ; F ; L 1 ; G ; P 4 ; L 4 ; C ; E ; F ; L 1 ; G " 8$ C$ 0$ E$ FS X$ = = = = = = " P4 ; L 4 ; C ; E ; F ; L2 ; G ; E ; C ; E ; L1 ; D " " P 4 ; L 4 ; D + ; L 8 ; E ; G ; E ; P 8 ; L4 ; C ; L 8 ; D ; D+" " L4 ; E ; C ; L 2 ; 0 3 ; C ; L 8 ; 0 3 ; D ; L 8 ; e 2 ; B - " " G ; E ; L4 ; G ; L 1 ; F ; P 4 ; L 8 ; G ; F ; E ; F " " L 2 ; G ; E ; L 4 ; C ; L8; D ; D + ; E ; G ; L4; A ; L1 ; 0 3 ; C " X A $ ; X B $ ; X C $ ; X D$ ; X E $ ; X F $ ; " Ajoutez la ligne 1 4t>: 1 40 P LAY X $ 11 Réponses Suggérées aux Exercices Exercice 1 9-2 5 10 20 30 40 50 60 70 PMODE 1 , 1 P C LS SCREEN 1 , 1 X=R ND ( 2 5 6 ) - 1 Y=RND ( 1 92 ) -1 C=RND(9)-1 P S ET ( X , Y , C ) GOTO 30 Exercice 20-1 5 PMODE 1 , 1 P C LS SCR EEN 1 , 1 L I N E (0 , 0 ) - (255 , 1 91 ) , PSET L I N E (0 , 1 9 1 ) - (2 5 5 , 0 ) , PSET L I N E (0 , 0 ) - ( 2 5 5 , 1 91 ) , P S ET , B GOTO 40 40 10 20 25 30 35 Exercice 20-2 5 10 20 30 40 45 50 55 60 65 70 75 80 85 90 PMODE 1 , 1 PC LS S C R E EN 1 , 1 L I N E (72 , 1 68 ) - ( 2 0 0 , 72 ) , P S E T , B ' C H A R P E N T E L I N E <72 , 7 2 ) - ( 1 3 6 , 3 6 ) , PSET ' TO I T L I N E (200 , 72 ) - ( 1 3 6 , 3 6 ) , P S E T ' T OIT L I N E ( 1 2 0 , 1 68 ) - ( 1 5 2 , 1 0 0 ) , P S E T , B ' P O R T E L I N E ( 1 5 2 , 6 0 ) - ( 1 68 , 3 6 ) , P S E T , B F ' C H E M I N E E L I N E ( 1 65 , 1 28 ) - ( 1 91 , 1 00 ) , P S E T , B ' F E N E T R E L I N E < 1 7 8 , 1 2 8 ) - ( 1 7 8 , 1 0 0 ) , P S E T ' P I E C E D E F E N ET R E L I N E ( 1 6 5 , 1 1 4 ) - ( 1 91 , 1 1 4 ) , P S E T ' P I E C E D E F E N ET R E L I N E (8 5 , 1 2 8 ) - ( 1 1 1 , 1 0 0) , PSET , B ' F E N ETRE L I NE (85 , 1 1 4) - ( 1 1 1 , 1 1 4) , PSET ' P I E C E D E FENETRE L I N E (98 , 1 00 ) - (98-1 28) , PSET ' P I E C E D E F E NETRE G O T O 90 Exercice 20-3 5 PMODE 1 , 1 10 P C LS SCREEN 1 , 1 20 Y=0 30 FOR X=0 TO 2 0 0 STEP 1 0 40 OY=Y 50 Y=3 0-0Y 60 70 L I N E ( X , 1 0 0 -Y ) - ( X + 1 0 , 1 0 0 - 0 Y ) , P S E T NEXT 80 G O T O 90 90 238 Réponses Suggérées aux Exercices Exercice 21 -1 S 10 20 30 35 40 60 70 75 80 Y=-1 C LS P R I N T @ 1 93 , " V O U L E Z-VOUS V O I R UN C A R R E ? " F O R X = 1 TO 1 00 0 : N E X T X PMODE 1 , 1 PCLS S C R E E N 1 , Y+1 L I N E (7 5 , 1 5 0 ) - ( 1 5 0 , 7 5 ) , P S E T , B FOR X = 1 TO 1 00 0 : NEXT X Y=-Y GOTO 5 Exercice 23-1 2 5 W I DTH 3 2 PMOD E 4 , 1 P A L E T T E 1 1 , Code d e co u l e u r 8 9 PALETTE 1 0 , 0 COLOR 7 , 6 10 20 SCREEN 1 , 1 25 L I N E ( 0 , 0 ) - ( 2 5 5 , 1 91 ) , PSET 30 L I N E ( 0 , 1 91 ) - ( 2 5 5 , 0 ) , PSET G O T O 40 40 Exercice 24-2 Apportez les change,,ents suivants: 22 32 42 P C O P Y 4 TO 3 PCOPY 3 TO 2 PCOPY 2 TO 1 Annulez les lignes de programme 1 1 , 21 et 3 1 . 239 Réponses Suggérées aux Exercices Exercice 24-3 10 20 25 30 40 45 50 55 60 65 70 75 80 85 90 95 96 1 00 1 05 110 P C LEAR 8 PMODE 4 , 1 P C LS SCREEN 1 , 1 L I N E ( 0 , 0 ) - ( 2 5 5 , 1 91 ) , F O R Y = 1 TO 2 0 : N E X T Y PMODE 4 , 2 S C R E EN 1 , 0 L I N E ( 0 , 0 ) - ( 2 5 5 , 1 91 ) , FOR Z=1 TO 20: NEXT Z PMODE 0 , 3 SCREEN 1 , 1 L I N E ( 0 , 0 ) - ( 2 5 5 , 1 91 ) , F O R A = 1 TO 2 0 : N E X T A PMODE 1 , 4 SCREEN 1 , 1 PCLS L I N E ( 0 , 0 ) - (2 55 , 191 > F O R R = 1 TO 2 0 : N E X T R GOTO 2 0 PSET PSET PSET , PSET Exercice 25-1 10 20 30 40 50 60 70 PMOD E 4 , 1 P C LS S C R E EN 1 , 0 F O R R A D I U S = 1 T O 1 00 S T E P 1 0 C I R C LE ( 1 2 8 , 9 6 ) , R A D I U S NEXT R A D I U S GOTO 7 0 Exercice 25-3 5 10 20 30 40 50 240 PMODE 4 , 1 P C LS S C R E EN 1 , 0 C I R C LE ( 2 0 0 , 40 ) , 3 0 , , 1 , . 1 3 , . 63 C I R C LE ( 23 0 , 1 0 ) , 5 2 , , 1 , . 2 9 , . 4 8 G O TO 5 0 Réponses Suggérées aux Exercices Exercice 25-4 5 10 15 20 PMODE 1 , 1 S C REEN 1 , 0 PCLS 3 COLOR 1 , 0 25 30 35 40 45 C I R C L E < 2 0 0 , 4 0 ) , 3 0 , , 1 , . 1 3 , . 63 ' LUNE C I R C L E ( 23 0 , 1 0 ) , 5 2 , , 1 , . 2 9 , . 4 8 ' L U N E L I N E ( 1 00 , 1 8 5 ) - ( 1 8 0 , 1 2 5 ) , P S E T , B ' C H A R P E N T E D E L A M A I S O N L I N E - (1 40 , 8 5 ) , P S E T ' TO I T L I N E - ( 1 0 0 , 1 2 5 ) , P S E T ' TO I T 55 60 70 75 80 85 90 1 00 1 05 110 115 1 20 125 130 200 L I N E ( 1 1 0 , 1 60 ) - ( 1 2 5 , 1 3 0) , P S E T , B ' F ENETRE L I N E ( 1 55 , 1 6 0 ) - ( 1 7 0 , 1 3 0 ) , P S E T , B ' F E N E T R E L I N E ( 1 30 , 1 3 0 ) - ( 1 4 9 , 1 8 5 ) , P S ET , B ' P ORTE L I N E ( 1 34 , 1 5 7 , 1 > ' B O U T O N D E P O R T E L I N E ( 1 60 , 1 05 ) - ( 1 6 0 , 9 0) , PSET ' C H E M I N E E L I N E - ( 1 7 5 , 90 ) , PSET ' C H E M I N E E L I N E - ( 1 7 5 , 1 1 5 ) , P S E T ' C H EM I N E E ' L A F U M E E COM M E N C E I C I X=1 6 7 : Y=89 ' C E N T R E D U C E R C L E S P = 0 : EP=0 ' P O I N T D E D E BUT ET D E F I N D U C E R C L E F O R R = 1 TO 5 0 S T E P . 0 5 ' R A Y O N D U C E R C L E EP=EP= . 0 2 : I F E P> 1 THEN EP=0 C I R CLE (X+R, Y-R) , R , 4 , 1 , S P , E P ' F UMEE NEXT R GOTO 200 Exercice 26-1 Annulez la ligne 4 • et ajoutez la ligne 65: 65 P A I N T ( 1 5 0 , 1 00 ) , 8 , 1 241 Réponses Suggérées aux Exercices Excercice 26-3 5 PMOD E 1 , 1 P C LS 10 15 SCREEN 1 , 0 P C LS 3 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 1 00 1 05 110 115 1 20 1 40 COLOR 1 , 0 C I R C LE (200 , 3 0) , 1 5 PAINT (200,30) , 2 , 1 L I N E < 1 0 0 , 1 85 ) - ( 1 80 , 1 2 5 ) L I N E - ( 1 40 , 90) , P S E T LINE - ( 1 00 , 1 25) , PSET PAINT ( 1 35 , 1 1 5) , 4 , 1 L I N E ( 1 1 0 , 1 60 ) - ( 1 25 , 1 30 ) L I N E ( 1 5 5 , 1 60 ) - ( 1 70 , 1 3 0 ) P S E T ( 1 3 4 , 1 5 7 ) - ( 41 , 1 8 5 ) , P A I NT ( 1 2 0 , 1 8 0 ) , 0 , 1 , P S ET , B , P S ET , B , PSET , B PSET , B L I N E ( 1 3 0 , 1 3 0 ) - ( 1 49 , 1 8 5 ) , P S E T , B L I N E ( 1 01 , 1 3 5 ) - ( 41 , 1 85 ) , P S E T , B L I N E (91 , 1 40 ) - ( 5 1 , 1 8 5 ) , P S ET , B PAINT (55 , 1 38) , 0 , 1 P A I N T ( 8 9 , 1 83 ) , 4 , 1 F O R X = 1 TO 5 0 0 : N E X T X P A I N T ( 89 , 1 83 ) , 2 , 1 FOR X=1 TO 5 0 0 : N E X T X P A I NT ( 89 , 1 5 5 ) , 4 , 1 GOT0 1 1 0 Exercice 27-1 5 PMODE 4 , 1 10 P C LS 20 S CREEN 1 , 0 30 D R AW " B M 6 8 , 1 1 6 ; E 2 0 ; B E 2 0 ; E 2 0 ; F 2 0 ; B F 2 0 ; F 2 0 ; L 40 ; B L 4 0 ; L 4 0 ; BU 4 0 ; R 4 0 ; B R 40 ; R 4 0 ; G 2 0 ; B G 2 0 ; G 2 0 ; H 2 0 ; B H 2 0 ; H 2 0 ; BM1 2 8 , 9 6 ; N U 4 0 ; N D 4 0 ; N E 2 0 ; N F 20 ; N G 2 0 ; N H 2 0 ; N L4 0 ; R40" G O T O 40 40 L'étoile que vous avez créée n'a peut-être pas autant de détails que celle-ci, car vous ne connaissez encore ni B ni N . Ne vous inquiétez pas: vous apprendrez à les connaître avant la fin du chapitre. Exercice 27-2 5 P M O D E 4, 1 PC LS 10 20 S C R E EN 1 , 1 25 DRAW "BM40 , 8 0 ; U 4 0 ; R 40 ; D40; L40" DRAW "BM + 2 0 , 20; U40; R40; 040 ; L40" 30 40 L I N E ( 6 0 , 1 0 0 ) - ( 4 0 , 80 ) , PSET 50 L I N E ( 60 , 6 0 ) - ( 40 , 40) , P S E T 60 L I N E ( 1 0 0 , 60 ) -80 , 40) , P S E T 70 L I N E ( 1 0 0 , 1 0 0 ) - ( 80 , 80) , P S E T G O T O 80 80 242 Réponses Suggérées aux Exercices Exercice 27-3 5 PMOD E 4 , 1 PCLS 10 20 S C R E EN 1 , 1 25 DRA W "BM 5 0 , 5 0 L30 D30R30D3 0 L3 0 " 30 DRAW "BM90 , 50D 60R30U60" D R AW " B M1 6 0 , 5 0 D G 0 R 3 0 B U 6 0 L 3 0 D3 0 R3 0 " 40 GOTO 50 50 Exercice 27-4 5 10 20 30 40 PMODE 4 , 1 PCLS S C R EEN 1 , 0 D R AW " B M9 8 , 9 6 ; N U 8 0 ; N E 5 6 ; N R 8 0 ; N F 5 6 ; N D 8 0 ; N G 5 6 ; N L 80 ; N H 5 6 " C I R C L E (98 , 9 6 ) , 8 0 , 1 , 1 , . 1 2 5 , 1 50 60 70 80 C I R C L E ( 1 3 5 , 1 1 0 ) , 80 , 1 , 1 , 1 , . 1 2 5 LINE ( 1 3 5 , 1 1 0 ) - ( 1 9 0 , 1 67) , PSET L I N E ( 1 3 5 , 1 1 0 ) - ( 2 1 3 , 1 1 0 ) , P S ET GOTO 8 0 Exercice 27-5 C L E A R 2 5 00 1 DIM AZ$(25) 5 F O R L E = 0 TO 2 5 6 READ AZ$ ( LE ) 10 NEXT LE 15 N C $="BR4BU7" ' C ARACTERE S U I VANT 20 25 N L$="B D4" ' L I G N E S U I V A N T E B S $ = " B L 9" ' E S P A C E M E N T A R R I E R E 30 35 H M $ = " B M 0 , 1 0 " ' P O S I T I ON D E R E P O S CW=6 : CH=8 ' T A I LE DE LA C E L L U L E 1 00 110 R1=7: R24=191 ' P O S I T I O N D E LA R A N G E E C 1 = 8 : C 4 2 = 2 4 7 ' PO S I T I O N D E L A C O L O N N E 1 20 1 25 C C = 1 : C L=1 ' RANGEE/COLONNE COURANTE PMODE 4, 1 200 P C LS 210 220 230 250 260 262 265 269 270 290 SCREEN 1 , 0 DRAW HM A$= I N K EY$ : I F A$= 1111 T H E N 2 5 0 I F " A " > A $ OR " Z " < A $ T H E N 2 5 0 CC=CC+1 I F C C>27 T H E N D R A W N L$ : F O R I = 1 T O 2 7 : DRAW B S $ : N EXT I : C C=1 : GOTO 270 D RAW N C $ DRAW AZ$ ( A S C ( A $ ) - 6 5 ) GOTO 2 5 0 243 Réponses Suggérées aux Exercices 1 0 00 1010 1 020 1 03 0 1 040 1 050 1 0 60 1 07 0 1 0 80 1 090 1 1 00 1110 1 1 20 1 1 30 1 1 40 1 c D A T A 8 D 1 D 5 F 1 R 3 E 1 U 1 B U 3 U 1 H 1 L3 G 1 B D 6 B R 5 'D DATA D7R4E1 U5H1 L4BD7BR5 ' E DATA N R 5 D 3N R4D4R5 1 F DATA N R 5 D3 N R4D4BR5 'G DATA BD1 D5 F1 R3 E1 U2N L2BU2U1 H1 L3G1 BDG BRS 'H 1 1 50 1 1 60 1 1 70 1 1 80 DATA D7U4R 5 N U3D4 ' I DATA R4L2D7L2R4BR1 'J 1 1 90 1 2 00 DATA ' K DATA ' L DATA 'M DATA 'N 1210 1 220 1 23 0 1 2 40 1 2 50 1 2 60 1 270 1 28 0 1 290 1 3 00 1310 1 3 20 1 33 0 1 3 40 1 350 1 3 60 1 3 70 1 3 80 1 3 90 1 4 00 1 41 0 1 4 20 1 43 0 1 440 1 450 1 4 60 1 47 0 1 4 80 1 4 90 1 5 00 1 510 244 'A DATA 8 D 1 D6U4N R5U2E1 R 3 F 1 D6 'B D A T A N D 7R4F1 D1 G 1 N L4 F 1 D 2 G 1 N L4BR1 8 D 5 D 1 F 1 R3 E 1 U 6 B D 7 D7U4R3 E2NU1 G 2 F 2 D2 D7R5 ND7F2ND7E207BR1 DATA ND7D1 F 5 N D 1 U68D7 10 D A T A B D 1 D 5 F 1 R 3 E 1 U 5 H 1 L3 G 1 B D 6 B R 5 'P DATA 'Q DATA 'R DATA ' S DATA ' T DATA 'U DATA ' V DATA N D7R4F1 D2G1 L4BD3BR5 8 D 1 D 5 F 1 R 3 E 1 U 5 H 1 L3G1 D4BR3F2 N D 7 R 4 F 1 D 1 G 1 N L4 F 1 D3 B D 1 D 1 F 1 R 3 F 1 D 2 G 1 L3 H 1 B U 5 E1 R3 F 1 B D 6 R4L2D7BR3 D6F1 R3E1 U6BD7 D5F2E2U5BD7BR1 1w DATA D7E2NU5 F2U7BD 7BR1 'X DATA D 1 F 5 D 1 B L5 U 1 E 5 U 1 BD7 'Y DATA D 2 F 2 N D 3 E 2 U 2 8 D 7 B R 1 'Z DATA R5D1 G5D1 R5 Réponses Suggérées aux Exercices Programme 27-6 5 10 15 20 25 30 31 32 33 35 40 45 50 55 56 59 60 65 70 75 80 85 90 91 PMODE 3 , 1 P C LS SCREEN 1 , 0 D R A W " B M 5 0 , 1 7 0 ; U 8 0 ; N G3 0 ; E 8 0 ; F 8 0 ; N F3 0 ; D 8 0 ; U 7 0 ; L 5 0 ; U 6 0 ; U6 0 ; L60 ; D 6 0 ; L50" L I N E ( 5 0 , 1 7 0 ) - ( 1 7 0 , 1 7 0) , P S ET L I N E ( 1 60 , 1 70 ) - ( 1 6 0 , 1 0 0 ) , P S E T L I N E ( 1 00 , 1 70 ) - ( 1 0 0 , 1 0 0 ) , P S E T LINE - ( 1 6 0 , 1 00) , PSET L I N E ( 1 1 0 , 1 4 5 ) - ( 1 20 , 1 4 5 ) , P S E T F O R X = 1 TO 5 0 0 : N E X T X L I N E ( 1 00 , 1 7 0 ) - ( 1 6 0 , 1 7 0 ) , P R E S E T L I N E ( 1 2 0 , 1 80 ) - ( 1 2 0 , 1 1 0 ) , P S E T L I N E ( 1 60 , 1 00 ) - ( 1 2 5 , 1 1 0 ) , P S ET L I N E ( 1 60 , 1 70 ) - ( 1 2 5 , 1 80 ) , P S E T L I N E (1 1 0 , 1 45 ) - ( 1 20 , 1 4 5 ) , P R E S ET FOR X=1 TO 3 0 0 : NEXT X L I N E ( 1 2 0 , 1 80 ) - ( 1 2 0 , 1 1 0 ) , P R E S E T L I N E ( 1 6 0 , 1 00 ) - ( 1 2 0 , 1 1 0 ) , P R E S E T L I N E ( 1 60 , 1 70 ) - ( 1 2 0 , 1 8 0 ) , P R E S E T D R A W " B M1 1 0 , 1 7 0 ; B U 7 0 ; B R 5 0 ; G 2 5 ; D 7 0 ; E 2 5 ; B U3 5 ; B G 1 5 ; G 5 " C I RCLE (130 , 1 25 ) , 1 0 , , 1 , . 1 35 , . 9 D R A W " B M 1 3 0 , 1 3 0 ; D 1 5 ; D 1 5 ; G 1 0 ; E 1 0 ; U 1 5 ; L 1 0" L I N E ( 1 20 , 1 45 ) - ( 1 20 , 1 3 5 ) , P S E T F O R X = 1 TO 6 0 : N E X T X 95 L I N E ( 1 20 , 1 45 ) - ( 1 2 0 , 1 3 5 ) , P R E S E T F O R X = 1 TO 1 2 0 : N E X T X 96 L I N E ( 1 2 0 , 1 45 ) - ( 1 1 0 , 1 4 5 ) , P S E T 1 00 FOR X=1 TO 60: NEXT X 101 110 L I N E ( 1 2 0 , 1 45 ) - ( 1 2 0 , 1 3 5 ) , P S E T F O R X = 1 TO 1 2 0 : N E X T X 120 121 C I RCLE (130, 1 25 ) , 1 0 , 1 122 125 130 135 1 40 1 41 1 45 1 46 1 50 155 1 60 170 175 DRAW "BM1 3 0 , 1 3 0 ; C 1 ; D3 0 ; G 1 0 ; E 1 0 ; U 1 5 ; L 1 0 " D R A W " B M 1 1 0 , 1 7 0 ; B U7 0 ; B R 5 0 ; C 1 ; G 2 5 ; D 7 0 ; E 2 5 ; B U 3 5 ; B G 1 5 ; G 5 " C O LOR 4 , 1 L I N E ( 1 2 0 , 1 80 ) - ( 1 2 0 , 1 1 0 ) , PSET L I N E ( 1 60 , 1 00 ) - ( 1 2 5 , 1 1 0 ) , PSET L I N E ( 1 2 0 , 1 4 5 ) - ( 1 1 0 , 1 45 ) , P R E S ET L I N E ( 1 60 , 1 7 0 ) - ( 1 2 0 , 1 8 0 ) , P S E T FOR X=1 TO 3 0 0 : N E X T X L I N E ( 1 2 0 , 1 80 ) - ( 1 2 0 , 1 1 0 ) , P R E S E T L I N E ( 1 60 , 1 0 0 ) - ( 1 2 0 , 1 1 0 ) , P R E S E T L I N E ( 1 2 0 , 1 80 ) - ( 1 6 0 , 1 7 0> , PRESET L I N E ( 1 00 , 1 7 0 ) - ( 1 6 0 , 1 7 0 ) , P S E T GOTO 2 0 245 Réponses Suggérées aux Exercices Exercice 28-1 5 P C LEAR 4 10 PMODE4 , 1 PCLS 15 20 SCREEN 1 , 1 25 DIM V (35 ,35) 30 X=1 0 : Y=1 0 35 40 45 50 55 D R A W " B M 1 0 , 1 0 ; S 2 ; H 1 0 ; R 1 5 ; F 1 0 ; R2 0 ; F 1 0 ; G 1 0 ; L 20 ; G 1 0 ; L 1 5 ; E 1 0 ; U 2 0 ; D 4 ; N L8 ' D 4 ' N L 1 2 ' D 4N L 1 6 ; D 4 ; N L 1 2 ; 0 4 ; N L 8 " G E T C X - X , Y - Y > - < X * 3 . 5 , Y *3 . 5 ) , V , G A $ = I N K E Y $ : I F A $ = " " T H E N 4 5 ' P R E S S E Z U N E TO U C H E P O U R CO M M E N C E R P C LS F O R A=1 0 TO 200 S T E P 5 60 65 70 75 P U T C X + A , Y ) - ( X + A +3 5 , Y +3 5 ) , V , P S E T NEXT A PCLS GOTO 5 5 Avez·vous remarqué que nous avons utilisé les options pour GET et PUT? Si vous voulez faire accélérer cette fusée, annulez les options et passez en mode 3. Exercice 31-1 5 C L S : P R I N T " P O S I T I ON N E Z L A B A N D E - P R E S S E Z P L A Y E T R E C O R D : 7 I N PUT "PRESSEZ <ENTER> S I VOUS ETES PRET";R$ OPEN "0", #-1 , " C H E C KS" 10 C L S : P R I N T " E N T R E Z C H E Q U E S - P R E S S E Z <XX> Q U A N D VOUS AVEZ F I N I" 15 I N P U T " N OM B R E : " ; N $ 20 25 I F N$ = " X X " T H E N 90 I N P U T " D A T E : 11 ; D $ 30 40 50 60 70 80 90 92 C 95 1 00 110 120 1 30 1 40 1 50 1 60 1 70 1 80 246 I N P U T " P A Y A B L E A : " ; P$ I N PUT "COMPTE : " ; S$ I N P UT " M O N T A N T : $ " ; A P R I N T #-1 , N$ 0 $ , P $ , S $ , A GOTO 1 5 C LOSE #-1 LS : T = 0 I N P UT " Q U E L C O M P T E : ; B $ P R I NT " R EBOB I N E Z LA BANDE - P R E S S E Z PLAY" I N P U T " P R E S S E Z < E N T E R> S I V O U S E T E S P R E T " ; R $ OPEN " I " , #-1 , " C H E Q U E S " I F EOF < - 1 ) T H E N 1 70 INPUT #-1 , N $ , D$, P $ , S$, A I F B$ = S $ T H E N T = T+A GOTO 1 3 0 C LO S E # - 1 P R I N T " L E TO T A L D E P E N S E - " B $ , " E S T $ " T Réponses Suggérées aux Exercices Exercice 32-1 10 20 30 40 50 60 70 75 80 90 D A T A 3 3 , 1 2 , 42 , 1 3 , 1 5 , 23 DATA 2 5 , 3 0 , 3 3 , 27 , 1 4 , 8 DIM I C1 2 ) FOR X=1 T0 1 2 READ I (X ) N E XT X I NPUT "ART I C L E N O . " ; N I F N>1 2 THEN 70 I N P U T " I N V ENTA I R E D E L ' A RT I C LE" N "EST" I ( N ) GOTO 70 Exercice 32-2 5 DIM T <52) DIM 0(52) 7 10 F O R X=1 TO 5 2 T < X > =X 20 30 N EXT X 34 C LS 36 P R I N T @ 1 01 , " · FOR X=1 TO 5 2 40 50 C=RN D ( 52) 60 I F T < C ) =0 T H E N 5 0 • 70 75 80 1 00 110 1 20 130 1 40 150 1 60 • POUR D O N N E R LES C A R T E S " D(X)=C SOUND 1 28 , 1 T<C) = 0 N EXT X CLS P R I N T iiJ 1 0 7 , " V O T R E M A I N " P R I N T @ 1 6 7 , Il .. FOR X = 1 TO 5 P R I NT D ( X) ; N EXT X Exercice 33-1 Lignes pour changer les articles: 110 115 I N P UT "QU E L N U M E R O D ' A R T I C L E D E S I RE Z-VOUS C H A N G E R " ; N I F N>1 2 THEN 1 1 0 1 20 130 I N P U T "Q U E L E S T L ' A R T I C L E D E R E M P L A C E M E N T " ; S $ { N ) GOTO 80 L'annexe donne u n exemple de programme qui ajoute des articles à cette liste et e n annule. 247 Réponses Suggérées aux Exercices Exercice 33-2 Lignes pour changer les paroles de la chanson: 110 1 20 130 1 40 150 P R I NT I N PUT " Q U E L L E L I G N E D E S I R EZ-VOUS REV I S E R " ; L P R I N T " T A P E Z LA L I G N E D E R E M P L A C E M E N T " I N P U T A$ ( L ) GO T O 5 0 Exercice 33-3 C L E A R 1 0 00 D I M A$ C 5 0 ) C LS P R I N T "TAPEZ UN PARAGRAPHE" 10 P R I N T " P R E S S E Z < / > S I VOUS A V E Z F I N I " 20 30 X=1 A$ = IN KEY$ 40 I F A$ = " " T H E N 4 0 50 60 PRINT A$; I F A$ = " / " T H E N 1 0 5 70 A $ ( X ) = A $ ( X ) + A$ 80 I F A$ = " . " OR A$ = " ? " OR A$ = " ! " T H E N X = X + 1 90 GOTO 4 0 1 00 P R I NT : P R I N T 1 05 1 5 7 110 1 20 130 1 40 1 000 1 010 1 0 20 1 030 1 0 40 2000 201 0 2020 2030 2040 2050 2050 2060 2070 2080 2090 2 1 00 21 1 0 2120 2130 2140 2150 2 1 60 2170 21 80 248 I N P U T 11 ( 1 ) I M P R I M E OU ( 2 ) R E V I S E " ; R C LS ON R G O S U B 1 0 0 0 , 2 0 0 0 GOTO 1 0 5 REM I M P R E S S I O N D ' UN PARAGRAPHE FOR Y = 1 TO X-1 P R I NT A $ C Y > ; N E XT Y RETURN REM R E V I S I O N D ' UN P A R A G R A P H E F O R Y = 1 T O X-1 P R I N T Y "--" A $ ( Y ) N EXT Y I N PU T " N U M E R O D E P H R A S E A R E V I S E R " ; S I F S > X - 1 O R S <1 T H E N 2 0 4 0 P R I N T A$ ( S ) P R I N T "TAPEZ L ' EXPRE S S I ON A A N N U L E R " I N PUT D $ L=LEN (D$) P R I N T "TAPEZ U N E E X P R E S S ION DE REMPLACEMENT" I N PUT R $ FOR Z = 1 T O L E N ( A $ ( S ) ) I F H I D $ ( A $ ( S ) , Z , L ) = 0$ T H E N 2 1 6 0 N EXT Z P R I N T 0$ "-- N ' E ST PAS DANS VOTRE P H R A S E " GOTO 2 0 6 0 E = Z-1 + L E N ( D$ ) A$ ( S ) = L E F T $ ( A $ ( S ) , Z -1 ) + R $ + R I G H T $ ( A $ ( S ) , L E N ( A $ ( S ) ) - E ) RETURN Réponses Suggérées aux Exercices Exercice 33-4 Changez cette ligne pour imprimer avec l'imprimante: 1 50 P R I N T #- 2 , A $ ( Y ) ; Exercice 34-1 10 20 30 40 50 60 70 80 90 1 00 110 120 130 1 40 1 50 1 60 170 180 190 DIM $$ (4) , N$( 1 3 ) , T C 4 , 1 3 ) D A T A P I QU E S , C O E U R S , C A R R E A U X , T R E F L E S FO R X = 1 T0 4 R E A D S$ < X ) NEXT X DATA A S , 2 , 3 , 4 , 5 , 6 , 7 , 8, 9 , 1 0 , V A L E T , D A M E , ROI F O R X=1 TO 1 3 READ N $ (X) NEXT X FOR S=1 T0 4 FO R N = 1 T0 1 3 T ( S , N ) = ( S -1 > * 1 3 + N N EXT N , S F O R X = 1 TO 5 2 S=RND (4) : N=RND C 1 3 ) IF 5(S,N) = 0 T(S,N) = 0 P R I N T F $ ( N ) "-" $ $ ( S ) , NEXT X Exercice 35-1 C LS 5 10 F O R NUMBER = 1 00 TO 1 STEP - 1 0 PR I N T S Q R C N U M B E R ) 20 N E X T N UM B E R 30 Exercice 35-2 5 C LS T0 1 79 S T E P 1 0 FOR 1 = - 1 8 0 10 1 5 RD=A/57 . 29577951 C P = C O S ( R 0 ) * 1 4+ 1 6 . 5 ' P O S I T I O N C O S 30 S P = S I N ( R D ) * 1 4+ 1 6 . 5 ' P O S I T I O N S I N 40 I F S P < = C P T H EN 70 50 P R I N T TAB ( C P ) ; " C " ; T A B ( S P ) ; " S " : GOTO 80 60 70 PRINT TAB(SP) ; "S";TAB(CP) ; "C" 80 NEXT A GOTO 1 0 90 249 Réponses Suggérées aux Exercices Exercice 35-3 a.) ? LOG ( 1 003 ) 6 . 9 1 0 7 5 0 79 b.) ? LO G ( 7 4 . 9 8 6 5 ) 4 . 3 1 73 0 8 1 c.) ? LO G ( 3 . 3 5 4 2 8 5 ) 1 . 1 2023863 Exercice 35-4 5 10 15 20 25 a. C LS I N PUT " Q U E L N O M B R E " ; N O M B R E X = LO G ( N O M B R E ) / LO G ( 1 0 ) P R I NT "LE LOG BASE 10 D E " NOMBRE "EST" X GOT0 1 0 7 . 00890077 E-1 1 Remarque: Le log de 1 dans une base quelconque est *. La réponse de l 'ordinateur résulte d'une erreur d'arrondi. Tous les ordinateurs donnent cette réponse. b.) c.) d.) e.) f.) 2 2 . 69897001 -1 3 . 00043408 Exercice 35-5 1 .) 2.) D E F F N R ( X ) = X*57. 29577951 5 C LS D E F F N C ( X ) = X"3 10 INPUT "QU E L NOMBRE VOULEZ-VOUS E L E V ER AU C U B E " ; X 20 X=FNC (X) 30 P R I NT X 40 FOR A = 1 TO 7 5 50 NEXT A 55 GOTO 2 0 60 250 Réponses Suggérées aux Exercices Exercice 36-1 s 10 20 30 40 41 42 43 50 51 52 60 61 62 63 70 80 C LS X$ = S T R I N G $ ( 3 0 , " - " ) F O R X = 64 T O 3 5 2 S T E P 6 4 PRINT @ X , X P R I N T @ 97, "BERNARD" P R I N T @ 1 61 , "SUZANNE" PRINT @ 225 , "J EAN" P R I N T @ 2 8 9 , "MAR I E " PRINT @ 38, "MATHS" P R I N T @ 45 , "ORTHOGRAPHE" P R I N T @ 53 , " L E C T U R E " P R I N T @ 1 03 , " X " P R I N T @ 1 7 5 , "X" P R I N T @ 23 1 , " X " P R I N T @ 3 1 1 , "X" PRINT X GOTO 80 Exercice 36-2 5 CLS X$ = "ABCDEB" Y$ = "B" 20 P R I N T I NS T R CX$ , Y $) ; I N S T R ( 4 , X $ , Y$) 30 10 Exercice 36-3 1 5 20 X=1 50 X $ = " J A M E S S M I T H , 6 5 5 0 H A R I SON , D A L LAS , T X * 7 5 0 0 2 : S U E S I M , R T3 , G R A V I O S M 0 * 6 5 0 8 4 : L Y D I A L O N G , 3 4 4 5 S M I T H S T , A S B U R Y N J *3 2 0 0 4 : B O B S T R ON G , B O X 6 0 , E D M O N T O N A L B E R T A C A : T I MMY DUN TON , P l ERMONTM0•65078" P = I N S T R C X , X $ , A$ ) : P R I N T P 60 I F P<> 0 T H E N X=P+1 : GOTO 50 Réponses Suggérées aux Exercices Exercice 36-4 10 20 30 40 50 60 70 80 90 1 00 110 1 20 1 30 1 40 1 50 1 60 1 70 1 80 1 90 200 210 220 230 D I M T B L$ ( 2 6 ) FOR I=0 TO 25 READ TBL$ ( I ) : NEXT I P R I N T " E N T R E Z LE V I E U X N U M E R O I N PU T N $ I F N $ = 1 1 11 T H E N 40 FOR I=1 TO LEN ( N $ ) C$=M I D $ ( N $ , I , 1 ) I F C$< "A" OR C $ > " Z " T H E N 1 2 0 C$=TB$ ( A S C ( C $ ) -6 5 ) M I D$ ( N $ , I ) - C $ NEXT I P R I NT "NOUVEAU T Y P E = " ; N $ R EM A B C D E F D A T A " 2 " , u 2 11 , " 2 " , " 3 " , " 3 " , REM G H I J K L D A T A " 4 " , " 4 " , " 4 " , 11 5 11 , " 5 R EM M N O P Q R D A T A 11 6 1 1 , " 6 " , " 6 " , " 7 " , " 7 " , R EM S T U V W X D A T A 11 8 11 , 11 8 1 1 , 11 8 1 1 , " 9 " , 11 9 1 1 , REM Y Z D A T A " 9 " , 11 9 " Il , DE T E LEPHONE" 1 1 3 11 "5" "7" 11 9 11 Exercice 37-1 10 A $ = "$$## , ###### . # # D O L L A R S " Exercice 37-2 C LS 5 10 I N PUT "REVE NU" ; 15 I N PUT " D E P E N S E S " : E N = I - 3 ' G A I N OU P E R T E N E T " 20 A $ = " $ $ # # # # . # #" 25 8$ "$$### # . ##" 30 C$ = "+$$### # . ##" 35 C L S : P R I N T @ 33 , " R A P P O R T M E N S U E L D E S I T U A T I O N E C O N O M I Q U E " 40 P R I N T @ 9 6 , S T R I N G $ ( 3 2 , 11 - 11 ) 45 50 P R I N T @ 1 60 , " R E V E N U " 2 55 P R I NT @ 2 5 6 , " D E P E N S E S " P R I NT @ 3 5 2 , "TOTAL ( + ) OU ( - ) " 60 65 P R I N T @ 3 t. 0 , S T R I N G $ ( 1 0 , 11 - 11 ) 70 P R I NT @ 1 80 , U S I N G A $ ; I P R I NT @ 276 , U S I N G B $ ; E 75 P R I NT @ 371 , U S I N G C $ : N 80 90 GOTO 90 = Essayez d e modifier ce programme pour vous tenir a u courant d e vos factures d'électricité et stocker l'information sur une base annuelle. Exercice 37-3 5 C LS P R I N T " C E C I " TAB ( PO S ( 0 ) +4 ) " E S T " ; 10 P R I N T T A B C PO S ( 0 ) + 4 ) 11 U N I F O R M E M E N T 11 T A B C PO S C 0 ) + 4 ) " E S P A C E " 20 252 EXEM PL ES DE PROGRAM M ES Programme 1 Tapez ce programme et sauvegardez-le sur cassette, mais ne l'exécutez pas avant Nofi} 5 CLS P R I N T @ 64 , S T R I N G $ ( 3 2 , "*") P R I N T @ 3 5 2 , S T R I N G$ (32 , " • " ) P R I N T âl 1 9 9 , " J OY T O T H E W O R L D " 2 5 F O R X = 1 T O 1 0 0 0 : N E X T X C LS P R I N T @ 6 4 , " J O Y TO T H E W O R L D " 35 P R I N T @ 96, "THE LORD IS COME" 40 PRINT @ 128 , "LET EARTH RECEIVE HER KING" 45 P R I N T @ 1 60 , " L E T EVERY H E ART" 50 55 P R I N T @ 1 9 2 , " P R E P A R E H I M ROOM" P R I N T @ 224, "AND H E AVEN AND NATURE S I N G " 60 P R I N T @ 2 5 6 , " A N D H E AVEN A N D N A T U R E S I N G " 65 P R I N T @ 288 , " A N D H E AVEN AND H E A V E N AND N A T U R E S I N G " 70 A $ = " T 4 ; 0 3 ; L 2 ; C ; L 4 ; 0 2 ; B ; L 8 ; A ; L4 , ; G ; L 4 ; F ; L 2 ; E ; D ; " 1 00 10 15 20 30 1 05 B $ = " L 2 . ; C ; P 3 2 ; L 4 ; G ; L 2 ; A ; L 4 ; P3 2 ; A ; L 2 . ; B ; P 3 2 ; L 4 ; B ; 0 3 ; L1 ; C" C $ = " L 4 ; C ; C ; 0 2 ; L 4 ; B ; A ; G ; L 4 . ; G ; L 8 ; F ; L 4 ; E ; 03 ; C D $ = " 0 3 ; L 4 ; C ; 0 2 ; B ; A ; G ; P3 2 ; L 4 . ; G ; L8 ; F ; L 4 ; E ; P 32 ; E ; P 3 2 ; E ; P3 2 ; E ; P3 2 ; E ; P3 2 ; LB; E ; F - 110 115 1 20 E $ = " L 2 . ; G ; L 8 ; F ; E ; L 4 ; D ; P 3 2 ; D ; P3 2 ; D ; P 3 2 ; L 8 ; D ; E ; L2 . ; F ; L8 ; E ; D " 125 F $ = " 0 2 ; L 4 ; C ; 0 3 ; L 2 ; C ; 0 2 ; L 4 ; A ; L4 . ; G ; L 8 ; F ; L 4 ; E ; F ; L 2 ; E ; D ; L1 ; C " X$ = "XA$;XB$ ; X C $ ; X D$;XE $ ; X F $ ; " P LA Y X 130 135 200 205 210 215 220 220 230 235 240 245 250 255 260 265 PMODE 3 , 1 P C LS 4 S C R E EN 1 , 0 CO LOR 1 , 4 L I N E (90 , 9 6 ) - ( 1 1 8 , 2 6 ) , P S E T L I N E (90 , 9 6 ) - ( 1 1 8 , 2 6 ) , P S E T L I N E (90 , 9 6 ) - ( 1 4 6 , 96 ) , P S E T DRAW "BM1 1 2 , 9 6 ; D1 5 ; R 1 0 ; U 1 5 " L I N E (0 , 1 1 2 ) - (2 5 5 , 96) , P S E T P A I N T (238 , 8 5 ) , 1 , 1 X = RND C255) Y = RND ( 1 1 5 ) A = RND (4) P S E T ( X , Y , A ) : GOTO 2 5 0 253 Exemples de Programmes Programme 2 ' ** * G LO I R E A B A C H * * * 2 5 C LS 10 P R I N T @ 96 , STRI N G $ ( 3 2 , "*") 20 P R I N T @ 320 , S T R I N G $ ( 3 2 , "*") P R I N T @ 2 0 1 , " G LO I R E A B A C H " 25 F O R X = 1 TO 1 00 0 : N E X T X 40 55 A$ = " T 6 ; 0 2 ; L 2 ; G ; L 4 ; C ; D ; E ; F ; L 2 ; G ; C ; P 1 6 ; C " 60 B $ = " L 2 ; A ; L 4 ; F ; G ; A ; B ; 03 ; L2 ; C ; 0 2 ; C ; P 1 6 ; C ; F ; L 4; G ; F ; E ; D " 65 C $ = " L 2 ; E ; L 4 ; F ; E ; D ; C ; L 2 ; 0 1 ; B ; 02 ; L 4 ; C ; D ; E ; C " 70 0 $ = " L 2 ; E ; L 1 ; D ; L 2 ; G ; L 4 ; C ; D ; E ; F ; L2 ; G ; C ; P 1 6 ; C " E$ = " L 2 ; A ; L4; F ; G ; A ; B ; 03 ; L2 ; C ; 0 2 ; C ; P 1 6 ; C ; F ; L 4 ; G ; F ; E ; D " 75 80 F $ = " L 2 ; E ; L 4 ; F ; E ; D ; C ; D ; E ; L2 ; F ; 01 ; B ; L 1 ; 0 2 ; C " 85 90 X $ = "XA $ ; X B $ ; X C $ ; X D $ ; X E $ ; X F $ ; " P LA Y X Programme 3 ' *** DAN S E M EX I C A I N E *** 2 5 C LS 1 0 P R I N T @ 96, S T R I N G $ (32 , "*") 20 P R I N T @ 320, S T R I N G $(32 , "*") 30 P R I N T @ 1 9 9 , " DAN S E M E X I C A I N E " F O R X=1 T O 5 0 0 : N E X T X 40 REM D E B U T D E LA D A N S E 125 130 0$="V1 5 ; T 3 ; 0 2 ; " P $ = " L8 C F P 8 C F P 8 C F P 4 P 8 " 135 1 40 Q$="C F G F E P 8 F GP4 P8" 1 45 X $ = " X 0 $ ; X P $ ; XQ $ ; " 1 50 P LA Y X $ R$=" C E P 8 C E P 8 C EP4P8" 1 55 S $ = " C E F E D P 8 E F 0 4 C 03 A F " 1 60 1 65 Y$="X0 $ ; X R $ ; X S $ ; " P LAY Y $ 1 70 R EM 2 E F O I S 1 80 1 85 1 90 1 95 1 97 200 210 254 0$= "V25 ; T3 ; 01 " P LAY X 0 $ = " T 3 ; 0 4" S$="C E F EDP8E F04C03 A F " P LAY Y$ 220 225 230 A $ ="03 C 0 2 B 0 3 C 0 2 A A - A F E F C P 4" B $ = " C 0 1 B 0 2 C D E F G A B - 03 C 3 G " 0$="V1 5 ; T 4 ; " Z $ = 1 1 X O $ ; X A $ ; X B $ ; 11 235 240 245 250 P LA Y Q $ C $= " 0 E B - A B - G F + F E G = E C E G " D $ = " 0 4 L1 6 C P 1 6 C P 1 6 C P 1 6 L 8 D C 0 3 B - A G F P 4 " E $ = 11 X O $ ; X C $ ; X D $ ; 11 255 P LA Y F $ Exemples de Programmes 260 265 F $ = " 0 2 L 1 6 G P 1 6 G P 1 6 G P 1 6 D P 1 6 D P 1 6 D P 1 6 E P 1 6 F P 1 6 L8 E L 1 6 G P 1 60 1 G P1 6 L 8 G G $ = " V 1 5 0 2 L 1 6 G P 1 6 G P 1 6 G P 1 6 D P 1 6 D P 1 6 D P 1 6 E P 1 6 F P 1 6 L 8 E C 01 G C " 270 280 285 290 295 300 310 H$="XF$;XG$ ; " P LA Y H $ I $ = 1 1 X F $ ; 11 P LA Y I S J $ = 0 2 L1 6 G P 1 6 G P 1 6 G P 1 6 A P 1 6 G P 1 6 G P 1 6 A P 1 6 B P 1 603 L 4 C P 8 " P L A Y 1 1 X J $ ; 11 K $ = " 0 l+ L 1 D L 4 D E D E L 8 D E D E L 1 6 D E D E D E D E L3 2 D E D E D E D E D E D E D E D E L 6 4 D E D E D E D E D E D E D E D E D E D E D E D E L3 2 D D - C 0 3 B B - A A - G F + F EE - D D D - L4DD-" 320 330 340 350 370 380 PLAY " X K$ ; " M$="T5 L8D02BB-BGF+GL4DP8" N $ = " L 8 D C + D E F +GAB 03C02 L4AP8" A A $ = 11 0 3 L 8 C 0 2 B 0 2 C 0 2 A G + A F + F F + L4 D P8 1 1 B B $ = " 03 L8 D D D E D C 0 2 BA03 D E D C 0 2 B A " C C $= " 0 2 D E O C 01 B A O R D E D D E O D E D D E F + G D 0 3 B G T 4 D 0 2 B G T 3 0 01 T2BL4 P2V30L1 G" P L AY 11 X M $ ; X N $ ; X A A $ ; X B B $ ; X C C $ ; 11 P MO D E 4 , 1 FOR Y = 1 T0 5 SCREEN 1 , 0 PCLS C I R C L E ( 1 2 8 , 9 6 ) , 5 0 , 1 , . 2 , . 85 , . 6 7 C I RC L E ( 1 2 8 , 96) , 2 5 , 1 , 2 , . 5 , 1 U N E ( 1 0 5 , 9 6 ) - ( 1 5 1 , 96 ) - , P S E T PMODE 4 , 1 SCREEN 1 , 0 PCLS C I R C L E ( 1 2 8 , 7 5 ) , 5 0 , 1 , . 2 , . 8 5 , . 67 C I R C L E ( 1 28 , 7 5 ) , 1 , 2 , . 5 , 1 400 500 505 510 520 550 560 570 600 610 620 630 660 670 675 680 685 690 700 710 720 U N E (105 ,75 ) - ( 1 51 ,75) , PSET NEXT Y I F Y > 5 T H E N 690 GOTO 500 C LS P R I N T @ 2 2 7 , "NOW THAT ' S A HOT TAMA L E " FOR X = 1 T O 600 : N EXT X GOTO 5 255 Exemples de Programmes Programme 4 ' * * * B U F F A LO G A L S * * * 2 5 C LS 10 P R I N T @ 6 4 , STR I N G $ (3 2 , "* " ) 15 PRINT @ 384, STR ING$(32, "*") P R I N T @ 2 0 1 , " B U F F A LO G A L S " 20 25 F O R X = 1 TO 1 0 0 0 : N E XT X : C L S P R I N T @ 3 2 , " A S 1 W A S W A L K I N G DOWN T H E S T R E ET " 30 35 P R I N T @ 6 4 , " DO W N T H E S T R E E T , D O W N T H E S T R E E T " P R I N T @ 9 6 , "A P R ETTY G A L 1 H A P P E N E D " 40 45 PRINT @ 1 3 3 , "TO MEET" 50 P R I N T @ 1 6 0 , " J U S T A S L O V E LY A S " P R I N T @ 1 9 7 , " T H E MOR N I N G D E W " 55 P R I N T @ 2 2 4 , " B U F F A LO G A L S WON ' T YOU" 60 P R I NT @ 261 , " C O M E OUT TON I G HT" 65 P R I N T @ 2 8 8 , " C O M E O U T TON I G H T , " 70 75 P R I N T @ 3 2 0 , " C O M E O U T TO N I G H T , " P R I N T @ 3 5 2 , " B U F F A LO G A L S WON ' T YOU" 80 85 P R I N T @ 3 9 1 , " CO M E OUT TON I G H T " P R I N T @ 41 6 , " A N D DAN C E I N T H E " 90 95 P R I N T @ 453 , " L I GH T O F T H E MOON . " 1 00 A $ = " T 4 ; C ; E ; P 3 2 ; E ; F ; P3 2 ; F ; A ; G ; L 2 ; E ; " B$="L4; G ; F ; L 2 ; D ; L4 ; A ; G ; E ; C ; " 1 05 110 C $ '' L 4 ; E ; P 3 2 ; E ; F ; P3 2 ; F ; L 8 ; A ; P 3 2 ; A ; L 4 ; G ; E ; 03 ; L 8 ; C ; P 3 2 ; C ; " 115 D $ = " 0 2 ; B ; P 3 2 ; B ; G ; P 3 2 ; G ; L 4 ; F ; 01 ; B ; 0 2 ; L 1 ; C ; P 1 6 ; " 120 E $ = " L 8 ; G ; P 3 2 ; G ; L 4 ; F ; LZ ; D ; L 4 ; A ; L 8 ; G ; P 3 2 ; G ; L 2 ; E " 125 F $ = " L 8 ; G ; P 3 2 ; G ; L 4 ; F ; L2 ; D ; L 4 ; A ; L 8 ; G ; P3 2 ; G ; L 2 ; E " 130 G $ = " L 8 ; C ; P G 6 4 ; C ; P G 6 4 ; L 4 ; C ; E ; L8 ; G ; P 3 2 ; G ; L 4 ; A ; L 8 ; G ; P 3 2 ; G ; L 4 ; E ; 03 ; C ; " H $ = " 0 2 ; B ; L 8 ; G ; P 3 2 ; G ; F ; P 3 2 ; F ; L4 ; D ; L 2 . ; C ; " 135 1 40 X$= "XA $ ; X B$ ; X C $ ; X D $ ; X E $ ; X F $ ; X G$ ; X H $ ; " 1 45 P LAY X $ C LS 150 155 P R I NT @ 230, "THAT ' S A L L FOLKS" Programme 5 256 Exemples de Programmes Programme 6 10 75 ' * ** T R A C E D E T R I A N G L E * * * C L S : C L EAR PRINT @ 96, STRING$C32 , "*") 80 P R I N T @ 2 8 8 , S T R I N G $ C3 2 , " * " ) P R I N T @ 1 6 0 , " C E PROGR AMME TRACE LE T R i A N G L E S P E C I F I E 1 00 ET C A L C U L E S A S U R F A C E " 110 F O R X = 1 TO 2 2 0 0 : N E X T : C L S 1 20 C L S : P R I N T " P O U R 3 COT E S , T A P E Z S S S ( 0 - 1 0 0 ) " 1 25 P R I N T " PO U R 2 C O T E S ( 1 - 1 0 0 ) E T 1 A N G L E ( 0 - 9 0 ) T A P E Z , S A S " P R I N T " P O U R 1 C O T E ( fl - 6 0 ) E T 2 A N G L E S ( 0 - 9 0 ) T A P E Z , A S A " 130 I N PU T A $ : I F A $ = " S A S " GO TO 3 0 0 1 40 I F A $ + " A S A " GOTO 4 0 0 150 ' sss 200 210 P R I N T " E N T R E Z 3 C O T ES , ( C O T E L E P LU S L O N G D ' A B O R D ) " 220 I N P U T L1 , L 2 , L 3 I F L 2 > L 1 O R L 3 > L 1 T H EN P R I N T " * * * CO T E L E P L U S L O N G 225 D ' ABORD " : P R I N T : GOTO 2 1 0 S = C L1 + L 2 + L3 ) / 2 230 I F S < L1 T H E N P R I N T " * * * N ' E S T P A S U N T R I A N G L E * * * " : 235 P R I N T : GOTO 2 1 0 Y 3 = 2 • S Q R C S • ( S - L 2 ) • ( S - L 1 ) • ( S - L 3 ) ) / L1 240 250 A = Y 3 / L2 : A = A T N C A / S Q R C - A * A + 1 ) ) X3=CO S ( A ) •L2 260 A R = C L1 * Y 3 ) / 2 270 • 280 300 310 320 325 330 340 350 400 41 0 420 425 430 440 450 460 470 490 500 510 520 530 532 533 535 537 540 • • GOTO 490 ' S AS P R I N T " E N T R E Z 2 COTES ET 1 A N G L E : AB , A C , T H ETA ( CO T E L E P L U S L O N G D ' A B O R D ) " I N PUT L1 , L 2 , T T= ( T •3 . 1 4 1 5 9 ) / 1 8 0 Y3=L2•S I N (T) X3=COS (T) • L2 A R = C L 1 • Y 3 ) / 2 : G O T O 490 'ASA P R I N T E N T R E Z 2 ET 1 C O T E : T H E T A 1 , T H E TA 2 , A B " I N P U T T1 , T 2 , L 2 T1 = ( T 1 * 3 . 1 4 1 5 9 ) / 1 8 0 : T 2 = C T 2 * 3 . 1 41 5 9 ) / 1 8 0 Y3=L2•S I N (T1 ) B 1 = C O S C T 1 ) * L2 B2=Y3 /TAN CT2) L 1 = B 1 +B2 : X E = B 1 : I F LX> L 1 T H E N X = L 1 : L 1 = L 2 : L2=X A R = C L2 * Y 3 ) / 2 C LS : P M O D E 4 , 1 : P C L S : S C R E E N 1 , 1 F=1 V C = C 3 . 1 4 1 5 9 * C L 1 • F -X 3 • F ) * ( Y 3 * F > t 1 > / 3 V S = C 3 . 1 4 1 5 9 * C X 3 * F ) • ( Y 3 • F > t2 ) / 3 : VT = V C + V S S1 =Y3 / X 3 : S2=Y3 / C X3-L1 ) 0 THEN 1 1 00 I F INT(X3) I F ! N T C X 3 ) = I N T ( L 1 ) T H E N 1 0 00 I F X3> L1 T H E N 1 1 9 9 IF X3=L2 T H E N 1 000 F O R Y = 2 0 TO L 1 • 2 + 2 0 S T E P 2 : P S E T < Y , Y 3 + 5 , 5 ) : N E XT = 257 Exemples de Programmes FOR X=0 T O X3 P S ET ( X * 2 + 2 0 , S 1 * CX 3-X ) + 5 , 5 ) : NE XT F O R X = X 3 TO L 1 : P S E T ( X * 2 + 2 0 , Y 3 + ( S 2 * ( L 1 - X ) + 5 ) , 5 ) : N E XT FOR X=1 TO 600 : NEXT X P R I NT @ 1 3 0 , "SURFACE=" ; A R ; " U N I T E S CA R . " : P R I N T @3 5 2 , " * " ; : I N P UT " P O U R RE C O M M E N C E R , PRESS < 1 > <ENTER> " ; 0 6 : I F 06=1 T H E N 1 20 S T O P : GOTO 1 0 640 FOR Y=5 TO Y 3 + 5 : P S E T ( X 3 * 2 + 2 0 , Y , 4 ) : N E X T : G O T O 5 4 0 1 0 00 1 1 00 F O R Y = 5 TO Y 3 + 5 : P S E T < 2 0 , Y , 5 ) ; N E X T : G O T O 5 4 0 1 2 00 F O R X=L1 TO X3 : P S E T ( X * 2 + 2 0 , Y3+ C S 2 * ( L1 - X ) + 5 ) , 5 ) : N E X T : GOTO 540 550 551 560 580 610 630 Programme 7 ' *** ETUDES DE PROJ ECTION * * * 2 5 10 15 20 25 30 35 40 45 50 55 60 65 258 P M OD E 4 , 1 PCLS SCREEN 1 , 0 D RAW " 0 M 5 0 , 5 0 R 6 0 D 1 0 N L 2 0 D 2 0 L 2 0 N U 2 0 L 2 0 N U 2 0 L2 0 U 2 0 N R 2 0 U 1 0" ' V U E D E D E S S U S D RAW " B M 5 0 , 1 0 0 R 2 0 N D 2 0 R 2 0 N D 2 0 R 2 0 D 2 0 N L 2 0 D 1 0 L60 U 1 0 N R 20U1 0 " ' VU E D E DEVANT D RAW " B M 1 5 0 , 1 0 0 R3 0 D 3 0 L3 0 U 1 0 N E 2 0 U 2 0 " ' VU E D E C O T E ' VU E O B L I Q U E - U N E S 4 0 - 6 0 D RAW " B M 1 5 0 , 5 0 U 5 E 1 5 R 1 0 B F 2 0 B D 3 0 N R 5 L 2 0 H 2 5 U 1 0 " D RAW " B M 1 5 0 , 5 0 U 5 F 8 U 1 5 R 1 5 H 8 F B L 1 5 F 8 N R 1 5 0 1 5 F 8 N D 1 0 E 1 5N R 1 0H8" L I N E (1 75-30) - ( 2 00 , 5 5 ) , PSET LINE - (200, 80) , PSET L I N E (1 67 , 6 0 ) - ( 1 8 3 , 46) , P S E T GOTO 6 5 Exemples de Programmes Programme 8 ' *** LA BOITE D E P L I E E *** 1 2 P C LEAR 8 5 10 PMODE 3 ,1 P C LS 15 20 COLOR 6 , 5 25 D R A W " B M 1 00 , 1 0 0 U 3 0 N R 30 E 1 5 G R 3 0 N G 1 5 D 3 0 G 1 6 N U 3 0 L 3 0 " 30 PAINT (105,95) , 8 , 6 35 P A I N T ( 1 3 5 , 8 0) , 8 , 6 40 P A I N T ( 1 1 0 , 65 ) , 8 , 6 45 SCREEN 1 , 1 FOR X = 1 TO 6 0 0 : NEXT X 50 110 PMODE 3 , 5 112 PCLS 115 CO L O R 6 , 5 D R A W " B M 1 0 0 , 1 0 0 U 3 0 N R 3 0 E 2 0 R 3 0 G 2 0 D 3 0 N L3 0 F 2 0 L3 0 H 2 0 " 120 125 LINE ( 1 00 , 1 00 ) - ( 7 0 , 9 5 ) , PSET L I N E - (70 , 6 5 ) , P S E T 130 135 L I N E - ( 1 0 0 , 7 0 ) , P S ET 1 40 L I N E ( 70 , 9 5 ) - ( 4 0 , 6 5 ) , P S ET , B 145 L I N E ( 1 3 0 , 1 00 ) - ( 1 60 , 9 5 ) , P S E T , 1 50 L I N E ( 1 6 0 , 65 ) , P S E T 155 L I N E - ( 1 3 0 , 7 0) , P SET 1 60 P A I N T (95 , 9 5 ) , 8 , 6 1 65 P A I N T (1 0 5 , 95 ) , 8 , 6 1 70 PAINT (135 ,85 ) , 8 , 6 1 75 P A I N T (45 , 85 ) , 8 , 6 1 80 P A I N T (1 1 5 , 6 5 ) , 8 , 6 1 85 P A I N T <1 2 5 , 1 1 4 ) , 8 , 6 1 90 SCR EEN 1 , 1 F O R X = 1 TO 6 0 0 : N E X T X 195 GO TO 1 0 200 Programme 9 1 ' *** O N D E S I N U S O I D A L E * * * 2 PMODE 4 , 1 5 10 P C LS 15 SCREEN 1 , 1 20 L I N E ( 0 , 96 ) - ( 2 5 5 , 9 6 ) , P S E T 25 P I =3 , 1 4 1 5 9 30 A 1 =-4* P I 35 A2= 4 * P I 40 N=1 80 R=50 45 50 X = CA2 -A1 > / N 55 F = 2 5 5 / C A2 - A 1 ) 60 FOR I = A 1 TO A 2 STEP X 65 X=I*F Y=R*S I N ( I ) 70 75 P S E T ( ( X +1 4 0 ) , ( 8 0 + Y ) , 1 ) NEXT I 80 G OT O 9 0 90 259 Exemples de Programmes Programme 1 O ' *** S I N U S / COS I N US *** 2 10 20 30 40 50 60 70 80 90 1 00 110 130 1 40 1 45 150 1 60 1 70 1 80 190 PMODE 4 , 1 P C LS S C R E EN 1 , 0 L I N E ( 1 27 , 5 ) - ( 1 2 7 , 1 85 ) , P S E T L I N E ( 7 , 9 5 ) - (247 , 9 5 ) , P S E T F O R X S C A L E = 7 T O 2 47 S T E P 2 0 PRESET (XSCALE , 9 5 ) NEXT X S C A L E F O R Y S C A L E = 5 TO 1 8 5 S T E P 1 0 PRESET < 1 2 7 , YSCA LE) NEXT YSCALE F O R X = - 1 8 0 T O 1 80 S T E P 1 . 5 AX=X/ 5 7 . 29578 X P =X / 1 . 5+1 27 F 1 = - ( S I N ( A X ) * 9 0 ) +95 F 2 = - ( C OS ( A X ) * 9 0 ) + 9 5 PSET<XP , F1 , 1 ) : PSET<XP , F2 , 1 ) NEXT X GOTO 1 9 0 Programme 1 1 ' *** G R A P H I Q U E S AU H A S A R D *** 2 10 15 20 25 30 35 40 50 55 60 65 260 PMODE 3 , 1 P C LS SCREEN 1 , 1 F = R N D ( 4 ) : B = RN D ( 8 ) : I F B = F O R (B-4= F ) T H E N 2 5 C O L O R F , B : P C L S B : F O R L = 0 TO 5 L I N E - ( R N D ( 2 5 5 ) , RN D ( 1 9 1 ) ) , P SET C I R C LE ( R N D ( 2 5 5 ) , R N D ( 1 91 ) ) , R N D ( 1 0 0) N E X T : FOR P0=0 TO 1 0 P A I N T ( R N 0 ( 2 5 5 ) , RN D ( 1 91 ) ) , R N D (4) , F NEXT: FOR H = 1 TO 7 F O R T=0 TO 6 0 0 : N E X T T : GOTO 1 0 Exemples de Programmes Programme 1 2 1 ' * * * COUVERTURE I N D I ENNE *** 2 5 PMODE 3 , 1 P CLS 4 10 SCREEN 1 , 0 15 COLOR 1 ,0 20 FOR X=0 TO 255 STEP 1 8 25 0Y=Y 30 35 Y=30-0Y 40 L I N E ( X , 1 0 0-Y ) - ( X+1 0 , 1 00-0Y ) , P S E T 45 L I N E ( X , 1 20+Y) - ( X+1 0 , 1 20+0Y ) , P S E T NEXT 50 F O R C = 2 TO 4 60 PAINT (0, 1 1 0) , C , 1 65 70 NEXT GOTO 6 0 80 Programme 1 3 1 2 5 ' * ** D E N T E L L E P E I N T E *** PMODE 3 , 1 10 P C LS 20 30 40 SCREEN 1 , 1 D R A W " B M 5 0 , 1 8 0 U 6 0 B U 2 0 U 6 0 R 6 0 B R 2 0 R 6 0 D 6 0 B D 2 0 D 6 0 L6 0 B L 2 0 L 6 0 D R A W " B M 5 0 , 1 80 U 6 0 R 4 0 B R 2 0 R 8 0 D 2 0 B L20 L 6 0 B L 2 0 L 2 0 D 2 0 R 2 0 B R 6 0 R20U2 0 D R A W "BM 5 0 , 1 80R60U80BU20U40 L40BD20D20BD6 0D20R20 U60BU20U20L2 0 D R A W " B M 5 0 , 1 8 0 U 6 0 B U 4 0 B R 2 0 R 6 0 B R 2 0 R 2 0 U 2 0 L2 0 D 6 0 B D 2 0 D 2 0 R 2 0 D R A W " B M 5 0 , 1 8 0B R 8 0 U 4 0 B U 2 0 U 8 0 50 60 70 80 90 95 97 98 99 1 00 1 01 1 02 1 03 1 04 110 200 D RAW " B M 5 0 , 1 80 B U 8 0 R 8 0 B R 2 0R40 P A I N T (85 , 1 28 ) , 6 , 8 P A I N T ( 9 5 , 7 8) , 6 , 8 P A I N T ( 1 5 5 , 95 ) , 6 , 8 P A I NT ( 1 3 5 , 1 45 ) , 6 , 8 P A I NT ( 1 28 , 1 85 ) , 7 , 8 P A I N T <7 5 , 1 5 0) , 7 , 8 PAINT (160,1 50) , 7 , 8 PAINT <75 , 75) , 7 , 8 PAINT (160,75) , 7 , 8 P A I N T ( 1 20 , 1 1 0 ) , 7 , 8 F O R X = 1 TO 6 0 0 : N E X T X GOTO 5 261 Exemples de Programmes Programme 1 4 1 2 3 5 10 15 20 25 ' ** * P L AN C H E A D E S S I N *** C LS P R I N T @ 1 28 , S T R I N G$ ( 3 2 , " * " ) : P R I N T @ 2 8 8 , S T R I N G $ ( 3 2 , " * " ) P R I N T @ 2 0 0 , " P LA N C H E A D E S S I N " FOR X=1 TO 600 : N E X T X C LS P R I N T @ 9 6 , " P R E S S E Z <t> P O U R L E H A U T , < F L E C H E V E R S L E B A S > 30 P O U R L E B A S , < E S P A C E A R R I E R E > P O U R L A GA U C H E , < E S P A C E A V A N T > POUR LA D RO I T E , <A> POUR S U D - O U E S T , <S> POUR S U D - E S T , <W> POU R N O R D - E S T , <Q> P O U R N O R D - O U E S T " P R I N T @ 2 8 8 , " P R E S S E Z <1 > P O U R L I G N E I N V I S I B L E , 35 40 45 50 55 < 2 > , <3> OU <4> P O U R L I G N E S V I S I B L E S D E C O U L E U R S D I F F E R E N T E S , P R E S S E Z < / > POUR C H A N G E R J E U D E COU L E U R S " P R I N T @ 4 8 8 , " P R E S S E Z < B A R R E D ' E S P A C EM ENT> POUR P A U S E " F O R X=1 TO 4 8 0 0 : N E X T X C C=4: TG=0 PMODE 3 , 1 P C LS 60 SC REEN 1 , TG X = 1 2 8 : Y = 96 : X I = 0 : Y I = 0 70 U $ = 1 1 t11 : D $ = C H R $ ( 1 0) : W $ = C H R $ ( 8 ) : E $ = C H R $ ( 9 ) 80 90 NW$="Q " : N E $ ="W" : SW$=" A " : S E$="S" 1 00 C I $ = " 1 " : C 2 $ = " 2 " : C3$=" 3 " : C4$=" 4 " : A$= I N KE Y $ 110 1 20 130 1 40 150 1 60 1 70 1 80 190 I F A$=U$ T H E N Y I = -1 : X I =0 : GOTO 240 I F A $ = D $ T H E N Y I = 1 : X I = 0 : G O T O 240 I F A$=W$ T H E N X I = - 1 : Y I = 0 : GOTO 240 I F A$=W$ T H E N X I = 1 : Y I = 0 : GOTO 240 I F A$ = N E $ T H E N X I = 1 : Y I = - 1 : G O T O 2 4 0 I F A $ = N W $ T H E N X I = - 1 : Y I = - 1 : GOTO 2 4 0 I F A $ = S E $ T H E N X I = 1 : Y I = 1 : GOTO 2 4 0 I F A $ = S W $ T H E N X I = - 1 : Y I = 1 : GOTO 2 4 0 200 210 220 230 I F C 1 $ < = A $ A N D A $ < = C 4 $ T H E N C C =AS C C A $ ) -48 : GOTO 240 I F A $ = " / " T H E N T G = ( N O T T G A N D 1 ) O R < T G A N D N O T 1 ) : G O T O 240 SCREEN 1 , TG I F A$ = " " T H E N X I = 0 : Y I = 0 X = X + X I : Y = Y +Y I : I F X < 0 T H E N X = 0 I F X>255 THEN X=255 I F Y<0 TH EN Y=0 I F Y> 1 9 1 T H E N Y = 1 9 1 PSET ( X , Y , CC ) GOT0 1 1 0 240 250 260 270 280 290 262 Exemples de Programmes Programme 1 5 Programme 1 6 1 2 20 25 30 35 40 45 50 ' * ** L I G N E S AU H A S A R D *** PM O D E 4 , 1 PCLS SCREEN 1 , 1 X = R N D C 2 5 5 > : Y = R N D C 1 91 ) LINE - <X , Y > , PSET FOR X = 1 TO 2 0 0 : N E X T X GOTO 3 5 Programme 1 7 1 ' *** T R E F L E A H U I T F E U I LLES *** 2 5 P C LEAR 8 PM O D E 4 , 1 10 PCLS 15 20 . SCREEN 1 , 0 25 P I =3 . 1 4 1 59 A 1 = 0 : A2=2*PI 30 35 N =3 6 0 : A = 5 0 40 X = < A2-A1 ) /N 45 F O R I 8= A 1 T O A 2 S T E P X R=A*COS (4*1 ) 50 X=R*S I N ( I ) 55 Y=R*COS ( I ) 60 PSET ( 1 28 +X , 96+Y , 5 ) 65 NEXT I 70 GOTO 2 5 75 263 Exemples de Programmes Programme 1 8 ' * * * BOMBE A R ETARDEMENT * * * 2 10 15 20 25 30 35 40 45 50 55 PMODE 4 , 1 P C LS SCREEN 1 , 1 C I R C LE ( 1 2 8 , 96 ) , 80 C I R C LE ( 1 2 8 , 96) , 90 PAINT (0,0 ) , 5 F O R T = 3 0 TO - 3 0 S T E P - 1 A = ( 2 *3 , 1 4 1 5 ) * T / 6 0 L I N E ( 1 28 , 9 6 ) - ( 7 5 * S I N ( A ) + 1 2 8 , 7 5 * C O S ( A ) +96) , P S E T S O U N D Q * 2 + 1 , 2 0 / ( Q+1 ) + 1 60 65 70 75 80 85 90 95 1 00 1 05 110 115 L I N E ( 1 2 8 , 9 6 ) - ( 7 5 * S I N ( A ) +1 2 8 , 7 5 * C O S ( A ) + 9 6 ) , P R E S E T Q = 6 0 -2 * T : F O R Y = Q TO 0 S T E P - 1 : N EX T N E XT C LS PCLS PR I NT@237 , "BOOM ! " SOUND 1 , 30 PMODE 4, 1 SCREEN 1 , 1 FOR I=2 TO 200 S T E P 2 C I R C L E ( 1 28 , 96 ) , 1 NEXT 1 120 SC REEN 1 , 1 1 25 130 135 1 40 145 1 50 1 55 FOR X=2 TO 200 S T E P 2 C I R C L E ( 1 2 8 , 96 ) , I , 3 , . 5 N EXT X F O R I = 2 TO 2 0 0 , S T E P 2 C I R C L E ( 1 2 8 , 96 ) , l , 3 , . 5 NEXT I GOTO 1 5 5 Programme 1 9 1 ' * ** V E N T I LATE UR *** 2 P C LEAR 8 5 GOTO 600 50 L I N E ( ( 2 5 5 - X ) , ( 1 9 1 - Y ) ) - C X , Y ) , PSET 60 61 J = J + 1 : I F J > A T H E N J = 0 : A=RN D C 50) RETURN 63 REM VENTI LATEUR 600 F O R I = 1 TO 5 S T E P 4 601 PMO D E 3 , 1 602 PC LS 603 604 SCREEN 1 , 0 605 A=25: X=0: Y=0: J=0 F O R X = 0 TO 2 5 4 610 612 CO L O R X / 3 2 + 1 , 5 61 5 GOSUB 6 0 : NEXT X 264 Exemples de Programmes 620 623 625 630 640 643 645 650 660 670 680 690 700 710 FOR Y=0 TO 1 9 0 CO LOR Y / 2 4+1 , 5 GOSUB 6 0 : N E X T Y FOR X=255 TO 1 S T E P -1 FOR Y = 1 9 1 TO 1 S T E P -1 C O LOR X / 2 4 + 1 , 5 G O S U B 6 0 : N EXT Y NEXT I FOR 1=1 TO 5 S T E P 4 PMOOE 3 , 1 SCREEN 1 , 0 FOR T=1 TO 3 0 : N E X T T NEXT I GOTO 660 Programme 20 1 ' * ** L E S T R I A N G L E S EN M A R C H E * * * F O R A = 9 0 TO 0 S T E P -4 10 S 1 =A•9 : S 2 = 1 91 15 20 A3= A / 5 7 . 29578 X 1 =0 : Y 1 = 1 9 1 30 X2=S1 +X1 : Y2=Y1 40 50 X 3 = X 1 + S 2 • C O S C A 3 ) : Y 3 = Y 1 - S 2 • S I N CA3 ) 55 G O S U B 1 0 00 NEXT A 90 99 GOTO 99 1 0 00 PM O D E 4 , 1 1 005 P C LS 1010 SCREEN 1 , 0 1 0 20 L I N E CX1 , Y 1 > - C X 2 , Y2) , PSET 1 03 0 L I N E - ( X 3 , Y3 ) , P S E T 1 040 L I N E - C X 1 , Y 1 > , P S ET 1 060 R ETURN Programme 21 ' 1 2 10 20 30 35 40 50 60 70 80 90 100 110 200 21 0 220 230 *** C O M PTAG E ** * C LS C L E A R 1 0 00 P R I N T "OU VOULEZ-VOUS COMMEN C E R A COMPTER?" I N PU T A P = LEN (A$) PRINT: PRINT A C=VAL CMID$(A$ , P , 1 ) ) + 1 M S $= A $ : M R $ = R I G H T $ C S T R $ ( C ) , 1 ) : P S = P : G O S U B 2 0 0 : A $ = M S I F C < 1 0 T H E N 40 P=P-1 I F P=0 T H E N I F LEN ( A $ ) = 2 5 5 T H E N P R I N T " D E P A S S E M ENT DE C A P A C I T E " : E N D : E L S E A $ = " 1 " + A $ : GOTO 40 GOT0 60 LS= L E N (M S $ ) I F L S < > LE N C M R $ ) + L S - 1 OR P S < 1 T H E N S T O P M S $ = L E F T $ C M S $ , P S - 1 ) +M R $ + R I G H T $ C M S S , L S - P S ) RETURN 265 Exemples de Programmes Exemples de programmes 22 à 30 avec BASIC version 2. Programme 22 10 20 30 40 50 60 70 80 90 100 110 1 20 130 1 40 150 1 60 1 70 1 80 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 41 0 266 REM INTRODUCTION O N B R K G O T O 400 P A LETTE C M P : W I D T H 32 P R I N T " L ' O R D I N A T E U R C O U L E U R 3 PEUT F A I R E " P R I N T " LE S M E M E S C H O S E S Q U E L E S AU T R E S " P R I N T " M E M B R E S D E LA F AM I L L E D E " P R I N T " L ' O R D I N A T E U R C O U L E U R E T B I E N D ' A U TR E S . " P R I N T "VOUS POUVEZ CH O I S I R UN ECRAN DE TEXTE D E " P R I N T " 3 2 , 4 0 O U 80 C O L ON N E S . " P R I N T : P R I N T "VO I C I UN E C R A N DE 1 6 L I G N E S , 32 CO LONN E S . " F O R T = 1 TO 5 0 0 0 : N E X T W I DTH 4 0 : A T T R 2 , 0 : L O C A T E 5 , 1 1 P R I N T " Vo i c i u n e c r a n d e 2 4 l i g n e s , 4 0 c o l o n n e s . " LOCATE 0 , 23 F O R T = 1 TO 2 0 0 0 : N E X T W I D TH 8 0 : L O C A T E 2 5 , 1 1 P R I N T " V o i c i u n e c r a n d e 24 l i g n e s , 80 c o l o n n e s . " L O C A T E 0 , 23 F O R T = 1 TO 2 0 0 0 : N E X T W I DTH 4 0 P R I N T T AB (1 4) ; "NOUV E L L E S FONC T I O NS" : P R I N T P R I N T " L ' o rd i n a t e u r c o u l e u r 3 o f f r e : " : P R I N T P R I N T " T E X T E E V O L U E S U R 40 E T 80 C O L O N N E S " -M A J U S C U L E S et m i n u s c u l e s " PRINT " -Ca ract e res spec i aux : " P R B IT " "; P R I NT " F O R Z = 1 2 8 TO 1 59 : P R I N T C H R $ ( Z ) ; : N E X T : P R I N T PRINT -" ; : ATTR 2, 0, B: P R I N T " C L I G N O T E M E N T" : ATTR 2, 0 PR INT " -" ; : A T T R 2 , 0 , U : P R I N T " S O U L I G N A G E " ; : ATTR 2 , 0 : P R I NT PRINT " -" ; : A T T R 2 , 0 , B , U : P R I N T " L E S D E U X " ; : ATTR 2 , 0 : P R I N T A$= " C O U L E U R " : P R I NT" - " ; : F O R Z = 1 TO 5 : A T T R Z - 1 , Z + 2 : 11 P R I N T M I D $ ( A$ , Z , 1 ) ; : N E X T : ATTR 2 , 0 : P R I N T NOUVEAUX GRAPHIQUES P U I SSANTS A HAUTE P R I NT : P R I NT D E F I N I T I O N" -640V x 1 9 2H a v e c 4 c o u l e u r s " PRINT " -320V x 1 9 2H a v e c 1 6 cou l e u r s " PRINT " -Mo n t r e 1 6 c o u l e u r s , s u r u n " PRINT " PR INT " c h o i x d e 64 . " 11 11 -Les prog rammes peuvent i mp r i m er du t e x t e " P R I NT P R I N T " s u r l ' e c ra n de g ra p h i ques . " L O C A T E 0 , 23 : F O R T = 1 T O 1 5 0 0 0 : N E X T P A L E T T E C M P : A T T R 2 , 0 : W I D T H 40 END Exemples de Programmes Programme 23 10 20 30 40 50 60 70 80 90 100 110 120 130 1 40 1 50 1 60 1 70 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 41 0 420 430 440 REM H C OLO R S O N B R K GOTO 430 W I D T H 40 : P A L E T T E C M P : A T T R 2 , 0 P R I N T " V O Y E Z LES 64 COU L E U R S , 8 A LA F O I S . " : P R I N T : P R I N T ATTR 2 , 0 , B P R I N T " P R E S S E Z L A B A R R E D ' E S P A C E M E N T P O U R C O M M E N C E R . " : P R I NT P R I N T " P R E S S EZ L A T OU C H E B R E A K P O U R A R R E T E R . " A T T R 1 , 0 : L O C A T E 0 , 23 A $ = I N K E Y $ : I F A $ = '"' T H E N 90 I F A S C ( A $ ) =3J. T H E N 4 3 0 R E M H C OLORS R E M M O N T R E L E S 64 C O U L E U R S , 8 A LA F O I S HSCREEN 2 F O R Z = 0 T0 7 PALETTE CMP H C LS F O R Y = 0 TO 7 C=Y+Z*B PALETTE Y, C PA LETTE Y+8, ( C +32) AND 63 H C O LOR Y , 0 H L I N E ( 0 , Y*24) - ( 3 1 9 , Y *24+23 ) , PSET, B F H C O LO R ( Y + 1 ) A N D 7 , 0 P R I N T ( 4 , Y*3+1 ) , C H C O LOR HPRINT NEXT H C O LOR HPRINT H C OLOR HPRINT H C O LOR HPRINT H C O L OR HPRINT H C OLOR HPRINT Y+8 , 0 (33 , Y*3+1 ) , C 3, 0 ( 8 , 7) , " P R E S S E Z " 4, 0 ( 8 , 1 0) , " B ARRE" 5, 0 (9 , 1 3 ) , "D ' ESPACEMENT" 10, 0 ( 2 7 , 7) , " P R E S S E Z " 1 1 , 0 ( 2 7 , 1 0 ) , " LA BARRE" H C O LOR 1 2 , 0 H P R I N T ( 2 8 , 1 3 ) , " D ' E S P A C EM E N T" A $ = I N K E Y $ : I F A $ = 11 1 1 T H E N 4 0 0 I F A S C ( A $ ) =3 T H E N 4 3 0 NEXT H S C R E E N 0: PALETTE C M P : H C O L O R 1 , 0: C L S END 267 Exemples de Programmes Programme 24 10 20 30 40 50 60 70 80 90 1 00 110 1 20 130 1 40 150 1 60 1 70 1 80 190 200 21 0 220 REM PALETTE O N B R K GOTO 200 GOSUB 60 F O R Y = 0 TO 7 : P A L E T T E Y , R N D ( 6 4 ) -1 : PA L E T T E Y+8 , R N D ( 6 4 ) - 1 : N E X T : G O T O 40 GOTO 200 W I D TH 4 0 : P A L E T T E C M P L O C A T E 1 , 0: ATTR 0 , 4, U P R I N T " D E M O N S T R A T I O N DE LA P A L E T T E D E L ' O R D I N A T E U R C O U L E U R 3 " ; ATTR 0, 4 : LOCATE 8 , 6 : ATTR 0 , 4 , B P R I NT " P R E S S E Z LA B A R R E D ' E S P A C E M E N T P O U R COMM E N C E R " ; ATTR 0 , 4 : LOCATE 9 , 1 1 P R I N T " P R E S S E Z LA TOU C H E B R E A K P O U R A R R E T E R " ; ATTR 2 , 0: LOCATE 0 , 23 K $ = I N K E Y $ : I F K $ = 1 1 11 T H E N 1 4 0 I F A S C ( K $ ) =3 T H E N 2 0 0 HSCREEN 2 F O R C = 0 TO 1 5 : F O R V = 3 7 TO 1 5 7 S T E P 3 0 : D= ( ( V -37) /1 5 + C ) AND 1 5 : H C I R C L E C < C * 2 0 ) + 1 0 , V ) , 9 , 2 : H P A I N T C < C* 2 0 ) + 1 0 , V ) , D , 2 : N E XT V , C F O R Z = 0 TO 7 : H C O LO R Z , 0 : H L I N E < 0 , Z *3 ) - ( 3 1 9 , 2 + Z * 3 ) , P S E T , B F : H C O LO R Z + 8 , 0 : H LI N E C 0 , 1 6 8+Z*3 ) - ( 3 1 9 , 1 7 0+Z*3 ) , P S E T , B F : NEXT R ETURN P A L ETTE C M P : H S C R E E N 0: ATTR 2 , 0: C LS P R I N T "NOUS NOUS SOMMES B I E N AMUSES ! " : P R I N T END Programme 25 10 20 30 40 50 60 70 80 90 1 00 110 1 20 130 1 40 150 1 60 170 1 80 1 90 200 210 268 R E M C A S E D E COU L E U R ON B R K GOTO 200 GOTO 50 F O R Z = 0 T O 1 5 : P A L E T T E Z , R N 0 ( 6 4 ) - 1 : N E X T : GOTO 4 0 W I DTH 40: PALETTE C M P : ATTR 2 , 0 P R I N T " C A S E D E C O U L E U R'' : L O C A T E 0 , 5 A T T R 2 , 0 , B : P R I N T " P R E S S E Z LA B A R R E D ' E S P A C EM E N T P O U R C O M M EN C E R . " : P R I N T : P R I N T P R I N T " P R E S S E Z L A TOU C H E B R E A K P O U R A R R E T E R . " : A T T R 2 , 0 : LOCATE 0 , 23 A $ = I N K E Y $ : I F A $ = " " T H E N 90 I F A S C ( A $ ) =3 T H E N 200 HSCREEN 2 F O R Z = 0 TO 9 5 : C = Z A N D 1 5 PALETTE C , R N D ( 64) - 1 : H C OLOR C , 0 H L I N E C Z , Z ) - (3 1 9 -Z , Z ) , PSET H L I N E - ( 3 1 9-Z , 1 91 -Z ) , PSET H L I N E - ( Z , 1 91 -Z ) , PSET H L INE- ( Z , Z ) , PSET NEXT GOTO 4 0 H S C R E E N 0 : PALETTE C M P : A T T R 2 , 0 : C LS END Exemples de Programmes Programme 26 R E M D EM ON S T R A T I O N D E H PU T O N B R K GOTO 400 W I DTH 4 0 : P A L E T T E CMP: C L S P R I NT " D EMON S T R A T I O N DE H PU T " LOCATE 0 , 5 : ATTR 2 , 0 , B P R I N T " P R E S S EZ LA BARRE D ' E S P A C E M E N T P O U R COMMEN C E R " : PRINT: PRINT P R I N T " P R E S S E R L A TOUC H E B R E A K POUR A R R E T E R " 70 80 A T T R 2 , 0 : L O C A T E 0 , 23 90 A$= I N K E Y $ : A$="" THEN 90 I F A S C ( A $ ) = 3 T H E N 400 1 00 110 H B U F F 1 , 799 H S C R E EN 2 1 20 P ALETTE CMP 130 H C LS 0 1 40 1 50 H C I R C L E (20,20) , 1 0 , 2 1 60 H C IRCLE(20,20 ) , 5 , 3 1 70 H C I R C LE ( 1 0 , 1 0 ) , 5 , 4 H C I R C LE ( 1 0 , 3 0) , 5 , 5 1 80 10 20 30 40 50 60 200 210 190 H C I RC LE(30 , 1 0) , 5 , 6 H C I R C LE ( 3 0 , 3 0) , 5 , 7 H P A I N T < 20 , 2 0 ) , 3 , 2 220 230 H CO LO R 1 , 0 H LI N E ( 0 , 0 ) - ( 3 9 , 3 9 ) , P S ET 240 250 260 270 280 290 300 310 320 330 340 350 3 60 370 H C O LO R 6 , 0 H L I N E (1 0 , 2 0 ) - ( 3 0 , 2 0) , P S E T H C O LO R 7 , 0 H L I N E ( 2 0 , 1 0 ) - ( 2 0 , 3 � ) , P S ET H C O LO R 4 , 0 H L I N E ( 0 , 0 ) - ( 0 , 39) , PSET H L I N E C39 , 0 ) - ( 3 9 , 3 9) , P S E T C O L OR 5 , 0 H L I N E < 0 , 0 ) - ( 39-0) , PSET H L I N E C 0 , 39) - ( 3 9 , 3 9 ) , P S ET HGET(0 ,0 ) - (39,39) , 1 PALETTE R N D ( 8 ) - 1 , RND (64)-1 G O S U B 42 0 : H P U T ( X , Y > - ( X + 3 9 , Y + 3 9 ) , 1 , P S E T G O S U B 420 : H P U T < X , Y > - ( X + 3 9 , Y + 3 9 ) , 1 , A N D G O S U B 420 : H P U T ( X , Y > - ( X + 3 9 , Y + 3 9 ) , 1 , O U A $ = I N K EY $ : I F A $ = " " T H E N 3 5 0 H S C REEN 0 : PALETTE CHP : C LS END 380 390 400 41 0 420 430 440 X=2* I N T ( R N D C278 ) / 2 ) Y=RND (1 50) RETURN 269 Exemples de Programmes Programme 27 10 20 30 40 50 60 70 80 90 1 00 110 1 20 130 1 40 150 1 60 1 70 1 80 1 90 R E M BOUC L E S ON B R K GOTO 1 9 0 H S C R E E N 2 : P A L E T T E CMP : PALETTE 0, 0 M I D D L E=RN D C3 5 ) +5 S I Z E =3 0 + R N D C 7 0 ) HCLS 0 H C O LO R 1 , 0 : H P R I N T C 8 , 0 > , " P R E S S E Z L A T O U C H E B R E A K POUR ARRETER" H C O L OR 2 , 0 : H P R I N T C 8 , 2 3 ) , " P R E S S E Z L A T O U C H E B R E A K POUR ARRETER" • FOR Z=0 TO 6. 3 S T E P 045 XOFFS=COS ( Z ) * M I DD LE+1 5 9 . 5 YOFFS=S I N C Z ) * M I DD LE+95 . 5 PALETTE R N D C 1 5 ) , R N D C 63 ) CO=R N D C 1 6 ) -1 H C I R C L E C XO F F S , Y OF F S ) , S I Z E , C O , . 4 5 , . 8 , . 2 H C I RCLE CXOF F S , YOF F S ) , S I Z E , C O , . 45 , . 3 , . 7 N EXT FOR T=1 TO 4000 : N E XT GOTO 40 P A L ET T E C M P : H S C R E E N 0 : C L S : E N D Programme 28 10 20 30 40 50 60 70 80 90 1 00 110 1 20 130 1 40 150 1 60 170 180 190 200 210 220 230 240 250 270 REM CHAINES O N B R K GOTO 2 5 0 W I DT H 4 0 : PA LETT E CMP P R I N T " D ES S I N D E C H A I N E AUTOMAT I Q U E " : LOCATE 0, 5 A T T R 2 , 0 , B : P R I N T " P R E S S E Z LA B A R R E D ' E S P A C EM E N T P O U R C O M M EN C E R . " : P R I N T : P R I N T P R I N T " P R E S S E Z L A TOU C H E B R E A K P O U R A R R E T E R " : A T T R 2 , 0 : LOCATE 0 , 23 A$=I NKEY$ : I F A$="" TH EN 70 I F A S C ( A $ ) =3 T H E N 2 5 0 HSC REEN 2: PALETTE CMP: PALETTE 0 , 0 X 1 =RND ( 1 5 0 ) : Y1 =RND C90) : X2=RND ( 1 5 0 ) +1 68 : Y2=RN D C9 0 ) +1 0 0 : LC=0 H C O LO R R N D C 7 > , 0 H L I N E C X 1 , Y 1 > - C X 2 , Y 2 ) , P S ET L C = L C + 1 : I F L C = 2 0 0 T H E N H C L S : GOTO 1 0 0 X1 =X1 - 4 : X=X1 : GOSUB 1 9 0 : X 1 = X Y1 =Y1 - 4 : Y=Y1 : GOSUB 2 2 0 : Y 1 =Y · X2=X2+3 : X=x 2 : GOSUB 1 9 0 : X 2 = X Y2=Y2+ 2 : Y=Y2 : GOSUB 2 2 0 : Y2=Y G OT O 1 1 0 I F X < 0 T H E N X =3 1 9+ X : R E T U R N I F X> 3 1 9 T H EN X = X - 3 1 9 RETURN I F Y < 0 T H E N Y = 1 9 1 +Y : R E T U R N I F Y>1 9 1 T H E N Y = Y - 1 9 1 RETURN H S C R E E N 0 : PALETTE CMP: C LS : END Exemples de Programmes Programme 29 10 20 30 40 50 60 70 80 90 1 00 110 1 20 130 1 40 1 50 1 60 1 70 1 80 1 90 200 210 220 230 240 250 REM AU HASARD O N B R K GOTO 2 4 0 W I DTH 40: PALETTE CMP P R I N T "GRAPH IQUES AU HASARD" : LOCATE 0 , 5 ATTR 2 , 0 , B : P R I N T " P R E S S E Z L A B A R R E D ' E S PA C E M E N T POUR C O M M E N C E R . " : P R I N T : PR I N T P R I N T " P R E S S E Z LA TOUCHE B R E A K POUR A R R E T E R . " : ATTR 2, 0 : L O C A T E 0 , 23 A $ = I N K E Y $ : I F A $ = " " TH E N 7 0 I F A S C ( A $ ) =3 T H E N 2 4 0 H S C R E EN 2 : PALETTE 0 , 0 FOR Y=1 TO 5 FOR Z=1 TO 6 H C O LO R R N D ( 1 5 ) , 0 : H L I N E ( R N D <3 1 8 ) , RN D ( 1 90 ) ) - ( R N D (31 8 ) , R N D ( 1 90 ) ) , PSET C X = R N D ( 2 0 0 ) + 6 0 : C Y = R N D ( 7 0 ) +60 : C C = R N D ( 7 ) H C I RC LE(CX , CY> , RNDC58) , CC H PA I NT C C X , C Y > , C C C+1 > AND 7 , C C N EXT H C O L OR R N D ( 7 ) , 0 H X = R N D C 2 0 0 ) : H1 = R N D C 8 0 ) + 200 HY=RND (70) : H2=RND (30) +90 H L I N E <HX, HY) - (H1 , H2) , PSET, BF NEXT H C LS 0 G O T O 1 00 P A L ETTE C M P : H S C R E E N 0: C L S END Programme 30 10 20 30 40 50 60 70 80 90 1 00 110 1 20 1 30 1 40 1 50 1 60 1 70 REM CRAYONNAGE O N B R K GOTO 7 5 0 W I DTH 40: PALETTE CMP P R I N T " CRAYON N A G E COUL E U R . AVEC L E C R AYONNAGE" P R I N T " COULEU R , VOUS POUVEZ D E S S I N ER SUR L ' EC RAN" P R I N T " E N P R E S S A N T D E S TO U C H E S Q U I S O N T : " : P R I N T : P R I N T P R I N T " ( T OU C H E D E F L E C H E ) DEPLACE D ' UN POINT" P R I N T " ( S H I F T ) ( TO U C H E D E F L E C H E ) D E P L A C E D E 1 0 P O I N T S " PRINT " CCLEAR) P E I N T UN OBJET" P R I N T " ( S H I F T ) ( C LEAR) E F F A C E L ' E C RAN" PRINT "(F1 > L E V E ET B A I S S E L E C R A Y O N " P R I NT " ( F 2 ) CHANGE DE COULEUR D ' ENCRE" P R I N T " ( LETTRES ET C H I F FRES) TAPE L E TEXTE SUR L ' E C R A N " PRINT "(ALT)OU(@) STOCKE UN POINT PRINT " ( CTRL) DESS I N E AU POINT STOCKE" PRINT " < ENTER) C L I GNOTEMENT P R I N T : P R I NT : ATTR 2 , 0 , B : P R I NT " P R E S S E Z LA BARRE D ' E S P A C E M E N T P0U R COMME N C E R " : P R I N T P R I N T " P R E S S E Z LA TOU C H E B R E A K POUR A R R E T E R . " : ATTR 2 , 0 LOCATE 0 , 23 A$= I N KEY $ : IF A $ = " " THEN 200 I F A S C (A $ ) =3 T H E N 7 5 0 H S C R E E N 2 : P A L E T T E 0 , 0 : H B U F F 1 , 799 : H B U F F 2 , 3 0 7 : H G E T C 7 2 , 1 84 ) - C 1 5 9 , 1 90) , 2 XP=1 6 0 : YP=92 : CV=1 : P F = 0 : F F= 0 : MX=1 6 0 : MY=92 H C O LO R 2 , 0 : H L I N E ( 0 , 1 82 ) - (3 1 9 , 1 8 2 ) , P S ET : H C O L OR 1 , 0 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • . • • • • • • • • • • • • • • • • • • • • • • • . • • • • . • • • • • • • • • • • • • • • • • • • • • • • • • • • . . • • • • • . • • • • • • • • • • • • • • • • • • • • • • • • • 1 80 190 200 210 220 230 240 271 Exemples de Programmes 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 51 0 520 530 540 550 560 570 580 590 60 0 610 620 630 640 650 660 670 680 690 700 71 0 720 730 740 750 760 272 H P R I N T ( 0 , 2 3 ) , " P E N - U P " : H P R I N T ( 2 1 , 23 ) , " C O L O R - > 11 H C O L OR C V , 0 : H L I N E ( 2 2 4 , 1 8 3 ) - ( 3 1 7 , 1 9 1 ) , P S E T , B F I F X P < 2 T H E N X P =3 1 7 : G O T O 3 4 0 I F X P > 3 1 7 T H E N X P =2 : G O T O 3 4 0 I F Y P <2 T H E N Y P = 1 79 : G O T O 3 4 0 I F Y P > 1 7 9 T H E N Y P =2 H C O LO R C V , 0 I F PF=1 T H E N H L I N E ( FX , F Y ) - ( XP , Y P ) , PSET FX=XP : F Y = Y P H C 0 LOR : 1 , 0 : H P U T ( 7 2 , 1 8 4 ) - ( 1 5 9 , 1 9 0 ) , 2 , P S E T X V $ =R I G H T $ ( " " + S T R $ ( X P - 2 ) , 3 ) : YV$=R I G H T$ ( " "+STR$ (1 79-YP) , 3 ) PS$="X="+XV+" Y="+YV$ : H P R I N T ( 9 , 2 3 ) PS HGET ( 0 , YP-2) -(319-YP+2) , 1 H D RAW "B M " + S T R $ ( I N T ( X P ) ) + " , 11+ S T R $ ( I N T ( Y P ) ) + " ; C " + S T R $ ( I C ) + " ; D 2 ; U 2 ; L 2 ; R 4 ; L2 ; U 2 " I C = < I C +1 ) AND 7 OR 8 I F F F =0 T H E N 4 2 0 F O R P N = 0 TO 1 5 : P A L E T T E P N , R N D C 6 4 ) - 1 : N E X T A$= I N K E Y $ : HPUT ( 0 , YP-2 ) - (3 1 9 , VP+2) , 1 : IF A$="" T H E N 370 KV=AS C ( A $ ) I F KV=3 TH EN 7 5 0 I F KV=94 T H EN Y P = Y P - 1 : GOTO 2 7 0 I F K V = 1 0 T H E N Y P = Y P + 1 : GOTO 2 7 0 I F K V = 8 T H E N X P ;;; X P - 1 : G O T O 2 7 0 I F KV=9 TH E N XP=XP+ 1 : GOTO 270 I F K V = 9 5 T H E N Y P = Y P - 1 0 : G O T O 270 I F KV=91 T H E N Y P = Y P + 1 0 : GOTO 270 I F K V = 2 1 T H E N X P = X P - 1 0 : GOTO 270 I F K V= 9 3 T H E N X P = X P + 1 0 : G O T O 2 7 0 I F K V = 6 4 T H E N M X = X P : M Y = Y P : H CO L O R C V , 0 : H S E T < X P , Y P ) : GOT0 3 7 0 I F KV=1 89 T H E N H C OLOR C V , 0 : H L I N E ( M X , M Y ) - ( X P , Y P) , P S E T : GOT0 3 7 0 I F K V <> 1 3 T H E N 5 9 0 FF = ( F F+1 ) AND 1 I F F F = 0 T H EN P A L E TTE C M P : P A LETTE 0 , 0 GOTO 3 7 0 I F K V = 4 T H E N C V = ( C V + 1 ) A N D 1 5 : H C O L OR C V , 0 : H L I N E C 2 2 4 , 1 83 ) - ( 3 1 7 , 1 9 1 > , P S ET , B F : G O T 0 3 7 0 I F K V <> 1 2 T H E N 6 7 0 T C=HPO I NT ( XY , Y P ) : TX=XP I F XP<1 60 T H E N S V = 1 E L S E SV=-1 TX=T X + S V : N C = H P O I N T C T X , V P ) I F N C <> T C T H E N H C O L O R N C , 0 : H L I N E C 0 , 1 8 2 ) - (3 1 9 , 1 8 2 ) , P S E T : H PA I N T ( X P , Y P ) , C V , N C : H CO L O R CV , 0 : GOT0 3 7 0 I F T X = 2 O R T X =3 1 7 T H E N 3 7 0 GOTO 630 I F KV=1 03 T H E N P F = C P F + 1 ) AND 1 E L S E 7 1 0 H C O L O R 2 , 0 : H L I N E C 0 , 1 84 ) - ( 63 , 1 9 0 ) , P R E S E T , B F : H C O L OR 1 , 0 I F PF=0 T H E N H P R I N T < 0 , 2 3 ) , "PEN-UP" E L S E H P R I N T ( 0 , 23 ) , " P E N - D OW N " : F X = X P : F Y = Y P : G O T O 3 1 0 GOTO 3 7 0 I F KV=92 THEN H C0LOR C V , 0 : H L I NE (0 , 0) - (31 9 , 1 81 ) , P SET, B F : GOTO 3 7 0 I F KV<32 OR KV>90 THEN 370 T X = I N T ( X P / 8 ) : T Y - I N T C Y P / 8 ) : H C O LO R C V , 0 H P R I N T ( T X , T Y ) , A $ : X P= X P + 8 : GOTO 270 P A L E T T E C M P : H C O LO R 1 , 0 : H S C R E E N 0 : A T T R 2 , 0 : C L S END I Exemples de Programmes Liste de magasinage 5 10 20 30 40 50 60 70 80 C L E A R 2000 : D I M S $ ( 1 0 0) REM L I S T E D ' I N V E NTA I R E / M A G A S I N A G E C LS P R I N T @ 7 1 , " V O U L E Z -VOUS - - " PRINT @ 1 3 4 , " ( 1 ) ENTRER DES ARTICLES" P R I N T @ 1 6 6 , " ( 2 ) R E M P LA C E R D E S A R T I C L E S " PRINT @ 198, "(3) AJOUTER A LA LI STE" P R I N T @ 2 3 0 , " ( 4) ANNULER D E S A RT I C LE S " P R I N T @ 262 , " ( 5 ) I M P R I M E R TOUS L E S A R T I C L E S " P R I N T @ 294 , " ( 6) S A U V E G A R D E R D E S ART I C L E S SUR B A N D E " 90 P R I N T éi1 3 2 6 , 1 1 ( 7 ) C H A R G E R L E S A R T I C L E S D E L A B A N D E " 1 00 P R I N T â 395 , " ( 1 -7 ) " ; 110 I N PUT M 1 20 I F M < 0 OU M>7 T H E N 1 0 130 1 40 ON M G O S U B 1 0 0 0 , 2 0 0 � , 1 0 2 0 , 3 0 0 0 , 4 0 0 0 , 5 0 0 0 , 6 0 0 0 150 GOTO 1 0 REM 900 REM 1 000 E N T R E E / A D D I T I O N D ' AR T I C L E S Y=1 1 01 0 C L S : P R I NT@ 8, "ENTREE/ A D D I T ION D ' ART I C LES" 1 020 P R I N T @ 3 4 , " P R E S S E Z < E N T E R> S I V O U S A V E Z F I N I " 1 03 0 P R I N T : P R I NT "ART I C L E " Y ; 1 040 I NPUT S $ ( Y ) 1 04 5 I F S $ ( Y ) = " " T H EN RETURN 1 050 1 0 60 1 070 1 9 00 2000 2005 201 0 2020 2030 2040 2050 2060 2900 3000 3005 301 0 3020 3030 3035 3040 3050 3060 3070 3080 3090 3 1 00 3900 4000 40 1 0 4020 Y=Y+1 G O T O 1 040 REM R EM REMPLA C E MENT D ' AR T I C LES N=0 C L S : P R I N T @ 9 , " R E M P L A C E M E N T D ' AR T I C L E S " P R I NT@ 3 4 , " P R E S SEZ < E N T E R > S I VOUS AVEZ F I N I " P R I N T : I N PUT " A R T I C L E N n A REMPLA C E R " ; N IN N=0 THEN RETURN I N PUT "AR T I C LE D E REMP LACEMEN T " : S $ ( N ) GOTO 2000 REM REM A N N U LATION D ' A RT I C LES N=0 C L S : P R I N T @ 9 , " A N N U LA T I O N D ' A R T I C L E S " P R I NT@ 3 4 , " P R E S S E Z E N T E R s r vous A V E Z F I N I " P R I N T : I N PUT " A R T I C L E A A N N U L E R " ; N IF N>Y-1 THEN 3030 I F N=0 THEN RETURN FOR X=N TO Y-2 S $ ( X ) = S $ (X+1 ) NEXT X S$(X) = " " Y=Y-1 GOTO 3 0 0 0 REM REM IMPRESS ION D ' AR T I C L ES F O R X = 1 TO Y - 1 S T E P 1 5 FOR Z=X TO X + 1 4 273 Exemples de Programmes 4030 4040 4050 4060 4070 4900 5000 501 0 5020 5 03 0 5 040 5050 5060 5 07 0 5080 5 09 0 5 1 00 5900 6000 PRINT Z; S$(Z) N EXT Z I N PUT " P R E S S E Z < E N T E R > POUR CONT I N U E R " ; C N EXT X R ETURN REM REM S A U V E G A R D E D ' A RT I C L ES S U R B A N D E C L S : P R I N T@ 1 3 5 , " S A U V E G A R D E D ' A R T I C L E S S U R B A N D E " P R I N T @ 2 3 4 , " PO S I T I ON N E Z L A B AN D E " P R I N T @ 2 9 4 , " P R E S S E Z P L AY E T R E C O R D " P R I NT@ 3 8 8 , " P R E S S E Z < E N T E R > S I V O U S E T E S P R E T " I N P UT R $ OPEN " 0 " , #-1 . " LI STE" F O R X = 1 TO Y - 1 PRINT #-1 , S $ ( X ) N EXT X C LO S E # - 1 : R E T U R N REM REM C H A R G E M ENT D ' AR T I C L E D E LA B A N D E Lecture rapide 10 20 30 REM 40 F O R X = 1 TO ( 3 6 0 / W P M ) * 4 6 0 : N E X T Y READ A $ : P R I NT@ 2 5 6 , A$ FOR Y=1 TO ( 3 6 0 / W P M ) *460 : N E XT Y REM Y BOU C L E F I X E L I G N E S / M I N NEXT X : END DATA " S C A R LETT O H A R A N ' E T A I T PAS B E L L E M A I S " DATA " L E S HOMMES N E S ' EN R E N D A I ENT PAS COMPTE" 60 70 8 1/l 90 1 00 110 1 20 130 1 40 1 50 1 6 1/l 170 1 80 190 200 21 0 220 230 240 250 260 270 280 290 300 310 320 274 LECTURE RAP I D E C L S : P R I N T @ 3 2 , " C OM B I E N D E M O T S P A R M I N U T E " I N P U T " L I S E Z - VO U S ? " ; W P M D A T A " Q U A N D I L S TOMBA I E N T SOUS S O N C H A R M E , C O M M E " D A T A " C ' E T A I T LE CAS D E S J U M E A U X T A R LETON . SON V I S A G E R E U N I S S A I T " DATA "TROP I N T E N S EM E N T L E S T R A I TS D E L I CATS D E " D A T A " S A M E R E , A R I ST O C R A T E D E S O U C H E " DATA " F R A N C A I S E , E T LES T R A I T S E PA I S D E " D A T A " S O N F LA M B O Y A N T P E R E I R LA N D A I S . " DATA "MA I S C E V I SA G E ETA I T ATTA C H A N T , " DATA " A V E C SON M E NTON P O I N T U " D A T A " E T SA M A C H O I R E CARR E E . " DATA " S E S Y E U X V E R T PALE , " DATA " S A N S U N E T R A C E D E N O I SETTE , " DATA " S ' O R N A I ENT D E C I LS N O I R S " DATA " L E G E R EM E N T I N C L I N E S ; " DATA DATA DATA DATA DATA DATA DATA " A U - D E S S U S , D ' EPA I S SOU R C I L S N O I R S " " S ' O R I E N TA I EN T V E R S L E HAUT , " "TAI L LANT U N E L I G N E O B L I QU E S A I S I SSANTE" "DANS SA PEAU D ' UN B L A N C L A I T E U X , " " U N E P EAU TANT P R I S E E D E S FEMMES D U S U D " "ET PROT E G E E P A R DES BONNETS , " " D E S V O I L E S ET D E S M I T A I N E S " DATA "C ONTRE LE SOLE I L DE GEORGI E . " Exemples de Programmes Test de mémoire Ce programme utilise un tableau pour contrôler votre mémoire et celle de votre ordinateur: 5 10 15 OIN AC7) P R I N T "MEMOR I SEZ C E S NOMBRES" PRINT "EN D I X SECONDES" FOR X=1 TO 7 A ( X ) = RN D ( 1 0 0 ) PRINT ACX) NEXT X 20 30 40 50 F O R X = 1 TO 4 6 0 * 1 0 : N E X T X 60 CLS 70 80 FOR X=1 TO 7 PRINT "QUEL ETAIT LE NOMBRE" X 90 1 00 I NPUT R I F A ( X ) = R T H E N P R I N T " C O R R E C T " E LS E P R I N T " F AUX 110 C ' ETAIT" A ( X ) NEXT X 1 20 Tri C L S : C L E A R 1 0 0 0 : D I M T $ ( 1 0 0 ) , A$ ( 1 0 0 ) , S $ ( 1 0 0 ) , M S ( 1 00) , Z C 1 00) 2 P R I N T " P O S I T I O N N E Z LA B A N D E - - P R E S S E Z P L A Y ET R E C O R D " I N PUT "PRESSEZ <ENTER> S I VOUS ETES P R E T " ; R$ 4 REM 8 REM 9 SORT I E VERS B A N D E O P E N "0" , #-1 " L I V R E S " 10 15 C L S : P R I N T " E N T R E Z V O S L I V R E S -- T A P E Z < X X > S I V O U S A V E Z FIN1" 20 I N PUT " T I T R E " ; T$ 25 26 28 30 40 50 I F T $ = "XX" THEN 5 0 I N P U T " A UT E U R " ; A $ I N P U T " S U J ET " ; S $ P R I N T #-1 , T $ , A$ , S $ GOTO 1 5 C LO S E #-1 C L S : P R I N T " R E B O B I N E Z L E M A G N E T O C A S S E T T E E T P R E S S E Z P LA Y " I N P UT " P R E S S E Z < E N T E R> S I V O U S E T E S P R E T " ; R $ REM REM E N T R E E D E L A BA N D E B :;: 1 O P E N " I " , #-1 , " L I VR E S" I F EO F ( -1 ) T H E N 1 2 0 I N PUT #-1 , T $ ( B ) , A $ ( B ) , S $ ( B ) B = B+ 1 GOTO 8 5 C LO S E # - 1 1 20 PRINT 490 500 I N P U T " T R I P A R ( 1 ) T I T R E ( 2 ) A U T E U R OU ( 3 ) S U J E T " ; A 510 I F A>30 O R A<1 T H E N 5 0 0 O N A GOSUB 1 00 0 , 2000 , 3000 520 60 70 74 76 78 80 85 90 95 110 275 Exemples de Programmes 530 540 550 560 570 580 590 600 800 900 1 000 1 010 1 020 1 03 0 2000 201 0 2020 2 03 0 3 000 301 0 3020 3 03 0 3900 4000 4005 4010 4020 G O S U B 4000 P R I NT FOR X=1 TO B-1 P R I N T " T I T R E : " T$ ( Z ( X ) ) P R I N T " A U T E U R : " A$ ( Z ( X ) ) P R I NT " S U J E T : " S $ C Z C X ) ) NEXT X P R I NT : GOTO 5 0 0 R EM REM ETA B L I S S EMENT T A B LEAU M $ FOR X=1 TO B-1 M$(X) = T$(X) N E XT X R E TU R N FOR X = 1 TO B-1 M$(X) = A$(X) NEXT X RETURN FOR X = 1 TO B-1 M$(X) = S$(X) NEXT X R E T UR N REM R E M SO U S - P R O G R A M M E D E T R I T = 1 X "' 0 X "' X + 1 I F X B - 1 T H E N R ETURN 4030 I F M $ ( X ) = " Z Z " T H E N 4020 4040 F O R Y "' 1 T O B - 1 4050 I F M $ ( Y ) < M $ ( X ) T H E N X "' Y 4060 4 0 6 5 Z ( T ) ;;; X N E XT Y 4080 M $ C X ) "' " Z Z " 4090 GO TO 4 0 1 0 41 00 276 FEUI LLES DE PROGRAMMATION Feuille de Travail D'écran de Texte à Basse Définition (32 x 1 6) 1 0 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 1 1 1 2 3 4 5 8 0 2 4 8 0 2 3 4 8 6 6-,-1 --r 1r 0r 1 6.--9 .-.-7-.--.-9.-,-o�'j-r --r - 5-,-.-,- 7.--� ,5-,-,-.--9.-.-r-,-,7-.-.-r --. 3.- 32 64 96 128 1 60 1 2 9 224 2 6 5 288 320 352 384 41 6 448 480 277 Feuilles de Programmation Feuille de Travail D'écran de Texte à Basse Définition (64 x 32) 1 1 1 1 1 3 4 4 4 4 4 5 5 5 5 5 6 6 2 2 2 2 3 3 3 0 4 ...., 6 � 4...-r2 4 6 8 0 "T""T" 2.... O 2 6...-r2 4 6� 2 .... 2 0 8 T""rT""rB� 0� " 6,... 8 "'T" 0 2"T""T" > y i-T-i ...-r� "'T""'T'" "T" 4..-.B " --...-. .. -r � "T""T" " 8r-r-'1 .,.- 0� � --..--r � --..-r � O """T""T"" -r---. � 2 4 6 t-+1H-irl-t-t-t-++++t+-t-+-lrl-t-H-+++-t-+t-t-+-H-irl-t-t-t-++t-+-H-IH-H t-+-t-+-lrl-t-t-t-++-+++++-+-t-+-1-H-+-t-+++t-+-+-t-+-ir+-1-++t-+-t-+-IH-H l-+-t-+-tl-H-+-+-++-++++-+-+-+-+-1-+-1-H-+-1-+-++-+-++-+-+-t-+-ll-H-+-1-++-+++-+-+-+-+-+-lf-++-l 8 1-+-t-+-tl-H-+-1-++-++++-+-+-+-+-1-+-1-H-+-+-+-++-+-++-1-+-t-+-ll-H-+-1-++-+++-+-+-+-+-+-lf-++-l 1 0 12 t-+-H-rl-trl-t-t-t-t+++++-t-+-+-+-1-H-++-H++-+-+-t-+-if-H-++-+-H-H t-+-t-+-rl-t-++-++++-t-+-+-+-1-H-+++-++-+-t-+-1r+-1-+++-+-H-H 1 4 1-+-t-+16 18 24 1-H-++-++++-t-+-+-+-1-H-+++-+++-+-+-t-+-f-H-+++-+-H-H H-t-+--1-H-H-t-t-+++++-+-t-+-i-++-+-t-+++-+-+-+-t-+-1r+-1-t-t-+++-t-t-t-H-H 1-+-1-+-1-H-+-+-+-+-++-++++-+-+-1-H-+-+-+-1-+-+-++-+-+-++-+-+-t-+-tl-H-++-1 l-+-l-+-1-H-+-l-++-+-+-++++-++-+-+-+-+-1-H-+-+-+-t-+-+-+-+-++-+-+-t-Mt-+-t-+-+-+-+-++-1-t--t--t-++-t-HH 26 1-t-H-1-H-H-++-++++t-+-1-HH-i-H-t-t++t-t-H-t-+-ll-++-H-+++-+-H Jo .. ...,H-!1-H-++-++++-+-+-++-t-+-tr-+-t-+-+-+-+-++-+-+-+-+-+-+-t-+-lt-+-t+-t--t-+-+-++-1-H� 278 Feuilles de Programmation Feuille de Travail D'écran de Texte à Haute Définition (40 x 24) 0 1 2 3 4 5 6 7 3 9 Il 11 1 2 1 1< 1 ' Il 1 ; 11 1\ 2( 2 1 2 ; 2 ,, 2' 21 2 21 2� 3( 31 32 3 3, 3! 31 3; 3! 3! 10 1 12 lJ 14 15 16 17 18 19 20 1 22 23 279 Feuilles de Programmation Feuille de Travail D'écran de Texte à Haute Définition (80 x 24) " " .. .. " " :: 280 Feuilles de Programmation Feuille de Travail D'écran de Graphique à Basse Définition (128 x 96) 0 0 4 8 1 2 1 6 2 0 2 4 2 8 3 2 3 6 4 0 4 8 5 2 5 6 6 0 6 4 6 8 7 2 7 6 8 0 8 4 8 8 9 2 9 6 1 0 0 1 0 4 1 0 8 1 1 2 1 1 6 1 2 0 1 1 2 2 4 7 4 8 12 16 20 24 26 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 95 281 �I 188 184 180 176 172 168 164 160 156 152 148 144 140 136 132 128 124 120 115 112 108 104 100 96 92 88 84 80 76 72 68 64 60 56 52 48 44 40 36 32 28 24 20 16 12 8 4 1 1 1 4 6 8 0 2 4 - 0 ' 2 o �- - - - -- 3 3 3 4 4 4 6 8 0 2 - - --- 2 2 2 2 3 3 2 4 6 8 0 2 -- -- 1 1 2 6 8 0 5 5 5 6 8 0 -- 5 5 5 6 7 7 2 4 6 8 0 2 Il -� -- 4 4 4 5 5 5 4 6 8 0 2 4 - � ---- •• - - 8 6 8 9 9 9 9 4 6 8 0 2 4 6 m - 7 7 7 8 8 4 6 8 0 2 -' -- Il &! • - 1 1 1 1 1 1 1 9 0 0 0 0 0 1 1 8 0 2 4 6 8 0 2 - - - 1 1 1 2 2 2 0 2 4 1 2 6 -- - - - � �� Biil -- 1 1 1 1 1 1 4 6 8 - ...... .-...:> (X) >< ....... CD "-> :::::s - s· ;::;: - :;· c <D· � (1) t.n m• m m (D c: ...s· m ""C � G') (") m :::::s c.. (1) (D': c e!. � --1 - (D c.. (i) c: (D .,, � 0 ::J � -· Q) � 3 3 <.Q fü- (/) c: :::::: <D � Feuilles de Programmation Feuille de Travail D'écran de Graphiques à Basse Définition (256 x 192) "'lmmi im�ll!l!IRllB�l!ll "' "' "' ... ... 83::81l:e!l!EI ''" '" �-· zç1 m3m ... .. . '" .. lto "' •I• '" '" '" "' "' "'' EHHl!HBHH!lliH! " " ., lllm:HiEIHI .. " " lllmllm!l81 u " l!HHllH!lllffi •9 Cl 91 = = = " •• " ,, 28S Feuilles de Programmation Feuille de Travail D'écran de Graphiques à Haue Définition (320 x 192) 284 CODES DES CARACTÈRES BASIC Le BASIC emploie un code pour représenter chaque caractère que l'on peut taper au clavier eUou afficher sur l'écran de texte. Cette section donne les codes utilisés par le BASIC. Codes BASIC 0-1 27/ Écrans de texte à basse et haute définition Pour les écrans de texte à haute et basse définition, le BASIC emploie les codes 0 à 1 27 pour représenter les caractères alphanumériques courants. Ces codes appliquent la norme ASCII utilisée avec la plupart des petits ordinateurs. Vous pouvez créer ces codes en tapant le caractère au clavier ou en entrant la fonction CHR$. Par exemple, vous pouvez produire le code de la lettre A en tapant cette lettre au clavier ou P R I N T c H R $ < 6 5 ) ŒNIEID . Dans chaque cas, le BASIC affiche la lett'e A sur l'écran. Pour taper une minuscule, vous devez d'abord passer en mode de majuscules/minuscules du BASIC en pressant Cfil!IIT)@:i . (Pressez (]}ITf1) et, tout en mai ntenant cette touche, pressez @:i.) Tapez ensuite le caractère au clavier. Tapez par exemple A pour produire le code de la lettre a. Le BASIC affiche différemment une minuscule suivant l'écran de texte utilisé. Avec l'écran à basse définition, le BASIC affiche le caractère en majuscule, en couleurs inverses. (Par exemple, JAJ.) Avec l'écran à haute définition, le BASIC affiche la minuscule véritable. (Par exemple, a.) Table 7.1 I Codes BASIC 0 à 1 27/ Écrans de texte à basse et haute définition Caractère Code Code (JffifAfC 8 8 m cruAB) ®r!:fID Space bar 03 8 9 10 12 13 32 33 34 35 36 37 38 39 40 41 '12 43 44 45 46 47 03 08 09 OA oc 1 # $ % & + OO 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 20 2E 2F 285 Codes des Caractères BASIC Caractère 0 1 2 3 4 5 6 7 8 9 < > ? @ A B c 0 E F G H J K L M N 0 p Q R s T u V w X y z 286 Decimal Code 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 Hexadecimal Code 30 31 32 33 34 35 36 37 38 39 3A 38 3C 30 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 48 4C 40 4E 4F 50 51 52 53 54 55 56 57 58 59 SA Codes de Caractères BASIC Caractère Decimal Code Hexadecimal Code [ (CSHIITlCD) \ (Cfilill'.I)@mD) l (Cfil!JITJG) 91 92 93 94 95 96 97 98 99 1 00 101 1 02 1 03 1 04 1 05 1 06 1 07 1 08 1 09 110 111 112 113 114 115 116 117 S8 se so SE SF 60 61 62 63 64 65 66 67 68 69 6A 68 6C 60 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 78 7C 70 7E 7F t - (�ŒJ) 1\ a b c d e f g h j k m n 0 p q r s t u V w X y z rv 118 1 19 1 20 121 1 22 1 23 1 24 1 25 1 26 1 27 287 Codes des Caractères BASIC Codes BASIC 1 28 à 255/ Écran de texte à basse définition Pour l'écran de texte à basse définition, l e BASIC emploie les codes 1 28 à 255 pour représenter ses propres caractères graphiques. Pour produire un caractère graphique, utilisez la fonction CHR$(code). Vous pouvez calculer le code à l'aide de la formule suivante: - code= 1 28 + 1 6 *(c-1) + forme La forme correspond au numéro de la forme de graphique (indiqué dans la table ci-dessous) que vous voulez afficher. c correspond à la couleur que vous voulez utiliser. Par exemple, supposons que vous désirez affichez une grande case bleue. La table ci-dessous montre que la forme d'une grande case correspond à 1 5. Si l'on suppose que la palette de l'ordinateur est fixée aux couleurs standard, vous pouvez spécifier la couleur bleue sur un écran de texte à basse définition avec 3. Pour afficher une grande case bleue, tapez: P R I N T C H R $ ( 1 28+1 6*(3-1 ) + 1 5 ) Table 7.2 I Codes BASIC 128 à 255/ Écran de texte à basse définition Forme Caractère 0 8 9 288 2 10 3 11 4 12 5 13 6 14 7 15 Codes des Caractères BASIC Codes 1 28 à 1 59/ Haute définition Pour son écran de texte à haute définition, le BASIC emploie les codes 1 2 8 à 1 59 pour représenter ses propres caractères spéciaux et étrangers. =>our produire un caractère spécial ou étranger, utilisez la fonction CH R$(code). Par exemple, vous pouvez taper P R I N T c H R $ < 1 3 0 > ŒlITIBl pour afficher un "e" avec un accent sur l 'écran de texte à haute définition. Table 7.3 ! Codes BASIC 1 28 à 1 59/ Écran de texte à haute définition Caractère Code Caractère Code c 1 28 6 1 44 1.1 1 29 1 1 45 é 1 30 [ 1 46 à 131 ô 1 47 a 1 32 i) 1 48 à 1 33 0 149 .. à 1 34 u 1 50 ç 1 35 ù 151 é 1 36 © 1 52 e 1 37 lj 1 53 è 1 38 0 154 l 1 39 :§ 1 55 l 1 40 .i 1 56 .6 141 ± 157 A 1 42 ,\ 143 ,, H 1 58 f 1 59 289 CODES DES CO ULEURS L'ordi nateur couleur possède 64 couleurs. À l ' aide de la table ci-dessous, notez les noms de chacune des couleurs qui apparaissent sur l'écran. Tapez et exécutez l'exemple de programme 23. Huit couleurs apparaissent à la fois sur l'écran. Les couleurs O à 7 apparaissent d'abord, suivies des couleurs 8 à 15, etc. pour se terminer par les couleurs 56 à 63. À chaque écran de couleurs, notez le nom de chacune sur le tableau ci-dessous. 1 6 ��- 32 17 33 49 1 s <!l t:eaT cfo.:,,.._,. . 34 50 19 35 51 20 36 HJ"v.C/Q 21 37 53 22 38 54 Q/lk k ' � 23 39 55 � "J,.� 24 C<.tf!::::c, � 40 J OO 01 02 03 04 '71otr_ �.� � /!;e "t� � (... - �� 05 1! \ 06 07 08 09 a u LÂ. � 25 fUFt'Cé- 1�A. cfb,.,_ /IJ!o!e.L/}r.(}11°f" 48 52 56 41 57 42 58 43 59 60 10 26 11 27 12 28 44 13 29 45ôl].�r 61 14 30 46 62 15 31 47 63 c""j""" cA<k, c..2(l(.A _ _ _ _ _ 9='u.2 u J'<,,,/V ( if�e- 291 CASES DE PALETTE L'ordinateur couleur possède une palette de 1 6 cases. Cette palette peut contenir 1 6 couleurs à la fois. Vous pouvez choisir 1 6 codes parmi les 64 ind:qués dans la section précédente pour les stocker dans la palette. Quand vous entrez une commande PALETTE CMP eu PALETTE RGB ou que vous commencez avec le BASIC (dans ce cas, le BASIC entre automatiquement la commande PALETTE CMP), celui-ci crée une palette standard en y stockant 1 6codes standard. La table ci-dessous donne la palette standard du BASIC. Avec cette palette, vous pouvez exécuter des programmes écrits dans des versions précédentes du BASIC. Vos pouvez changer la palette standard à l'aide de la commande PALETTE. Par exemple, PALETTE 2, 30 stocke le code 30 dans la case 2. 7.5 / Palette standard du BASIC (PALETTE CMP ou PALETTE RGB) Table Case Couleur Code CMP 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Vert Jaune Bleu Rouge Chamois Turquoise Lilas Orange Noir Vert Noir Chamois Noir Vert 18 36 1; 7 63 31 9 38 0 18 0 63 0 18 0 38 Noir Orange Code RGB 18 54 9 36 63 27 45 38 0 18 0 63 0 18 0 38 293 CO ULEURS DE BASE Chaque écran emploie des cases différentes de palette pour produire: • Les couleurs de premier plan et de fond. • Les couleurs spécifiées, comme la "3" dans CLS3. Par exemple, l'écran de texte à basse définition emploie la case 2 pour produire la couleur 3. L'écran de texte à haute définition emploie la case 2, 3 ou 1 1 pour produire la couleur 3. Cette section donne les cases de palette que chaque écran emploie pour donner les couleurs de premier plan et de fond et les couleurs que vous spécifiez. Écran de texte à basse définition Couleurs d e premier plan et d e fond: !_es cases qui donnent les couleurs d e premier plan et de fond dépendent du caractère que l'écran affiche et de son code. (Voir "Codes des caractères" pour redéterminer le code de chaque caractère.) Par exemple, si l'écran affiche un caractère alphanumérique courant (codes O à 1 27), la case 1 2 donne la couleur de premier plan et la case 1 3 la couleur de fond. Si l'écran affiche le caractère graphique 1 29, la case O donne la couleur de premier plan et la case 8 la couleur de fond. Couleurs que vo u s spécifiez: La case qui donne la couleur spécifiée est inférieure d'une unité à la spécification. Par exemple, la case 2 donne la couleur 3. Table 7.6 / Utilisation de la palette en BASIC/ Ècran de texte à basse définition Couleur Couleur Couleur Couleur Couleur Couleur Couleur Couleur Couleur 0 Case Case Case Case Case Case Case Case Case 2 3 4 5 6 7 PREMIER PLAN: Codes O à 1 27 Codes 1 28 à 1 43 Codes 1 44 à 1 59 Codes 1 60 à 1 75 Codes 1 76 à 1 9 1 Codes 1 92 à 207 Codes 208 à 223 Codes 224 à 239 Codes 240 à 255 Case Case Case Case Case Case Case Case Case 12 0 1 2 3 4 5 6 7 COULEUR DE FOND: Codes 0 à 127 Codes 1 28 à 255 Case 1 3 Case 8 1 2 3 4 5 6 7 8 8 o 1 295 Couleurs de Base Écran de texte à haute définition Couleurs d e premier plan et d e fond: L a case 8 donne la couleur de premier plan et la case 0 la couleur de fond. Les deux cases sont implicites: vous pouvez les changer à l'aide des commandes ATTR ou CLS. Couleurs que vous spécifiez: La case qui donne la couleur est fonction de sa- spécification avec CLS, ATTR pour le premier plan ou ATTR pour le fond. Par exemple, la case qui donne la couleur 3 peut êt'e: • La case 2 si elle est spécifiée avec CLS. • La case 1 1 si elle est spécifiée avec ATTR pour le premier plan. • La case 3 si elle est spécifiée avec ATTR pour le fond. Table 7.7 / Utilisation de la palette du BASIC/ Écran de texte à haute définition ATTR, PREMIER PLAN CLS Couleur Couleur Couleur Couleur Couleur Couleur Couleur Couleur Couleur 0 1 2 3 4 5 6 7 8 Case Case Case Case Case Case Case Case PREMIER PLAN: Case 8 FOND: Case 0 296 o 1 2 3 4 5 6 7 Case Case Case Case Case Case Case Case 8 9 10 11 12 13 14 15 ATTR, FOND Case Case Case Case Case Case Case Case O 1 2 3 4 5 6 7 Couleurs de Base Écran de graphiques à basse définition Couleurs de premier plan et de fond: Les cases qui donnent les couleurs de premier plan et de fond dépendent de la commande PMODE et du jeu de couleurs utilisés. Par exemple, si vous utilisez une commande PMODE à deux couleurs avec le jeu de couleurs O. la case 9 donne la couleur de premier plan et la case 8 la couleur de fond. Quelle que soit la commande PMODE et le jeu de couleurs utilisés, toutes les cases qui donnent les couleurs de premier plan et de fond sont implicites; vous pouvez les changer avec la commande COLOR. Couleurs que vous spécifiez: La case qui donne la couleur que vous spécifiez dépend de la commande PMODE et du jeu de couleurs utilisés. Par exemple, la case qui donne la couleur 3 peut être: • Case 9 avec commande PMODE de couleur et jeu de couleurs O • Case 1 1 avec commande PMODE • Case 6 avec commande PMODE • Case 2 à 2 à 4 couleurs et jeu de couleurs 1 couleurs et jeu de couleurs O avec commande PMODE à 4 couleurs et jeu de couleurs 1 Table 7.8 / Spécifications des couleurs/ Écran de graphiques à basse définition PMODE JEU Couleur 1 Couleur 2 Couleur 3 Couleur 4 Couleur 5 Couleur 6 Couleur 7 Couleur 8 PREMIER FOND: PLAN: 0 À 2 COULEURS JEU 1 Case 9 Case 8 Case 9 Case 8 Case 9 Case 8 Case 9 Case 8 Case Case Case Case Case Case Case Case Case 9 Case 8 Case 1 1 Case 1 0 11 10 11 10 11 10 11 10 PMODE JEU Case Case Case Case Case Case Case Case 0 À 4 COULEURS JEU 1 6 7 Case O Case 1 Case 2 Case 3 Case O Case 1 Case 2 Case 3 Case 7 Case 4 Case 3 Case 0 4 5 6 7 4 5 297 Couleurs de Base Écran de graphiques à haute définition Couleurs de premier plan et de fond: La case 1 donre la couleur de premier plan et la case 0 la couleur de fond. Les deux cases sont implicites: vous pouvez les changer à l'aide de la commande HCOLOR. Couleurs que vous spécifiez: La case qui donne la couleur que vous spécifièz dépend du réglage de HSCR EEN utilisé. Par exemple, la case qui donne la couleur 3 peut être: • Case 1 avec une commande HSCREEN à 2 couleurs. • Case 3 avec une commande HSCREEN à 4 ou 1 6 couleurs. Table 7.9 I Emploi de la palette en BASIC/ Écran de graphiques à haute définition Couleur Couleur Couleur Couleur Couleur Couleur Couleur Couleur Couleur Couleur Couleur Couleur Couleur Couleur Couleur 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 PREMIER PLAN: Case Î Case 0 FOND: 298 HSCREEN, HSCREEN, HSCREEN, 2 COULEURS 4 COULEURS 16 COULEURS Case Case Case Case 1 0 1 O Case 1 Case 2 Case 3 Case 0 Case Case Case Case Case Case Case Case Case Case Case Case Case Case 2 3 4 5 6 7 8 9 10 îî 12 13 14 15 TONALITÉS MUSICALES DE BASE Numéro Note do 2 do#/ré- 563 3 ré 4 mi/ré# 5 mi/fa6 fa/mi# 7 fa#/sol 8 sol 9 sol#/la 10 la 11 la#/si 12 si 299 DES FOR M U LES POUR LES MATH ÉMATICIENS Td.al Oegrees of a Triangle Sdve for Area Given Side a, Angles B ar.d C Given Sides a, b and c Law of Sines TTL = A + B+ C 180° Area = M + AB + AC = AA 180 - (AB + AC) [then convert AA, AB and AC to radians] A = 180 - (B + C) = a2sin B · sin e 2 sin A AREA = SA f 2'SIN(AB )'SIN(AC)/(2'SIN(AA)) s = Y:!(a + b + c) S = (SA + SB + SC)/2 Area = v s(s - a)(s - b)(s - c) AREA = SOR(S'(S - SA) '(S - SB)'(S - SC)) sin A a SA = (SIN(AA)/SIN(AB)) 'SB sin A = sn i B·b b = sin B ora Law of Consines BASIC Statement Standard Formulas Quantity a2 = b2 + c2 - 2bc · cos A or SA = SOR(SB l 2 - SC f -2'SB'SC 'COS{AA)) a = {b2+ cL 2bc cos A · Law of Tangents a-c a+c = tan Y:!(A - C) tan 0(A - C) = Given Three Sides, Solve for an Angle Ouadralic Equations REM Y = TAN((M - AC)/2) tan Y:!(A + C) or a-c a+c · = îSA - SC)/(SA + SC) 'TAN((AA + AC)/2) tan Y:!(A ± C) s = Y:!(a + + c S = (SA + SB + SC)/2 r = f (s - a)(s - b)(s - c) R = SOR((S - SA) '(S - SB)'(S - SC)/S) r A = 2 arctan ( - ) s-a M axz + bx + c = 0 X= = 2 'A TN(Rl(S - SA)) REMA 'X f 2 + B 'Y + C = 0 Z = B t 2 - 4 'A 'C - b ± { b2 - 4ac Algebraic Y XI ( - B + SOR(Z))/(2 'A) 'IF Z> X 2 ( - B - SOR(Z})l(2 'A) 'IF Z> = = 2a (a•)r = a•r l = (A t X) t Y or Z = A f {X"1 1 a• = a· """ = y · log x Z = A f ( - X) Z = LOG(X t Y) log xy = log x + logy Z = X log y = log x - log y Z= AB SA AC LOG(X'Y) or Z = or Z or Z = 0 0 1/(A f X) = = = Y'LOG(X) LOO(X) + LOO(Y) LOG(XIY} or Z = LOG{X) - LOG(Y) Side a = SA (side opposite Ang.'e A) Side b = SB (side adjacent to Ang!e l) Side c = SC (hypo!enuse) AngieA = M Angie 8 = AB Angie C = AC 301 FONCTIONS DÉRIVÉES Function Expressed in Terms of Extended Color Function BASIC Functions. x is in radians. SECANT SEC(X) = 1 /COX(X) COSECANT CSC(X) = 1/SIN(X) COTANGENT COT(X) = 1/TAN(X) INVERSE SINE ARCSIN(X) INVERSE COSINE ARCCOS(X} = INVERSE COSECANT ARCCSC(X) = INVERSE COTANGENT ARCCOT(X) = HYPERBOLIC SINE SINH(x) HYPERBOLIC COSINE COSl-(X) = (EXP(X) + EXP( -X})/2 HYPERBOLIC TANGENT TANH(X) = - EXP( - X}/(EXP(X) + EXP( - X})'2 + 1 HYPERBOLIC SFCANT SECH(X) - 2/(EXP(X} + EXP( - X)) HYPERBOLIC COSECANT CSCH(X) = 2/(EXP(X) - EXP(- X}) HYPERBOLIC COTANGENT COTH(X) = EXP( - X)/(EXP(X) - EXP( - X))' 2 + 1 INVERSE HYPERBOLIC SINE ARCSINH(X) INVERSE HYPERBOLIC COSINE ARCCOSH(X) = LOG(X +SOR(X'X- 1)) INVERSE HYPERBOLIC TANGENT ARCTANH(X) = LOG((1 + X)/(1 - X))/2 INVERSE HYPERBOLIC SECANT ARCSECH(X) = LOG((SQR( - X ' X + 1 ) + 1 )/X) lf\VERSE HYPERBOLIC COSECANT ARCŒCH(X) = LOG((SGN(X)'SQR(X'X + 1)+ 1)/X) INVERSE HYPERBOLIC COTANGENT ARCCOTH(X) = LOG((X + 1)/X + 1))/2 = = ATN(X/SOR( -X 'X+ 1 )) -ATN(XJSOR( -X'X+ 1))+ 1.5708 ATN(11SOR(X'X- 1)) + (SGN(X) - 1)'1 .5708 -ATN(X} + 1 .5708 (EXP(X)- EXP( - X)V2 = LOG(X +SOR(X'X+ l)) 303 INTERVALLES D ' ENTRÉE VALI D ES Sinus inverse Cosinus inverse Sécante inverse Cosécante inverse Cosinus hyperbolique inverse Tangente hyperbolique inverse Sécante hyperbolique inverse Cosécante hyperbolique inverse Cotangente hyperbolique inverse -1 -1 X X X X 0 X x·x < X < X < -1 < -1 > 1 * X < X <> 0 > < 1 < 1 01,J X > ou X > < 1 < 1 Certaines valeurs spéciales sont sans définition mathématique, mais nos fonctions peuvent donner des valeurs invalides: TAN et SEC de 90 et 270 degrés COT et SCS de 0 et 1 80 degrés Par exemple, TAN(1 .5708) donne une valeur, mais TAN(90 • .01 745329) donne une erreur de DIVISION PAR ZÉRO. go· .01 745329 = 1 .5708 Les autres valeurs suivantes ne sont pas di sp on i bl es avec ARCSIN(- 1 ) ARCSIN(1 ) ARCCOS(-1) ARCCOS( 1 ) ARCSEC(-1 ) = = ces fo nctions: -Pl/2 Pl/2 Pl 0 -Pl = = = ARCSEC(1) - 0 ARCCSC(-1) ARCCSC(1) = = -Pl/2 Pl/2 Notez que les indications ci-dessus peuvent ne pas être complètes. 305 TOPOGRAPH I E DE M ÉMOIRE Adresse décimale Contenu Adresse hexadécimale 0-39321 5 Non utilisé par le BASIC 0-5FFFF 39321 6-425983 Mémoire d'écran de graphiques Hires 60000-67FFF 425984-4341 75 Mémoire tampon GET/PUT Hires 68000-69FFF 4341 76-442367 Zone de pile secondaire 6A000-6BFFF 442368-450559 Mémoire d 'écran de texte H ires 6C000-6DFFF 450560-458751 Non utilisé par le BASIC 6E000-6FFFF 458752-459775 Utilisation par le système 70000-703FF 459776-460287 Mémoire d'écran de texte standard 70400-705FF Mémoire d'écran de graphiques standard 460288-461 823 Page 1 70600-70BFF 461 824-463359 Page 2 70COO-7 1 1 FF 463360-463359 Page 3 71 200-717FF 464896-466431 Page 4 71 800-71 DFF 466432-467967 Page 5 71 E00-723FF 467968-469503 Page 6 72400-729FF 469504-471 039 Page 7 72AOO-72FFF 471 040-472575 Page 8 73000-735FF 472576-491519 Stockage de programme et de variables 73600-77FFF 491 520-4997 1 1 BASIC couleur étendu 78000-79FFF 49971 2-507903 BASIC couleur 7A000-7BFFF 507904-5 1 6095 ROM sur ca1ouche 7C000-7DFFF 5 1 6096-52377 5 BASIC super étendu 7E000-7FDFF 523776-524031 Vecteurs secondaires 7FEOO-7FFFF 524032-524287 E ntrée/so rtie 7FF00-7FFFF 307 VARIABLES D ' I MPRI MANTE D ' ORDINATEUR COULEUR Adresse Adresse Hex. Valeur hexadécimale décimale initiale déc. 149 1 50 57 OO 0 87 1 51 1 52 OO 01 0 1 10 16 1 55 84 1 32 1 56 OO OO Baud LPTBTD MSB 0095 LSB 0096 Retard de ligne LPTLND MSB 0097 LSB 0098 Largeur de zone de virgule LPTCFW 0099 1 53 Largeur d'imprimante LPTWID 0098 LPTPOS 009C Le logiciel de votre ordinateur applique les conditions initiales suivantes: • Un régime 600 bauds • Une largeur d'imprimante de 132 colonnes • L'imprimante crée une sortie occupée si elle n'est pas prête • L'.imprimante exécute automatiquement un retour du chariot 132 colonnes. à L'interface RS-232 s'utilise avec un connecteur OIN à 4 broches. Le manue d'introduction donne un diagramme du brochage de ce connecteur. La broche 4 correspond à la sortie de l'ordinateur vers l'imprimante. La broche 3 est à la masse. 1 ne s'utilise pas avec une imprimante. La broche 2 doit être reliée à la sortie occupée (ou ligne d'état) de l'imprimante. Si l'imprimante ne donne pas d'indication d'état, reliez alors cette ligne à une tension positive supérieure à 3 volts. Cette tension indique en permanence à l'ordinateur que l ' imprimante est prête. De plus, vous devez fixer la variable de retard de ligne à la valeur correcte. La broche 309 Variables D 'imprimante L a liste suivante de valeurs d e remplacement pour les variables d'imprimante est donnée pour faciliter l'interface des imprimantes non standard. Régime de bauds 1 20 bauds 300 bauds 600 bauds 1 200 bauds 2400 bauds Retard de ligne (secondes) .288 .576 1.15 Largeur de ligne (caractères/ligne) 16 32 64 255 Valeur décimale 458 1 80 87 41 18 Valeur décimale 64 1 28 65535 (msb,lsb) (1 ,202) (0,1 80) (0,87) (0,41) (0, 1 8) Valeur hexadécimale 0 1 CA OOBE Cl057 0029 001 2 ) Valeur hexadécimale (0, 64) (0,1 28) (255,255) 4000 8000 FFFF ( ' ' '' ' Valeur décimale Valeur hexadécimale 16 32 64 255 10 20 40 FF La dernière variable de zone de virgule doit être fixée à la valeur de largeur (largeur de la zone de virgule). (La largeur de zone de vi rg ul e reste normalement à 16.) En BASIC couleur, le format de sortie vers l'imprimante est de 1 bit de départ, 7 bits de données (bit le moins significatif (LSB) en p'emier) et de 2bits d'arrêt, sans parité. 310 SOUS-PROGRAMMES E N MÉMOIRE MORTE (ROM) La mémoire morte (ROM) du BASIC couleur contient de nombreux sous-programmes que peut appeler un programme e n langage machine. Chaque sous-programme est décrit dans le format suivant: NAME Adresse d'entrée Opération exécutée Conditions d'entrée Conditions de sortie - Remarque: Le sous-programme NAME n'est donné qu'à titre de référence; il n'est pas accepté par l 'ordinateur couleur. L'adresse d'entrée est donnée sous forme hexadécimale; vous devez utiliser un branchement indirect à cette adresse. Les conditions d'entrée et de sortie sont données pour les programmes en langage machine. = [A006] Lit u n bloc à partir d'une cassette. BLKIN Conditions d'entrée La cassette doit être en marche et en synchro de bits (voir CSRDON). CBUFAO contient l'adresse de tampon. Conditions de sortie BLKTYP, située à 7C, contient le type de bloc: O en-tête de fichier 1 donnée FF fin de fichier BLKLEN, situé à 70, contient le nombre d' octets de données dans le bloc (0·255). z· 1 ,A CSRERR 0 (s'il n'y a pas d'erreur). O,A CSRERR 1 (si une erreur de total de contrôle se pro.duit). Z O,A CSRERR Z 2 (si une erreur de mémoire se produit). = = = = = = = = = = = Remarque: CSRERR 81 Excepté si une erreu' de mémoire se produit, X CBUFAD + BLKEN. En cas d'erreur de mémoire, X pointe au-delà de l' adresse erronée. Les interruptions sont filtrées. U et Y sont protégés et tous les autres sont modifiés. = = Z est un indicateur dans le registre de code de condition (CC). = [AOOB] Écrit un bloc sur une cassette. BLKOUT Conditions d'entrée La bande doit avancer à vitesse normale et u n en-tête de 55 en hexadécimal doit avoir été écrit si ce bloc est le premier après l a mise en marche du moteur. CBUFAC, situé à 7E, contient l'adresse de tampon. BLKTYP, situé à 7C, contient le type de bloc. BLKLEN, situé à 70, contient le nombre d'octets de données. Conditions de sortie Les interruptions sont filtrées. X = CBUFAO + BLKLEN. Tous les registres sont mod1f1és. 31 1 Sous-programmes de Mémoire morte (ROM) = [AOOC] Met la cassette en marche et écrit un en-tête. WRITLDR Conditions d'entrée Aucune. Conditions de sortie Aucune. CHROUT = [A002] Sort un caractère vers un dispositif. CHROUT sort un caractère vers le dispositif spécifié par le contenu de 6F (OEVNUM). DEVNUM - 2 (imprimante) DEVNUM 0 (écran) = = Conditions d'entrée À l'entrée, le caractère à sortir est dans A. Conditions de sortie Tous les registres, sauf CC, sont protégés. CSRDON = [A004] Met la cassette en marche. CSRDON met la cassette en marche et passe en synchro de bits pour la lecture. Conditions d'entrée Aucune. Conditions de sortie FIRQ et IRO sont filtrés. U et Y sont protégés. Tous les autres sont modifiés. GIVABF = [84F4] Passe le paramètre au BASIC. Conditions d'entrée D paramètre = Conditions de sortie Variable USR paramètre = INTCNV = [B3ED] Passe le paramètre venant du BASIC. Conditions d'entrée Argument USR paramètre = Conditions de sortie D paramètre = 312 Sous-programmes de Mémoire morte (ROM) JOYIN = [AOOA] É chantillonne les potentiomètres des bâtons de commande. JOYIN échantillonne les quatre potentiomètres des bâtons de commande et sto:::ke leurs valeurs dans POTVAL à POTVAL +3. de commande de gauche 15 A Haut/bas 15 B Droite/gauche Bâton de commande de droite 15 C HauUb;:is 15 D Droite/gauche Bâton Pour haut/bas, la valeur minimale est le haut. Pour droite/gauche, la valeur minimale est la gauche. Conditions d'entrée Aucune. Conditions de sortie Y est protégé. Tous les autres sont modifiés. POLCAT = [AOOO] Interroge le clavier pour un caractère donné. Conditions d'entrée Aucune. Conditions de sortie Z 1, A 0 (si aucune touche n'est détectée). Z 0, A code de touche (si une touche est détectée). B et x sont protégés. Tous les autres sont modifiés. = = = = 313 M ESSAG ES D' ERREU R DU BASIC COU LE U R ÉTENDU Abréviation / Explication 10 Division par zéro. La division par zéro est impossible, même pour un ordinateur. AO Tentative d'ouverture d'un fichier déjà ouvert. Si vous pressez RESET pendant l'entréesortie de cassette, ce message apparaît. Arrêtez l 'ordinateur et remettez-le en marche. BS I ndice inférieur erroné. Les indices inférieurs d'un tableau sont en dehors de l'i ntervalle. Par exemple, si vous avez A(12) dans votre programme sans qu'il soit précédé d'une ligne DIM qui dimensionne le tableau A pour 1 2 éléments ou plus, cette erreur apparaît. Utilisez DIM pour déterminer le tableau. CN Impossible de continuer. Si vous utilisez la commande CONT et si vous êtes à la fin du programme ou dans un autre cas rendant impossible la poursuite du programme, cette erreur apparaît. DD Tentative de redimensionnement d'un tableau. Vous ne pouvez dimensionner un tableau qu'une seule fois. Par exemple, vous ne pouvez pas avoir DIM A(1 2) et DIM A(50) dans l e même programme. DN Erreur de numéro de dispositif. Vous ne pouvez utiliser que trois n uméros de dispositif avec OPEN, CLOSE PRINT ou INPUT-0, -1 ou 2 Une erreur apparaît si vous utilisez un autre numéro. - . DS I nstruction directe. Le fichier de données contient une instru<;lion directe. Cette erreur peut se produire si vous essayez de charger (CLOAD) un fichier de données. FC Appel de fonction interdite. Cette erreur se produit si vous utilisez un paramètre (nombre ou variable) avec un not BASIC en dehors de l' intervalle. Par exemple, PLAY":" amène cette erreur. FD Données erronées de fichier. Cette e-reur se produit si vous imprimez (PRINT) des données dans un fichier ou si vous entrez (INPUT) des données à partir du fichier, à 1'aide d'un type erroné de variable pour les données correspondantes. Par exemple, I N PUT #-1 ,A amène cette erreur si les données du fichier correspondent à une chaîne. FM Mode erroné de fichier. Cette erreur se produit si vous essayez d' entrer (IN PUT) des données à partir d'un fichier ouvert (OPEN) pour la sortie (OUTP UT)(O)) ou si vous imprimez (PRINT) les données dans un fichier ouvert (OPEN) pour l' entrée (IN PUT(!)). ID Instruction directe interdite. Vous pouvez, par exemple, utiliser INPUT comme ligne dans le programme, mais pas comme ligne de commande. HP Erreur d'impression à haute définition. Essai d' exécution d'une fonction de texte à haute définition sur un écrar1 de texte à basse définition ou exécution d'une fonction de texte à basse définition sur un écran de texte à haute définition. HR Erreur de graphiques à haute définition. Essai d'exécution d'une instruction de graphiques à haute définition sans avoir d'abord établi un écran à haute définition à l ' aide de l'1nstructon HSCREEN. 31 5 Messages D 'erreur du BASIC Couleur Étendu Entrée après l a fin d u fichier. Utilisez EOF pour déterminer si vous avez atteint l a fin du fichier. Si c'est le cas, fermez-le (CLOSE). IE Erreur d'entréesortie. Cette erreur se produit souvent quand vous essayez d'entrer u n programme ou un fichier de données à partir d'une mauvaise bande. 10 LS Chaîne trop longue. Une chaîne ne peut contenir que 255 caractères. NF NEXT sans FOR. Vous utilisez NEXT sans instruction FOR. Cette erreur se produit aussi quand vous inversez les lignes N EXT dans une boucle emboîtée. NO Fichier non ouvert. Vous ne pouvez ni entrer ni sortir des données qu'après avoir ouvert (OPEN) un fichier. OO Fin des données. Une instruction READ a été exécutée avec une quantité insuffisante de données (DATA) à lire. Une instruction DATA peut ne pas avoir été jointe au programme. OM Fin de mémoire. Toute la mémoire disponible a été utilisée ou réservée. OS Espace de fin de chaîne. Il n'y a pas assez de place en mémoire pour faire des opérations avec chaîne. Vous pouvez peut-être effacer (CLEAR) davantage d'espace. OV Dépassement de capacité. Le nombre est trop grand pour l'ordinateur. (ABS(X)> I E38) RG RETURN sans GOSUB. L'ordinateur a trouvé une ligne RETURN qui n'est pas précédé de GOSUB. SN Erreur de syntaxe. Peut provenir d'une commande mal orthographiée, d'une ponctuation incorrecte, de parenthèses ouvertes ou d'un caractère interdit. Retapez la ligne du programme ou la commande. ST Formule en chaîne trop complexe. Une opération en chaîne est trop complexe à manipuler. Décoriposez-la en étapes plus courtes. TM Erreur d'assortiment de type. Se produit si vous essayez d' attribuer des données numériques à une variable en chaîne (A$= 3) ou des données en chaîne à une variable numérique (A= "DATA"). UL Ligne non définie. Le programme contient une instruction GOTO, GOSUB ou une autre ligne de branchement qui demande d'aller à un numéro de ligne n'existant pas. 316 CODES D ' ERRE U R Code D'erreur Contenu AO 18 Déjà ouvert BS 8 I ndice incorrect CN 16 Impossible de continuer DO 9 Essai de redimensionnement d'un tableau ON 19 Erreur de numéro de dispositif os 24 Instruction directe 10 10 Division par zéro FC 4 Appel de fonction interdite FD 17 Mauvaises données de fichier FM 21 Mauvais mode de fichier HP 39 Erreur d'impression Hires HA 38 Erreur de graphiques Hires ID 11 Instruction directe interdite IE 23 Entrée après la fin c'un fichier 10 20 Erreur d' entrée/sortie LS 14 Chaîne trop longue NF 0 NEXT sans FOR NO 22 Fichier non ouvert OO 3 Fin de données OM 6 Fin de mémoire os 13 Fin d' espace de chaîne ov 5 Dépassement de capacité AG 2 RETURN sans GOSUB SN Erreur de syntaxe ST 15 Formule de chaîne trop complexe TM 12 Erreur de concordance UL 7 Ligne non définie 317 COfy1 MANDES, FONCTIONS ET OPERATEURS DU BAS IC Cette section résume chaque commande, fonction et opérateur_ du BASIC. Remarquez que les couleurs que vcus spécifiez avec une commande ou fonction ont des significations différentes avec chaque mode d'écran. (Voir "Couleurs du BASIC''.) Commandes Les commandes du BASIC imposent à votre ordinateur une certaine intervention, par exemple de tracer un cercle sur l'écran. ATTR c1,c2,B,U Établit les attributs d'un écran de texte à haute définition. Couleur de premier plan et Couleur de fond c2 Clignotement du curseur en fonction B Soulignage en fonction U ATTR 1 , 0 , U AUDIO interrupteur Relie la sortie de cassette au haut-parleur de l 'écran vidéo ou la coupe. ON Relie le son du lecteur de cassette au haut-parleur de l 'écran vidéo. OFF Coupe le son du lecteur de cassette au haut-parleur de l' écran vidéo. AUDIO OFF CIRCLE (x,y),r,c,h ,s,e Trace un cercle sur l'écran courant de graphiques à basse définition. x,y Centre Rayon r c Couleur Rapport hauteur/largeur h Point de début s Point de fin e C I R C LE (65 , 43) , 20 , 1 , , • 5, • 8 CLEAR n,h Efface les variables, réserve de l'espace de chaîne et la mémoire haute poµr les programmes en langage machine. Longueur de l 'espace de chaîne n h Adresse de mémoire BASIC la plus élevée C L E A R 200 , 20000 CLOAD "nom de fichier" Charge le nom de fichier du programme à partir d'une cassette. Si le nom de fichier n'est pas spécifié, le BASIC charge le premier fichier de programme rencontré. nom de fichier Nom du programme désiré. Peut avoir jusqu'à 8 caractères. C LOAD "TOUTOUS" 319 Commandes, Fonctions et Opérateurs du BASIC CLOADM "nom de fichier'',o Charge le nom de fichier d'un programme en langage machine à partir d'une cassette. Si le nom de fichier n' est pas spécifié, le BASIC charge le premier programme en langage machine trouvé. nom de fichier Nom du programme désiré en langage machine. Peut avoir jusqu'à 8 caractères. Décalage d'adresse de mémoire. Si o est spécifié, le Bf\SIC charge o le programme en langage machine à o octets plus haut que la normale en mémoire. C LOA D M " G R A P H I Q U E S " , 2730 CLOSE# d Ferme l'accès au dispositif ou fichier spécifié. Si vous ne spécifiez pas d, le BASIC ferme tous les dispositifs et fichiers ouverts. d N uméro du dispositif ou fichier C LO S E #1 CLS c Efface l 'écran de texte et donne la couleur spécifiée. En mode de texte à haute définition, le BASIC établit aussi la couleur de fond. Si c n' est pas spécifié, le BASIC utilise la couleu· courante de fond. c Code de couleur C LS 2 COLOR c1, c2 Établit les couleurs de premier plan et de fond de l'écran courant de graphiques à basse définition. c 1 Code de couleur de premier plan c2 Code de couleur de fond CO LOR 2 , 3 CONT Continue l'exécution du programme après que vous ayez pressé la touche tBREAK1 ou utilisé une instruction STOP. CONT CSAVE "nom de fichier" ,A Sauvegarde le nom de fichier d'un programme sur cassette. nom de fichier Nom du programme à sauvegarder. Peut avoir jusqu'à 8 caractères. À Choisit le format ASCI I . C S A V E "NOM DE F I C H I E R " , A CSAVEM ' ' nom de fichier' ' , 1 ,h,l,e Sauvegarde le nom de fichier d'un programme en l an g age machine sur cassette . nom de fichier Nom du programme en langage machine à sauvegarder. Peut avoir jusqu'à 8 caractères. I Adresse la plus basse du programme en langage machine. h Adresse la plus haute du programme en langage machine. e Adresse d'exécution du programme en langa;ie machine. C S A V E M " G R A P H I Q U E S " , 28000 , 29000 , 28032 DATA constante,constante, . . . Stocke les constantes numériques et en chaîne à utiliser avec une instruction READ. constante Constante numérique ou en chaîne. comme 1 27.2985 ou "Chien". D A T A 4 5 , " C H A T " , 9 8 , " C H I E N " , 2 4 . 3 , 1 0 00 320 Commandes, Fonctions et Opérateurs du BASIC DEF FN nom (variables) = formule Définit une fonction numérique. nom Nom de la fonction. Doit être un nom de variable valide. variables Liste des variables utilisées dans la formule. Définit l'opération. formule D E F F N A ( B ) =B* ( B+ ( 1 / B ) ) DEFUSR n = addr Définit l'adresse de début d'un sous-programme en langage machine. n Numéro du sous-programme en langage machine. addr Adresse de début du sous-programme en langage machine. D E F U S R 0=28032 DEL 1 1 , 12 Supprime des lignes de programme. 1 1 Numéro de la ligne la plus basse à supprimer. 12 Numéro de la ligne la plus haute à supprimer. 11 Supprime 1 ligne. -12 Supprime d u début d u programme jusqu'à l a ligne 12 comprise. 1 1Supprime de la ligne 1 1 comprise jusqu'à la fin du programme. 1 1- 12 Supprime de la ligne 1 1 à la ligne 12 comprises. D E L 40-75 DIM tableau(longueur),tableau(longueur) ,. . . Dimensionne un ou plusieurs tableaux. D I M A$ (3 , 1 0 ) , R4 ( 2 2 ) DRAW chaîne Trace u n trait sur l'écran courant de graphiques à basse définition comme le spécifie la chaîne. Les commandes de chaîne sont: Angle A BM Déplacement vierge C Couleur Vers le bas D E Angle de 45 degrés Angle de 1 35 degrés F Angle de 225° degrés G H Angle de 315° degrés Vers la gauche L M Déplacement Pas de mise à jour N R Vers la droite Échelle S U Vers le haut Exécution d'une sous-chaîne X DRAW "B M 1 2 8 , 9 6 ; U 2 5 ; R 2 5 ; 0 2 5 ; L25" 321 Commandes, Fonctions et Opérateurs du BASIC EDIT numéro de ligne Corrige une ligne de programme. Après avoir trouvé le numéro de ligne spécifié, EDIT identifie plusieurs commandes C Change des caractères D Annule des caractères Élimine le reste de la ligne et permet une insertion H 1 I nsère des caractères K Enlève le reste de la ligne L Liste la ligne à éditer S Cherche u n caractère spécifié Prolonge la ligne X CfilITffiCD Revient au mode de ligne E D I T 4 1/J END Termine u n programme BASIC. END EXEC (address) Transfère la commande à un programme en langage machine, à l'adresse spécifiée. Si vous omettez l'adresse, la commande est transférée à l'adresse établie dans la dernière CLOADM. EXEC 28032 FOR variable = n 1 TO n2 STEP n3 Définit le début d'une boucle dont NEXT spécifie la fin. variable Variable de compteur de boucle n1 Valeur de débLt d u compteur n2 Valeur de fin du compteur n3 Valeur de progression ou de rég-ession du compteur FOR Z=35 TO 1 2 5 S T E P 5 GET (sx,sy)-(ex,ey),&cf 2étableau,G Stocke un rectangle, sur l'écran de graphiques à basse définition, dans un tableau pour l'utilisation ultérieure avec PUT. Premier point cu rectangle sx.sy ex,ey Coin opposé du rectangle tableau Tableau bidimensionnel G Choisit le stockage des détails du graphique. Requiert l' utilisation de PSET, PRESET, AND, OR ou NOT avec GET. GET ( 2 2 , 3 4 ) - ( 47 , 3 8 ) , M , G GOSUB fine number Appelle un sous-progamme commençant au numéro de ligne spécifié. GOSUB 330 GOTO fine number Branche à un numéro de ligne spécifié. GOTO 1 2 5 HBUFF tampon,longueur Réserve une zone en mémoire pour les graphicues à haute définition. tampon Numéro du tampon choisi. longueur Définit la longueur du tampon. Le BASIC permet un tampon de longueur maximale de 793 1 . H B U F F 1 , 65 322 Commandes, Fonctions et Opérateurs du BASIC HCIRCLE (x,y),r,c, h,s,ee Trace un cercle sur l'écran de graphiques à haute définition. x,y Centre Rayon r c Couleur h Rapport hauteur/largeur s Point de début e Point de fin H C I R C LE (55 ,64) , 2 0 , 2 , 3 , . 4 , . 7 HCLS c Efface l'écran de graphiques à haute définition et donne la couleur spécifiée. Couleur c Sic n'est pas spécifiée, le BASIC utilise la couleur courante de fond. H C LS 2 HCOLOR c1 ,c2 Établit les couleurs de premier plan et de fond sur l'écran de graphiques à haute définition. c1 Couleur de premier plan c2 Couleur de fond H C OLOR 2 , 3 HDRAW chaine Trace. sur l'écran rJP. oraphiques à haute définition, un trait spécifié par la chaîne. Les commandes de chaîne sont: A Angle BM Déplacement vierge C Couleur D Vers le bas E Angle de 45 degrés F Angle de 1 35 degrés G Angle de 225 degrés H Angle de 3 1 5 degrés L Vers la gauche M Déplacement N Pas de mise à jour R Vers la droite Échelle S U Vers le haut X Exécution d'une sous-chaîne H D R AW "BM1 2 8 , 96; U 2 5 ; R 2 5 ; 025 ; L25" HGET (sx,sy)-(ex,ey),tampon Stocke un rectangle, sur l'écran ce graphiques à haute définition, dans un tampon précédemment établi par la commande HBUFF pour utilisation ultérieure avec la commande HPUT. sx,sy Premier coin du rectangle ex,ey Coin opposé du rectangle tampon Numéro du tampon. HGET <21 ,32) - ( 28,3 7 ) , 1 323 Commandes, Fonctions et Opérateurs du BASIC HLINE (x1 ,y1)-(x2,y2),c,a Trace un trait sur l'écran de graphiques à haute définition. x1 ,y1 Point de début de HUNE. Si vous omettez le point de début, remplacez la virgule après x1 ,y1 par La ligne commence alors au dernier point de fin ou au centre de l'écran. x2,y2 Point de fin de HUNE. Définit la couleur. PSET choisit la couleur courante de premier plan. PRESET c choisit la couleur courante de fond. Création d'une case. Si vous omettez a, le BASIC trace un trait. Si vous utilisez a B, le BASIC trace une case avec les points de début et de fin comme coirs opposés de la case. Si vous utilisez BF, le BASIC trace une case pleine. ·. H L I N E ( 2 2 , 33 ) - ( 1 00 , 9 0 ) , 3 , B F HPAINT (x,y),c1,c2 Peint une zone sur l'écran de graphiques à haute définition. Point de début x,y Couleur de peinture c1 Couleur de bordure c2 H P A I N T ( 5 5 , 66 ) , 2 , 3 HPRINT (x,y),message Imprime le message sur l 'écran de graphiques Position de début x,y message Chaîne à imprimer à haute définition. H P R 1 NT ( 2 0 , 1 2 ) , "B 0 N J OU R ! " HPUT (sx,sy)·(ex,ey),&c f2éb,a Copie les graphiques d'un tampon dans un rectangle, sur l'écran de graphiques à haute définition. sx,sy Premier coin du rectangle. ex,ey Coin opposé du rectangle. Numéro du tampon b Intervention utilisée. Les interventions comprennent PSET, PRESET, AND, a OR et NOT H P UT ( 2 2 , 3 3 ) - ( 2 8 , 3 7 ) , 1 , P S E T HRESET (x,y) Remet un point, sur l'écran de graphiques à haute définition, à la couleur de fond. H R E SET ( 2 2 , 3 3 ) HSCREEN mode Choisit un mode d'écran de graphiques à haute définition. Les modes 1 à 4 efface1t aussi l'écran de graphiques à haute définition. mode Numéro de mode. Les numéros de mode sont: O Basse définition 1 - 320x192, 4 couleurs 2 - 320x192, 1 6 couleurs 3 - 640x192, 2 couleurs 4 - 640x1 92, 4 couleurs HSCREEN 4 - HSET (x,y,c) Fixe le point x,y sur l'écran de graphiques à haute définition à la couleur c. Si vous omettez c, le BASIC utilise la couleur de premier plan. HSET (22,33 ,2) 324 Commandes, Fonctions et Opérateurs du BASIC HSTAT v1,v2,v3,v4e Retourne l'information concernant le curseur d'écran de texte à haute définition aux variables v1, v2, v3 et v4. v1 Code de caractère v2 Attribut de caractère v3 Coordonnée X du curseur v4 Coordonnée Y du curseur H STAT C , A , X , Y IF test THEN #1 ELSE #2 Exécute une vérification. Si elle est vraie, l'ordinateur exécute l'instr uction (111). Si el l e est fausse, l'ordinate:..i r exécute l'instruction (#2). I F A<N THEN PRINT "A<N" E L S E P R I N T "A>=N" INPUT var1 ,var2, . . . Lit les données du clavier et les sauvegarde dans une ou plusieurs variables. I N P U T K3 INPUT #-1 var1,var2, . . . Lit les données à partir d'une cassette et les sauvegarde dans une ou plusieurs variables. I N P U T #-1 , C $ INSTR (p,s,t) Cherche une chaîne. Donne la position d'une chaîne cible dans une chaîne cherchée. Position de début de la recherche p Chaîne cherchée s t Chaîne cible I N S TR ( 1 , M 5 $ , " C HOUX") LET Attribue une valeur à une variable (facultative). L E T A3=27 UNE (x1,y1)-(x2,y2),c,ae Trace un trait sur l'écran courant de graphiques à basse définition. x1 ,y1 Point de début du trait. Si vous omettez le point de début, remplacez la virgule après x1 ,y1 par Le trait commence alors au denier point de fin ou au centre de l 'écran. x2,y2 Point de tin du trait. c Définit la couleur. PSET choisit la couleur courante de premier plan. PRESET choisit la couleur courante de tond. a Création d'une case. Si vous omettez a, le BASIC trace un trait. Si vous utilisez B, le BASIC trace une case avec les points de début et de tin comme points opposés de la case. Si vous utilisez BF, le BASIC trace une case pleine. ·. L I N E ( 2 2 , 3 3 ) - (27 ,39) , PSET, BF UNE INPUT Lit les données à partir du clavier et les sauvegarde dans une variable. Les virgules sont des caractères et non des séparateurs. L I N E I NPUT A$ 325 Commandes, Fonctions et Opérateurs du BASIC LIST 11 , 12 Liste les lignes spécifiées ou le programme entier sur l'écran. 11 Numéro de ligne la plus basse à lister. 12 Numéro de ligne la plus haute à lister. 11 Liste 1 ligne. -12 Liste du début du programme jusqu'à la ligne 12 comprise. 11Liste de la ligne 11 comprise à la fin du programme. Liste de la ligne 11 à la ligne 12 comprises. 11-12 L I S T 20-45 LLIST 11-12 Liste les lignes précisées ou le programme entier sur l'imprimante. 11 Numéro de ligne la plus basse à lister. 12 Numéro de ligne la plus haute à lister. 11 Liste 1 ligne. - 12 Liste du début du programme jusqu'à la ligne 12 comprise. 11Liste de la ligne 11 comprise à la fin du programme. 1 1 - 12 Liste de la ligne 11 à la ligne 12 comprises. L L I S T-90 LOCATE x,y Amène le curseur de l 'écran de texte à haute définition à la position LOCATE 20 , 1 2 x,y. LPOKE location, value Stocke une valeur (0-255) dans une position de mémoire virtuelle (0-524287 en décimal ou 0-$7FFFF en hexadécimal). LPOKE 4801 2 6 , 241 MID$ (s,p, 1) Remplace une partie du contenu de la variable de chaîne s par une autre chaîne. s Chaîne à modifier Position de début dans la chaîne p I Longueur de la section à modifier. M I D $ (A$ , 4 , 3 ) ="C HAT" MOTOR Met le magnétocassette en marche ou l'arrête. MOTOR ON NEW Efface le contenu de la mémoire. NEW NEXT v1,v2, . . . Définit la fin d'une boucle FOR. v1, v2 Noms de variables facultatives, utilisés pour les boucles emboîtées. Si vous les utilisez, listez-les dans l'ordre inverse des variables FOR. Si vous les omettez, ne définissez que la fin de la dernière boucle déclarée. NEXT X , Y , Z ON BRK GOTO numéro de lignee Branche au numéro de ligne quand vous pressez la touche (BREAKl. O N B R K G O TO 1 2 0 326 Commandes, Fonctions et Opérateurs du BASIC ON ERR GOTO numéro de ligne Branche au numéro de ligne en cas d'erreur. ON E R R GOTO 1 2 0 ON. . .GOSUB Branchement multiple à des sous-programmes spéc�iés. ON A G O S U B 1 00 , 2 3 0 , 5 0 0 , 1 1 2 5 ON . . .GOTO Branchement multiple à des lignes spécifiées. ON A G O T O 1 0 0 , 2 3 0 , 5 0 0 , 1 1 2 5 OPEN m,#dev,f Ouvre le fichier spécifié pour la transmission des données. m Mode de transmission 1 Entrée 0 Sortie #dev #-2 Imprimante #-1 Magnétocassette #0 Clavier ou écran f Nom du fichier - - - - - OPEN "0" , #-1 , " DATA" PAINT (x,y),c1 ,c2 Peint une zone sur l'écran de graphiques à basse définition. x,y Point de début Couleur de peinture c1 c2 Couleur de bordure P A I N T ( 44 , 5 5 ) , 2 , 3 PALETTE CMP ou RGB Remet les registres de palette aux couleurs standard pour un écran couleur à signal complet ou un téléviseur (PALETIE C M P) ou un écran vidéo à signal rouge/vert/bleu (PALETIE RGB). PA LETTE CMP PALETTE pr, cc Stocke le code de couleur cc (0-63) dans le registre de palette pr (0-1 5). PALETTE 1 , 1 3 PCLEAR n Réserve n nombre pages de mémoire de graphiques de 1 .5 K. PC LEAR 4 PCLS c Efface l'écran courant de graphiques à basse définition à l'aide de la couleur c. Si vous omettez c, le BASIC utilise la couleur de fond. PC L S 0 PCOPY s TO d Copie des graph ques à basse dét nition de la page source à la page de destination. Numéro de page source s Numéro de page de destination d P C O P Y 1 TO 2 327 Commandes, Fonctions et Opérateurs du BASIC PLAY chaine Reproduit la musique spécifiée par la Notes A-G Longueur L 0 Octave Pause P T Tempo Dièse #ou+ Bémol chaÎne. Les commandes de chaîne sont: P L AY " L1 ; A ; A # ; A -" PMODE mode,page Choisit la définition et la première page de mémoire d'un écran de graphiques à basse définition. 0 - 1 28 x 96 x 2 couleurs mode 1 - 1 28 x 96 x 4 couleurs 2 - 1 28 x 1 92 x 2 couleurs 3 - 1 28 x 1 92 x 4 couleurs 4 - 256 x 1 92 x 2 couleurs Si vous omettez le mode, le BASIC utilise la dernière valeur fixée. À la mise sous tension, le BASIC utilise 2 . Page de début. Si vous omettez la page, le BASIC utilise la page précédemment fixée. page À la mise sous tension, le BASIC utilise 1 . PMODE 4, 1 POKE (position,valeur) Stocke une valeur (0-255) dans une position de mémoire (0-65535 en décimal ou O-$FFFF en hexadécimal). POKE 28000 , 2 4 1 PRESET (x,y) Remet un point de l'écran cou rant de graphiques à basse définition à la couleur de fond. PRESET (22, 33) PRINT messagee Imprime sur les écrans de texte. P R I N T " B ON J O U R ! " PRINT #-1 ,données Écrit des données sur cassette. P R I NT #-1 , A $ PRINT #-2,données Imprime sur l'imprimante. P R I N T #-1 , " B O N J O U R I " PRINT TAB(n) Déplace le curseur à la colonne n P R I NT TAB(22) ; " BONJOUR 1 " 328 sur les écrans de texte à basse et haute définitio.1. Commandes, Fonctions et Opérateurs du BASIC PRINT USING"format";données Imprime des nombres dans le format spécifié sur l'écran de texte. Les commandes de format sont: # Numéros des formats. Point décimal. Imprime la virgule à la gauche de chaque tranche de trois caractères. Remplit des espaces de tête d'astérisqu�s. $ Imprime le signe du dollar en tête. $$ Imprime le signe du dollar flottant. + Signe de tête ou de queue. tttt Format exponentiel. Signe moins après les nombres négatifs. Imprime le premier caractère d'une chaîne. %espaces%Zone de chaîne. La longueur de zone correspond au nombre d'espaces plus 2. P R I NT U S I N G ## #### ; 1 / 3 ** 1 1 . 1 1 PRINT @n,message Imprime le message à la position n sur l'écran de texte à basse défi rition. P R I N T @1 1 , " B O N J O U R ! " PSET (x,y,c) Établit le point x,y à la couleur c sur l 'écran de graphiques à basse défi nition. Si vous omettez c, le BAS IC utilise la couleur de premier plan. PSET <22 , 3 3 , 2 ) PUT (sx,sy)-(ex,ey),v,a Copie les graph ques d'un tableau dans un rectangle sur l'écran de graphiques à basse définition. Premier coin du rectangle sx.sy Coi n opposé du rectangle ex,ey v Tableau bidimensionnel a Intervention utilisée. Les interventions comprennent PSET, PRESET, AND, OR et NOT. PUT ( 2 2 , 3 3 ) - ( 2 7 , 3 9 ) , A , PSET READ van ,var2, . . . Lit l'article suivant dans la ligne DATA. Sauvegarde les données dans les variables spécifiées. READ A1 , B , C 7 REM commentaire Permet d'i nsérer des commentaires dans une ligne de programme. L'ordinateur ig nore les indications qui suivent REM. REM VO I C I U N E L I G N E D E COMMENTA I R E RENUM nouvelle ligne,ligne de début,degré Permet de renuméroter des lignes de programme. Nouvelle ligne de début nouvelle ligne Ancienne ligne de début ligne de début degré Valeur de progression des lignes RENUM 1 , 1 , 1 0 RESET (x,y) Remet un point de l'écran de texte à basse définition à la couleur de fond. RESET (22,33) 329 Commandes, Fonctions et Opérateurs du BASIC RESTO RE Ramène le pointeur de l 'ordina:eur au premier article de la première ligne DATA. RESTORE RETURN Ramène l'ordinateur d'un sous-programme au mot BASIC qui suit GOSUB. RETURN RUN Exécute un programme. RUN SCREEN type,couleurs Choisit les modes d'écran à basse définition et les jeux de couleurs. O Texte type 1 Graphiques couleurs 0 Jeu de couleurs 0 Jeu de couleurs 1 1 - - - - SCREEN 0 , 1 SET (x,y,c) Met le point x,y sur l'écran de texte à basse définition à la couleur c. Si vous omettez c, le BASIC utilise la couleur de premier plan. SET (1 1 , 1 1 , 3) SKIPF nom de fichier Saute au programme suivant sur la cassette ou à la fin d'un programme spécifié. nom de fichier Nom facultatif du programme à sauter. S K I P F " D ATA" SOUND tonalité,durée Produit la tonalité spécifiée pendant la durée spécifiée. Fixe la hauteur du son de 1 à 255 tonalité durée Fixe la durée de 1 à 255 SOU N D 3 3 , 2 2 STOP Arrête l 'exécution d'un programme. STOP TIMEA n Fixe la minuterie "' à n. T IMER=120 TA OFF Coupe le dépistage d'un programme. TROF F TRON Met en fonction le dépistage d'un programme. TRON 330 Commandes, Fonctions et Opérateurs du BASIC WIDTH n Fixe l'écran de texte à la définition n: 32 - 32x16 (texte à basse définition) 40 - 40x24 (texte à haute définition) 80 - 80x24 (texte à haute définition) W I D T H 80 Fonctions Les fonctions du BASIC se composent de sous-programmes incorporés qui exécutent certains calculs avec les données, comme l'extraction de la racine carrée d'un nombre. Utilisez les fonctions du BASIC comme données dans vos lignes de programme. ABS (n) Calcule la valeur ;:ihsolue de n. A=A B S ( B ) ASC(chaine) Donne le code du premier caractère de la chaîne. A=A S C ( 8 $ ) ATN (n) Donne l'arc tangente de n en radians. A=AT N ( B / 3 ) BUTTON (n) Donne 1 si vous pressez le bouton de commande du bâton n et 0 si vous ne le pressez pas. n peut correspondre à: 0 - Bâton de commande de droite, bouton 1 {ancien bâton de commande) 1 - Bâton de commande de d roite, bouton 2 2 - Bâton de commande de gauche, bouton 1 (ancien bâton de commande) 3 - Bâton de commande de gauche. bouton 2 A ::; B U T T O N ( 0 ) CHR$ (n) Donne le caractère correspondant au code de caractère n. A$=C HR$(65) COS (angle) Donne le cosinus d'un angle en radians. A=COS (B) EOF (d) Donne FAUX (0) s'il y a d'autres données et VRAI (-1) si l'ordi nateur a l u la fin du fichier. d Numéro de dispositif: -1 Cassette I F EOF ( - 1 ) =-1 T H E N 220 ERLIN Donne le numéro de ligne BASIC ou une erreur s'est produite. I F E R L I N = 1 1 0 T H EN 200 331 Commandes, Fonctions et Opérateurs du BASIC ERNO Donne le numéro d'erreur BASIC de l'erreur qui s'est produite. I F ER N0=20 THEN C LO S E EXP (n) Donne l'exposant naturel d'un nombre (etn). A=EXP ( B*1 . 1 5) HEX$ (n) Donne une cnaîne avec la valeur hexadécimale de n. PRINT HEX$ (A) ; "=";A HPOINT (x,y) Donne l 'information sur le point x,y de l'écran de graphiques à haute définition. 0 Point remis à l'état initial. Code Point établi. I F POINT C 2 2 , 3 3 ) = 0 T H E N 200 INKEY$ Vérifie le clavier et retourne la touche pressée ou, si vous n'avez pas pressé de touche, donne une chaîne vide ( ). "" A$= I N K E Y $ INT (n) Convertit n en valeur entière. A=INT C B + . 5 ) JOYSTK (/) Donne la coordonnée horizontae ou verticale (j) du bâton de commande de gauche ou de droite: o Horizontale, bâton de commande de gauche 1 - Verticale, bâton de commande de gauche 2 - Horizontale, bâton de commande de droite 3 - Verticale, bâton de commande de droite - A=JOYSTK ( 0 ) LEN (string) Donne la longueur de la chaîne. A=LEN CB$) LOG (n) Donne le logarithme naturel de n. A = LO G C B / 2 ) LPEEK (position de mémoire) Retourne le contenu d'une position de mémoire virtuelle (0-524287 en décimal ou 0-$7FFFF en hexadécimal). A = LP E E K C &H7 F F F 0 ) MEM Indique l'espace de mémoire libre. A=MEM 332 Commandes, Fonctions et Opérateurs du BASIC MID$ (s,p, 1) Donne une sous-chaîne de la chaîne s. Chaîne source s Position de début de la sous-chaîne p I Longueur de la sous-chaîne A$= M I D $ ( 8$ , Z , 2 ) PEEK (position de mémoire) Retourne le contenu d'une position de mémoire (0-65535 en décimal ou 0-&HFFFF en hexadécimal). A=PEEK C30020) POINT (x,y) Donne l'information sur le point x,y de l'écran de texte à basse définition. Le point fait partie d'un caractère alphanumérique. -1 Le point est remis à l'état initial. 0 Code Le point est établi. A = PO I N T C 2 2 , 3 3 ) POS (dev) Donne la position courante d'impression. dev Numéro du dispositif d'impression: 0 - Écran -2 Imprimante - A=POS ( 0 ) PPOINT (x,y) Donne l' information sur le point x,y de l'écran de graphiques à basse définition. Le point est remis à l'état initial. 0 Code Le point est établi. A=PPO I N T C 2 2 , 3 3 ) RIGHT$ (cha1ne,longueur) Donne la partie de droite d'une chaîne. La longueur spécifie le nombre de caractères retournés. A$=RI GHT$ ( 8 $ , 4 ) AND (n) Crée un nombre au hasard entre 1 et n si n A = R N D ( 0) 1 ou ertre O et 1 si n =0. SGN (n) Donne le signe de n. -1 Négatif 0-0 1 Positii - - A=S G N ( A + . 1 > SIN (angle) Donne le sinus de l'angle en radians. A=S I N ( B / 3 . 1 41 5 9 ) 333 Commandes, Fonctions et Opérateurs du BASIC STRING$ ( 1 ,c) Donne une chaîne d'un caractère répété. 1 Longueur de chaîne Caractère utilisé. Peut être un code ou une chaîne. c A$=STR I NG $ ( 2 2 , "A") STR$ (n) Convertit n en chaîne. A $ = ( 1 . 23 4 ) SOR (n) Donne la racine carrée de n. A=S Q R ( B / 2 ) TAN (angle) Donne la tangente de l'angle en radians. A=TAN ( B ) TIMER Donne le contenu de la minuterie (0-65535). A =T I M E R / 1 8 USRn (argument) Appelle le sous-programme en langage machine n, lui passe un argument et donne une valeur pour le sous-programme au programme BASIC. A=USR O C B ) VAL (chaîne) Convertit une chaîne en nombre. A=VA L ( " 1 . 23 " ) VARPTR (variable) Donne un pointeur où une variable est placée en mémoire. A = V A R PTR ( B ) 334 Commandes, Fonctions et Opérateurs du BASIC OPÉRATEURS Les opérnteurs du BASIC exécutent certaines opérations sur les données, par exemple l'addition de deux nombres. Élévation à une puissance CD Signe négatif ou positif unaire + • , Multiplication, division I + ' - Addition et concaténation, soustraction NOT, AND, OR Opérateurs logiques < , > , = , <= , > = t <> Vérifications de relations 335 MODALITE:$ DE: V E:NTE ET AUTORISATION RELATIVES L"ËQUIPEMENT ET AU LO GIC IE L DE MIN I-ORDINATEURS TANDY ACHETËS DANS UN CENTRE DE VENTE AUTORISË DE "11 Nl -OR DIN AT EURS OU UN MAGASIN DE DËTAIL POSSËDËS PAR RADIO SHACK OU À UN POINT VENTE AUTORISË D"UN DËTAILLANT OU DËTENTEUR DE RADIO SHACK DE GARANTIE LIMITÉE OBLIGATIONS OU CLIENT A B Il. Le CLIENT assume l'entière responsabilité de la conformité du présent matériel de mini-ordinateurs Radio Shack (l"'équ1pemenf') acheté et de toutes copies du logiciel Ra·:jio Shack faisant partie de l 'équ ipement ou ccuvertes par une license d1slmcte. (le "log iciel" } à l a fiche tec hn1Que. a la capac1tè.à la facilité d'adaptation et aux autres exigences dudit CLIENT _ Le CLIENT assume l'entière responsabilité du bon état et de l'eff1cac1té du milieu dans lequel l'équipement et le log1c1el doivent fonctionner et de leur mstallation GARANTIES LIMITÉES ET MODALITÉS DE VENTE RADIO SHACK A Pendant quatre-vingt-dix (90) jours c1vrlsà compterde la date du document devente Rad10 Shack reçu à l'achat de l'équipement. Radio Shack garantit au CLIENT 1n1ttal oue !"équipement et le support sur lequel le 1og1c1el est emmagasiné sont exempts de vices de fabrica11on CETTE GARANTIE NE S'APPLIQUE QU'AUX ACHATS D"l':QUIPEMENT TANDY EFFECTUÉS PAR LE CLIENT INITIAL DANS DES CENTRES DE VENTE AUTORISË DE MINI-ORDINATEURS OU DES MAGASINS DE DÉTAIL POSSÉD�S PAR RADIO SHACK OUA DES POINTS DE VENTE AUTORISÉS DE DÉTAIL­ LANTS RADIO SHACK. La garantie est nulle si Je boitier ou lecoffret de l'équipement a été ouvert ou s1 8 C D l'équipement ou le l og 1c1e' ont été soumis â un usage abusif En cas de découverte d'un vice de fabricahon au cours de la penode de garantie stipulée. retourner l'équipement défectuelJ'X à un centre de vente autorisé de mini-ordi nateurs Radio Shack . un magasi n de détail Radio Shack. 3 un déta illant part1c1pant de Radio Shack aux fins de réparation, accompagné d'un exemplaire du doc�Jment de ve nte ou du cont ratde location Le recours unicueetexclus1f d u CLI ENT 1nihalencasdev1ce sel1m1teâ la rectification du vice par réparation . remplacement ou remboursement du prix d'achatau gré et aux seuls frais de RAD 0 SHACK RADIO SHACK n'assume aucune obllgat1::m de remplacement ou de réparation des p1èces soumises a l'usure normale RADIO SHACK n'accorde aucune garantie Quant à la conceptio n . la capG.c1té . ou l'apt11ude à f'usage du loqic1el sous rés�rve des st1 pulati ons du pr�P.nl n�r�n raphe Lg log1c1e est délivré "COM METEL". sans qarant1e Le recours e)(clus1f du CLIENT 1n1t1al en cas de vice de labr1cat1on du logiciel se l1m1tea sa réparation ou son remplacement dans les tr�nte (30) 1ours civils à camper de la date du dOCl1ment de 11ente de Radio Shack reçu â l'octroi de la licence du log1c1el Le logiciel défectueux doit être retourné à un centre de vente autorisé de m1rn-ord1nateurs ou magasin de déla1I Radio Shack à un déraillant part1c1pant de Radio Shack accompagné du document de vent-3 Sous réserve des s:1putat1ons des présentes nul employé, agent. détaillant ou autre n'est autorisé â donner une garantie quelconque de quelque nature que ce soit au nom de RADIO SHACK SOUS RÉSERVE DES STIPULATIONS DES PRÉSENTES, RADIO SHACK N'ACCORDE AUCUNE GARANTIE. Y COMPRIS DES GARANTIES QUANT À LAVALEUR MARCHANDE OU À L'APTITUDE À UN USAGE PARTICULIER EST LIMITÉE À LA DURÉE DUDIT GARANTI. Ill. LIMITÉ DE RESPONSABILITÉ A. SOUS RÉSERVE DES STIPULATI ONS DES PRÉSENTES. RADIO SHACK Dl':CLINE TOUTE RESPONSABILITE ENVERS LE CLIENT ET ENVERS TOUTE AUTRE PERSONNE OU ENTITÉ CONCERNANT TOUTE OBLIGATION, TOUTE PERTE OU TOUT DOMMAGE CAUSÉS OU PRÉ­ TENDUMENT CAUSÉS DIRECTEMENT OU INDIRECTEMENT PAR L''"l':QUIPEMENT'" OU LE '"LOGICIEL.. VENDUS. AUTORISÉS OU FOURNIS PAR RADIO SHACK. ENTRE AUTRES TOUTE INTERRUPTI ON DE SERVI CE, TO UTE PERTE DE REVENU OU DE BÉNÉFICESPRËVUS OU TOUT DOMMAGE INDIRECT RÉSULTANT DE L"UTILISATION OU DE L"EXPLOITATION DUDIT '"ÉQUIPEMENT'" OU DUDIT '"LOGICIEL'", RADIO SHACK N'EST EN AUCUN CAS RESPONSABLE DE LA PERTE DE BÉNÉFICES OU DES DOMMAGES INDIRECTS ET SPÉCIAUX OU AUTRES DÉCOULANT DE TOUTE INFRACTION À LA PRl':SENTE GARANTIE OU LIÉS D'UNE FAÇON QUELCONQUE À LA VENTE, LA LOCATION, LA LICENCE. L'USAGE OU L"USAGf PRËVU DE L"'ÉOUIPEMENr' OU DU '"LOGICIEL". NONOBSTANT LES RESTRICTIONS ET GARANTIES SUSMENTIONNÉES, LA RESPONSABILITÉ DE RADIO SHACK EN MATl�RE DE DOMMAGES SUBIS PAR LE CLIENT OU PAR DES TIERS SE LIMITE À LA SOMME PAYÉE PAR LE CLIENT POUR . L'""ÉQUIPEMENr· OU LE ..LOGICIEL . EN QUESTION. B RADIO SHACK dégage toute responsabilité quant au)( dommages éventuels causés par un retard C dans la livraison de l'équipement et (ou) du log1c1el Nulle poursuite en 1ust1ce découlant d'une crétendue v1olatton de la présente garantie ou de transactions en vertu de la présente garantie ne peut être enlamée après la première des dates su ivantes. soi t plus de de ux 12) années après la survena nce des faits motrvan t la po ursui te. soit pl us de Quatre (4) années après la date du document de vente de Radio Shack relatif à l'équipement OL1 au 1091c1el IV. LICENCE DE LOGICIEL RADIO SHACK V. RADIO SHACK accorde au CLIENT une hcence acquittée, non excl usive. d'ut11tsatron. sur un seul ordinateur, du 1og1c1el TANOY sous réserve des d1spos1t1ons sUJvantes A Sous réserve des stipulations contraires dans la présente licence de logiciel les lois en vigueur réQ1ssant le droit d'2uteur s'appli(l11Pnt : w looiciel 8 La· propriété du support d'enregistrement du log1c1el {cassette ou m1niC1�que) ou de mémorisation (mémoire morte ROM) du log1c1el est transférée au CLIENT mais non le droit de propriété sur le logiciel Le CLI ENT pe ut utiliser le 1091c1er avec un ord inateur central et y accéder à l'aide d'un ou de pl usieurs C termrnaux s 1 le logiciel le permet 0 Le CLIENT ne doit utili ser, fabriquer ou reproduire des copies du logiciel que pour les utiliser sur un seul ordinateur conformément aux stipulations précisées dans cette licence de log1c1el I l est expressément interdit au chent de démonter le 1091c1el E Le CL I ENT n'a la permission de farre d'autres copies du log1c1el Qu'â des fins de sauvegarde et d'archive ou s1 l'explc>1tat1on d'un seul ord1nateu · avec le logicielexige d'autres copies. maisseulement da ns la mesure où le logiciel permet f a réal isationd'une copiede sauvegarde Toutefois . dans le cas du log1c1el TRS OOS le CL 1 ENT a la permissi on defaire un nombre limité decop1essuppJémentalres pou r son propre usage F Le CLI ENT peut revend re ol..distnbuer descopi�s non modifiées du log1c1el pourvu Quïl a1tachetéune copie du log1c1el pour chacune de celles qui sont vendues ou distribuées Les dispositions de la présente licence de log1c1e! s'appliquent auss1 <iux Hers recevant du CLIENT lesdites copies du 1og1cie1 G Toutes les copies du logiciel doivent reproduire l'avisde droit d'auteur APPLICABILITÉ DE LA GARANTIE A B Les modalités de la présente garantie s'apphQu-3'nt aux relations entre RADIO SHACK et le CLIENT. qu'il s'agisse de l a vente de l'équipement et (ou) 1e l'octroi au CU ENT de la hcencede logiciel ou d'une opération en vertu de laquelle RADIO SHACK \lend ou cède ledit équi pement à un tiers à des fins de location au CLIENT Les restnct1ons de responsabi lité et d ispositions de garantie en vertu des présentessontdans l'intérêt é o u et (ou ) de la personne l'ayant autori�P. P.t de ��1� ����� ��· ���� g�� � ?;u�����:n��;��'�:�: v VI. DROITS DËCOULANT DES LOIS D'UNE PROVINCE Les garanties accordées oar les présentes donnent auCLIENT initial des droits déterminés et ilse peut que celul-cl jouisse d'autres droits qui varient d'une province à l'autre ">

Lien public mis à jour
Le lien public vers votre chat a été mis à jour.