Home

Manuel du BASIC 1000D

image

Contents

1. 250 Les arguments o a a 256 R CUTSIVAL S s a La anaa a EP Ve at a s ee 4e 250 Noms locaux Ha D E E TERE D claration simplifi e de elemenia joran RP 13 Calculs exacts 275 Fonctions num riques 276 Degr Ordre et Coefficients 286 Partie principale et Contenu 291 Substituer et Homog n iser 5 du RE sois 6140298 D rivation Int gration et Partie Set ur test eci ni a 2204 D veloppements limit s eg enr eat dif 4 1 298 D terminant Elimination et Racines Re RS Rte GS poA Division et PGCD 304 D corticage a sem 4 4 4 en dr ER g eve 0 OLO Calculs modulaires 316 Fonctions al atoires 323 Exercices de programmation 326 14 Calculs conditionnels Nombres complexes 327 15 Calculs approch s 337 16 Biblioth que Math matique 347 Menu B_USER 348 Arithm tique 349 Alg bre lin aire 354 Syst me d quations 359 Polyn mes sym triques 362 Expressions trigonom triques
2. table une liste de tables du manuel codes ASCII lt 32 0 20 31 47 107 124 128 178 1 10 A 22 46 8 124 10 A 128 176 178 12 C 124 126 13 D 20 22 31 107 124 128 176 178 22 16 103 25 19 20 22 31 207 26 1A 20 22 31 27 1B 131 32 20 espace 47 72 90 243 factorielle 107 150 nn 107 47 72 171 173 177 ligne 30 1 47 72 78 117 243 47 72 78 90 117 243 amp 108 20 32 38 rem 104 252 256 x 103 78 102 126 128 256 78 102 47 72 78 78 103 200 261 2 3j 367 9 68000 436 9 6j 367 9 9j 367 9 20 32 38 50 248 251 72 126 128 lt 102 44 89 102 115 assignation gt 102 A7 72 32 54 57 59 70 231 257 258 60 268 9 2734 491 C0 231 258 10 104 110 10 22 F 47 help 125 L 107 S 47 107 257 282 Z 47 107 ca 10 25 6 cs 26 c 10 c c a a a a a a 22 3 lettre 12 22 3 s 10 32 38 40 103 A 62 exposant _ 47 72 10 72 78 80 82 5 10 f gt als 504 77 8 y constante d Euler 383 T 380 T pi 23 23 23 T 23 25 6 31 a fa L abeille 160 abr viation 23 abs 276 278 338 acc s 170 269 72 404 s lectif 170 82 204 s quentiel 170 82 access 67 249 264 267 269 404 accessoire 11 140 143 accolades acos 343 acosh 345 ADA 461 add 477 addition 223
3. 364 Alg bre de Racah o s 367 Int gration alg brique 370 Sommation alg brique 372 G om trie planer a ts hub E asus eee LE ob 4 4 9 840 Trac de courbes 378 Fonctions eul riennes 380 Int gration num rique 383 Racines r elles d un de cas te MGR AS ES ME Re 00 Optimisation PROS ON ARR RE Eee PE OT 17 Exemples RE a 391 18 Graphismes 399 Coordonn es et Couleurs 400 Trac de points et de lignes 405 Remplissages 409 Trac de formes 4 a 4 wu mb ME Den e he ar 412 Marqueurs bu meet Gt EMA ES 214 S E Polyline Polyfill et Polymoik pp eain eaae a a a e a aa ALT Textes graphiques 418 19 Appels syst me 421 GEMDOS Lis i ARR ECM LR RS ET a a 422 BIOS a ei aa a Aa e A a aa AS A e Ag RO Er aa aer waa geroa Aua te pas ai a oae aa a aaga Appels 68000 a a aaa a 436 VDI et GDOS 2 4 Lim Reel M 439 MORE ed bee LRU Die lb ne ns db 20 Biblioth que STND 457 Menu B_USER Traduction de programmes Impressions et Graphismes GDOS Fen tres Divers i Instructions sbapleces 21 C ur du Basic 1000d 483 Codages m
4. crire la valeur renvoy e par symf sv sv i pour 1 2 n doit tre un polyn me sym trique en z Zn de degr i Le litt ral s repr sente la valeur sv i Le plus souvent on utilise pour sv les polyn mes sym triques g ou S Dans ces deux cas il suffit d initialiser un tableau sv avec des valeurs calcul es par les fonctions symsigma ou symsum La fonction symf renvoie l expression de w en fonction des polyn mes sym triques Si Exemple La premi re sortie montre que pour n 4 364 Chapitre 16 Biblioth que Math matique La deuxi me sortie qui montre la m me galit un facteur pr s est obtenue partir de l entr e 1x2 que la fonction symf se charge de sym triser pr sence du septi me argument La derni re sortie montre que pour n 4 os X x 56461 59392 5939 59561 58257 S n 4 lit x n S na Z var sv1 n sv2 n for i 1 n svi i symsigma i n x next i for i i n sv2 i symsum i n x next i print symf sv2 2 n x S svi 2 print symf x 1 xx 2 n x S sv1i Z WP sum i 1 n of x i 5 print symf WP n x S sv2 2 Sortie 7740 ms 1 2 S 2 1 2 S 1 2 2 S 2 2 S 1 2 5 S 4 S 1 5 S 3 S 2 5 S 3 S 1 2 5 S 2 2 S 1 5 S 2 S 1 3 8 1 75 Expressions trigonom triques Nous montrons ailleurs gcdi comment le Basic 10004 peut tre facile ment employ pour traiter les nombres alg briques par exemple V3 de fa on exacte Dans ce chapitr
5. cran Dans l exemple ci dessus l entr e 3 1 correspond effectivement une entr e du menu mais l entr e 9 est une cha ne vide A chaque entr e n du menu qui est r ellement affich e correspond un objet d termin par son identificateur dans l arbre du menu Savoir passer de n i ou inversement de n est important dans la gestion des menus Ces transformations sont assur es par les fonctions suivantes MENU ID i OB_ID n V_fonctions Identificateurs d objets du menu n i entier 16 Les fonctions menu_id et ob_id effectuent la conversion entre num ro d entr e n du menu et identificateur i de l objet dans l arbre du menu voir ci dessus Pour une entr e r elle les deux fonctions sont inverses n menu_id i i ob_id n Par contre si n ou i ne correspond pas une entr e r elle du menu ces fonctions renvoient 1 ou produisent une erreur si n ou d passe la valeur la plus grande possible Pour l exemple donn dans la commande menu ci dessus menu_id 9 renvoie ainsi 1 MENU KILL Commande Fin d attente d v nements La commande menu kill supprime l effet des commandes menu a k on menu et supprime la barre des menus appel de aes 30 Par contre il n y a pas effacement des menus sur l cran MENU OFF Commande Affiche un titre de menu en normal Apr s cliquage d une entr e d un menu le titre du menu s crit en vid o inverse La commande menu off r
6. inn sont utilis s pour remplir gintin 0 gintin n et les m 1 arguments ad0 adm servent remplir addrin 0 addrin m Bien s r n et m d pendent de la fonction k et on a n 1 gcontr1l 1 m 1 gcontr1 3 L entr e gcontr1l 4 est initialis e gale 0 Table des fonctions AES Nous donnons les valeurs de gcontr1 0 gcontr1 3 Le num ro de la fonction AES est k gcontr1l 0 Le nombre d arguments ini attendus est v n 1l gcontrl l Le nombre d arguments en sortie sur gintout est s gcontrl 2 Le nombre d arguments adj est u m 1 gcontr1 3 Les indications g et b sont les r f rences bibliographiques application k v su g b 10 0 1 0 g294 b190 appl_init 11 2 1 1 g340 b191 appl_read 12 2 1 1 g341 b191 appl_write 13 0 1 1 b192 appl_find 14 2 1 1 b193 appl_tplay 15 1 1 1 b192 appl_trecord 19 0 1 0 b193 appl_exit v nements k v su g b 20 0 1 0 g331 b194 evnt_keybd 21 3 5 0 g332 b194 evnt_button 22 5 5 0 g334 b195 evnt_ mouse 23 0 1 1 g337 b195 evnt_mesag 24 2 1 0 g336 b198 evnt_timer 25 16 7 1 g338 b198 evnt_multi 26 2 1 0 b200 evnt_dclick DOOMhMHOMRIR DRE OR NRIR RHhNNDNDHIR OO HR amp 00 00 AJS menus Rhrhrhhlu e nnererhehe objets Ua HN hH H formes La DOR H 2 E Be RE pai ji Ha ES hhOMhM MR 1 g g387 g388 g389 g391 g393 g394 g359 g361 g362 g363 g365 g g375 g376 g381 g383 g378 graphismes
7. 100 noter la valeur n gative origin 10 270 l_end 1 line 10 0 50 0 line 0 150 0 100 Chapitre 18 Graphismes 409 l_end 0 line 50 0 600 0 line 0 100 0 150 text 580 8 t text 5 140 y sin t t plot 0 100 for i 10 600 10 line i 5000 sin i 50 i next i Sortie 5940 ms Remplissages F_COLOR i FTYPEt F STYLE s Variables d tat Attributs de remplissage F_USER g f1 f2 fg Commande Motif de remplissage personnel entier 0 15 index de couleur t entier t 0 4 type de remplissage s entier s 1 24 style de remplissage t s motif de remplissage 0 vide 1 plein 2 1 24 divers motifs 3 1 12 diverses hachures 4 utilisateur 8 entier 410 Chapitre 18 Graphismes f1 fg Motif de remplissage personnel Exemple Trace un disque dans une couleur al atoire d index f_color f_color random 15 1 print f_color pcircle 150 120 40 Sortie 605 ms Exemple monochrome Le programme suivant cr e un motif de remplissage par f_user L argu ment g qui indique le nombre de mots composant le motif doit tre gal 16 fois le nombre de plans vid o g 16 en monochrome La commande clip est utilis e pour limiter l affichage f_user 16 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 f_type 4 origin 320 200 l_type 5555 l_type 7 box 40 115 60 130 pbox 0 0 100 100 clip 320 200 0 200 pcircle 50 0 70 clip 100 200 320 200 pcircle 150 0 70 clip 0 0 0 0
8. DECODELIT s a I DECODEV s a I DECODEC s a I DECODEI s a I V_fonctions D codent un l ment s exprcha ne a entier a gt 1 d faut a 1 V nomi de type var C nomi de type char I nomi de type index 32 234 Chapitre 11 Programmation La table suivante indique les l ments d cod s suivant la fonction fonction l ment d cod decodex expr decodexi entier 32 decodexc exprcha ne decodelbl nom de label decodelit litt ral decodev nomi de type var decodec nomi de type char decodei nomi de type index Si l l ment est crit dans la cha ne s partir du a i me caract re ventuellement pr c d d espaces mais de rien d autre la fonction renvoie la position dans s du premier caract re suivant l l ment Sinon la fonction ren voie 0 Dans les cas o le d codage a r ussi et o C I ou V est donn en troisi me argument des renseignements suppl mentaires sont assign s C I ou V Pour decodex resp decodexi decodexc c est la valeur de l l ment qui est assign e V resp I C Pour decodelbl l adresse d un mot long qui contient l adresse du apr s le label dans le programme est mise dans I et pour decodelit le num ro du litt ral Pour decodev decodec et decodei une adresse dans la description interne du mot clef est assign e I Exemple Le nom test est la fois une expr une exprcha ne com
9. Global ou local Exemple tr s important Avant de lire les explications essayez de comprendre par vous m mes la sortie de ce programme en l ex cutant par le d bogueur A 120 SP A stop SP local var A 1 print A return Sortie 15 ms 0 D instruction A 01 est ex cut e sous la forme A A Le nom A aussi bien droite qu gauche de est le A local la proc dure qui n a plus rien voir avec le A du programme principal L apparente complexit de l instruction local permet de transmettre aux variables locales des valeurs calcul es avec les variables du niveau pr c dent Ainsi dans A 120 SPM A stop SPM local datav Cif var A print A return Sortie 15 ms 120 la variable locale A est initialis e avec la valeur de la variable globale de A parce qu au moment du calcul de 1 la variable locale A n a pas encore t d clar e Remarquer qu il faut crire 1f ou 1 pour viter une erreur de syntaxe dans local Autrement dit la ligne SPM ci dessus est quivalente SPM push 1 local var A A pop Exemple Voici maintenant un exemple analogue pour la sortie P 4 45 Chapitre 12 Labels Sous programmes 269 print A stop P local datav 2f var A 1 A return Sortie 15 ms A L assignation 1 A est ex cut e sous la forme A A mais en terme de la variable locale A Pour faire sortir la valeur voici une m thode utilisant uniquement les notions expos es jusqu ici P A 45 pri
10. Le programme suivant crit m et 107 pour diverses valeurs de f l et m La valeur de f est ici fix e par using et non par format f Derni re ligne de la sortie 0 E 1 indique que la valeur est plus pr s de 0 que de 10 print f 1 m pi 10 pi FR 10 1 1 FR 10 0 FR 10 1 FR 10 2 FR 10 1 2 FR 10 0 2 1 1 1 Chapitre 9 Notions de base 85 FR 10 1 2 FR 10 2 2 FR 0 1 3 FR 0 0 1 stop FR procedure I 1l m FORMATL 1 FORMATM m C HHHHH amp STRING I amp ESPACES 11 I amp TT n print justr I 1 3 justr 1 3 justr m 3 print USING C PI PI 10 return Sortie 1295 ms f 1 m pi 10 pi zfi f t 0 0314159265 E 2 0 0314159265 E 3 11 O 1 0 3141592654 E 1 0 3141592654 E 2 11 1 1 3 1415926536 3 1415926536 E 1 11 2 1 31 4159265359 E 1 31 4159265359 11 1 2 0 0314159265 E 2 0 3141592654 E 2 11 0 2 3 1415926536 0 3141592654 E 2 11 1 2 3 1415926536 31 4159265359 11 2 2 314 1592653590 E 2 31 4159265359 i 4 8 3 31 1 0 1 0 E 1 0 E 2 Sortie 3140 ms Remarques Les valeurs 0 m 1 f 11 p 10 sont les valeurs apr s clear Dans ce cas la valeur crite ap va de 0 1000000000 1 0000000000 La valeur 1 est possible pour ap apr s arrondi bien que strictement a lt 1 Calculs en flottant PRECISION k Commande Contr le la pr cision des calculs en flottants k entier 16 k gt 0 La commande precision k indique que les calculs en nombres flottants doivent tre
11. STRINGS n k STRINGS n c CHRS k n Chapitre 11 Programmation 207 CHRPS k n C_fonctions R p te n fois n entier 32 gt 0 d faut n 1 k entier k 0 255 c exprcha ne La forme string n k ou chr k n renvoie une cha ne de caract res form e de n fois le caract re de code ASCII k La forme string n c renvoie une cha ne de caract res form e de n fois la cha ne c Si n 0 ces fonctions renvoient la cha ne vide Exemple print string 10 48 print string 5 x Sortie 40 ms 0000000000 k k k La fonction chrp k permet d afficher le caract re Atari de code k m me lorsque k est un code de contr le Elle utilise le fait que dans la commande print le code 19 indique que le caract re suivant ne doit pas tre consid r comme code de contr le mais sorti tel quel Si k gt 32 chr et chrp sont identiques Si k lt 32 chrp k n est identique string n chr 19 amp chr k Exemple Comparer print chr 13 4 qui effectue 4 retours chariots et print chrp 13 4 qui crit 4 fois le symbole Atari de code 13 ASC exprcha ne V_fonction code ASCII La fonction asc renvoie le code ASCII du premier caract re de la cha ne ou 0 si la cha ne est vide Exemple Pour une cha ne un caract re asc est l inverse de chr print asc Ab print asc chr 123 Sortie 30 ms 65 123 208 Chapitre 11 Programmation Conversions avec cha nes STR
12. gauche du signe et le type lit litt ral chaque fois qu il a trouv un nom inconnu droite de index size d finition C est un objet prenant des valeurs enti res sign es cod es sur size bits size La table suivante donne les valeurs possibles d un index suivant sa taille size qui doit tre un des entiers 1 2 4 8 16 ou 32 size valeurs 2 2 1 8 128 127 16 32768 32767 32 2147483648 2147483647 INDEX size nomi nomi Commande D claration d index Par d faut size 32 Un index occupe une adresse fixe en m moire Les index indic s occupent chacun size bits 90 Chapitre 9 Notions de base Exemple Le tableau logic occupe 1000000 8 octets en m moire index 1 logic 999999 A L implantation en m moire due index t 2 1 par exemple est r alis e suivant l ordre t 0 0 t 1 0 t 2 0 t 0 1 t 1 1 t 2 1 Comme t est un index 32 t 1 0 est implant en ptr t 0 0 4 Pour un index 4 d fini par index 4 t 2 1 t 0 0 est implant dans les bits 7 4 et t 1 0 dans les bits 3 0 de l octet en ptr t 0 0 ptr t 1 0 Les index size non indic s sont implant s en commen ant galement par le bit 7 mais quelle que soit la valeur de leur taille 4 octets sont r serv s on ne gagne pas de m moire en utilisant une taille inf rieure 32 bits Les index 32 sont d finis de fa on implicite par une commande de boucle for Exemple for i 3 10000 next i W sum j
13. l aide d une structure select case char c input Entrer un nom c nodistingo select case c case in A KINKAJOU print tome 1 case in KINKAJOU ZYTHUM print tome 2 case others print autre endselect Comme dans le cas des blocs de la structure if la sortie et l entr e dans un bloc de la structure select est totalement libre ON x instr_1 instr_2 instr_n Commande S lection d une instruction entier 32 instr_i instruction en Basic i 1 n L instruction instr_i ne peut pas contenir de virgule non parenth s e ou non entre guillemets Il est cependant admis s il n y a pas de guillemets dans instr_i de l entourer de guillemets Si x 1 n alors la commande on ex cute la x i me instruction instr_x et passe la ligne suivante sauf si instr_x est un branchement Sinon la commande passe simplement la ligne suivante La commande on g se comporte donc comme un select case uniligne et s lecteur entier Exemple for x 0 10 188 Chapitre 11 Programmation print x x on x print 1 print x 2 x min x 1 10 stop next x Sortie 205 ms x x 1 1 x 2 2 2 x 3 x 4 x 6 Noter que si Sp1 Sp2 w sont des proc dures on x gosub Sp1 Sp2 w appelle les proc dures Sp1 resp Sp2 w si x 1 resp x 2 En effet gosub est facultatif devant le nom d une proc dure Par contre on x goto L1 L2 ne se comporte pas comme dans d
14. l identit de Bezout A2B3 A3B2 1 mod 29 que l on v rifie l aide de mod factor U x72 1 x x 2 A2 factorp U 2 A3 factorp U 3 p 29 print mdgcd A2 A3 29 print A2 A3 W mdsmp U p B2 factorp W 2 B3 factorp W 3 print B2 B3 print mod A2 B3 A3x B2 p Sortie 215 ms 1 x 2 1 x 2 23 xx 12 6 1 Fonctions al atoires 324 Chapitre 13 Calculs exacts RANDOM p RANDOM p x k V_fonction Entier ou polyn me al atoire P entier p gt 1 x litt ral k entier La forme random p revoie un entier al atoire dans 0 p La forme random p x k renvoie un polyn me al atoire unilitt ral en x de degr k coefficients dans 0 plf Exemple print random 2 150 print random 2 10 x 5 Sortie 145 ms 1128039388263672206571894779001217997184326302 665 xx 5 754 x 4 673 x 3 633 x 2 714 xx 172 RND RND vircha ne V_fonction Flottant al atoire dans 0 1 La fonction rnd calcule float random 2 2 o k est le nombre de bits utilis s dans la repr sentation des nombres flottants Dans la deuxi me forme vircha ne est calcul e mais non utilis e Exemple precision 50 print rnd Sortie 240 ms 0 31384769492959736997016869069091802508684499289800 RANDOMIZE RANDOMIZE 0 RANDOMIZE r Commande Initialise le g n rateur de nombres al atoires r el Le g n rateur de nombres al atoires du Basic 1000d utilise une m thode due G J Mitchell et D P Moore 1958 bas
15. print permutation parit index P 3 k nextperm 3 P 1 0 while k print conc i 1 3 of P i le k nextperm 3 P 1 wend Sortie 295 ms permutation parit 1 2 3 1 1 3 2 1 2 1 3 2 3 1 1 Chapitre 11 Programmation 221 3 1 2 1 3 2 1 f Exemple Le programme suivant distribue au hasard les 52 cartes entre quatre joueurs La carte num ro 0 lt i lt 52 est la P i i me carte distribu e o P i est une permutation al atoire de 1 52 Le premier joueur re oit les 13 premi res cartes le deuxi me joueur les 13 suivantes etc index P 51 J char D 3 N 12 N O A N 1 R N 2 D N 3 V FOR I 4 12 N T just1 14 1 next I DO J 0 cls IFT NEXTPERM 52 P 0 1 FORC C IN IPU MCI MRI MTR FOR I 0 3 D I C amp NEXT FOR J J J 12 CADD D DIVR P J 1 13 f amp N MODR J 13 next J PRINT TAB 15 D 0 PUSH CURSL CURSL CURSL 4 print D 1 TAB 30 D 2 CURSL CURSL 4 PRINT TAB 15 D 3 CURSL POP nextC CURSL 20 print Pour une nouvelle donne presser une touche ift keyget loop Exemple monochrome Fait dispara tre l cran L cran est divis en 80 cases qui sont effac es en d sordre nextperm suivi de exg permet de cr er une permutation al atoire des nombres de 0 79 qui fixe l ordre d effacement de ces cases La fonction 222 Chapitre 11 Programmation inp 2 la diff rence de keyget attend l appui sur une touche sans montrer le curseur ou la
16. somme addrin 452 addrout 453 adresse 105 436 170 4ba 271 de l cran 170 174 492 internes systab m moire 236 486 page de base 44 490 494 adressepaire 105 a Z AES 120 452 6 aes 59 443 458 458 482 aes 25 144 147 141 aes 91 163 aes 100 146 401 aes 101 146 401 aes 102 146 401 aes 103 146 401 aes 104 146 401 aesf 453 AESPB 454 494 affectation assignation aide help helps aire 296 al atoire 323 6 alert 149 alg bre de Racah 367 9 algorithme d Euclide pgcd aligne 377 lignement 377 llocation 44 490 494 dynamique 87 492 Iternate al analyse lexicale 178 80 and 100 461 ang 345 angle 345 appartenance 101 2 appel des fonctions 251 des proc dures 252 application 8 identificateur 494 appr 276 396 approximation 83 6 276 8 340 477 polynomiale 357 9 arbre du menu 140 arc 413 4 arg 257 259 439 argument 6 7 249 74 334 absent 259 envoi 256 utilisation 257 nombre 257 argument 272 arithm tique 349 54 arrayfill 478 w arr t du programme 243 break arrondi approximation as field name asc 207 ASCII 20 22 40 45 61 64 148 151 153 193 202 207 258 asin 343 asinh 345 assembleur 436 9 ASSIGN SYS 471 3 assignation 96 9 115 8 328 31 at 462 atn 343 atn2 343 atnh 345 attend 238 attributs d un fichier 164 AUTHOR 45 aux 171 211 auxiliaire 171 211 axe 378 80 axis 379 382 B 25 6 31 backspace
17. 25 i Couleur du remplissage g169 b167 Chapitre 19 Appels syst me 449 Identique f_color i 26 i f Composition de la couleur g228 b168 En sortie intout 1 intout 3 donnent les intensit s du rouge vert et bleu f 0 r elles ou f 1 arrondies 28 x y Souris g189 g192 b181 Analogue setmouse x y Si en sortie contr1 2 1 la souris a t d plac e jusqu au point ptsout 0 ptsout 1 29 v Voir g195 7 30 n t Voir g199 n est mis dans contr1 3 en entr e 31 x y l m Entr e de cha ne au clavier g202 g204 b182 Peut remplacer input 32 m Mode graphique g128 b155 Identique graphmode m 33 p a Mode d interrogation g187 b181 p 1 souris p 4 clavier a 1 attente a 2 test 35 Sortie des attributs de ligne g230 b158 36 Sortie des attributs de marqueur g232 b166 37 Sortie des attributs de remplissage g233 b164 38 Sortie des attributs de texte g235 b174 39 h v Alignement du texte g162 b169 100 a0 al a11 Ouvre une station de travail virtuelle g78 g296 b151 Voir v_opnvwk de la biblioth que STND 101 Ferme la station de travail virtuelle g82 b154 450 Chapitre 19 Appels syst me Voir v_clsvwk de la biblioth que STND 102 f Informations sur la station de travail 8223 b153 103 x y c Remplissage 8101 b164 Identique fill x y c 104 f Bord des formes pleines g171 b163 Identique boundary f 105 x y Voir g185 b168 Analogue poin
18. 356 Chapitre 16 Biblioth que Math matique print z 0 vz 0 print z 1 vz 1 print z 2 vz 2 print z 3 vz 3 Sortie 1380 ms z 0 1 z 1 a b 1 7 1 z 2 1 z 3 4 invm M R m Proc dure Inversion de la matrice M d ordre m 1 entier m gt 0 M M i j pour i et j entiers 0 m doit renvoyer l l ment M de la matrice inverser Chaque l ment est appel une fois et une seule par invm dans l ordre Moo Moi Mom Mio Mi e Mim Le nom M peut tre le nom d un tableau 2 indices ou d une fonction R Le nom R doit tre d fini par A gt m et B gt m var R A B Apr s l appel de la proc dure invm R i j pour i et j entiers 0 m repr sente l inverse R de la matrice d entr e M Il est possible d utiliser le m me tableau pour l entr e et la sortie Les l ments de la matrice M doivent tre des expr exactes ils peuvent contenir des litt raux Pour inverser une matrice flottante il faut d abord la convertir en exact L inversion est faite exactement sans approximation Ne pas utiliser de noms commen ant par invm pour arguments de invm sinon il peut y avoir des conflits avec les variables locales de invm M thode R solution par sleq de l quation matricielle Mz w Exemple Le programme suivant inverse exactement la matrice de Hilbert d ordre n D 1 dont l l ment i j i et j vont de 0 D est 1 i j 1 La table su
19. Commande Mise en m moire de la valeur d une fonction entier n lt 230 La commande remember utilise une table interne qui s_rem entiers as socie la valeur d une V_ ou C_fonction Le mot clef s_rem d signe une variable d tat qui permet de modifier la dimension de cette table La commande remem ber permet d acc l rer la vitesse des fonctions en vitant le recalcul des s_rem derni res valeurs Un exemple spectaculaire le calcul de la suite de Fibonacci a t donn dans le chapitre de pr sentation Exemple La fonction F N suivante calcule factorielle N par r currence D effet du programme est identique si on supprime la commande remember mais le programme prend alors 230 s au lieu de 4 s De plus il faut augmenter la pile des appels par s_pro 20000 L accroissement de la vitesse est donc remarquable On notera que ce calcul des factorielles de 1 200 est m me plus rapide que par la fonction interne ppwr qui s effectue en 21 s for I 1 200 W F 1 next I print F 200 stop F function index I remember I if I 1 value 1 else value F I 1 I 262 Chapitre 12 Labels Sous programmes endif return Sortie 4 s 78865786736479050355236321393218506229513597768717326329474253324435 944996340334292030428401198462390417721213891963883025764279024263710 5061926624952829931113462857270763317237396988943922446562145166424025 403329186413122742829485327752424240757390324032125740557956866022603 190417032406235
20. DIVR p q Division enti re de deux r els Exemple Lorsqu un des arguments au moins est flottant le reste de la division positif modr ou sign mods est un flottant Par contre le quotient divr est toujours un entier w 10 print divr 12 pi modr 12 pi mods 12 pi Sortie 160 ms 3 0 2575222039 E 1 0 5663706144 PPWR p k Symbole de Pochhammer p Le premier argument p peut tre flottant r el ou complexe Exemple Calcule une valeur approch e de factorielle 1000 print ppwr 1000 1000 Sortie 1920 ms 0 4023872601 E 2568 Noter que ce calcul est plus rapide que le calcul et la transformation en flottant de l entier ppwr 1000 qui s crit avec 2568 chiffres print float ppwr 1000 Sortie 5930 ms 0 4023872601 E 2568 V_fonctions approch es Les V_fonctions approch es acceptent que les arguments soient donn s sous forme exacte mais le temps de calcul est alors plus long car il y a d abord conversion en flottant FLOAT p 340 Chapitre 15 Calculs approch s FLOAT p q V_fonction Conversion en flottant P q nombres r els ou complexes La conversion d exact en flottant est effectu e la pr cision courante La forme float p q renvoie le nombre complexe flottant p iq i d signant le litt ral complexe Elle permet la conversion en complexe puisque m me lorsque sa partie imaginaire est nulle la valeur renvoy e est un nombre complexe de type 2 La forme float p renvoie un n
21. J J LABARTHE ATARI ST MANUEL DE REFERENCE LOGICIEL BASIC 000D ATARI ST MANUEL DE REFERENCE Jean Jacques LABARTHE Laboratoire Aim Cotton Universit de Paris XI 1990 Q OO N e Table des mati res Pr sentation du Basic 1000d 1 Visite rapide du Basic 1000d 9 La fen tre Edit Source 19 La fen tre Basic 1000d 27 La fen tre Help 33 Autres menus de l diteur 39 Organisation des disques Commandes disques menu FILES Utilitaires menu TOOLS Aides menu HELPS Imprimer la source menu PRINTER Chercher et changer menu FND CHG Ex cution des programmes 49 Mise au point des programmes 53 Notions de base 71 Les noms Les nombres Sa Les nombres flottants r els Les nombres complexes Sortie des nombres Calculs en flottant 5 Index lit var et char types de noma Formes exactes Forme factoris e ou d velopp e Temps de calculs alg briques Calcul des expressions S E Test des expressions math matiques Calcul des cha nes de caract res Les v_ et c_ ensembles Les t_ensembles Assignation Assignation par Read et Dita 40 41 43 45 46 46 10 Entr e Sortie 119 Sorties cran et imprimante 120 Damiers Menus et Ev nements 137 Entr e clavier 150 Sortie de sons s e 1
22. Le a a Da om Le ee a J1 j2 J3 ua6 1 r y ki 1 A x 4 qua6j j1 j2 ja Ja Js Je t n a j j2 j3 qua9j j1 j2 j3 Ja J5 Je J7 J8 Jo a Ja Js Je J7 J8 J9 Les proc dures qua3jp qua6jp et qua9jp crivent les valeurs des coef ficients 3j 6j et 9j Exemple Calcule les valeurs 75 7T 11 4 2 6 V2 x3 x 17 x 19 2 5 2 7 2 z 13 1 3 2 3 3 2x7 V2x3x5 2 2 2 o0 3 2 3 2 3 2 1 13 2 os Of FxnV2xs 3 2 1 i o qua3jp 7 5 7 4 2 6 qua6jp 2 5 2 7 2 3 2 3 3 qua6jp 2 2 2 3 2 3 2 3 2 qua9jp 5 3 4 2 4 3 3 2 1 Sortie 4640 ms 3j 7 5 7 4 2 6 2 1 2 3 1 2 x 11 1 2 x 17 1 2 x 19 1 2 0 7533893145 E 1 6j 2 5 2 7 2 3 2 3 3 2 5 2 x 37 1 2 5 1 2 x 7 1 13 0 8476658628 E 1 6j 2 2 2 3 2 3 2 3 2 0 9j 5 3 4 2 4 332 1 27 C 1 2 37 2 x 57 1 2 x 7 2 x 137 1 2 0 2585431803 E 2 370 Chapitre 16 Biblioth que Math matique Int gration alg brique La fonction interne du Basic intg ne peut int grer que les fractions dont le d nominateur se factorise en polyn mes de degr 1 Voici des proc dures et fonctions qui permettent l int gration toute fraction rationnelle L int grale F d une fraction rationnelle f quelconque est la somme d une fraction rationnelle r et d une combinaison lin aire S de logarithmes li Les y sont des nombres alg briques et le polyn me b est rationnel en y Les y seront d finis comme tant les z ros d
23. Le symbole a Z d signe la s paration entre 2 lignes de la source octet nul Le symbole a F d signe n importe quelle cha ne ventuellement vide incluse dans une ligne source don n e a F doit tre pr c d et suivi d un caract re diff rent de a F Si la cha ne S se termine par des espaces entrer la cha ne entre deux guillemets Exemple Si la source contient les deux lignes W MO X PRINT MOD X 60 1 X 41 1 X la cha ne fMOf MO pr c d et suivi de s parateurs se trouve seulement dans la premi re ligne La cha ne fWi iMOD se trouve aussi dans cet exemple DEFINE T F2 Permet de d finir la cha ne T avec les m mes r gles que pour la cha ne S EXG F3 Permet d changer les cha nes S et T Seulement le contenu des cha nes S et T est red fini aucune modification n intervenant dans la source Il est parfois possible d annuler un changement intempestif de S en T simplement en r p tant l ordre de changement apr s avoir permut les cha nes S et T WHERE F4 La recherche ou changement peut tre effectu e dans toute la source ALL ou seulement dans le bloc A B REPEAT F5 La recherche ou changement continue Y ou non N apr s la premi re occurrence DISTINGO F6 La recherche ou changement fait la distinction Y ou non N entre les majuscules et minuscules HOLD F7 La recherche ou changement s arr te Y ou non N apr s impression d une page d occu
24. N 2 p 1 Mp TEMPS timer p p 1 loop 502 Bibliographie E H Bareiss Sylvester Identity and Multistep Integer preserving Gaussian Elim ination Math Comp 22 1968 565 L Besle Au C ur de l Atari ST Eyrolles 1986 J Brillhart amp M A Morrison Method of Factoring and the Factorisation of F7 Math Comp 29 1975 183 B Buchberger G E Collins amp R Loos diteurs Computer Algebra Springer Verlag 1982 J Davenport Y Siret amp E Tournier Calcul Formel Masson 1987 R W Gosper Proc Nat Acad Sci USA 75 1978 40 A P Jucys amp A A Bandzaitis Teoriia Momenta Kolichesttva Dvizheniia v Kvan tovoi Mekhanike Vilnius 1965 D E Knuth The Art of Computer Programming Addison Wesley 1981 vol 2 N Koblitz A Course in Number Theory and Cryptography Springer Verlag 1987 H W Lenstra Jr Factoring Integers with Elliptic Curves Ann Math 126 1987 649 J A Nelder amp R Mead Computer J 7 1965 308 J M Pollard A Monte Carlo Method for Factorisation BIT 15 1975 331 H Rademacher On the Partition Function p n Proc London Math Soc 43 1937 241 D Slowinski J Recreational Mathematics 11 1979 258 G Szczepanowski Le Livre du GEM Micro Application 1985 503 Un mot de l index ne se trouve pas n cessairement dans les pages r f renc es Par exemple le mot scrolling renvoie la page d crivant cursh o on parle d impression qui d file mais pas de scrolling On trouvera l entr e
25. Proc dure Evalue l expr x expr La proc dure void value l expr x mais le r sultat est perdu 482 Chapitre 20 Biblioth que STND Instructions rebaptis es La table suivante donne des sous programmes quivalents des fonctions et commandes du Basic 1000d fonctions vdibase peek x dpeek x 1peek x proc dures edit resume label swap x y vdisys n gemsys n poke x y spoke z y dpoke x y sdpoke x y lpoke z y slpoke x y Basic 1000d himem peekb x peekw x peekls x Basic 10004 stop goto label exg x y vdin aes n pokeb x y pokeb z y pokew x y pokew z y pokel x y pokel z y C ur du Basic 1000d CAN le a 1 El e Jj AS Ka 484 Chapitre 21 C ur du Basic 1000d Ce chapitre est destin aux futurs experts en Basic 1000d De nom breux renseignements sur le code du Basic sont donn s ici Les fonctions d crites acc dent l int rieur du Basic Codages m moire Codage des nombres exacts Un entier positif m lt 215 est cod sur un mot avec biti4 1 Un entier m gt 213 m 655361 65536 est cod sur k 1 mots Le premier mot contient 2k qui doit tre inf rieur 21 et les k mots suivants contiennent m en commen ant par le mot le plus significatif Une fraction m n avec n 1 est cod e par les deux entiers mis la suite m puis n avec biti3 1 dans le premier mot Dans le premier mot galement bit15 1 indique un nombre n
26. S aer oanrnmrnrenernrrnenewv u SAC Eee 0 06 Ce g g396 g398 g400 g402 g404 g406 g408 g295 g410 g412 b b200 b201 b201 b202 b202 b202 b203 b203 b204 b204 b205 b205 b206 b206 b207 b207 b208 b208 b209 b209 b210 b210 b211 b211 b211 b212 b212 b213 b213 Chapitre 19 Appels syst me 455 menu_bar menu_icheck menu_ienable menu_tnormal menu_texte menu_register objc_add objc_delete objc_draw objc_find objc_offset objc_order objc_edit objc_change form_do form_dial form_alert form_error form_center form_keybd form_button graf_rubberbox graf_dragbox graf_movebox graf_growbox graf_shrinkbox graf_watchbox graf_slidebox graf_handle graf_mouse graf_mkstate 456 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 120 121 122 123 124 125 V X OO OR ND OO NH HO OC V e ND ND V oorr Chapitre 19 Appels syst me divers S DO fen tres S onrernrrenrererhne u 1 w Ne u Lee g g309 g311 g312 g313 g302 g314 g317 g318 g320 ressources S r e Ha u g g370 g371 g372 8374 b225 b226 b225 b214 b215 b219 b219 b215 b216 b217 b218 b218 b b220 b221 b220 b221 b221 communications S e e u vereren g b b222 b222 b223 b224 b223 b223 scrp_read scrp_write fsel_input fsel_exinput
27. cran ellipse 200 250 200 100 c screen cursh 0 cls ift keyget rscreen c ift keyget Chapitre 10 Entr e Sortie 137 Damiers Menus et Ev nements CHECKER vircha ne Commande Ecriture d un damier Basic 1000d La commande checker permet d crire des damiers en haut de page la fa on des menus et sous menus de l diteur Cette criture ne modifie pas la position du curseur Pour prot ger un damier de h lignes contre le d filement de l cran on utilisera cursh h L argument de la commande est une cha ne form e d unit s dont le r le est d termin par le premier caract re s toujours obtenu par Alt lettre Voici les 3 unit s qui permettent de remplir une case du damier s type exemple 8 4 o a M oMaJusCL MAJUSCL MJCL al O OrDiNalRE Ordinair Odni 6 a T 6TelQuel TelQuel TelQ et les unit s suppl mentaires s type effet exemple a C Centrage titre gt a V Change vid o gt a al L Change de ligne a Une case occupe 8 ou 4 si resolution caract res et checker ne va pas crire plus de caract res pour chacune des cases Les colonnes 8 et 4 indiquent ce qui est affich suivant la r solution L unit a M est crite en majuscules a O en minuscules sauf la premi re lettre majuscule et a T est crite sans conversion Dans la r solution 0 pour a M et a O les lettres minuscules ne sont pas sorties Les espaces sont significatifs Avant l criture de la
28. crit sur les cases F21 et F22 du damier 22 Chapitre 3 La fen tre Edit Source Utilisation de la souris Cliquer le bouton gauche de la souris sur le damier ou utiliser les touches F1 F40 pour les actions du menu Cliquer le bouton droit pour lister partir de la ligne Cliquer le bouton gauche dans la page pour d placer le curseur D placer la souris bouton gauche appuy pour d finir le bloc Ecriture Mode d criture Insert ou Overwr F30 et s Ins Ce mode est lisible et modifiable sur la case F30 du damier Il est galement donn par la fr quence de clignotement du curseur qui est plus rapide en mode Overwr Il est aussi modifiable par appui sur s Insert Il conditionne la fa on d crire sur l cran soit par insertion sous le curseur ou par criture sur le curseur Caract res exotiques On peut crire le symbole de code Atari 93 147 en tapant 147 ou H93 chiffres du clavier num rique tout en maintenant Alternate enfonc Cette m thode est accept e pour tous les codes Atari sauf 0 D autres codes s obtiennent par Alternate lettre La table de ces codes Atari est donn e par la commande ASCII F4 du menu HELPS F3 Noter que l insertion dans la source des codes 25 26 qui contr lent le d but et la fin de la source et 13 est interdite et celle des codes 1 10 est tr s d conseill e Les codes 1 10 pr sentent l inconv nient de ne pouvoir tre recherch s d
29. est pas un polyn me suivant les autres litt raux Exemple L identit suivante Identit de Bezout est v rifi e AxU BxV P A 17 x 3 x 4 1 B 17 gt x 3 3 x 3 5 P gcd A B U inv A B V inv B A print P print U print V print AxU BxV P Sortie 415 ms 17 x 51 225 706 x 2 135 706 x 81 706 75 706 x 3 45 706 x 2 27 706 x 125 706 0 310 Chapitre 13 Calculs exacts Exemple La fonction inv permet de travailler avec les nombres alg briques Sup posons que a et b soient des nombres alg briques d finis par les quations a a 1 0 b b a 0 Toute expression rationnelle en a et b peut se simplifier en un polyn me de degr 1 en a ou b Proposons nous le probl me de simplifier ainsi l inverse de b a 1 Le calcul suivant print inv b a 1 b 2 b a b Sortie 125 ms a 2 2xa 2 1 b a 2 montre que 1 b a 2 b a il a 2a 2 On montre ensuite que l inverse de a 2a 2 est a par print inv a 2 2 xa 2 a 2 a 1 Sortie 55 ms a Nous regroupons ces r sultats en simplifiant l aide de mod z mod al b a 2 a 2 a 1 print z Sortie 40 ms a b a 1 Nous avons ainsi montr que les nombres ab a 1 et b a 1 sont inverses On peut le v rifier en simplifiant leur produit z mod a b a 1 b a 1 b 2 b a b z mod z a 2 a 1 print z Sortie 55 ms 1 D corticage POLYN p Chapitre 13 Calculs exacts 311 NORM q V_fonctions Premier co
30. k V_fonction Meilleure fraction approch e P expr exacte ou nombre flottant Chapitre 13 Calculs exacts 277 k entier gt 0 par d faut k precision Si p est r el la fonction appr renvoie la fraction rationnelle f la plus simple possible qui soit une approximation mieux que 27 de p p f lt 27 La m thode consiste d velopper p en fraction continue jusqu la pr cision voulue Dans le cas o p est un polyn me d velopp cette approximation est effectu e sur tous les coefficients du polyn me Dans le cas o p est une expression factoris e cette approximation est effectu e sur le facteur num rique factorp p 1 les autres nombres dans p sont entiers et ne changent pas En g n ral si p est factoris appr p et appr formd p diff rent Exemple Calcul des convergents de m Cet exemple montre aussi la diff rence entre exact et appr precision 20 print pi pi est repr sent par a exact pi format 5 forv i in 1 3 10 14 22 31 w appr pi i print just1 appr pi amp just1 i 2 amp amp 30 erreur abs w pi nextv Sortie 875 ms pi 0 31415926535897932385 E 1 est repr sent par 124451306656115542615260972311 39614081257132168796771975168 appr pi i 3 erreur 0 1416 appr pi 3 22 7 erreur 0 1264 E 2 appr pi 10 333 106 erreur 0 8322 E 4 appr pi 14 355 113 erreur 0 2668 E 6 appr pi 22 103993 33102 erreur 0 5779 E 9 appr pi 31 104348 33215
31. l ments d un tableau Les tableaux peuvent avoir un nombre quelconque d indices et tre de types var char ou index size avec size 8 16 ou 32 La donn e des l ments du tableau se fait par le premier l ment le nombre d l ments N et un pas p un entier positif nul ou n gatif Par exemple T 2 7 1 d signe les 7 l ments T 2 T 3 T 8 et var TA 2 8 TA O 0 8 3 d signe les 8 l ments TA 0 0 TA 0 1 TA 0 7 le pas tant gal 3 les l ments TA 1 i TA 2 i sont saut s La forme TA 2 8 27 1 d signe tous les 27 l ments du m me tableau dans l ordre inverse et 214 Chapitre 11 Programmation TA O 0 10 0 repr sente 10 fois l l ment TA 0 0 COPY S k N p D j q Commande Copie de N l ments de S vers D N entier N gt 0 nombre d l ments copier S k premier l ment copier P pas entre les l ments copier D j premier l ment du tableau destination q pas entre les l ments destination Par exemple var D 10 index S 100 copy S 2 10 5 D 1 1 o la commande copy effectue la boucle suivante mais plus vite for i 1 10 D i S 2 i 1 5 next i La copie est faite un l ment apr s l autre en suivant le m me ordre que dans la boucle for Cette particularit permet des effets int ressants lorsque les tableaux source et destination sont identiques On peut ainsi effacer un l ment et d caler d
32. lenstra M thode H W Lenstra 1987 La proc dure lenstra peut tre utilis e avec un deuxi me argument p lt yw Dans ce cas la m thode recherche plus intens ment les facteurs premiers inf rieurs p Le troisi me argument a correspond la courbe elliptique y 354 Chapitre 16 Biblioth que Math matique x3 ax a utilis e Si la courbe ne donne pas de factorisation la recherche d une factorisation est continu e apr s incr mentation de a Exemple Le programme suivant factorise ou du moins essaie de factoriser les divers entiers qui ont servi dresser la table de comparaison des m thodes de factorisations facti prime 10 5 xprime 10 9 facti prime 10 6 xprime 10 10 facti prime 10 7 xprime 10 11 facti prime 10 8 prime 10712 fact1 2 67 1 fact1 prime 10 9 prime 10 13 facti prime 10 10 prime 10 14 facti prime 10 11 prime 10715 fact1 prime 10 12 prime 10716 stop facti procedure x print len just1 x clear timer lenstra x intsqr x 2500 print timer timer s return chiffres Alg bre lin aire sleq f z vz m Proc dure R solution d un syst me lin aire m 1 quations et incon nues entier m gt 0 Les z i pour i 0 1 m doivent tre des litt raux les inconnues Il s agit comme toujours de litt raux au sens g n ralis et pas seulement d un tableau de type lit Par exemple le nom z suivant convient var z m
33. print CMP1 conc i 1 14 of ffff amp S P i sort S 1 14 1 P 1 0 CMPL print CMPL conc i 1 14 of ffff amp S P i stop CMPL function char x y value sgn len upper1 y len upper1 x ift value return value cmpi x y return Sortie 1665 ms CMP Avoir Et ocle de et c tera l odeur offre saintet sur t t s tes il dipe CMP1 Avoir de et c tera t Et ocle t s tes 1 odeur dipe il offre saintet sur CMPL l de t sur t s tes il Avoir odeur offre dipe Et ocle saintet et c tera PERMUTE S k N p P j Commande Permute N l ments de S Les arguments de la commande permute sont identiques ceux de la commande sort mais les N l ments partir de P j doivent maintenant tre une permutation des entiers de 1 N qui indique l ordre de r arrangement effectuer Une commande permute effectu e apr s une commande sort permet de ranger un tableau dans l ordre croissant Exemple En utilisant mid le tableau S est rempli avec les caract res de Basic 1000d puis ces caract res sont tri s par sort et ordonn s par permute Le tableau auxiliaire P contient une permutation des nombres 1 11 char S 10 218 Chapitre 11 Programmation index P 10 for i 0 10 S i mid Basic 1000d i 1 1 next i sort S 0 11 1 P 0 permute S 0 11 1 P 0 print conc i 0 10 of S i Sortie 150 ms 0001Bacdis SEARCH S k N p P j fcmp V_fonctio
34. un cran vers le d but toutes les valeurs du tableau apr s l l ment On peut au contraire d caler d un cran vers la fin toutes les valeurs du tableau apr s un l ment ce qui permet d ins rer une nouvelle valeur dans le tableau Ces possibilit s sont mises en uvre dans l exemple suivant Exemple Les dix l ments du tableau modifi par copy sont affich s apr s chaque modification index S 9 D 9 for i 0 9 S i 9 i next i copy S 0 10 1 D 0 1 print copy conc i 0 9 of D i copy D 9 10 1 S 0 1 print inverse conc i 0 9 of S i Chapitre 11 Programmation 215 copy S 3 7 1 S 2 1 print te S 2 conc i 0 9 of S i copy S 8 7 1 S 9 1 S 2 0 print ins re S 2 conc i 0 9 of S i copy S 0 8 1 S 2 1 print r p te 0 1 conc i 0 9 of S i Sortie 465 ms copy 9 8 7 6 5 4 3 2 10 inverse 0 1 2 3 4 5 6 7 8 9 te S 2 0 1 3 4 5 6 7 8 9 9 ins re S 2 0 1 0 3 4 5 6 7 8 9 r p te 0 1 O 1 O 1 O 1 O 1 O0 1 Remarquer que la commande copy S 9 10 1 S 0 1 ne peut pas tre utilis e pour l inversion du tableau SORT S k N p P D femp Commande Tri de N l ments de S N entier N gt 1 nombre d l ments trier S k premier l ment trier P pas entre les l ments trier P j premier l ment dans un tableau d index 32 D entier D 0 N 1 d faut D 0 nombre d l ments d j tri s fcmp fonctio
35. une station de travail a0 Num ro du p riph rique d fini dans le fichier ASSIGN SYS du GDOS ao 1 10 Moniteurs 11 20 Tables tra antes 21 30 Imprimantes 31 40 Fichiers metafile A1 50 Plaques photographiques 51 60 Tablettes graphiques al a9 Ces donn es initialisent ce qui correspond dans la station de travail aux variables d tat suivantes du Basic ai l_type type de ligne a2 l_color couleur de ligne az m_type type de marqueur aa m_color couleur de marqueur as t_font fonte ag t_color couleur du texte az f_type type du style de remplissage ag f_style index du style de remplissage ag f_color couleur de remplissage a10 Indique le syst me de coordonn es 0 Normalis 2 en pixels Ces syst mes sont aussi connus sous les noms NDC normalised device coordi nates et RC raster coordinates La fonction v_opnwk ouvre une station de travail et renvoie l identificateur de cette station Elle utilise vdi 1 La fonction v_opnvwk qui utilise vdi 100 doit tre utilis e au lieu de v_opnwk pour les p riph riques cran On peut omet tre des arguments Les arguments a i 1 9 sont alors initialis s 1 et a10 2 par d faut Remarquer dans le code de ces fonctions que l identificateur de l application peekw systab 16 1 normalement doit tre mis dans con tr1 6 avant l appel vdi En sortie les tableaux intout et ptsout contiennent des informations sur le p riph rique
36. z 0 x z 1 y Chapitre 16 Biblioth que Math matique 355 etc o x y sont de type lit f Les m 1 quations sont donn es par f i 0 pour i 0 1 m Par exemple pour r soudre T y 3 z 7y 9 on initialisera un tableau f par var f 1 f 0 x y 3 f 1 x 7 y 9 vZ Le nom vz doit tre un tableau de variables d fini par M gt m var vz M La proc dure sleq renvoie dans le tableau vz la solution du syst me d quations La valeur de l inconnue z i est donn e par vz i pour i 0 1 m La proc dure n admet que les syst mes ayant une solution et une seule Pour des syst mes lin aires singuliers utiliser les programmes de r solution g n raux sgeq sgeqd et sgeqe Les coefficients des quations ne sont pas limit s aux nombres ils peuvent contenir des litt raux Ne pas utiliser de noms commen ant par sleq pour arguments de sleq sinon il peut y avoir des conflits avec les variables locales de la proc dure M thode R solution exacte par limination en utilisant la fonction interne du Basic elim Exemple R solution en z i 0 3 du syst me d quations lin aires b 1 z1 22 23 a 3b 3 229 323 10 429 9z3 1620 48 822 2723 6420 164 lit z 3 var f 3 vz 3 f 0 z 3 b z 3 z 2 xb z 2 z 1 b z 1 a 3 b 3 1 3 xz 3 2 xz 2 10 f 2 9 z 3 4xz 2 16 z 0 48 f 3 27 z 3 8 z 2 64 z 0 164 sleq f z vz 3
37. 1 i complex i print root 2 i 2 Sortie 40 ms 0 Si plusieurs commandes complex i sont ex cut es seule la derni re est valable les litt raux complexes ant rieurs redeviennent des litt raux ordinaires Apr s complex 0 ou complex phantom qui lui est quivalent l ancien litt ral complexe redevient un litt ral ordinaire Les fonctions complexes d crites ci dessous exigent que le litt ral com plexe soit d fini Chapitre 14 Calculs conditionnels Nombres complexes 333 FORMC w V_fonction Forme complexe standard CC w V_fonction Conjugu complexe RE w IM w V_fonction Parties r elle et imaginaire CXNORM w V_fonction Norme expr Lorsque w est une expr exacte ces fonctions renvoient aussi une forme exacte La fonction formc regroupe tous les facteurs contenant le litt ral complexe i pour fixer les id es et renvoie une expression gale w de la forme A iB C o A et B sont des polyn mes C une expression factoris e et o ni ni B ni C ne contiennent i Si forme renvoie la forme ci dessus les fonctions cc re im et cxnorm renvoient respectivement le nombre complexe conjugu A iB C la partie r elle AC la partie imaginaire BC et la norme A B C Dans ces calculs B et C sont donc interpr t s comme tant r els Lorsque w est un flottant les fonctions formc et cc renvoient un flottant complexe de type 2 m me si im w 0 et les fonctions re im et cxnorm renvoien
38. 1 2xd 1 et de pente a 2 1 a c 4 h 7 C est la droite d quation a 2 2 axx 14 a 2xbxd 4 xb c 2 8 c h 2 cxx 16 h 2 8 hxx d 72 2 d y 14 x 4 y 53 0 interd ax ay az bx by bz cx cy cz dx dy dz X y Z Proc dure Intersection M des droites AB et CD Il faut A B et C D en entr e de la proc dure interd Dans le cas o les droites sont parall les M est le point l infini sur ces droites centrec ax ay az bx by bZ CX CY CZ X y Z Proc dure Centre M du cercle circonscrit au triangle ABC Il faut trois points distincts A B C en entr e de la proc dure centrec dist2 ax ay az bx by bz n d Proc dure Calcule le carr de la distance AB La proc dure dist2 renvoie les polyn mes premiers entre eux n et d tels que AB n d Exemple Rayon d un cercle var X y Z print Le carr du rayon du cercle passant par les poin ts 3 2 a 5 et 7 a est centrec 3 2 1 a 5 1 7 a 1 x y z dist2 3 2 1 x y Z x y print formf x y Sortie 2840 ms Le carr du rayon du cercle passant par les points 3 2 a 5 et 7 a est 1 2 x a 6 2 a 1 2 a 2 12 xa 37 x a 2 6 xa 18 x a 2 4x a 20 projorth ax ay az bx by bz CX Cy CZ x y Z Proc dure Projection orthogonale M de C sur la droite AB Il faut AZB en entr e de la proc dure projorth aligne ax ay az bx by bz cx cy cz V_fonction Teste l alignement La fonction aligne renvoie une expression nulle lors
39. 3 cas pour x Cas 1 pour x x est un z ro de x 5 2 Cas 2 pour x x 1 1989 Cas 3 pour x x 3 b 1 1 Chapitre 16 Biblioth que Math matique Exemple R solution en x et y du syst me d quations x y l r ay Sar var eq 1 z 1 eq 0 x y 1 eq 1 x 3 a 2 y 1 z 0 x z 1 y c sgeq 1 1 eq z Sortie 1870 ms 3 cas pour x Cas 1 pour x x 0 y Cas 2 pour x x a y a 1 Cas 3 pour x x a y a 1 Exemple R solution en x et y du syst me d quations 2x ry 3x y 3y 0 Dry 7x 3y Ty 0 c sgeqge 1 1 2 xx 72 x y 3 x y 2 3xy x 3 y 2 7 y x y Sortie 1885 ms R solution en x y du syst me 2 x 2 x y 3 x y 2 3 y 0 X 2 2 x y 7 x 3 y 2 7 y 0 Solution Facteur commun F1 1 a Cas F1 lt gt 0 x 2 5 y 11 5 1 b Cas F1 0 L inconnue Va EX y x est arbitraire 361 X72 2 x y 7 362 Chapitre 16 Biblioth que Math matique Exemple Si on d sire trouver quelles conditions sur des litt raux suppl mentaires il peut y avoir des solutions il faut galement d clarer certains de ces litt raux comme inconnues Les relations recherch es apparaissent comme des solutions Dans cet exemple on montre comment trouver la condition sur a b et c pour que l quation w ax bz c 0 ait une racine double On r sout le syst me w 0 dw S en b et x La condition recherch e 4ac b 0 appara t comme solution
40. 45 dition 13 31 38 efface biblioth que 37 conditions 330 donn es clear cran 125 6 fen tre 475 fichier 42 166 help 37 source 30 44 241 2 station VDI 472 tableau 214 478 eight 77 elcha ne 107 lectronique 392 l ment de matrice 290 local 264 simple 298 322 element 113 elementn 113 elementv 113 elementy 113 elim 303 355 359 393 491 limination 303 elim quation ellipse 414 elocal 263 4 else if else if if mulateur 7 458 VT52 129 131 509 end end 50 52 56 62 243 248 endif if endselect select enregistrement 181 ensemble 109 15 entier 76 9 105 6 234 484 de Gauss 335 6 16 105 32 105 entr e clavier 150 3 des nombres 78 n du menu 141 eof 62 165 173 178 Epson 46 125 132 quation 4 5 17 98 290 1 303 348 354 6 359 62 385 7 392 modulaire 350 eqv 100 461 era 245 erf 382 erl 245 err 245 err 245 erreur 14 5 32 50 52 59 70 244 6 dans main 257 arguments de fonction 72 comparaison 329 d veloppement en x k 288 domaine de d finition 80 EOL 178 fatale 230 gemdos 33 167 hors du tableau 182 index adresse 58 instruction ill gale 15 108 185 216 int gration 297 local 265 6 mauvaise imbrication 200 m moire 393 493 nombre complexe 100 non entier 272 316 510 non rationnel 334 return sans appel 264 s_pro trop petit 253 4 s_xqt trop petit 260 trop de donn es 267 valeur apr s 257 error 245 escape 25 131 eset
41. 6 timer 1 Nombres de Bernoulli Bi 1 6 B2 1 30 B3 1 42 gammap a x gammap a x Fonctions Gamma incompl tes a x r els a gt 0 x gt 0 382 Chapitre 16 Biblioth que Math matique La forme gammap a x calcule la fonction P a x zzl et dt Pour a donn P a x cro t de 0 1 lorsque x varie de 0 co La forme gammap a x o le troisi me argument est arbitraire renvoie 1 P a x Comme pour la fonction gamma la pr cision est limit e 166 chiffres M thode Pour x lt min 8 a la fonction est calcul e par le d veloppement en s rie de la fonction hyperg om trique F partir de P a x e x F l a 1 x T a 1 Sinon le d veloppement en fraction continue suivant est utilis 1 1 P a x l a e x 1 a z T i i 2 a 2 1 T edy Exemple monochrome Le programme trace la courbe y P 4 x en 35 s axis 50 370 0 399 639 64 60 280 x P 4 x fplot 0 10 3 50 370 60 280 float gammapy stop gammapy function x value gammap 4 x return erf x Fonction d erreur phistar x Fonction de r partition normale r el La fonction erf calcule l int grale 2 e e dt VT Jo et la fonction phistar calcule D x e t dt Chapitre 16 Biblioth que Math matique 383 M thode Ces fonctions sont calcul es l aide de la fonction gammap par exemple erf x est donn par P 1 2 x Exemple L
42. F9 cela fait revenir le d bogueur sur la ligne o vous l aviez interrompu et permet de poursuivre l ex cution du programme Appuyer sur Return le d bogueur se place sur la ligne w wW 2 Cliquer Fois Case F7 ou touche F puis entrer 3 CR et CR Cela lance l ex cution jusqu ce que le programme trouve trois fois la m me ligne Pour voir l cran du programme appuyez sur E ou F6 Pour revenir au d bogueur appuyez sur K ou F10 Cliquer Cycl Case F8 ou touche H Cela lance lex cution jusqu ce que le programme revienne sur la m me ligne Cliquer Loop xit Case F20 ou touche L Cela lance l ex cution jusqu la sortie de la boucle Chapitre 2 Visite rapide du Basic 10004 17 Parmi les fonctions de d bogage non pr sent es ici notons la case Rts qui permet de revenir d un sous programme et la possibilit de programmer en Basic 1000d le d bogueur par exemple pour imprimer certaines variables dans la fen tre DEBUG ou pour ex cuter jusqu ce qu une condition devienne vraie Biblioth ques En outre de la source Basic 1000d dispose d une deuxi me zone m moire pouvant contenir des programmes en Basic 1000d c est la biblioth que Library Chargez la biblioth que Math en s lectionnant la case Merge l ou Load l du menu FILES ou LBR HLP puis sp cifier le fichier math z Ouvrir la fen tre Edit Source la biblioth que est invisible Pourtant tous ses programmes sont utilisables
43. NT 1 print 1 stop NT procedure x push tilde notilde print x tilde pop return Chapitre 9 Notions de base 83 Sortie 100 ms 0 1000000000 E 1 0 1000000000 E 1 0 1000000000 E 1 FORMATX k Variable d tat Format d criture des nombres exacts k entier 16 On peut choisir le format d criture des nombres exacts par la commande formatx k o k est une expression prenant une valeur enti re dans 215 215 Si k 0 la sortie se fait sous la forme exacte m n Si k gt 0 la sortie se fait sous forme fixe avec k 1 chiffres apr s le point d cimal Tous les chiffres crits sont exacts mais s ils ne suffisent pas pour repr senter la valeur exacte du nombre le dernier chiffre est arrondi et suivi de Si k lt 0 la sortie est sous forme exponentielle a E b o a est donn avec k 1 chiffres apr s le point Dans ce cas le format d pend de plus des variables d tat formatl et formatm Le mot clef formatx est une variable d tat et peut tre utilis dans des expressions Exemple print FORMATX for i 15 15 5 formatx 0 print justr i 5 formatx i print justr formatx 27 justr 1000 7 30 next i Sortie 650 ms FORMATX 15 0 15000000000000 E 2 0 14285714285714 E 3 10 0 100000000 E 2 0 142857143 E 3 5 0 5000 E 1 0 1429 E 3 0 0 1000 7 5 5 0000 142 8571 10 10 000000000 142 857142857 15 15 00000000000000 142 85714285714286 FORMAT k Variable d tat Format d
44. appel des proc dures Les coorpoly sorties sont r duites 376 Chapitre 16 Biblioth que Math matique coorpoly X Y x y Z Proc dure Coorpoly r duites du point M X Y expr coordonn es de M entr e La proc dure coorpoly d termine les coorpoly r duites du point M Exemple var x Z print On peut prendre pour coorpoly de a 1 1 b coorpoly a i 1 b x y z print x x print y y print z z Sortie 630 ms On peut prendre pour coorpoly de a 1 1 b x a b y b 1 z D droite ax ay az bx by bz x y Z Proc dure Point M dual de la droite AB milieu ax ay az bx by bz x y Z Proc dure Milieu M du segment AB perpinf ax ay az bx by bz x y Z Proc dure Point linfini M dans la direction perpendiculaire AB Pour les proc dures droite milieu et perpinf il faut en entr e deux points distincts A B La sortie z de perpinf est 0 Exemple M diatrice var x0 y0 z0 x1 y1 z1 print La m diatrice de A a 7 b 2 B c h 4 b d est la droite passant par le milieu M de AB milieu a 7 b 2 1 c h x4 b d 1 x0 y0 z0 print x0 z0 gt y0 z0 gt print et de pente perpinf a 7 b 2 1 c hx4 b d 1 x1 y1 z1i print y1 x1 print C est la droite d quation droite x0 y0 z0 x1 y1 z1 x0 y0 z0 print x0 x y0 y z0 0 Sortie 1065 ms La m diatrice de A a 7 b 2 B c h x4 b d est la droite passant par le milieu M de AB Chapitre 16 Biblioth que Math matique 377 1 2 xa 1 2 xc 2 h 7 2 b
45. avec un nombre flottant complexe et x avec un nombre complexe exact complex i w 1 7 xi 2 3 x 1 3 i 4 y float 2 3 z float x print w print x print y print z Sortie 240 ms 0 6666666667 ix0 1428571429 1 4xi 1 3 0 2000000000 E 1 ix0 3000000000 E 1 0 3333333333 ix0 2500000000 Sortie des nombres Les nombres r els qu ils soient exacts ou flottants peuvent sortir dans divers formats On peut les sortir sous la forme d un nombre fractionnaire m n o m et n sont des entiers premiers entre eux Cette forme repr sente exactement le codage interne du nombre Pour un nombre flottant le d nominateur n est une puissance de 2 On peut sortir les nombres sous forme d cimale fixe Nous crivons d cimal mais ce mot doit tre chang en binaire octal etc suivant la valeur de la base On peut sortir les nombres sous forme exponentielle en imposant que l exposant soit un multiple d un entier m donn et en pr cisant le nombre de chiffres devant et apr s le point d cimal Le format d criture est r gl par les quatre variables d tat format formatx formatl et formatm On dispose de possibilit s de formatages sup pl mentaires par print using qui seront tudi es dans un chapitre ult rieur comme par exemple l insertion d espaces et ou virgules pour faciliter la lecture de grands nombres TILDE k 82 Chapitre 9 Notions de base NOTILDE k Variables d tat Pr sence ou Ab
46. chaque nouvel appel fld a AS c la AS i entier 32 gt 0 longueur du champ c nomi de type char nomi d index size Chaque fld fixe un champ de longueur a La somme des longueurs des champs de l enregistrement d un fichier R doit tre gale la longueur sp cifi e dans la commande open D criture field 1 4 as i field 1 12 as d quivaut field 1 4 as i 12 as d La sp cification a as c o c est un nomi de type char produit lors de l ex cution de la commande field une instruction implicite c space a qui remplit c avec a espaces Notons aussi que si c tait un nom inconnu il lui est attribu par la commande field le type char Lors de la commande put la longueur de chaque champ doit tre celle d finie par field sous peine de sortie erreur Il est donc recommand de modifier les variables de type char des champs seulement par les commandes 1set rset et midf La sp cification a as i o i est un nomi d index d finit le champ de a octets partir de l adresse ptr i Ce champ n est pas modifi lors de la commande field la diff rence des champs de type char Dans 182 Chapitre 10 Entr e Sortie index L 100 field 1 400 as L 1 le champ correspond aux index L 1 L 100 dont chacun occupe 4 octets Noter que la donn e field 1 401 as L 1 produit une erreur Hors Du Tableau Exemple On ouvre en acc s s lectif le fichier virtuel mem D Ch
47. crit ce titre en vid o normale appel de aes 33 MENU n x Commande Change l tat de l entr e n du menu entier 16 142 Chapitre 10 Entr e Sortie entier dans 0 3 effet efface la validation met la validation d sactive crit en gris active crit en normal D ND OH La commande menu n x utilise aes 31 x 0 1 ou aes 32 x 2 3 Elle modifie le titre correspondant l entr e n du menu suivant la valeur de x Elle quivaut aes 31 divr x 2 ob_id n modr x 2 menu 1 ON MENU Commande Attend un v nement La commande on menu doit tre pr c d e de commandes de la forme on menu lt type d v nement gt lt instruction gt qui sont d crites plus bas Ces commandes d finissent l v nement surveiller et sp cifient une instruction au sens g n ral du Basic 1000d Si l v nement surveill se produit lors de la commande d attente on menu il y a retour de la commande on menu et l instruction correspondant l v ne ment est ex cut e La dur e de l attente d v nements dans la commande on menu d pend de la commande suivante ON MENU TIMER n instr_ timer Commande Dur e d attente entier 32 instr_timer instruction en Basic La commande on menu timer sp cifie que la commande on menu doit attendre un v nement pendant n millisecondes Si un v nement se produit avant ce d lai il y a sortie de la commande on menu avant la fin du
48. devient Z lt Y lt X W 5 X Y Z 6 print polyln 1 polyln W for i 1 5 print polyl W i next i Sortie 105 ms 0 3 X YZ O O0 Exemple Le polyn me w est d velopp sous la forme w Am X 27 Am1 X 2 LH A x 27 et on montre comment obtenir les divers l ments m n A de cette d compo sition pour les deux choix possibles a et x du litt ral z w a 3 x 5 a 2 10 3 axx 5 9 x 2 for ia 1 polyln w z polyl w ia print Analyse en z print deg coefficient for ib ord w z deg w z print ib f coef w z ib next ib next ia Sortie 315 ms Analyse en a deg coefficient O 5 9 x 2 1 10 3 x 2 5 3 X Analyse en x deg coefficient O 5 xa 2 1 a 3 10 3 a Chapitre 13 Calculs exacts 313 2 5 9 POLYMN p POLYM p k V_fonctions Mon mes P poly k entier par d faut k 1 La fonction polymn p renvoie le nombre de mon mes m de p Ces m mon mes sont ordonn s suivant l ordre lexicographique d croissant des exposants C est aussi l ordre affich par print formd p Si k 1 m la fonction polym p k renvoie le k i me mon me de p Si k 1 m elle renvoie 0 Exemple On montre comment obtenir la d composition du polyn me w en somme de mon mes et pour chaque mon me comment extraire le coefficient les litt raux et leurs exposants w 5 a x 2 3 2 print D corticage de w print mon me coef litt raux et exposants for i 1 polymn w mono polym w i print mono
49. e la fin du RUN ferme ventuellement les fen tres Menu B_USER Le programme B_USER est un exemple de programmation des menus d roulants On l tudiera pour voir comment on peut retracer l cran apr s les d placements et fermetures d accessoires Les programmes suivants peuvent s appeler dans ces menus FORMATE Proc dure Formate les disquettes La proc dure formate offre un choix de formats CALENDRIER Proc dure Calendrier perp tuel La proc dure calendrier utilise les calendriers julien et gr gorien IMPORTER Proc dure Traduction La proc dure importer permet de traduire des programmes venant d autres Basics en Basic 1000d Elle est d crite plus en d tail dans la section suivante LIBRARYP Proc dure Affiche le nom de la biblioth que La proc dure libraryp est appel e lors du retour l diteur du menu B_USER Elle affiche la valeur des deux fonctions suivantes library et libraryv LIBRARY C_fonction Nom de la biblioth que LIBRARY V V_fonction Num ro de version de la biblioth que Traduction de programmes Cette section donne des indications sur la traduction en Basic 10004 partir d un autre dialecte Basic 460 Chapitre 20 Biblioth que STND Importer La proc dure IMPORTER accessible par le menu B_USER effectue des modifications sur un fichier contenant une source Basic en ASCII pour pr parer l adaptation au Basic 10004 Evidemment suivant le Basic d origine il vo
50. effacement 24 31 de message 147 tan 343 tangente 295 tanh 345 taylor 298 Tchebycheff 358 temps 238 de calcul 79 87 99 ten 78 terme 103 t te imprimante 124 TEX 38 text 420 texte graphique 419 20 445 470 then if ift tilde 81 243 time 74 239 425 timer 142 238 time_d 239 time_h 239 time_m 239 time_mo 239 time_n 239 time_s 239 time_y 239 titlew 475 titre imprimante 124 to for line token 487 TOOLS 43 5 touche 22 6 138 144 148 151 de fonction 10 TRACE 8 trac de courbe 378 80 408 traduction 459 62 transmission 211 tri 178 80 213 20 triangle 345 377 trigonom trique 109 343 4 364 6 trigop 365 trigox 365 troncation 203 true 478 trunc 478 two 77 typchr 489 type des caract res 489 des noms 73 type 73 typographie majuscule t_angle 418 t_color 418 t_ l ment 112 5 t_ensemble 111 5 t_font 419 448 472 t_height 242 418 473 t_type 418 440 undo 24 30 unip 317 until repeat upper 200 upper1 178 201 using 81 84 126 7 133 utilitaire 43 5 vadd 66 223 477 val 103 208 val 479 valeur absolue 278 334 338 valuation 286 value 249 252 254 348 491 var 91 93 264 267 variable 3 89 91 2 104 115 6 234 264 d tat 74 82 varn 488 489 varnum 223 271 488 vbs 125 171 176 7 vcolor 402 VDI 121 439 52 vdi 59 400 442 458 482 vdi 10 420 vdi 1 440 471 vdi 2 472 vdi 3 472 521 472 231 vdi 12 472 405 407 416 411 420
51. eqv et imp logic and logic or logic xor logic eqv logic imp stop logic print a b a Cif b for a 1 0 for b 1 0 print a b a C1if b next b a return Sortie 835 ms a b aandb 121 1 14 0 0 0 1 0 o o0 0 exprc expra expra comparateur expra expra IN v_ensemble 102 Chapitre 9 Notions de base expra NOT IN v_ensemble exprcha ne comparateur exprcha ne exprcha ne IN c_ensemble exprcha ne NOT IN c_ensemble Le r sultat d une comparaison de 2 expressions alg briques expra ou de 2 cha nes de caract res exprcha ne ou le r sultat d une relation d appartenance in ou de non appartenance not in prend la valeur 1 vrai ou 0 faux comparateur V ll Noter que lt et lt sont identiques ainsi que gt et gt Les compa raisons d galit et de non galit lt gt peuvent tre effectu es entre expressions quelconque les autres seulement entre nombres r els ou exprcha nes Le type entier 1 de valeur 0 ou 1 peut simuler le type logique qui n existe pas en Basic 1000d En effet le r sultat d une comparaison est un entier 1 Exemples La premi re expre prend la valeur 1 vraie si a gt 125 la deuxi me aussi si 7 lt a lt 12 a gt 125 a IN 7 12 a 2 12 NOT IN b1 1 145 2 ch tre ch IN a z A Z Les expressions c tant un v_ensemble et a une expression a not in c not a in c not a in c sont identi
52. est calcul e par le programme print der 1 axx b 12 x Sortie 2335 ms 12 al a x b 13 Voici quelques autres exemples des possibilit s du Basic 1000d Calcul de l int grale 2x 6x 5 J EEE EEE TN a 6x 13x 12x 4 print intg 2 x 2 6 x 5 x 4 6 x 3 13 x 2 12 x 4 Sortie 505 ms 2 x 3 x 2 1 x 1 7 1 D veloppement limit au 7 me ordre au voisinage de z ro de sin tan x print sin teg x str ssin taylor ssin x 7 scos x 7 7 7 x 5 Sortie 785 ms sin tg x 1 x 1 6 x 3 1 40 x 5 55 1008 xx 7 Calcul du d terminant d ordre 5 a b 1 4 1 5 1 6 c d 2 5 1 3 2 7 3 4 3 5 1 2 3 7 3 8 4 5 2 3 4 7 1 2 4 9 5 6 5 7 5 8 5 9 1 2 var MAT 5 5 for i 1 5 for j 1 5 MAT i j i i j next j next i MAT 1 1 a MAT 1 2 b MAT 2 1 c MAT 2 2 d print det MAT 5 Sortie 1985 ms 1 508032 xa xd 17 17287200 a 1 508032 bxc 29 22226400 b 29 4445280 Oxc 1 1058400 d 11 277830000 R solution du syst me d quations xr y 10 xy 16 Chapitre 1 Pr sentation du Basic 10004 5 Sa r solution s obtient en liminant y entre les deux quations puis en factorisant le polyn me obtenu La seule instruction suivante suffit print formf elim x y 10 x xy 16 y Sortie 195 ms x 8 1 x 2 De ce r sultat on tire de suite les solutions x 8 y 2 et x 2 y 8 Calculs en expressions complexes en imposant des conditions L exem ple suivant calcule
53. etc END L etc est incorrect car il manque le label L BREAKPOINT Commande Renvoie dans le d bogueur Si la commande breakpoint se trouve dans B_INIT ou B_TRACE la commande n est effective qu apr s le retour du sous programme Exemple Le d bogage commence ligne 2 apr s RUN breakpoint etc REM Commande Commentaire On peut utiliser le signe de code ASCII 27 au lieu de rem VERSION Variable d tat Num ro de version En tant que fonction version renvoie un entier positif qui cro tra avec les mises jour successives du Basic 1000d En tant que commande version permettra l mulation des versions pr c dentes du Basic 1000d Exemple La sortie indique que le Basic 1000d en est sa premi re version print Version version Sortie 20 ms Version 1 Traitement des erreurs et du Break ON ERROR GOTO label Chapitre 11 Programmation 245 ON ERROR STOP Commandes Traitement des erreurs ERR V_fonction Num ro d erreur ERL V_fonction Ligne de l erreur ERA V_fonction Adresse de la ligne de l erreur ERRS k C_fonction Message d erreur num ro k ERROR k Commande Simule l erreur k k entier 16 Les mots clefs goto et stop dans les commandes on error sont facultatifs et n en modifie pas le sens Apr s on error label une erreur provoque un goto label en modes Run ou Debug sans sortie du message d erreur Si une nouvelle erreur se produit elle provoque un arr t moins
54. exemple suivant Exemple Le programme montre les relations 2 cos x sin x cos x 1 sin x 5 cos x 5 2cos x 5 1 print trigop trigox 2 cos x 2 sin x 2 print trigop trigox sin x 5 4 cos x 5 4 2xcos x 5 72 Sortie 1465 ms cos x 2 1 1 dertrigo t x C_fonction D riv e d une expression trigonom trique litt ral v_ensemble d crivant l expression La fonction dertrigo d rive par rapport au litt ral x expression trigonom trique cod e par le v_ensemble t Elle renvoie le v_ensemble qui code la d riv e Exemple Le programme affiche la d riv e de x 2 sin 2x 1 puis des expressions entr es au clavier char c c sin 2 x 1 x x 2 do c trigox c print La d riv e en x de trigop c print est trigop dertrigo c x input Entrer une expression trigonom trique c loop Sortie exemple de dialogue La d riv e en x de sin 2 x 1 x 2 sin 2 x 1 est 2 cos 2 x 1 x 4 cos 2 x 1 sin 2 x 1 Entrer une expression trigonom trique cos x 2 1 La d riv e en x de cos x 2 1 est 2 xsin x 2 1 x Chapitre 16 Biblioth que Math matique 367 Alg bre de Racah La fonction quacg calcule la valeur exacte des coefficients de Clebsch Gordan du groupe SU 2 Les fonctions qua3j qua6j et qua9j renvoient les valeurs exactes des coefficients 3j 6j et 9j Les arguments 71 j2 M1 M2 de ces fonctions sont des entiers ou demi entiers
55. gaux 1 est calcul e par chinois m a o m vset ma M2 Mr et a vset a a2 ar Dans ce calcul la proc dure chinoisi d termine le v_ensemble Chapitre 16 Biblioth que Math matique 351 N vset N No Np o les nombres N v rifient les relations N dij mod mj La solution x est alors calcul e par chinois2 comme tant S Mai mod P i l legendre p q V_fonction Symbole de Legendre P entier q nombre premier q gt 2 La fonction legendre renvoie le symbole de Legendre pq Si p 0 mod q plq 0 Si p x mod q est un r sidu quadratique non nul plq 1 Sinon pla 1 Exemple Les nombres 1 2 et 4 sont les r sidus quadratiques et 3 5 et 6 les non r sidus modulo 7 print conc i 1 6 of i print conc i 1 6 of legendre i 7 Sortie 430 ms 1 2 3 4 5 6 d AL ET LEL ET prsqr a p V_fonction Racine carr e modulaire entier P nombre premier Si a est un r sidu quadratique mod p la fonction prsqr renvoie le nombre x 1 p 2 tel que a z mod p M thode N Koblitz 1987 p47 Exemple On calcule de deux fa ons diff rentes une racine carr e de 286 mod 4272943 d abord par la fonction prsqr puis en factorisant 24286 mod 4272948 Les temps des deux calculs en ms sont galement affich s clear timer print prsqr 286 4272943 mtimer mtimer clear timer 352 Chapitre 16 Biblioth que Math matique print mdff x 2 286 4272943 mtimer mt
56. i loop stop inp_bis function x local var i i bios 2 x value i and FFFF ift x lt gt 2 or value return value divr i 10000 or 80 return inp_ function value bios 1 1 return out_bis local datai 1 00 index x a ift a lt 2 return 432 Chapitre 19 Appels syst me for a 2 a ift bios 3 x modr a 100 next a return out_ function value bios 8 1 return 2 w Attend un octet sur le p riph rique w Voir l exemple bios 1 3 w b Envoie l octet b sur le p riph rique w Voir l exemple bios 1 4 w l w w w Lecture criture de secteurs sur disque 5 w 1 Fixe renvoie un vecteur d interruption 6 P riode du compteur T Ww Bloc de param tres du disque w 8w Etat du p riph rique w sortie Voir Pexemple bios 1 9 w Teste si le disque a t chang A Lecteurs de disques actifs Exemple DO bios A for I 0 15 M modr D0 2 DO divr DO 2 ift M print disque chr 1 41 actif next Sortie 185 ms disque A actif disque B actif B w Touches sp ciales du clavier Chapitre 19 Appels syst me 433 XBIOS XBIOS k wli V_fonction Appel de la fonction k du TRAP 14 Les remarques sur la liste des arguments vues dans gemdos s appliquent la fonction xbios Table des fonctions 0 w 1 1 Initialisation souris 2 Base physique de l cran 3 Base logique de l cran 4 R solution analogue resolution 5 1 1 w Fixe l cran et la r solution 61 Fixe
57. int gre p k fois suivant x Si aucun litt ral n est donn dans ces fonctions l int grale est calcul e par rapport polyl p ou polyl factorp p 2 si p est factoris Exemple Le programme d termine laire s limit e par la parabole y f x b x a x et laxe des x b f x dx Le r sultat montre que s b a 6 f b x x a w intg f x s subs w x b subs w x a print formf s Sortie 265 ms 1 6 b a 3 Exemple La premi re int grale donne le r sultat 4r 21x 36x 21 r f x 12x 58x4 144x 19322 132r 36 B 2x 3 _ x 3 x 2 x 1 print intg 4 x 3 21x xx 72 36 x 21 x76 12 x 5 58 x TA 144 x 3 193 x 2 132 x 36 print intgm a 10 x print intg 1 x 2 3 x 2 x Sortie 1840 ms 2 x 3 x 3 1i x 2 1 x 1 1 1 3628800 a x 10 Chapitre 13 Calculs exacts 297 og x 2 og x 1 Comme expliqu ci dessous les performances de intg sont limit es On trouvera cependant dans la biblioth que MATH des proc dures permettant d int grer toutes les fractions rationnelles sans restriction La fonction intg a besoin des p les de p Si elle ne peut pas les trouver il y a erreur Int gration Exemple Les p les sont non rationnels et donc introuvables par intg print intg 1 CX 2 X 1 Sortie 160 ms XERREUR INTEGRATION print intg 1 X 2 X 1 En cas de p le de r sidu 0 en a l int grale contient log x a
58. p xi C_fonction Conversion expr cha ne xi litt ral P expr La forme str p effectue la conversion de p en cha ne alphanum rique forme qui peut s crire C est l inverse de la fonction val On peut souvent crire p au lieu de str p parce que lorsque le Basic 1000d attend une cha ne p est alors automatiquement converti en cha ne Par exemple c tan 1 2 quivaut c str tan 1 2 La forme str p x y permet d ordonner les expressions suivant les litt raux x et y forme dite r cursive Elle n est utilisable que si p est une somme de termes de la forme zxy o les exposants i et j peuvent tre n gatifs et o les A ne d pendent pas de x et y C est justement cette somme que renvoie str en ordonnant les termes suivant les puissances d croissantes ou croissantes si l option est donn e devant le litt ral Exemple Le premier print quivaut print W W a xX a 2 X sum I 3 1 2 of X I I print str W print str W X print str W a Sortie 400 ms 1 3 X 3 3 a 2 X 2 3 axX 4 3 X 4 3 xX 2 1 6 a 1 X a 2 1 X 1 1 3 X 3 C 1 3 X 3 3 X 4 3 X 2 1 X a X 1 a 2 VAL exprcha ne V_fonction Conversion cha ne expr La fonction val renvoie la valeur alg brique d une exprcha ne codage alphanu m rique C est l inverse de la fonction str Exemple print val amp x712 amp 7 Chapitre 11 Progr
59. print Trouv Exemple de dialogue Devinez l entier x INPUT gt 75 75 gt x INPUT gt 55 55 lt x INPUT gt 57 Trouv EXITIF Commande Sortie d une structure IF Apr s exitif l ex cution se poursuit apr s le endif de la structure Exemple Apr s exitif l ex cution continue sur la ligne c en non en b for i 1 10 if i lt 4 ift i 1 exitif if i 3 print a i endif b print b i endif c next i Sortie 100 ms b 2 a 3 b 3 EXITSELECT Commande Sortie d une structure SELECT Apr s exitselect l ex cution se poursuit apr s le endselect de la structure Exemple for i 1 10 select case i Chapitre 11 Programmation 199 case lt 4 if i 2 exitselect endif print b i endselect next i Sortie 90 ms b 1 b 3 Il est incorrect en g n ral de placer exitif et exitselect dans une boucle inclue dans la structure En effet ces commandes ne terminent pas les boucles Exemple Apr s exitif lex cution continue ligne a mais aucune boucle n a t ferm e La commande nextv renvoie donc ligne b apr s avoir modifi la variable u Une fois la boucle en u termin e le programme arrive en fin de source sans avoir boucl sur la variable v forv v in 1 5 1 2 if v i forv u in 7 8 1 3 b exitif nextv endif a print v u nextv Sortie 115 ms LT 1 22 3 1 23 3 1 8 Remarques sur les structures Basic 1000d est assez laxiste sur la donn e des boucles for on pourra ainsi donner
60. print using p i print using H HHH p i print using R H HHH HHE HHH exp pi sqr 2 Chapitre 12 Labels Sous programmes 263 i 3 4 i sqr 3 nextv stop p function index n remember n if n 0 value 1 else local index k do k k 1 ift n 3 k 2 k 2 lt 0 exit vadd value 1 k 1 p n 3 k 2 k 2 loop k 0 do k k 1 ift n 3 k 2 k 2 lt 0 exit vadd value 1 k 1 p n 3 k 2 k 2 loop endif return Sortie 97 s p 4 5 R 6 p 100 190 569 292 199 280 893 J x il p 150 40 853 235 313 42 369 336 269 p 200 3 972 999 029 388 R 4 100 251 432 187 Noms locaux LOCAL elocal Commande D claration et initialisation d l ments locaux elocal DATAV expr expr DATAC exprcha ne exprcha ne DATAI entier 32 entier 32 DATAA nomi nomi 264 Chapitre 12 Labels Sous programmes VAR nomi nomi CHAR nomi nomi INDEX size nomi nomi LIT nomi nomi ACCESS nomi nomi Chaque elocal commence par un mot clef qui indique son r le Les mots clefs d j familiers var char index et lit correspondent simplement la d claration de variables index et litt raux locaux Les elocaux datav datac et datai donnent des valeurs initiales Les elocaux dataa et access permettent en quelque sorte de rebaptiser des variables ou index Avant de poursuivre les explications voici d abord la commande inverse de local NOLOCAL Commande Suppression des
61. que STND 479 FRAC x V_fonctions Parties enti re et fractionnaire r el La fonction trunc est synonyme de fix et renvoie la partie de x avant la virgule La fonction frac renvoie la partie de x apr s la virgule Exemple print trunc 1 6 frac 1 6 Sortie 40 ms 1 3 5 VAL ch V_fonction D code une expression ch exprcha ne La fonction val renvoie le nombre d octets de l exprcha ne ch qui peuvent tre d cod s comme une expr Des cha nes comme v 2 li v de type var li de type lit sont accept es Exemple print val 27 fev 1989 Sortie 20 ms 3 SOUND canal volume note octave dur e SOUND canal volume p riode dur e Proc dure G n ration de sons canal vaut 1 2 ou 3 volume entier de 0 15 note entier de 0 25 1 DO 2 DO 12 SI octave entier de 1 8 Le LA 440 Hz se trouve dans l octave 4 p riode entier 16 On peut donner la p riode en unit s de 8 x 107 s au lieu de note et octave dur e entier temps d attente en unit s de 20 ms 480 Chapitre 20 Biblioth que STND WAVE canal enveloppe forme p riode dur e Commande Forme des sons canal entier 16 Ajouter certains des nombres suivants pour valider les canaux et le bruit canal 1 canal 2 canal 3 bruit canal 1 bruit canal 2 32 bruit canal 3 256k k 0 31 est la p riode du bruit OS DH enveloppe entier 16 Ajouter certains des nombres suivants pour valider l envelopp
62. qui peuvent concerner une autre station de travail si elle t modifi e PLOT x y xi yi Commande Trace un ou plusieurs points 408 Chapitre 18 Graphismes DD PES r els coordonn es relatives La taille des points est e d finie par 1_width e Si e 1 il faut d finir les extr mit s rondes par l_end 2 l_begin 2 sinon les points ne sont pas trac s Exemple La commande plot trace deux rang es de points de taille 1 puis une rang e de points d paisseur 5 for i 0 620 20 plot i 175 i 195 next i 1_width 5 l_begin 2 l_end 2 for i 10 630 20 plot i 185 next i Sortie 1480 ms LINE TO x0 y0 TO x1 y1 TO x2 y2 Commande Trace une ou plusieurs lignes x0 y0 r els coordonn es relatives Le d terminant to peut tre remplac par une virgule La forme line to x y trace la ligne partir du dernier point utilis par line ou plot Exemple monochrome Trac d un syst me d axes et de la courbe y sin t y f t a La premi re instruction line trace la partie gauche de l axe des t jusqu la fl che marquant l unit Le reste de l axe est trac par la troisi me instruction line La courbe est trac e dans la boucle for par une multitude de petits segments de droite en joignant le point atj bf t l extr mit du segment pr c dent at _1 bf t 1 Les valeurs t utilis es sont 3 5 i 50 pour j 1 60 et les facteurs d chelle sont a 50 et b
63. tat du tampon clavier E w Fixe le lecteur de disques par d faut La fonction renvoie la somme J 2 sur les lecteurs actifs i 0 disque A i 1 disque B 15 disque O Cette fonction est utilis e par la variable d tat chdrive du Basic Voici un exemple p dagogique o la proc dure chdrive_bis simule la commande chdrive L argument doit tre une lettre de A O qui indique le lecteur chdrive_bis A print chdrive stop chdrive_bis ift gemdos e asc 1 1 and F return Sortie 25 ms 1 10 Etat de l cran renvoie 1 11 Analogue out 0 tat de l imprimante renvoie 1 si elle est pr te et 0 sinon La commande 1print appelle cette fonction 12 Analogue inp 1 tat du tampon RS 232 entr e renvoie 1 si le tampon contient des octets 0 si le tampon est vide 13 Analogue out 1 demande l tat du tampon RS 232 sortie renvoie 1 si le tampon peut accepter des octets 0 sinon 19 Analogue chdrive 1 lecteur de disques par d faut renvoie un nombre de 0 lecteur A 15 lecteur O 1A 1 Donne un tampon 44 octets pour op rations disques usage d conseill 2A Renvoie la date cod e dans le mot w bits 0 4 modr w 32 jour 1 31 5 8 modr divr w 32 16 mois 1 12 Chapitre 19 Appels syst me 425 Voir l exemple gemdos 2D 2B w Fixe la date Voir l exemple gemdos 2D 2C Renvoie l heure cod e sur le mot w bits 0
64. un polyn me La somme S renvoy e ici est telle que le degr de l extension alg brique sur Q engendr e par les y soit minimum intg1 f x Proc dure Int gre f en x et crit le r sultat f expr x litt ral La proc dure intg1 convient si on d sire seulement l impression Exemple Calcul de l int grale de w Par la fonction interne intg ce calcul n est pas possible w der 1 x 2 a xx b x 1 x 7 8 x 7 print w intgl w x Sortie 6455 ms la fonction int grer s crit sur trois lignes La partie rationnelle de l int grale est x 2 x a b 1 La partie logarithmique de l int grale est la somme de 8 log x 7 et de log x 7 Les proc dures suivantes permettent le traitement de l int grale intg2 f x reg nreg Proc dure Int gration de f suivant x partie rationnelle Chapitre 16 Biblioth que Math matique 371 f expr xX litt ral reg nreg nomi de type var contiennent le r sultat L int grale f f dx r S est la somme d une fraction rationnelle r et d une somme de logarithmes de polyn mes La proc dure intg2 renvoie r dans la variable reg et gs dans la variable nreg Pour obtenir S partir de nreg on utilisera intg3 ou intg4 intg3 nreg x y R b Proc dure Int gration de la partie logarithmique nreg en x nreg expr x litt ral y litt ral utilis pour renvoyer l int grale il faut y x R b nomi de type var Ces variables contenan
65. x 3 3 x 2 3 x 1 7 1 37 57 y 2 u 4 74 57 y u 4 37 57 u 4 x 3 v 3 x 2 vy 3 x v v 98 Chapitre 9 Notions de base FORMF p k V_fonction Factorise p P expr k entier 16 par d faut k 1 La fonction formf factorise compl tement tous les polyn mes ou formes par tiellement factoris es un ou plusieurs litt raux sur l ensemble des nombres rationnels Q C est une des fonctions les plus utiles en calcul symbolique en particulier pour la recherche des racines exactes d une quation C est de loin la fonction du Basic dont le code est le plus compliqu et le plus long environ 25000 octets Comme le temps de calcul peut tre assez grand le param tre k permet de r duire ce temps en diminuant les possibilit s de la fonction Si k lt 0 la recherche des facteurs est la plus rapide et se limite des r ductions par la fonction red cas multilitt ral seulement Si k 0 en plus de la factorisation pr c dente on trouve tous les facteurs multiples de p par calcul du pgcd de p et d une d riv e partielle Si k gt 0 la fonction renvoie p sous la forme du produit de facteurs irr ductibles sur Q Exemple La factorisation du polyn me W diff re suivant le param tre k W X 6 4 X 5 A 3 X 5 B 19 X 4 2 12 X 4 A B 3 X 4 B 2 14 X 3 A 3 57 X 3 A 2 B 12 X 3 A B 2 X 3 B 3 42 X 2 xA 3 B 57xX 2 xA 2xB 2 4 X 2xA B 3 42 XxA73 B 2 19 X A 2 B 3 14 4A 3 B 3 print FORMF W 1 for
66. 0 colonne 1 entier 0 24 ou 0 49 si resolution 3 ligne Les valeurs c l 0 correspondent au coin sup rieur gauche de l cran Exemple L affichage a lieu sur la ligne 20 partir de la colonne 10 locate 20 10 print cursc cursl Sortie 25 ms 10 20 La commande locate de cet exemple quivaut cursc 10 cursl 20 Les fonctions pos et csrlin peuvent s crire avec ou sans argument L argument est effectivement calcul s il est donn Le print de l exemple ci dessus quivaut print pos 0 csrlin ou print pos csrlin x 122 Chapitre 10 Entr e Sortie CURSH h Variable d tat Haut de l cran h entier h 0 16 ou h 0 41 si resolution 3 Apr s la commande cursh h les h premi res lignes de l cran sont fixes Les lignes en dessous constituent la fen tre de sortie et se d roulent au cours des impressions Dans la fen tre Basic ou apr s clear la variable d tat cursh vaut 4 ce qui laisse 4 lignes fixes pour le damier Exemple Le programme crit les 10 lignes sup rieures avec cursh gal 0 Ces lignes sont fix es lorsque cursh est gal 10 et l impression des 100 lignes suivantes fait d filer la fen tre de sortie qui est form e des 15 lignes inf rieures de l cran cursh 0 print c conc i 0 9 of ligne amp i amp fixe a cursh 10 for i 1 100 cursc random 20 print D file i next i Sortie 4390 ms VIDEOINVERSE fk VIDEONORM
67. 0 l_width 3 ellipse 50 10 200 130 Sortie 1260 ms Exemple Le programme suivant sort la table de tous les motifs de remplissage En plus des motifs pr d finis du syst me des motifs al atoires sont construits par vdi 112 qui est quivalent f_user La valeur xbios 4 est identique resolution mis part le cas o resolution prend la valeur 3 qui est partic uli re au Basic La proc dure table a b x y sort en x y un rectangle de type f_type a et de style f_style b print c justc Types et styles de remplissage 80 table 0 0 0 5 table 1 0 10 5 b 0 for y 8 14 3 for x 0 70 10 b b 1 Chapitre 18 Graphismes 411 table 2 b x y next x next y b 0 for y 17 20 3 for x 0 50 10 b b 1 table 3 b x y next x next y for x 20 70 10 plan 2 2 xbios 4 nombre de plans vid o b random 2 16 plan 16 motif de remplissage al atoi re pokecba intin mkz b 32 plan vdi 8112 16 xplan table 4 0 x 5 next x stop table procedure a b x y f_color 1 f_type a f_style b pbox 8 xx 32 16 xy 8 8 xx 79 16 y 30 locate y 2 x 5 print just1 f_type just1 f_style return Sortie 3875 ms La remarque suivante n a d int r t que pour l utilisateur du GDOS En tant que fonctions les valeurs f_color f_type et f_style sont demand es au syst me par vdi 37 et concernent la station de travail courante FILL x y c Commande Remplir une surface X y r els coordonn es relatives du point de d par
68. 0 440 471 di lt 4 6 12 35 36 37 38 100 i i i i i vdi 10 vdi 101 vdi 107 447 472 vdi 111 161 vdi 112 410 vdi 116 473 vdi 119 vdi 120 124 i 130 vdi 420 472 458 472 158 130 vdi 131 473 vdibase 482 vdif 400 442 VDIPB 443 494 vdir 400 442 vdirf 400 442 vdisys 482 vdiv 223 vdive 223 332 velsg 110 113 v rifie 168 VERIFY 14 43 verify 168 version 244 vid 171 176 178 videoinverse 122 videonormal 122 vider efface vircha ne 108 116 virgule 108 126 128 virtuel 66 68 128 165 171 174 178 182 vmul 66 223 477 void 481 vpoint 121 404 vat_extent 451 473 vat_fontinfoy 452 473 vat_name 452 473 vat_name 452 473 vset 109 111 365 vst_font 448 472 vst_load_fonts 420 451 472 vst_point 450 472 vst_unload_fonts 451 472 vsub 223 477 vsync 463 vtab 458 v_clrwk 447 472 v_clsvwk 450 472 v_clswk 446 471 v_ensemble 101 2 109 11 113 194 365 v_fonction 73 104 v_h 440 443 473 v_h0 440 v_opnvwk 440 449 471 v_opnwk 440 446 470 473 v_updwk 447 472 474 wave 480 wend while while 56 196 200 254 windtab 475 words 487 work_out 440 write 176 178 xbios 433 xbios 2 170 174 xbios 4 410 xbios 7 402 xbios f 211 xbios 20 153 xbios 21 125 xbios 25 463 XMODEM 211 xor 100 461 xqt 7 54 199 200 280 491 YM2149 154 Z 20 40 43 61 64 zero 385
69. 1 tab 10 1 return Sortie 240 ms cont p x 17 19 y 51 19 red p x x y cont p 17 19 red p x y 3 x y 2 3 y CONTF p x V_fonction Contenu REDF p x V_fonction Partie principale P expr litt ral Les facteurs du codage interne de p p est transform en forme factoris e si besoin est sont group s en p q X r x x o q est ind pendant du litt ral x et o r est un produit de polyn mes normalis s dont chacun d pend de x La fonction contf p x renvoie q et si r est un polyn me la fonction redf p x renvoie r On notera que en g n ral r peut encore tre r duit par red r x comme dans l exemple suivant Exemple La fonction redf renvoie le facteur r de p et red en extrait le facteur x 4 r z 3 x x 4 q 125 z 2 p q r x 5 Chapitre 13 Calculs exacts 293 print p p print contf p x ri redf p x print ria cont ri x a red r1i x Sortie 245 ms p 125 x 5 z 2 1 x zxx 4 z 3 x 12 125x z 2 1 z x 4 z 3 x 12 z 3 x 4 Substituer et Homog n iser SUBS p xi qi SUBSR p Mi qi SUBSRR p Mi qi V_fonctions Substitutions p qi expr xi litt ral Mi mon me normalis La fonction subs p 1 q1 2 q2 renvoie p en rempla ant le litt ral z par q le litt ral 2 par q2 La fonction subsr utilise n mon mes de la forme M x g x x rp Elle transforme p suivant le proc d suivant Pouri 1 2 n a
70. 1 mem c print input 2 1 Sortie 20 ms ab INPUT n texte nomi nomi LINE INPUT n texte nome nomc Commandes Lecture d expressions et cha nes entier n 0 101 d faut n 101 canal d entr e Les commandes input et line input lisent des donn es sur le canal n comme P P les m mes commandes sans n chargent des donn es partir du clavier voir la section Entr e clavier En fait les commandes sans n utilisent le canal 101 qui est l entr e clavier moins que ce canal n ait t red fini par input_dev On peut crire sans signification particuli re apr s n ou texte un s parateur 6 9 ou 4 9 r Aia Les p riph riques con et vid sont trait s comme vbs entr e clavier sur cran pleine page L argument texte n est possible que pour ces p riph riques 178 Chapitre 10 Entr e Sortie Lors de l entr e partir d un canal autre que vbs la fin de ligne est marqu e par les deux caract res chr 13 amp chr 10 chr 13 seul ne suffit pas et produit l erreur EOL End Of Line ou par le seul caract re chr 0 Exemple Les 2 nombres crits sur une m me ligne par write dans le fichier T TST sont relus s par ment par input et simultan ment par line input Le mode d acc s o resp est utilis pour crire resp lire le fichier et seek posi tionne le pointeur en d but du fichier pour le relire
71. 1 1 print 1 in 0 1 5 5 3 print six not in un deux trois Sortie 60 ms v_ensemble velsg velsg segment progression 110 Chapitre 9 Notions de base exprcha ne La forme exprcha ne doit avoir une structure de v_ensemble velsg expr segment progression segment Repr sente un intervalle continu de nombres r els Il y a 4 formes possi bles qui font intervenir les symboles et comme dans la notation math matique usuelle et deux r els a et b a b a b a b Ja bC La forme du crochet indique si a et ou b font partie de l intervalle Si a gt b l intervalle est vide progression La progression d finie par les nombres r els a b et c est l ensemble fini des nombres r els a a c a 2c a 3c qui ne d passent pas la valeur b C est donc une progression arithm tique mais le pas c peut tre n gatif Cette progression se donne par a b c o et d signent ici vraiment des symboles c_ensemble celsg celsg csegment exprcha ne La forme exprcha ne doit avoir une structure de c_ensemble celsg exprcha ne csegment L exprcha ne sera prise comme l ment du c_ensemble csegment Repr sente un intervalle de cha nes suivant l ordre lexicographique Il y a 4 formes possibles qui font intervenir les symboles et et deux exprcha nes a et b a b a b a b Ja bC Chapitre 9 Notions de base 111 La for
72. 1 x 30 W cvx 1oad trente exp cr e et relit un fichier plus court que si on utilise save trente exp 1 x 30 W val 1oad trente exp mais le nom du litt ral x est perdu MKZ p k C_fonction Conversion entier p c CVZ c V_fonction Conversion p k entier dans 0 4096 P entier c exprcha ne La fonction mkz p k renvoie une cha ne de k octets repr sentant modr p 256 Cette repr sentation est la g n ralisation du codage machine des entiers sign s sur 1 2 ou 4 octets k octets Elle diff re de la repr sentation interne des nombres du Basic 1000d Comparer les codages donn s par octets des deux Chapitre 11 Programmation 211 nombres 0 et 215 p mkz p 2 codage interne 0 0 0 40 0 2000 20 0 2 20 0 Si c est la cha ne des k octets ak 1 ak 2 Q1 amp o la fonction cvz c renvoie l entier relatif p 28471 28 1 tel que p X a 2 mod 28 Dans p cvz c cp mkz p len c les cha nes c et cp sont identiques Le z dans les mots clefs cvz et mkz rappelle la notation math ma tique de l ensemble des entiers relatifs Parmi les fonctions de conversions les fonctions mkz et cvz sont celles qui ont le plus d applications en particulier en cryptographie et en transmission Exemple Pour transmettre la cha ne de 128 octets contenue dans c on rajoute un mot de v rification de deux octets check Les 128 octets sont consid r s comme
73. 11 Pour poursuivre l tude du Basic 1000d tudier ensuite les programmes des biblioth ques Stnd et Math Pour une initiation au calcul formel nous vous conseillons le livre de Davenport et al 1987 Damier ou menu et fen tre Vous voyez appara tre sur les premi res lignes en haut de l cran un damier ou menu Le titre du damier BASIC 1000D est aussi le nom de la fen tre ouverte La fen tre sans bordures occupe tout l cran en dessous du damier Les diverses cases du damier correspondent des commandes disponibles pour la fen tre ouverte Ces commandes peuvent tre lanc es soit en cliquant le bouton gauche sur la case soit avec les touches de fonctions Cliquer sur la case FILES ou appuyer sur F2 Le menu FILES s ouvre Dans ce menu seules les touches de fonctions et le bouton gauche sont actifs Les autres touches font revenir au menu Basic S lectionner la case Dir puis taper Return Cela liste le r pertoire du disque et retourne au menu Basic Le contenu de la disquette reste crit dans la fen tre Basic La fen tre DESK Cliquer sur la case DESK ou appuyer sur F1 fait appara tre un bureau GEM menus d roulants Le premier menu d roulant permet de s lectionner les accessoires les fichiers ACC Le deuxi me menu permet de revenir dans les fen tres Basic ou Edit Source ou de quitter le Basic Il est recommand pour viter les plantages de refermer les accessoires avant de quitter cett
74. 11656 19956 zerob A B f f polyn me irr ductible unilitt ral en x de degr gt 2 Le nom du litt ral de f doit ici vraiment tre donn par x la diff rence de zero et zerop A B nomi de type var variables de sortie La proc dure zerob qui est utilis e par zero et zerop pr sente un int r t en soi Elle renvoie p deg B x intervalles a b isolant les p racines r elles positives de f Les intervalles sont renvoy s cod s dans les deux polyn mes A et Chapitre 16 Biblioth que Math matique 387 La proc dure est exacte et ne d pend pas de la pr cision En fait la proc dure accepte que f ne soit pas irr ductible condition que f n ait aucune racine multiple Dans ce cas il se peut alors qu en plus des segments distincts a b apparaissent des points cod s par bk ax qui peuvent tre inclus dans d autres segments et correspondent des racines exactes Ces points sont renvoy s en m me temps que les segments isolant les racines dans et B Si on veut isoler toutes les racines r elles de f positives et n gatives il faudra appeler la proc dure 2 fois avec f x puis subs f x x comme entr e Optimisation But Trouver le point 41 2 Zn o la fonction r elle de n variables r elles f x1 2 Zn atteint son minimum M thode M thode du simplexe qui ne n cessite que le calcul de la fonction pas de ses d riv es Voir J A Nelder amp R Mead 1965 Pour
75. 16 gt 0 et u une exprcha ne opt d signe une des 8 lettres suivantes majuscule ou minuscule E I C A D H B et O E Met en exposant Met en indices Les options E et I ne sont actives que si le p riph rique de sortie est LBS Elles sont tudi es avec les sorties imprimantes un peu plus bas C Vider l cran ou saut de page avant la sortie des donn es DL option C n est active que sur les p riph riques VBS et LBS Elle provoque l envoi de chr 12 en d but de commande A Pause apr s la sortie de 21 cursh ou 46 cursh si resolution 3 lignes moins un caract re On peut alors continuer ou revenir la fen tre Basic de l diteur en appuyant sur A Cette option fonctionne mal si vous affichez des mouvements de curseur autre que saut de ligne L option A n est active que sur le p riph rique VBS Exemple Il faut 14 crans en r solution 3 pour crire l expression print a 1234 x 7100 Sortie 19 s pour la premi re page D Avec l option D pendant la commande print l criture et lecture des nombres est en base dix Cependant la valeur de la variable d tat base n est pas modifi e et on peut donc l crire Exemple base sixteen Chapitre 10 Entr e Sortie 127 print d base 1000 1000 print base 1000 1000 Sortie 50 ms 16 1000 4096 10 1000 1000 Si base est modifi e pendant le d codage des arguments du print l option D est d sactiv e
76. 172 176 424 1print_dev 172 176 1set 181 203 lst 171 176 lutin 467 8 1_begin 405 440 l_color 405 1_end 406 440 l_type 405 1_width 405 M 21 31 55 Mac Laurin 299 macro 257 macroassembleur 257 514 main 160 majuscule 74 6 201 248 mark 416 447 marque 26 marqueur 415 7 470 MATH 8 17 109 347 90 392 max 94 279 338 493 494 max 200 maximum 200 279 338 mddiv 319 mdff 322 mdgcd 320 mdinv 320 mdmod 319 mdpwr 320 mdpwre 321 mds 317 319 mdsmp 322 m diatrice 376 MEM MAP 44 mem 68 128 165 171 174 178 182 memberp 106 m moire 21 66 235 mem_files 66 491 493 menu 11 137 48 d roulant 138 validation 142 menu 138 140 141 142 4 146 7 menu kill 141 menu off 141 menu n 138 147 menu_id 141 147 merge 40 168 MERGE 42 MERGE H 42 MERGE L 42 MERGE M 42 Mersenne 326 message 146 message 149 MFDB 450 464 mid 181 203 217 238 mid 171 MIDI 171 milieu 376 milliseconde 238 min 94 270 279 338 min 200 minimisation 387 90 minimum 200 279 338 minuscule 74 6 201 248 miroir 205 mirror 205 mise au point d bogage mkd 212 mkdir 162 426 mki 211 mk1 211 mks 212 mkx 209 267 mkz 210 mlen 78 236 mod 67 103 276 282 305 306 310 318 329 modd 306 mode d acc s 170 1 178 d emploi help direct 12 28 32 50 128 graphique 404 modn 306 modr 103 282 339 mods 282 339 module 334 mon me 313 montre 238 41
77. 23 4 balayage cran 463 Bareiss 301 barre des menus 141 143 base 77 209 deux 127 dix 126 huit 128 seize 127 base 77 78 126 base 209 basepage 44 490 494 basic 1000d 12 28 32 bernoulli 381 Bezout 309 321 323 336 bget 174 biblioth que 7 17 37 42 44 59 490 MATH STND bin 209 bios 430 bit 271 505 bitb1lt 450 463 bitblt_d 464 bload 169 bloc 25 6 BLOCK 25 6 bmove 481 bogue d bogage Bohr 291 bo te 413 bool en logique bord 412 414 boucle 56 199 200 254 do 195 for 188 93 forc 194 forv 194 repeat 195 sortie 56 196 8 while 196 boundary 412 440 boustroph don 205 bouton 10 22 30 138 144 148 151 157 radio 149 box 413 bput 174 branchement 248 break 10 24 28 50 52 54 246 break on break breakpoint 51 2 56 244 brison 352 bruit 153 7 479 81 bsave 169 B_DEBUG 51 2 54 237 B_END 50 52 459 B_INIT 50 52 458 B_TRACE 50 2 237 B_USER 11 17 52 348 9 459 cabs 334 cadd 66 223 cadre bord CALCUL 12 calcul en flottant 2 506 formel 3 5 80 109 modulaire 3 316 23 calendrier 238 41 perp tuel 459 calendrier 459 call 436 calla 439 callf 439 canal 59 60 170 CAR 115 caract re exotique 22 carg 334 carte de la m moire 44 490 2 case select cat nation concat nation cc 333 CDR 115 cdr 113 celsg 110 113 centrage 202 centre 377 414 centrec 377 cercle 377 413 cha ne de caract res 107 9 champ field CHANGE 48 change
78. 393 396 zerob 386 zerop 385 Table des codes ASCII J 138 k l Table des motifs de remplissage CRE l FRERE RTTE
79. 4 modr w 32 2 secondes valeurs paires de 0 58 5 10 modr divr w 32 64 minutes 0 59 11 15 divr w 2 11 heures 0 23 Voir l exemple gemdos 2D 2D w Fixe l heure Exemple L exemple purement p dagogique simule les variables d tat date et time du Basic La proc dure shorloge r gle l horloge et la fonction horloge renvoie l heure sous la forme hh mm ss La proc dure sdate fixe la date et la fonction rdate renvoie la date sous la forme jj mm aaaa push date time sdate 24 7 88 shorloge 11 25 20 print horloge rdate time pop date pop stop shorloge procedure h m s ift gemdos 2D mods h x 800 mx 20 int s 2 2 16 return sdate procedure jour mois an if an gt 61980 an an 61980 else an modr an 880 8100 endif ift gemdos 2B mods jour mois 20 an 200 10000 return horloge function local char heure minute seconde index i i gemdos 2C heure i and F800 800 426 Chapitre 19 Appels syst me minute i and 7E0 32 seconde i and 1F 2 value date_f heure amp amp date_f minute amp amp date_f secon de return rdate function local char jour mois an jour gemdos 2A and 1F mois gemdos 2A and 1E0 32 an 1980 gemdos 2A and FE00 512 value date_f jour amp amp date_f mois amp amp justr an return date_f function value right chr 30 amp justr 1 2 return Sortie 195 ms 11 25 20 24 07 1988 2F Renvoie l adresse du tampo
80. 7 z 2 3 z x x 2 a 14 9 1 7 z 2 3 z 1 D rivation Int gration et Partie singuli re Chapitre 13 Calculs exacts 295 DER p x DERM p k x V_fonctions D rivation P expr x litt ral k entier k gt 0 La fonction der p 1 2 Zn d rive p suivant z puis suivant 2 Zn La fonction derm p k x d rive p k fois suivant x Si aucun litt ral n est donn dans ces fonctions la d riv e est calcul e par rapport polyl p ou polyl factorp p 2 si p est factoris Exemple Le programme d rive ax b cx b par rapport x puis diverses d riv es de az pz qz print der axx b cxx d x w a x 3 p x 2 q x print der w x x a for i 0 4 print i derm w i x next Sortie 340 ms x c d 2 a d bxc 6 x O a x 3 x 2 p x q 1 3 a x 2 2 x p q 2 6 a x 2 p 3 6 a 4 0 Exemple Le programme montre que l quation de la tangente au point x a de la parabole y f x 21 3 est y dax 2a 3 0 La commande lit fixe l ordre des litt raux pour am liorer la sortie lit y f 2 x 2 3 w y subs f x a subs der f x x a x a print w Sortie 110 ms y 4 x a 2 a 2 3 296 Chapitre 13 Calculs exacts INTG p x INTGM p k x V_fonctions Int gration P expr x litt ral k entier k gt 0 La fonction intg p 1 2 n int gre p suivant z puis suivant 2 Zn La fonction intgm p k x
81. 8 x 9 y 3 UAB est de type inconnu Definir est de type inconnu Les nombres exacts Un nombre exact est repr sent par un entier m ou une fraction m n avec m et n premiers entre eux Tous les nombres avec m et n inf rieurs en valeur absolue 265520 approximativement 1019723 peuvent tre repr sent s Chapitre 9 Notions de base TT BASE k Variable d tat Base num rique k entier 16 k 2 36 La valeur de la base dix apr s clear utilis e pour lentr e et la sortie des nombres peut tre modifi e par l instruction base k Les chiffres au del de 9 sont les lettres en majuscules ou minuscules B Z Le mot clef base est une variable d tat On peut modifier sa valeur par l instruction ci dessus ou bien on peut le faire entrer dans une expression Exemple Le mot clef base est d abord utilis en tant que commande avec la valeur 12 pour changer la base des nombres Il est ensuite utilis en tant que fonction pour calculer x puis pour sortir sa valeur Remarquer l option D du print qui permet d crire base en d cimal Sinon l impression a lieu dans la base base et s crit toujours 10 base 12 x base 2 print d base x Sortie 25 ms 12 144 Exemple Conversion de base 10 en base 3 et inversement Le symbole 8 indique une valeur en base 10 Le programme montre que 10000 10 111201101 3 1 9 10 0 01 3 base 3 print 6810000 w 01 base 810 print w Sortie 45 ms 1112011
82. Ces nomi sont initialis s avec les arguments 1 2 pris dans l ordre croissant En fait ces commandes sont quivalentes une commande local et sont d ailleurs vraiment effectu es par une commande local comme on peut s en rendre compte avec le d bogueur Exemple T 1 2 3 4 5 6 7 8 9 stop T procedure A B 2 char C 4 argument index 8 D 5 function index E F 1 1 print A B 0 B 1 B 2 C 0 C 1 C 2 C 3 C 4 print conc i 0 5 of D i return Sortie 140 ms 143 29 8 7 6 5 1 2 3 4 5 6 La commande procedure quivaut l instruction local datav 1 02 03 C4f datac 5 06 07 08 09 f var A B 2 char C 4 Elle d finit la variable locale A initialis e avec le premier argument les tableaux de variables B 2 et C 4 Attention l ordre inverse d initialisation B 2 est initialis avec l argument 2 B 1 avec l argument 3 et B 0 avec l argument 4 La commande argument d finit un tableau d index locaux D 5 initialis dans l ordre croissant D 0 avec l argument 1 D 5 avec l argument 6 Il est possible comme ici de ne pas utiliser tous les arguments Il est par contre impossible de donner plus de nomi que d arguments Au lieu du mot clef argument on aurait pu utiliser les mots clefs pro cedure function ou function avec le m me effet Quatre mots clefs pour la m me commande peut sembler superflu mais cela permet d am liorer la lisibilit 274 Chapitre 12 Labels Sous pr
83. En utilisant en entr e de dcom les produits des polyn mes x 1 y 1 et x 1 y 1 par une fraction rationnelle q on obtient en sortie q un facteur constant pr s g 17 23 x 4 y 1 pi x 1 xq p2 y 1 q Chapitre 13 Calculs exacts 305 p3 x 1 x y 1 q print dcom pi p2 p3 Sortie 210 ms y 1 1 x 4 DIV p q x MOD p q x V_fonctions Division p expr q poly q 0 X litt ral par d faut x poly1 q La valeur renvoy e par mod repr sente le reste de la division de p par q et s obtient de la fa on suivante Si q est r el p doit tre un poly et l argument x est inutile On remplace tous les coefficients C des mon mes de p par modr C q En particulier si p et q sont r els positifs mod p q modr p q Exemple Calcul du reste modulo 3 de y 282 p 17 3 x y 28 Zz print mod p 3 Sortie 50 ms 8 3 x y z Si q est un poly non constant e Si p est un poly la division euclidienne de p par q 9 crit p Qxq R o Q et R sont des polyn mes en x mais pas forc ment suivant les autres litt raux qui v rifient degf R x lt deg q x Dans ce cas mod p q x renvoie R sous forme factoris e e Si p est sous forme factoris e p Ci x fx ee x jen chaque facteur f2 fn est remplac par son reste R mod f q x calcul comme dans le cas p poly Dans ce cas mod p q x renvoie e2 En C x RF X x Rg 306 Chapitre 13 Calculs exacts La f
84. La fonction satn renvoie le d veloppement limit de arctan p l ordre k en x au voisinage de 0 Ce r sultat est obtenu en supprimant tous les termes z de degr n gt k dans la s rie 3 5 arctanp p gt 2 3 5 300 Chapitre 13 Calculs exacts Les fonctions ssin scos sexp et slogi sont analogues satn pour les s ries sinp p p 3 p 5 cosp 1 p 21 p 4l expp 1 p p 2 p 31 log 1 p p p 2 p 3 La forme shyg p k q1 Mu qn Mn correspond la fonction hyperg o m trique g n ralis e 1 7 qae p aq lq 1 qu qn 1 p q 1 qu 2 aR dn 1 qn 2 p La fonction hyperg om trique abx a a 1 b b 1 x F a b 1 Bee T c 1 c c 1 2 s obtient l ordre k par shyg x k x a 1 b 1 c 1 1 1 La fonction hyperg om trique d g n r e ax a a 1 zx F NT SE CODE D na s obtient l ordre k par shyg x k x a 1 c 1 1 1 Exemple D veloppement l ordre 7 de cotg x print cotg x str taylor scos x 9 ssin x 9 9 x Sortie 640 ms cotg x 1 x 1 1 3 x 1 45 x 3 2 945 x 5 1 4725 x 7 Exemple Calcul du d veloppement l ordre 12 de exp x qui est utilis pour calculer une valeur approch e de la base des logarithmes naturels e factor S sexp x 12 print fsubs S x 1 Sortie 595 ms 0 2718281828 E 1 Exemple La fonction
85. O xl yl x2 y2 r els coordonn es relatives d un rectangle x1 lt x2 et y1 gt y2 dx dy r els dx gt 0 dy gt 0 x y exprcha nes 380 Chapitre 16 Biblioth que Math matique La proc dure axis trace des axes orthogonaux se croisant en O et portant des marques num rot es espac es de dx ou dy pixels Les textes x et y sont affich s aux extr mit s des axes Le trac est limit au rectangle x1 y1 x2 y2 Exemple monochrome Le programme trace en 4 s des axes et la courbe y e pour x variant de 3 5 2 3 avec un pas de 0 2 Les fonctions entr es dans fplot sont ici les fonctions internes float et exp L origine est le point de coordonn es absolues cran 384 370 L unit vaut 120 pixels sur l axe Ox et 40 pixels sur l axe Oy axis 384 370 0 399 639 64 120 40 x exp x fplot 3 5 2 3 2 384 370 120 40 float exp Fonctions eul riennes La fonction Gamma T x est calcul e en utilisant le d veloppement de Stirling l ordre 61 Ce d veloppement a t obtenu par l appel stirling 31 Le d veloppement de Stirling est reli aux nombres de Bernoulli qui peuvent tre sortis par l appel de la proc dure bernoulli gamma x V_fonction T x r el Tous les index et variables utilis s par la fonction gamma ce nom est crit en minuscules sont locaux sauf la variable gamma_psic Le premier appel initialise la table de donn es gamma_psic et est donc un peu plus long que les appels suiv
86. Par exemple les valeurs x intout 0 et y intout l donnent sa largeur et hauteur en pixels V_CLSWK 472 Chapitre 20 Biblioth que STND V_CLSVWK V_fonctions Fermeture de la station de travail courante Les fonctions v_clswk et v_clsvwk ferment la station de travail courante et remettent la station de travail virtuelle du Basic Elles sont quivalentes aux fonctions vdi 2 et vdi 101 V_CLRWK V_fonction Efface le tampon de sortie La function v_clrwk qui quivaut vdi 3 vide le tampon de sortie de la station de travail V_UPDWK V_fonction Transmet le tampon de sortie La function v_updwk qui appelle vdi 4 provoque l impression si le p riph rique est une imprimante du tampon de sortie VST_LOAD_FONTS m VST_UNLOAD_FONTS m V_fonctions Charge ou efface les fontes donner m 0 La fonction vst_load_fonts charge les fontes sp cifi es dans ASSIGN SYS pour le p riph rique courant L argument d entr e m est r serv pour une gestion intelligente des fontes dans les versions futures du VDI Avant d appeler cette fonction il faut restituer suffisamment de m moire au syst me par himem La fonction vst_unload_fonts efface ces fontes lib re la m moire Ces fonctions sont quivalentes vdi 119 et vdi 120 En principe vst_load_fonts et vdi 119 renvoient le nombre de fontes charg es mais en pratique on obtient des valeurs inutilisables avec GDOS release 1 1 VST_FONT f V_fonction S lection
87. S_PRO TROP PETIT Beaucoup d appels imbriqu s de sous programmes ou de boucles Cette erreur peut tre une erreur de programmation boucle d appels de proc dures sans retours etc comme dans sansfin sansfin S il y a vraiment besoin d un grand degr d imbrication il suffit d aug menter la valeur de la variable d tat s_pro S_VAR TROP PETIT Le nombre de variables internes est insuffisant par exemple dans un calcul de d terminant d ordre n qui en a besoin de n Il suffit d augmenter la valeur de la variable d tat s_var S_XQT TROP PETIT Trop de noms locaux ou d appels par nom n Cette erreur peut tre une erreur de programmation comme pour l erreur de s_pro ci dessus Si le programme est correct il suffit d augmenter la valeur de la variable d tat s_xqt TROP DE DONNEES Par exemple la deuxi me donn e n est pas utilis e local datav 1 2 var v TROP DE LIT VAR Le nombre de litt raux ou de variables est limit 215 en comptant tous les l ments des tableaux Par contre le nombre d index n est pas limit TYPE ILLEGAL Diagnostic un peu moins pr cis que nomi de TYPE par exemple pour les types m lang s dans var v index i exg i v VALEUR APRES Autre qu un entier de 0 au nombre d arguments du sous programme VALEUR TROP FAIBLE Lors de la modification des variables d tat Basic 1000d exige une valeur minimum Notions de base 72 Chapitre 9 Notions de base Les n
88. Sortie 200 ms 1 2 clx a b 3 a 2 axb b 2 1 Les facteurs sont toujours premiers deux deux mais pas n cessairement irr ductibles ce qui fait qu une expression donn e peut avoir plusieurs formes produit de polyn mes par exemple print 1 a 2 2 xaxb b 2 print a b 2 Sortie 75 ms a 2 2 xa xb b 2 1 a b 2 96 Chapitre 9 Notions de base Forme factoris e ou d velopp e Ce paragraphe ne concerne que les expressions exactes Les calculs en flottant ne d pendent pas des commandes qui suivent DEVELOP k FACTOR k Variables d tat Contr lent la forme des calculs et assignations k entier 16 Chacune des commandes develop develop k factor k o k est pair a pour effet de mettre l option develop Les deux variables d tat prennent alors la valeur 0 Les commandes factor develop k factor k o k est impair ont chacune pour effet de mettre l option factor Les deux variables d tat prennent alors la valeur 1 Avec l option develop qui est l option au lancement du programme ou apr s clear les assignations sont faites si possible avec la forme polyn me Avec l option factor toutes les assignations seront faites sous la forme produit de polyn mes Il est possible de changer plusieurs fois l option au cours du programme Exemple M me apr s develop W reste sous forme produit car ce n est pas un polyn me V est d velopp sous forme polyn me mais son
89. TOS gt 1 4 wind_create wind_open wind_close wind_delete wind_get wind_set wind_find wind_update wind_calc wind_new TOS gt 1 4 rsrc_load rsrc_free rsrc_gaddr rsrc_saddr rsrc_obfix shel_read shel_write shel_get shel_put shel_find shel_envrn STND que DS Biblioth 458 Chapitre 20 Biblioth que STND Le noyau de commandes internes du Basic 10004 g re le GDOS et les fen tres presque exclusivement par des appels syst mes vdi et aes Dans divers langages ces appels sont effectu s par des instructions sp cialis es Par exemple la fonction qui dans divers Basics ou C ou leurs biblioth ques est disponible sous le nom VST_UNLOAD_FONTS s appelle en Basic 1000d par vdi 120 Cependant l aide d une biblioth que il est galement tr s facile de faire accepter ce nom au Basic 1000d Il suffit d y placer la fonction VST_UNLOAD_FONTS function value vdif 8120 0 return Pour adapter un programme crit dans un autre langage au Basic 1000d au lieu d effectuer une traduction compl te il peut tre plus simple d utiliser une biblioth que qui jouera le r le d un mulateur au moins partiellement Par exemple si vtab 1g fixe la ligne du curseur dans ce langage au lieu de traduire vtab en curs1 on peut placer la proc dure vtab suivante dans la biblioth que vtab cursl 1 return Ce chapitre d crit la biblioth que STND qui fournit des programmes qui sont analogues m
90. a 5 tac 8 7 chr 65 9 la commande INPUT N1 N2 C1 C2 C3 r alise les assignations N1 4 N2 min a 5 C1 tac Cc2 8 7 C3 chr 65 9 L expr min a 5 est calcul e tandis que l exprcha ne chr 65 9 n est pas cal cul e La virgule et la parenth se entre guillemets dans 8 7 ne sont pas ac tives On notera que l entr e des exprcha nes qui commencent par un guillemet supprime ce guillemet et s arr te au premier guillemet suivant rencontr Ainsi la commande input ignore les caract res ign un message est crit dans l entr e 8 7 ign Si on entre trop d expressions Basic 1000d indique que les entr es en trop sont ignor es Si on n en rentre pas assez la commande r clamera de nouvelles entr es Les initialisations par read et data ou par input suivent les m mes r gles L exemple pr c dent a un effet identique read N1 N2 C1 C2 C3 data 4 min a 5 tac 8 7 chr 65 9 La commande line input C D assigne la totalit de la ligne texte valid e la variable C m me s il y a des virgules Elle redonne ensuite la main au clavier pour attendre l entr e de la valeur de D KEYGET V_fonction Attend touche ou bouton KEYTEST V_fonction Teste le clavier ou les boutons La diff rence entre ces fonctions est que keyget mais pas keytest attend l appui sur une touche ou le cliquage d un bouton Toutefois si un bouton est appuy keytest attend qu il soit rel ch po
91. affich par dir Enfin le r pertoire est effac par rmdir mkdir SEST print files chdir SEST print dir dir chdir rmdir Sest Sortie 6055 ms A 720896 octets libres O SEST gt 3207 X Z dir SEST FSEL c1 c2 c3 C_fonction S lection de fichier cl c2 c3 fcha ne La fonction fse1 utilise le s lecteur de fichier de PAES aes 90 ou aes 91 si on donne le titre c3 et TOS gt 1 4 c1 est un chemin de r pertoire Si c1 est vide cela correspond au r pertoire par d faut Si c1 se termine par comme par exemple c1 A on rajoute au nom de r pertoire Ce rajout n est pas effectu si par exemple c1 A numer z La racine du disque s obtient avec c1 Le nom du fichier plac sur la s lection c2 peut tre vide La fonction fsel renvoie une cha ne vide si la s lection est annul e et le nom complet avec chemin eg A numer stui z sinon Exemple On crit le nom du fichier s lectionn print fsel Sortie A x Z FILES c1 k 164 Chapitre 10 Entr e Sortie FILESS C_fonction Liste un r pertoire cl fcha ne k entier 32 par d faut k 0 Le chemin c1 analogue celui de fse1 d finit un ensemble de fichiers par le jeu des jokers et 7 La fonction files renvoie la liste de ces fichiers accompagn s de diverses indications suivant la valeur de k Cette liste est pr c d e du chemin par d faut entre crochets du chemin
92. argument doit tre un nombre premier par exemple dans w mdff x 2 1 6 NOMBRE REEL Dans a litt ral print abs a l argument doit tre r el nomi DE TYPE CHAR Un nomi de type char tait attendu par exemple index c cadd c a nomi DE TYPE INDEX Un nomi de type index tait attendu par exemple var i w sum i 1 2 of i nomi DE TYPE VAR Un nomi de type var tait attendu par exemple char v forv v in 1 2 1 3 nomi INCONNU Dans la d finition d un nom par access le nom acc d doit avoir un type Par exemple si z est un nom inconnu on obtient cette erreur dans local dataa z access zp NON ENTIER L argument doit tre entier gt 1 par exemple dans w prfact 1 2 ou w mdinv 2 x 1 x 2 2 1 3 NON NUMERIQUE Un nombre tait attendu par exemple au lieu de k1 dans la commande diteur pnt tant un label pnt kl 68 Chapitre 8 Mise au point des programmes NON RATIONNEL Dans print numr 1 l argument ne doit pas tre flottant Dans complex i print cxabs 1 i le r sultat n est pas rationnel NUMERO D ENREGISTREMENT En d signant par L le num ro du dernier enregistrement d un fichier en acc s s lectif le num ro d enregistrement doit tre un entier de 1 L lecture ou de 1 L 1 criture OVERFLOW Nombre trop grand par exemple w 2 2 714 1 w w 4 PAS DE PLACE DISQUETTE Lors d une criture d un fichier ou programme sur disque PAS DE PROGRAMME Dans le menu He
93. arguments Le contenu des zones entre guillemets est ignor pour d terminer les ar guments Chaque argument contient autant de parenth ses gauches que droites Aucun argument ne contient de non parenth s e Les espaces en d but et fin d argument font partie de l argument Toutefois dans le cas des proc dures les espaces devant le premier argument ne font pas partie de cet argument et le dernier argument s arr te ventuellement sur le caract re avant l apostrophe indiquant un commentaire cas de la liste des arguments non parenth s e Exemple Les divers arguments sont indiqu s sauf pour le dernier appel qui est incorrect parce que les parenth ses ne sont pas referm es Chapitre 12 Labels Sous programmes 257 print psi A 4 8 9 C 4 8 CCC amp 11111111111111111 222222222 3333 OVR I 35 STEP DAT commentaire 1111 2222 33333333 PPP B 4 5 C 3 18 Utilisation des arguments Nous avons vu qu l appel du sous programme les arguments ne sont pas calcul s C est le programme qui doit pr ciser l utilisation des arguments Les arguments peuvent tre utilis s la mani re des arguments de macros dans les macroassembleurs Dans le texte des instructions du sous programme appel on peut introduire les arguments de l appel C est l instruction ainsi modifi e qui est ex cut e En fait toute instruction de la source comportant des caract res est modifi e avant ex cution
94. assignation par read a c data x 2 min 1 2 data left abc 2 print a print c c left abc 2 print c Sortie 555 ms x 2 1 left abc 2 ab Lorsque read et data sont utilis s dans un programme de la biblio th que lutilisation de restore est obligatoire Entr e Sortie 120 Chapitre 10 Entr e Sortie Sorties cran et imprimante RESOLUTION r Variable d tat R solution entier 16 La variable d tat resolution a quatre valeurs possibles 0 1 2 et 3 Pour chacune de ces valeurs r la table suivante donne le nombre de lignes y et le nombre de caract res par ligne x pour l diteur et la commande print le nombre de couleurs c et les dimensions max Ymax de l cran en pixels r y T C Tmax Ymax 25 40 16 320 200 Basse r solution 25 80 4 640 200 Moyenne r solution 25 80 2 640 400 Haute r solution 50 80 2 640 400 Haute r solution wne La commande resolution r met la r solution de m me parit que r compatible avec le moniteur Il est galement possible de changer la r solution par s Tab dans la fen tre Basic ou par print chr 15 mais alors que la commande resolution vide l cran ces deux autres fa ons essaient de conserver les donn es crites sur l cran RESOLUTIONO Constante R solution du bureau La constante resolution0 a la valeur de resolution au lancement du Basic 10004 Dans le cas des moniteurs couleurs la r solution oppos e resolution0 pr se
95. aussi utiliser les commandes stack n vircha ne stack n expr pour modifier une valeur de la pile Exemple On transforme avec stack des cha nes en expr dans la pile Noter que dans stack n expr lorsque n et ou expr modifient la hauteur de la pile l l ment modifi par la commande est l l ment num ro n apr s les rectifications de hauteur de la pile push XY A stack 0 stack 0 amp BC print stack 0 stack 1 stack 1 5 stack 0 7 push 0 stack pop pop xstack 0 print pop Sortie 50 ms ABC XY 35 Exemples d application de la pile L int r t principal de la pile est de permettre de conserver des valeurs sans cr er des variables Exemple Le programme conserve dans la pile les valeurs de x base et showm Apr s modification de ces variables les valeurs initiales sont restaur es Noter l ordre inverse pour relire la pile x 145 push x base showm hidem base 7 x 21 print d x showm pop base pop X pop Sortie 25 ms 15 Exemple Chapitre 11 Programmation 227 Voici un programme cr ant la fonction dete qui renvoie la valeur d un d terminant dont on donne tous les l ments comme argument de la fonction La fonction dete dete_dete s appelle elle m me dans le calcul de 1 2 x 1 3 4 T 1 x 5 print dete dete 1 2 3 4 x 1 x 1 1 x 2 5 stop function if root 0 2 local index dete_detn for dete_detn 1 00 push dete_de
96. c d s de z ros print justc justr 2720 15 30 30 print justc chr 24 15 30 3c 3e Chapitre 11 Programmation 203 Sortie 85 ms 000000001048576 lt lt lt lt lt lt lt gt gt gt gt gt gt gt gt LEFT s al RIGHT s a MID s d a C_fonctions Troncation s exprcha ne a entier 32 d entier 32 d gt 0 La fonction left respectivement right renvoie les a d faut a 1 car act res de gauche respectivement de droite de la cha ne s La fonction mid renvoie les a caract res partir du d i me caract re de la cha ne s Si a est omis ou n gatif ou tr s grand mid renvoie toute la cha ne s partir du d i me caract re Exemple c abcdefg print left c print right c 3 print mid c 3 2 print mid c 3 Sortie 50 ms a efg cd cdefg LSET c s RSET c s MID c d a s Commandes Insertion de s dans c c nomi de type char vircha ne 204 Chapitre 11 Programmation entier 32 Par d faut a 1 d entier 32 d gt 0 Ces commandes modifient la variable c sans modifier sa longueur Leur emploi est recommand en conjonction avec field pour cr er les champs des fichiers acc s s lectif La commande 1set resp rset place s gauche resp droite de c et compl te avec des espaces Si s est plus long que c seulement les len c premiers caract res de s sont utilis s Ainsi les deux instructions suivantes
97. calcul exactement Les valeurs renvoy es correspondent au module p et l argument 0 du nombre complexe w pet La fonction carg renvoie la d termination 0 7 7 de l argument Les relations suivantes sont v rifi es cabs w sqr Re w 2 Im w 2 Chapitre 14 Calculs conditionnels Nombres complexes 335 carg w atn2 Im w Re w Im log w Exemple complex i print cabs 3 4 i carg 1 i Sortie 115 ms 0 5000000000 E 1 0 7853981634 CXINT w V_fonction Plus proche entier de Gauss nombre complexe Si w a ib d signe la d composition en parties r elle et imaginaire du nombre complexe w la fonction cxint w renvoie le nombre complexe exact cint a i cint Exemple complex i print cxint 3 7 2 4xi Sortie 70 ms 2 i 4 CXDIV x y CXMOD x y V_fonctions Division enti re X y nombres complexes Les fonctions cxdiv et cxmod effectuent la division enti re de x par y en complexe Elles renvoient respectivement les nombres q et r tels que x q xXx y r et q cxint x y Des arguments x et y autres que des nombres complexes sont accept s si x y est un nombre La valeur q cxdiv x y est un nombre complexe exact La valeur r cxmod x y est une expression exacte si x et y sont tous deux exacts et un nombre flottant sinon Exemple Effectue la division de x par y et v rifie que qy r complex i x 27 20 i x3 15 y 5 7 ix7 3 q cxdiv x y r cxmod x y v x q y r print xa ya qa ra
98. caract re de la ligne c T et e Page de la source pr c dente ou suivante c et c D placent le curseur par mots Tab et c Tab Curseur sur la position de tabulation suivante ou pr c dente Les posi tions de tabulation sont espac es de 8 caract res Home et s CR Curseur au coin gauche en haut ou en bas de la fen tre Delete et Backspace Effacent le caract re sous le curseur ou devant le curseur 24 Chapitre 3 La fen tre Edit Source s Delete et s Backspace Effacent la ligne apr s le curseur ou devant le curseur De plus les caract res effac s sont mis dans le tampon d effacement c Delete Efface la ligne et la met dans le tampon d effacement Le curseur se retrouve sur la ligne qui suivait Clr Vide la ligne et la met dans le tampon d effacement Supposons que Clr a t effectu sans que Ins ait t appuy Si on appuie ensuite sur CR la ligne est effac e Clr suivi de CR quivaut c Delete Si on quitte la ligne autrement dans la source il reste une ligne vide Undo Ecrit le tampon d effacement Cette commande permet de recopier rapi dement une ligne ou portion de ligne Pour cela on met d abord la portion de ligne dans le tampon d effacement en utilisant une des commandes s Delete s Backspace ou Clr imm diatement suivie de Undo pour r tablir la ligne Mais attention comme les espaces en d but et fin sont ignor s par Undo il se peut qu
99. cas des V_ ou C_fonctions b modr t 16 indique le type du premier argument attendu Dans le cas d une variable d un litt ral ou index b est le nombre d indices Indiquons maintenant ce que l on trouve apr s l octet t suivant le type du nom ventuellement en sautant un octet pour atteindre une adresse paire label On trouve l adresse du 6 9 apr s le label dans la source ou biblioth que index On trouve le mot s donnant le nombre de bits b de l index b 1 2 4 8 16 32 S 703 602 401 0 1 3 On trouve ensuite si l index a k indices k mots longs donnant les dimensions puis un mot long contenant ptr n qui est ladresse suivante sauf pour le type acc s lit char var On trouve le num ro de n ou de n max si n est indic sur 2 octets puis les dimensions sur k mots La valeur de l index n est cod e l adresse fixe ptr n qui est le plus souvent la suite de la description de n mais dans le cas de la variable n sa valeur en ptr n se trouve dans une zone dynamique Les litt raux n ont pas de valeur WORDSS C_fonction Liste des noms Pour chaque mot clef et chaque nom n d fini avant l appel la fonction words renvoie le nom et le type t en hexad cimal Ces indications sont renvoy es sous forme d un fichier form de lignes s par es par chr 13 chr 10 et suivies d une ligne donnant le nombre de noms La liste se conforme l ordre interne qui n est pas alphab ti
100. cet exemple le retour se fait en modifiant le pointeur de pile SP Cela est licite les programmes appel s par le Basic peuvent modifier tous les registres y compris SP et SR En entr e d un programme appel par call le processeur est en mode superviseur ce mode peut tre modifi au retour movem l 6 sp a0 a2 move 4 sp d3 438 Chapitre 19 Appels syst me hunt1 hunt2 hunt3 hunt4 sub d3 a1 move b a0 d1 subq 1 d3 moveq 0 d0 cmp 1l a1l a2 bge s hunt4 cmp b a2 d1 bne s hunt1 move l a0 a3 move l a2 a4 move d3 d2 bra s hunt3 cmpm b a3 a4 bne s hunt1 dbra d2 hunt2 subq 1 a2 move l a2 d0 move l sp a0 jmp a0 Voici maintenant un programme en Basic qui appelle le programme en assembleur hunt Sortie 8 s a 1 do a hunt a 1 TO xbios 2 hunt ift a 0 exit print a loop stop function push instrk lower arg 1 to local datai val left arg 1 stack 0 1 val mid arg 1 pop 3 datac 2f index b e a char c index 16 hunt prg 24 a ptr hunt prg 0 if hunt prg 24 lt gt 4ed0 pokel a 4cef0700 0006362f 000492c3 12185343 pokel a 16 7000b5c9 6c18b21a 66f82648 284a3403 pokel a 32 6004b90b 66ec51ca fffa534a 200a205f pokew a 48 4ed0 endif call a l b l e l ptr c len c value register 0 return Chapitre 19 Appels syst me 439 6365 6389 960780 960809 La fonction hunt a TO b c recherche la cha ne c dans la zone m m
101. chr 61 random 26 next i sort S 1 99 1 P 1 print Dans la liste conc i 1 99 of S P i f do k search S 1 100 1 P 1 ift k print S 100 suit S P k ift k lt gt 99 print S 100 pr c de S P k 1 Chapitre 11 Programmation 219 input entrer un nom S 100 loop Exemple Les 10 mots al atoires de deux lettres S 1 S 10 sont class s suivant lordre alphab tique inverse sp cifi par la fonction cmpm La fonction search utilis e avec cette relation d ordre permet de d terminer o se range le mot S 11 char S 11 index P 10 randomize 1 for i 1 11 S i chr 41 random 26 amp chr 4i random 26 next i sort S 1 10 1 P 1 0 cmpm print conc i 1 to 10 of S P i ff k search S 1 11 1 P 1 cmpm print S 11 suit S P k print S 11 pr c de S P k 1 stop cmpm function char x y value cmp mirror x mirror y return Sortie 725 ms RG Z0 DP GP DU LU NW VW W SX KS suit GP KS pr c de DU Exemple Il est montr comment rajouter un nouveau mot dans une table dico ordonn e seulement si ce mot n est pas d j dans la table La fonction search permet de d terminer si le mot entr est connu Sinon le nombre de mots N du dictionnaire est augment et le tableau dico est tri partiellement seulement sur le nouveau mot en indiquant par le dernier argument de sort que les N 1 premiers mots sont d j tri s char dico 100 index P 100 i N 0 do input Entrer un mot di
102. commande LOAD F10 Vide la source et y charge le fichier MERGE L F8 Cette commande aussi dans le menu LBR HLP rajoute le fichier la fin de la biblioth que LOAD L F9 Cette commande aussi dans le menu LBR HLP vide la biblioth que et y charge le fichier MERGE H F18 Cette commande aussi dans les menus LBR HLP et HELPS rajoute le fichier la fin de help Le nom du fichier peut tre autre que HELP Z LOAD H F19 Cette commande aussi dans les menus LBR HLP et HELPS vide help et y charge le fichier qui doit s appeler HELP Z Si help est vide l appui sur la touche Help effectue d abord cette commande LOAD IMG F3 Lit un fichier et le charge dans la m moire L extension est IMG par d faut La commande demande les adresses DEBUT et FIN puis charge le fichier partir de l adresse DEBUT mais sans crire en FIN ni au del Il y a ainsi chargement de min FIN DEBUT L octets o L d signe la longueur du fichier Pour lire le fichier en entier on peut donner 1 pour FIN SAVE F12 Cette commande des menus Basic ou Edit Source crit toute la source Chapitre 6 Autres menus de l diteur 43 A L criture est beaucoup plus rapide lorsque la source commence une adresse paire C est le cas lorsque la biblioth que et Help sont vides SAVE B F7 Cette commande aussi dans le menu BLOCK crit le bloc qui doit tre d fini avant l appel de la commande SAVE IMG F4 Ecrit une z
103. commande print c 1 lt 2 d a lt b print c print d 108 Chapitre 9 Notions de base print a lt b Sortie 80 ms 1 a ERREUR INSTRUCTION ILLEGALE print a 3 print a lt b exprcha ne elcha ne amp elcha ne Le type exprcha ne est une cha ne utilis e dans les appels de fonction Le symbole amp r alise l op ration de concat nation Le symbole de concat nation peut tre omis devant f et a Touches a S a Z et a L Exemple c espaces f f amp puis amp saut de ligne print c Sortie 35 ms espaces puis saut de ligne vircha ne exprcha ne exprcha ne Le type vircha ne intervient dans des commandes comme music Les virgules sont alors quivalentes amp Remarquer que la vircha ne vide est permise Ainsi on peut crire c pour vider la variable c fcha ne D signe une exprcha ne qui ne commence pas par une expr Les noms de fichiers doivent tre crits comme fcha nes Par exemple les exprcha nes suivantes ne sont pas des fcha nes 125 1 x 72 prog prg et les exemples suivants sont des fcha nes str 125 justc 1 x 72 50 prog 3 prg Chapitre 9 Notions de base 109 Les v_ et c_ ensembles Nous avons vu que les variables de type char peuvent avoir un contenu et une longueur arbitraires Leur utilisation ne se limite pas l criture de textes et on peut envisager de s en servir pour d finir des struct
104. comme dans l exemple suivant o la C_fonction hexa change la base print d hexa 8100 print d base stop hexa function base 10 return Sortie 85 ms 64 16 H L option H est l analogue de l option D pour la base seize Exemple Vide l cran et crit 1000 en hexad cimal print CH 1000 Sortie 50 ms 3E8 B L option B est l analogue de l option D pour la base deux Exemple Le nombre 12 34 d cimal est crit en base 2 Cette criture fait inter venir un nombre infini de chiffres apr s la virgule mais on montre facilement qu partir d un certain rang ces chiffres se r p tent avec une p riode de 20 chiffres On utilise using pour crire le nombre dans un format qui met cette p riode en vidence Noter que les 4 derniers chiffres qui semblent infirmer la p riodicit sont en fait inexacts par suite de l arrondissage c string 20 amp chr 32 60 c amp string 4 c print b using c 812 34 Sortie 365 ms 1100 010101110000101000111 10101110000101000111 10101110000101000111 10101110000101001000 128 Chapitre 10 Entr e Sortie O L option O est l analogue de l option D pour la base huit Mode direct Lorsque la commande print p riph rique VBS est effectu e en mode direct on vide d abord la ligne texte o le r sultat va tre crit ce qui est utile quand on r utilise un print d j sur l cran Sortie par morceaux Les expr et exprch
105. cran avec un motif al atoire origin 0 0 deffill mkz random 2 256 32 pbox 0 0 639 400 message Fin du programme cls DEFLINE t e d f Proc dure Attributs de ligne t e d f entier 16 La proc dure defline permet de d finir les attributs de ligne en une seule ins truction Elle quivaut l_type t l_width e l_begin d l_end f Exemple Trac de divers types de lignes defline 1 1 2 1 for i 1 to 6 defline 2 i line 50 i 40 300 i 40 next i do defline random 2 16 1 0 0 line 50 280 300 280 ift keytest exit loop 470 Chapitre 20 Biblioth que STND DEFMARK i t h Proc dure Attributs de marqueurs i t h entier 16 La proc dure defmark permet de d finir les attributs de marqueurs avec une seule instruction Elle est analogue m_color i m_type t m_height h Exemple Trac de deux marqueurs defmark 1 4 20 mark 50 150 200 150 Sortie 55 ms DEFTEXT i t a h Proc dure Attributs de texte graphique i t a h entier 16 La proc dure deftext permet de d finir les attributs avec une seule instruction de fa on analogue t_color i t_type t t_angle a t_height h Exemple Ecriture vers le haut deftext 1001 900 32 text 250 250 deftext Sortie 165 ms GDOS Pour pouvoir utiliser les sous programmes d crits dans cette section le programme GDOS doit tre r sident V_OPNWK K a0 al a10 Chapitre 20 Biblioth que STND 471 V_LOPNVWK a0 al a10 V_fonctions Ouverture d
106. criture des nombres flottants k entier 16 Cette commande est l analogue de formatx k pour les nombres flottants En impression les nombres flottants sont suivis de sauf apr s notilde Si k 0 84 Chapitre 9 Notions de base la sortie se fait sous la forme m n Si k 0 la sortie se fait sous forme fixe ou exponentielle avec k 1 chiffres apr s le point d cimal Le mot clef format comme formatx est une variable d tat et peut tre utilis dans des expressions Exemple format 0 print 3 7 Sortie 55 ms 965057063007963 2251799813685248 Le nombre flottant 3 7 est repr sent en m moire par un entier multipli par une puissance de 2 C est cette forme qui est crite le d nominateur est 251 FORMATL 1 FORMATM m Variables d tat Format exponentiel entier 16 entier 16 gt 0 Le format exponentiel correspond la forme x ab o b d signe la base et o k est un nombre entier Le nombre x est alors crit ap E k o le nombre ap est une valeur approch e de a Il y a une infinit de telles critures suivant la valeur de k Apr s les commandes format f ou formatx f formatl 1 formatm m o f tel que p f 1 gt 0 Let m sont des entiers l criture est d termin e de la fa on suivante L exposant k hm est le multiple de m tel que pl 1 lt a lt ptm Le nombre crit ap est le nombre virgule fixe et p chiffres apr s la virgule le plus proche de a Exemple
107. de d but de commentaire cursh 0 cls hidec dim C 50 for I 1 50 read C I ift C I exit next I data titre1 ligne d information A e AeA data huitcaract resauplus choix1 CHOIX2 data TITRE3 CHOIX3 CHOIXA data menu C 1 on menu exit do on menu 144 Chapitre 10 Entr e Sortie loop cursh 4 print c C menu 0 1 ON MENU KEY instr_key Commande Surveillance du clavier instr_key instruction en Basic 1000d La commande on menu key sp cifie l instruction qui sera effectu e si une touche du clavier est actionn e La touche appuy e s obtient par menu 14 et les touches sp ciales par menu 13 Exemple Ecrit les touches tap es au clavier Arr t 30 s apr s la derni re touche appuy e on menu key print chrp modr menu 14 2 8 on menu timer 30000 stop do on menu loop ON MENU BUTTON click masque be instr_button Commande Surveillance des boutons click masque be entier 16 instr_button instruction en Basic 1000d La commande on menu button sp cifie l instruction qui sera effectu e apr s un v nement bouton Les arguments click masque et be sont plac s dans gintin 1 gintin 3 avant l appel implicite aes 25 de la commande on menu En pratique seulement les formes suivantes semblent utilisables on menu button x a a instr_button o la valeur de x ne joue aucun r le et a indique le ou les boutons tester bito gauche bit droit Le retour d v ne
108. de b w a x 2 b x c c sgeqe 1 1 w der w x b x Sortie 1245 ms R solution en b x du syst me a x 2 x b c 0 2xa x b 0 Solution b est un z ro de 4 a c b 2 x 1 2 b a 1 Polyn mes sym triques Les fonctions suivantes traitent les polyn mes sym triques suivant les n litt raux x 1 x 2 x n On utilise aussi un litt ral Z d homog n isation symsigma k n x V_fonction sym trique ok symsum k n x V_fonction sym trique Sk k n entiers x x i pour i 1 2 n doit tre un litt ral not x La fonction symsigma renvoie og zf La fonction symsum renvoie la somme sym trique Sr 5 Lin X Lio KEX Dig di Kia lt lt ik Chapitre 16 Biblioth que Math matique 363 Exemple var u 3 u 1 x u 2 y u 3 z print symsigma 2 3 u print symsum 2 3 u Sortie 770 ms x 2 y 2 z 72 x y x Z y z symf w n x s sv Z V_fonction R crit w en fonction des polyn mes sym triques sv i n entier x x i pour i 1 2 n doit tre un litt ral not x w poly Si le septi me argument est omis w doit tre un polyn me sym trique en x1 Zn Si le septi me argument existe peu importe sa valeur w sera d abord remplac par son sym tris en 1 n un facteur pr s Z litt ral Si Z est donn w sera homog n is par Z s s i pour 1 2 n doit tre un litt ral not s Ces litt raux servent
109. de calcul de fibo n est proportionnel n Sans cette com mande le temps de calcul devenant exponentiel en n il serait impossible d aller jusqu fibo 1000 par r currence comme ici for i 1 to 1000 print FIBO i fibo i 6 Chapitre 1 Pr sentation du Basic 10004 fibo next i stop function x remember x if x lt 2 value x else value fibo x 1 fibo x 2 endif return Sortie 232 s FIBO 1 24817290 96896232 77951668 Il O1 Ne re FIBO 1000 4346655768693745643568852767504062580256466051737178040 8953655541794905189040387984007925516929592259308032263477520 3987332247116164299644090653318793829896964992851600370447613 49228875 Voici un exemple de proc dure Etoile Le Etoile 125 200 stop procedure x y local index i origin x y plot 50 0 for i 0 to 7 line to 50 cos 6xpixi 7 50 sin 6 xpixi 7 next i return programme ci dessus dessine une toile L appel de la proc dure Etoile se fait de fa on analogue l appel des commandes internes du Basic par exemple Etoile 125 60 trace l toile au point 125 60 En Basic 10004 la transmission des arguments un sous programme peut se faire par valeur par adresse ou par nom Dans l exemple suivant on transmet la proc dure op le signe d une op ration qui est utilis une premi re fois pour l crire et une deuxi me fois pour effectuer une op ration op op op Chapitre 1 Pr senta
110. de sin et une autre fois comme argument de cos Les programmes tiennent compte aussi des relations fonctionnelles tg x sin x cos x cotg x cos x sin x sin x 2 cos x 2 1 de sorte que la deuxi me expression donn e en exemple est reconnue comme tant gale 1 Les programmes fournis permettent seulement les simplifications in diqu es et le calcul des d riv es des expressions trigonom triques En utilisant les m mes m thodes le lecteur pourra crire des programmes plus intelligents que les notres par exemple en leur faisant reconna tre le nombre x trait de fa on exacte les fonctions trigonom triques inverses les fonctions exp et log en introduisant d autres relations fonctionnelles etc Pour viter des conflits de noms ne pas utiliser de noms commen ant par trigo_ dans les expressions trigonom triques trigox c C_fonction Codage de l expression trigonom trique c exprcha ne contient l criture usuelle La fonction trigox renvoie le v_ensemble d crivant l expression trigop t C_fonction Ecriture de l expression trigonom trique t v_ensemble d crivant l expression La fonction trigop renvoie la cha ne alphanum rique repr sentant l expression L criture est faite seulement en termes de sin et cos Les deux fonctions 366 Chapitre 16 Biblioth que Math matique trigox et trigop sont inverses l une de l autre On peut simplifier les expres sions trigonom triques comme dans l
111. e3 subs symf w3 3 x s sv Z Z 1 e5 subs symf w5 3 x s sv Z Z 1 e7 subs symf w7 3 x s sv Z Z 1 print e3 0 print e5 0 print e7 0 Sortie 7 s 12 s 3 12 s 2 xs 1 4xs 1 73 3 s 1 0 80 s 3 s 2 80 xs 3 xs 1 72 60 s 3 80 s 2 2 s 1 80xs 2 xs 1 7 3 60 s 2 s 1 16 s 1 75 20 s 1 3 5 s 1 0 Chapitre 17 Exemples d application 395 448 xs 3 2 xs 1 448 xs 3 xs 2 72 1344xs 3 xs 2 xs 1 72 560 s 3 xs 2 448xs 3 s 1 74 560 xs 3 xs 1 72 168 xs 3 448 xs 2 3 s 1 896 s 2 2 s 1 3 560 s 2 2 s 1 448xs 2 xs 1 75 560 s 2 s 1 3 168 xs 2 s 1 64 s 1 7 112 xs 1 75 56 s 1 3 7 xs 1 0 La r solution du nouveau syst me commence par l limination de s3 On obtient alors un syst me de deux quations en s et s2 Le programme suivant crit ces deux quations sous forme factoris e lit s 3 e3 12 s 3 12 xs 2 xs 1 4 s 1 3 3 s 1 e5 80 s 3 xs 2 80xs 3 xs 1 72 60 s 3 80 s 2 2 s 1 80 s 2 s 1 3 60 s 2 xs 1 16 xs 1 75 20 s 1 3 5 xs 1 e7 448 xs 3 2 s 1 448 xs 3 xs 2 72 1344xs 3 xs 2 s 1 72 560xs 3 xs 2 448xs 3 s 1 74 560 s 3 s 1 2 168 s 3 448 s 2 3 s 1 896 s 2 2 s 1 3 560 s 2 2xs 1 448 s 2 s 1 5 560 s 2 s 1 3 168 s 2 s 1 64 s 1 7 112xs 1 75 56 s 1 3 7 s 1 e5 red elim e5 e3 s 3 e7 red elim e7 e3 s 3 print formf e5 0 print formf e7 0 Sortie 3 s s 1 40 s 2 s 1 72
112. effectu e par l envoi des deux octets 19 k En fait il suffit d utiliser la fonction Chapitre 10 Entr e Sortie 131 chrp k qui cr e une cha ne form e de ces deux octets L envoi du code 813 ou 0 provoque la terminaison d une ligne texte et l affichage continue sur la ligne cran suivante Exemple On crit en vid o inverse puis le caract re Atari de code 1 On peut remplacer chrp 1 par chr 19 amp chr 1 print chr 15 inverse chr 17 normal chrp 1 Sortie 25 ms inverse normal S quences Escape Les s quences Escape sont analogues celles de mulateur VT52 lorsque cursh est nul Si cursh n est pas nul les lignes au dessus de cursh ne sont pas affect es La table suivante donne les s quences qui peuvent suivre chr 1B et leurs effets toujours accompagn s par les touches du clavier correspondantes Le premier code suivant 1B est repr sent par son symbole ainsi A correspond 41 s quence touche A T Curseur vers le haut B il Curseur vers le bas C gt Curseur vers la droite D Curseur vers la gauche E Clr Efface l cran en dessous de la ligne cursh H Home Curseur au d but de la ligne cursh I Curseur vers le haut avec d filement J Efface tout l cran apr s le curseur K s Delete Efface la fin de ligne L Ins Ins re une ligne vide M Efface la ligne et remonte le bas de l cran Positionne le curseur Couleur d criture Couleur du fond Sa
113. effet acos p est calcul l aide de atn2 q p o q 4 1 p est mieux calcul si p est exact Exemple Le cosinus d un petit nombre w est calcul avec 50 chiffres et converti en nombre exact p Le programme montre que l erreur relative sur acos p en pr cision 10 est inf rieure 10714 On obtient le m me r sultat sans convertir cos w en exact la troisi me ligne du programme En effet dans le calcul de acos p p est alors connu avec 50 chiffres qui sont effectivement utilis s Si dans ce calcul on remplace acos p par acos float p l erreur relative est beaucoup plus grande 0 01 environ precision 50 w 107 7 p exact cos w precision 10 wp exact acos p Chapitre 15 Calculs approch s 345 print float abs w wp w Sortie 770 ms 0 2601726072 E 14 Exemple La fonction ang a b c d termine l angle C du triangle ABC partir des longueurs des c t s L exemple crit les angles d un triangle rectangle a 13 b 12 c 5 print ang a b c ang b c a ang c a b stop ang function a b c value acos a 2 b 2 c 2 2 a b return Sortie 275 ms 0 3947911197 0 1570796327 E 1 0 1176005207 E 1 La fonction atn p calcule la d termination de l arc tangente de p com prise dans 7 2 7 2 La fonction atn2 q p renvoie l argument du nombre complexe p iq Le r sultat est un nombre dans 7x x C est aussi l angle que fait le vecteur p q du plan avec l axe Ox La forme atn2 1
114. erreur 0 3316 E 9 Exemple Cet exemple illustre la diff rence d action sur les expr d velopp es et factoris es w sum i 1 5 4 of random 2 20 random 2 20 xx i print w w print appr w 15 appr w 15 factor W W print formf w print appr formf w 15 appr w 15 Sortie 335 ms w 274591 240732 x 5 777446 135101 x 278 Chapitre 13 Calculs exacts appr w 15 73 64xx 5 633 110 x formf w 1 32523133932 x x l 37097518691 x 4 187156130472 appr formf w 15 0O Exemple Pour l approximation d un nombre complexe flottant il faut tre en option develop Le programme ci dessous en option factor donnerait le r sultat 0 pour une raison similaire au r sultat 0 de l exemple pr c dent complex i w pi i pi print appr w 30 Sortie 250 ms 33102 103993 xi 103993 33102 SGN p V_fonction Signe P r el La fonction sgn renvoie la valeur exacte p sgn p p lt 0 1 p 0 p gt 0 1 Exemple print sgn 1 19 sgn 0 sgn pi 2 Sortie 40 ms 1 0 1 ABS p V_fonction Valeur absolue P r el Lorsque l argument p est flottant le r sultat de la fonction abs est galement en flottant La valeur absolue en complexe est calculable par cabs ou cxabs mais pas par la fonction abs Exemple print abs 7 3 abs 7 3 Sortie 45 ms 7 3 0 2333333333 E 1 Chapitre 13 Calculs exacts 279 MIN p q i r MAX p q r V_fonctions Minimum et maximum P q r r el Lors
115. et non base A La pr sence du signe gal n a pas t autoris e pour viter que par erreur on donne un nom de variable d tat une variable ordinaire du programme Par exemple si vous ignorez encore que date est une variable d tat il se peut que vous utilisiez une variable date date 1515 qui sort en erreur pour vous aviser de la qualit de date Cependant le signe d assignation a t autoris d une part dans le cas des variables date et time pour compatibilit avec d autres Basics et d autre part dans le cas des variables d tat indic es comme color i Apr s cette digression sur les variables d tat revenons no distingo En pratique si on veut que les noms distinguent tout le temps les minuscules des majuscules on oubliera ces variables d tat Si par contre on ne veut jamais distinguer les minuscules des majuscules on placera en premi re ligne de la source et de la biblioth que nodistingo Exercice Nb_nom Quel est le nombre de noms possibles en Basic 1000d Le reste de cette section tr s d licat doit imp rativement tre saut en premi re lecture Les commandes distingo et nodistingo agissent galement Chapitre 9 Notions de base 75 sur les comparaisons de cha nes et les fonctions comme instr decode et cmp Notons que seulement les 26 lettres non accentu es sont concern es pour les noms les lettres accentu es sont interdites Les deux commandes no
116. expression a du tre calcul e sous forme produit lexplication sera vue un peu plus bas Cela est apparent dans le dernier print o l expression est sortie sous forme produit sans conversion en forme d velopp e comme dans une assignation develop W 4A A 1 print W V 4A B B B A 7 print V print A B B B A 7 Sortie 395 ms Chapitre 9 Notions de base 97 A x A 1 1 A 8 B 6 7 A 7 B 6 21 xA 6 xB 6 35 A 5 B 6 35xA 74xB 6 21 4A 3 B 6 7 A72 B 6 A B 6 B 6 A A 7 7 A 6 21 A 5 35xA74 35 A 3 21 A 2 7 A 1 Exemple Apr s assignation en mode factor Z est mis sous forme produit V qui est sous forme polyn me est sorti sans conversion V x y 3 factor Z V print Za V Sortie 110 ms x73 3 x 2 y 3 x y 2 y 3 X73 3 x 2 y 3 x y 2 y 3 Lors de calculs avec uniquement des nombres exacts les nombres sont consid r s soit comme des polyn mes r duits au terme constant soit comme des produits de polyn mes r duits au facteur constant FORMD p V_fonction D veloppe p P expr La fonction formd renvoie un polyn me si possible Sinon on obtient la forme produit de facteurs o P est un nombre rationnel N et D sont des polyn mes normalis s les x sont des litt raux et les e des entiers Exemple W 37 57 1 x 3 1 y 2 u 4 v print W print formd W print num W print den W Sortie 360 ms 37 57 v 1 u 4 y 1 2 x 1 7 3 37 57 v 1 u 4 y 2 2xy 1
117. faits avec k chiffres significatifs dans la base courante On doit avoir 86 Chapitre 9 Notions de base DTE gt 274096 o b d signe la base Ainsi en base b 10 k peut tre aussi grand que 1230 Apr s clear la pr cision est de 10 chiffres De plus une commande implicite format k 1 fixant le format de sortie des nombres flottants est effectu e Exemple On calcule le nombre flottant 1000 7 avec la pr cision 25 et on l crit en format 26 valeur implicite apr s precision 25 puis en format 51 En format 51 seuls les 25 premiers chiffres sont garantis exacts parce que la repr sentation interne du nombre est pr vue pour 25 chiffres seulement On le v rifie en com parant avec le nombre exact 1000 7 qui sort avec tous ses chiffres exacts sauf arrondi precision 25 print 1000 7 format 51 print 1000 7 formatx 51 print 1000 7 Sortie 220 ms 0 1428571428571428571428571 E 3 142 85714285714285714285714285713203847901411183809721 142 85714285714285714285714285714285714285714285714286 PRECISION2 k Variable d tat Contr le la pr cision des calculs en flottants k entier k gt 0 La commande precision k fixe la pr cision sans modifier format La valeur k indique le nombre de bits significatifs nombre de chiffres en base deux Autrement dit la commande quivaut push base format base 82 precision k format pop base pop Inversement precision 100 en base 10 quivaut precision2 3
118. galement faire gagner ce facteur 2 Enfin Nohelp lib re la place utilis e par Help et ne garder que lin dispensable dans la biblioth que MEM_FILES TROP PETIT Il y a trop de fichiers virtuels MEM Il suffit d augmenter la valeur de la variable d tat mem_files MENU Par exemple si cela produirait un menu plus large que l cran MONOME LITTERAL L argument attendu tait un mon me ou un litt ral par exemple w subs x 2 1 x 2 1 w subsr x 2 1 3 x 2 1 o il faut un litt ral ligne 1 ou un mon me normalis ligne 2 N Erreur diteur par exemple 100000 print s il y a moins de 100000 lignes NOM REPETE Chaque nom ne peut avoir qu un seul type Par exemple char phase phase function On ne peut r p ter un litt ral dans la substitution flottante w fsubs x 2 1 x 1 x 2 NOM RESERVE Par exemple print qui ne peut tre utilis comme litt ral w print Chapitre 8 Mise au point des programmes 67 NOM TROP LONG Au plus 32 caract res NOMBRE COMPLEXE Dans une op ration binaire x div mod si une expression est flottante l autre ne peut pas contenir des litt raux mis part le litt ral complexe Avec un exposant exact non entier comme l exposant est transform en flottant on peut aussi obtenir cette erreur par exemple x litt ral w x 1 2 NOMBRE D INDICES Par exemple la variable c doit tre utilis e avec 2 indices char c 4 3 print c 1 NOMBRE NON PREMIER L
119. gt o pr et p sont les octets haut et bas de p note De plus si par les canaux ouverts sont valid s on attend t k l mps en unit s de 20 ms puis on ferme les canaux Cela correspond l mission d une note lt 7 not unit gt lt FF t gt lt 7 FF gt m k k 0 63 lt 7 not k gt Pour i 0 2 le bit de k correspond la validation du son sur le canal i et le bit 3 de k correspond la validation du bruit 1 allum 0 teint Par exemple m9 valide le canal A et mixe le g n rateur de bruit n k k 0 31 lt 6 k gt k est la p riode du bruit ok k 0 95 Met octave k qui est le num ro de la note A p k k e 1 216 lt 11 modr k 256 gt lt 12 divr k 256 gt C est la p riode de l enveloppe q k k 0 7 Valide l enveloppe et met env k Pour les canaux i ouverts lt i 8 10 gt rk k 0 13 k 7 Effectue la boucle de la fonction xbios 20 lt 80 x gt lt 81 k y z gt c est dire que dans le registre k on place raison d une valeur toutes les 20 ms la suite de valeurs x y x 2y z modulo 256 Cette suite peut tre infinie si z n est pas dans la suite Il est surtout int ressant d utiliser cette commande avec les registres 2 4 et 6 ce qui donne des variations de fr quence sk k 0 15 lt 13 k gt Met la forme du son shape tk Met tmps k en unit s de 20 ms u k k 0 7 Met
120. ils sont divisibles par 1to t1 z2 Les solutions annulant ce facteur tant ais es d terminer on a divis par ce facteur les deux quations r duisant les degr s 12 et 18 L limination de x2 entre ces deux quations reste encore dans les possibilit s du 1040ST On obtient une quation en x de degr 184 Noter qu il a fallu red finir s_var le dernier appel elim n cessite 12 18 variables internes C est pour poursuivre la r solution que la m moire de l ordinateur se trouve tre insuffisante En effet apr s avoir r crit l quation en terme de x et avoir divis par le facteur 4x 3 Ce facteur ne donne pas de solution du syst me initial il reste une quation de degr 90 La suite de la r solution devrait tre la factorisation de l quation ce qui provoque une erreur M moire On peut alors envisager une r solution num rique mais la fonction zero de la biblioth que MATH provoque galement une erreur M moire s_var 1500 lit x 3 w3 sum i 1 3 of 4 x i 3 3 x i w5 sum i 1 3 of 16 x i 5 20xx i 3 5xx i w7 sum i 1 3 of 64 xx i 77 112 x i 5 56x xx i 73 7 x i print L limination de x 3 donne les deux quations w7 red elim w7 w3 x 3 w7 dive w7 x 1 x 2 x x 1 x 2 print quation de degr deg w7 left w7 200 sl timer timer w5 red elim w5 w3 x 3 w5 dive w5 x 1 x 2 x 1 x 2 print quation de degr deg w5 left w5 200 A
121. indique les symboles actifs pour formater les cha nes r le amp fait tout sortir fait sortir le premier caract re fait sortir les premiers caract res symbole suivant dans u inactif Exemple Le format 23 sort 4 caract res en rajoutant des espaces si n cessaire Seul le nombre de symboles entre les deux est significatif leur valeur ne jouant aucun r le print using _ amp amp abcdefg xyz print using _ abcdefg xyz print using _ xx_ 23 abcdefg xyz Sortie 80 ms amp abcdefg amp xyz li a l x xx abcd xx XYZ 134 Chapitre 10 Entr e Sortie Formatage des expr La table suivante indique les symboles actifs pour formater les expres sions x d signe un caract re quelconque r le chiffre x chiffre s point d cimal N exposant tilde espace virgule signe pr fixe signe suffixe x pr fixe x x d sactive x Exemple Dans le fixe la position du point d cimal crit et les quatre apr s le fixent le nombre de chiffres d cimaux crits Le m me format a t appliqu aux deux nombres Noter que les s parateurs et 7 devant ces nombres sont identiques apr s using Autrement dit la tabulation est alors supprim e Cependant un en fin du print vite un retour chariot comme sans using Noter aussi que la valeur 0 est toujours sortie sous la forme 0 sans d cimales ou exposant
122. interdite pour les retours de fonctions Exemple P et Q sont des label proc Les instructions P x 10 et Q sont des appels des proc dures d finies par ces labels La proc dure P revient sur la ligne Chapitre 12 Labels Sous programmes 253 apr s son appel Q revient sur la ligne R L argument x 10 de l appel de P est transmis une variable locale x de P L exemple semble assez simple cependant l explication de la commande procedure ne pourra tre donn e qu en fin de ce chapitre x 100 P x 10 print Retour de P x x Q ne retourne pas ici R print Retour de Q stop P procedure x print Dans proc P x x return Q print Proc Q return R Sortie 95 ms Dans proc P x 110 Retour de P x 100 Proc Q Retour de Q La commande return label est diff rente de goto label en effet apr s return l adresse de retour du sous programme est d pil e Exemple Comparez le programme bien crit for i 0 1000 SP1 ne passe pas ici Ri next i print fin stop SPl return R1 Sortie 1455 ms fin et le programme suivant incorrect qui ne d pile pas les appels do SP2 ne passe pas ici R2 loop stop SP2 goto R2 Sortie 215 ms ERREUR S_PRO TROP PETIT 254 Chapitre 12 Labels Sous programmes 2 SP2 Boucles et Sous programmes Sur l instruction return on termine les boucles for forv forc do repeat while commenc es dans la proc dure ou fonction Exemple do P loop P do return loop s ex cu
123. l cran tant que Return ou Enter n est pas utilis Taper CR d signe la touche Return ou Enter PRINT 100 CR L instruction Basic est ex cut e en mode direct la fen tre CALCUL s ouvre la valeur d cimale du nombre hexad cimal 100 s crit puis on retourne au menu Basic On retrouve alors la fen tre Basic initiale avec en plus la sortie du PRINT R utilisation de l cran Tout ce qui a t crit sur l cran au clavier ou par des instructions comme print peut tre r utilis Par exemple taper cette fois utiliser c P pour crire print print 1 x 7 CR puis remonter sur le 7 de 1 x 7 et le changer en 5 et taper CR Comme autre exemple ex cuter l instruction print c print 2 2 puis taper CR apr s avoir d plac le curseur sur la ligne crite Cependant une fois l cran de la fen tre Basic effac par la touche Clr par exemple tout ce qui tait crit est perdu Pour des calculs plus consis tants on n utilisera pas le mode direct mais on ditera un programme puis on l ex cutera Chapitre 2 Visite rapide du Basic 10004 13 Source et dition de la source La source est un ensemble de lignes programme ou autre en m moire Pour l diter ouvrir la fen tre Edit Source en cliquant la case F10 EDIT Examinons comment entrer le programme suivant qui permet d appr cier la pr cision des calculs en it rant 20 racines carr es puis 20 carr s w 2 fo
124. l impression des litt raux cach s avec leur nom cach et interdit l impression de litt raux locaux effac s SP type W print W W SP local lit x W 1 x 72 print W W return Sortie 135 ms W x 2 2 x 1 W est de type var XERREUR LOCAL print W W 3 print W W Exemple Le litt ral local y de SP2 poss de le m me num ro les litt raux locaux sont num rot s partir de 7FFF en d croissant que le litt ral local x de SP1 utilis pour cr er W La variable W s crit dans SP2 avec le nouveau nom y SP1 SP2 stop SP1 local lit x W 1 1 x return SP2 local lit y print W return Sortie 25 ms y 1 1 Les valeurs initiales Il est possible dans l instruction local de donner des valeurs initiales l aide des elocaux datav datac datai et dataa Si on ne donne pas de valeurs initiales les index et variables sont initialis s 0 exact ou la cha ne vide La commande local construit deux listes diff rentes partir des don n es Une liste d entier 32 partir des elocaux datai et dataa et une liste de valeurs partir de datav et datac Les index d clar s dans les elocaux index sont initialis s dans l ordre avec les entier 32 de la premi re liste jusqu puisement de la liste Cette premi re liste sert galement la d finition des Chapitre 12 Labels Sous programmes 267 access mais nous tudierons cela un peu plus tard S il reste des donn es dans la l
125. le litt ral x au sens strict x tant de type lit Z X print deg axx 7 z Sortie 15 ms 7 Test des expressions math matiques 106 Chapitre 9 Notions de base COMPLEXP p EXACTP p FLOATP p INTEGERP p LITP p MEMBERP p x POLYP p RATNUMP p Fonctions Test de p P expr Ces fonctions demandent si l expression p est d une forme particuli re et ren voient 1 si c est vrai ou 0 faux sinon Ainsi floatp p demande si p est flot tant exactp p si p est une expression exacte polyp p si p est un polyn me complexp p si p est un nombre complexe exact ratnump p si p est un nombre rationnel exact integerp p si p est un nombre entier exact litp p si p est un litt ral et memberp p x si expression exacte p contient le litt ral x Exemple On dresse le tableau des valeurs renvoy es par ces fonctions pour diverses expressions On a omis complexp qui est identique ratnump pour un calcul en r els comme ici print tab 20 floatp exactp polyp ratnump integerp lit P forv v in pi 1 1 x x 1 17 x 19 3 2 58 print v tab 21 floatp v exactp v poly p v print ratnump v integerp v an itp v nextv Sortie 635 ms floatp exactp polyp ratnump integerp litp 0 3141592654 E 1 1 0 0 0 0 0 x 1 7 1 0 1 0 0 0 0 x 1 17 0 1 1 0 0 0 x 0 1 1 0 0 1 19 3 0 1 1 1 0 0 288230376151711744 0 1 1 1 1 0 Chapitre 9 Notions de base 107 Calcul des cha nes de caract
126. le plaisir du lecteur voici la description de l algorithme avec les notations utilis es dans le programme Par exemple Npar correspond au nom npar dans le code Simplexe initial A partir des npar valeurs initiales par i i L npar et des accroisse ments initiaux accr i i l npar on construit un simplexe ensemble de Npar 1 points Les coordonn es du point j j 0 npar sont pnt i j par i accr i i 1 par Etape 2 On calcule la valeur de la fonction pour les points du simplexe la valeur pour le point j est mise dans pnt 0 j Etape 3 On d termine les points imin et max O la fonction prend sa valeur minimum Wmin t maximum Wmax SUr le simplexe On calcule galement le 388 Chapitre 16 Biblioth que Math matique centre de gravit G des npar meilleurs points du simplexe ses coordonn es sont grav i Converg Si Wmax Wmin lt eps on estime que le minimum est atteint et on arr te le calcul Sym trique On calcule la valeur wsym de la fonction au point sym trique isym de imax par rapport G Si Wmin lt Wsym lt Wmax ON remplace le point imax par isym pour former y y un nouveau simplexe et on continue l tape 3 Plus loin Si Wsym lt Wmin On estime que la direction tait bonne et on calcule la valeur de la fonction w n au point ipin sym trique de G par rapport isym Puis on remplace le point imax par le meilleur des points isym OU ipin et on con
127. lt 7 Fichier virtuel MEMoire NUL 3 Sortie NULle LBS 2 Imprimante avec conversions List BaSic VBS 1 Ecran ou clavier Vid o BaSic LST 0 Imprimante sortie brute sans conversions LiST AUX 1 RS232 AUXiliaire CON 2 CONsole MID 3 Musical Instrument Digital interface IKB 4 Intelligent KeyBoard VID 5 VID o k gt 5 Fichier disque rlen entier 32 gt 0 L argument rlen sp cifie la longueur d un enregistrement dans le cas o le mode est R Il doit tre omis dans les autres modes DEVTY n V_fonction Mode d acc s du canal n DEVID n V_fonction Identificateur du canal n entier 0 103 La fonction devty renvoie 0 si le canal est ferm Si le canal est ouvert la valeur renvoy e est indiqu e dans la table des modes de la commande open La fonction devid renvoie l identificateur du p riph rique suivant la table donn e dans la commande open Le num ro du canal peut tre non seulement un des canaux 0 100 d finissables par open mais aussi un des canaux 101 103 qui sont les canaux 172 Chapitre 10 Entr e Sortie utilis s par d faut par les commandes de la table suivante Le mode d acc s des canaux 101 103 est fixe mais le p riph rique nomdev peut tre red fini par les commandes input_dev print_dev et lprint_dev n dans devty nomdev red fini par 101 input et input 1 VBS input_dev 102 print et write 2 VBS print _dev 103 Ilprint 2 LBS lprint
128. m 9 r2 r1 f i ift r2 lt gt r ift prtst r2 goto a next i k print r timer timer goto a Sortie 294001 timer 7685 505447 timer 15016 584141 timer 17902 NONEXT i Commande Termine une boucle FOR index La commande nonext i termine la boucle for sur i et les boucles ouvertes apr s cette boucle i 192 Chapitre 11 Programmation Exemple Si on supprime nonext i au moment o on commence la deuxi me boucle en i la premi re boucle n est pas termin e Il en r sulte qu on termine les deux boucles i et j avant de commencer cette boucle ce qui provoque une erreur sur next j for i 1 1000 nonext i for j 1 10 for i 1 1 next i next j PROD bouclei OF p V_fonction Produit sur les boucles SUM bouclei OF p V_fonction Somme sur les boucles CONCS bouclei OF s C_fonction Concat nation sur les boucles bouclei repr sente une commande for compl te Cependant le premier mot clef for peut tre omis P expr exprcha ne Les fonctions sum prod et conc permettent d effectuer simplement des sommes produits et concat nations Ainsi pour calculer la somme S des l ments d un tableau T 10 10 on peut utiliser S sum for i 0 10 for j 0 10 of T i j qui revient ex cuter le programme S 0 for i 0 10 for j 0 10 S S T i j next j next i Exemple Calcul de la somme 14 2 10 puis du produit des nombres impairs de 1 33 print sum FOR I 1 10 OF I print prod ia 1 33 2
129. m n eq0 eql eqm z0 zl zn 360 Chapitre 16 Biblioth que Math matique sgeqe m n eq0 eql eqm z0 z1 zn C_fonctions R solution de m 1 quations n 1 inconnues entier m gt 0 n gt 0 eq Z Noms de formes indic es eq i et z j avec i 0 1 m et j 0 1 n Le nom eq peut tre un tableau de type var ou un nom de fonction Le nom z peut tre un tableau de type var ou lit ou un nom de fonction eql eqm z1 zn expr Les formes non indic es eql eqm ou bien les valeurs eq 0 eq m donnent les m 1 quations eq 0 0 eq 1 0 eq m 0 Seul le num rateur num eq i est pris en compte Les formes z0 zn ou Z 0 z n sont des litt raux qui repr sentent les n 1 inconnues du syst me Les trois C_fonctions sgeq sgeqd et sgeqe crivent la solution du syst me d quations et renvoient une cha ne contenant ce qui a t crit Cela permet de conserver pour la relire tranquillement la solution qui peut prendre plusieurs pages cran La diff rence entre sgeqd et sgeq est seulement dans l entr e indic e pour sgeq et d velopp pour sgeqd La fonction sgeqe crit de plus les quations de d part Exemple R solution de l quation en x 1989 b 1 x b 5968 x 3x5 3978 b 1 x 2b 11936 x 6 0 c sgeqd 0 0 1989 b 1 x 7 b 5968 x 6 3 x 5 3978 b 1 x 2 2 b 11936 x 6 x Sortie 2510 ms
130. math matiques r centes et permettant de factoriser des entiers jusqu 30 chiffres environ PHANTOM Litt ral interne de nom vide C est le litt ral de num ro 0 utilis dans prfact Le litt ral phantom peut tre utilis dans les expressions mais il ne s crit pas en sortie PPWR k V_fonction Factorielle de k k entier k 0 5909 La forme ppur k renvoie la valeur exacte k Exemple Le programme suivant calcule plusieurs factorielles et crit le temps de calcul et le nombre d octets occup s par le r sultat Il n crit pas les factorielles ce qui prendrait plus de temps que le calcul lui m me Par exemple l criture seule de factorielle 1000 qui utilise un cran et demi prend 7 secondes 4 s pour la conversion du binaire en cha ne de caract re et 3 s d criture alors que le calcul de la factorielle est effectu en 5 s print k ms octets forv k in 10 100 1000 5000 10001 clear timer w ppur k 286 Chapitre 13 Calculs exacts print justr k 4 justr mtimer 8 justr mlen w 8 nextv Sortie k ms octets 10 20 12 100 105 74 1000 4810 1076 2000 20155 2390 3000 47505 3800 4000 87770 5272 5000 141645 6788 PPWR p k V_fonction Symbole de Pochhammer p P expr k entier La fonction ppwr p k renvoie 1 si k 0 Si k gt 0 elle renvoie le produit de k facteurs p p p 1 p 2 x x p k 1 Si k lt 0 elle renvoie 1 p k Cette fonction v ri
131. mes r les et m mes noms des instructions d autres langages On y trouvera des exemples de gestion du GDOS des menus d roulants et des fen tres De plus nous donnons des indications sur l adaptation de programmes crits en d autres Basics On peut appeler les proc dures de STND avec une base gt 10 et crire leurs noms en majuscules ou minuscules l option nodistingo est valide Pour viter les conflits de noms il est conseill de ne pas utiliser les noms commen ant par g_ La biblioth que STND place l origine graphique originx originy au coin sup rieur gauche de la fen tre active Au d but d un programme originy 0 place l origine sous la barre des menus B_INIT La proc dure B_INIT qui est automatiquement appel e par RUN ou DEBUG initialise des variables pour la gestion des fen tres Elle donne la to talit de l cran au programme Lors du retour l diteur il se peut que le damier efface les sorties C est justement le cas pour une grande partie des exemples propos s Pour examiner les r sultats le plus simple est de rajouter en fin du programme ift keyget ou message Fin du programme qui attendent l appui sur une touche la deuxi me fa on cache un bout de l cran On peut au lieu de cela rajouter en t te du programme cursl 4 qui fait partir l impression de la ligne 4 Chapitre 20 Biblioth que STND 459 B_END La proc dure B_END qui est automatiquement appel
132. moire Acc s au c ur du Basic 10004 Allocation de la m moire Les Variables d tat de structure Appendice 495 Solution des exercices Bibliographie Index 459 459 462 470 475 476 482 484 486 490 492 496 002 003 Pr sentation du Basic 10004 2 Chapitre 1 Pr sentation du Basic 1000d Performances math matiques Basic 1000d est un langage de programmation dont la pr cision des cal culs num riques approch s en nombres r els ou complexes d passe 1000 chiffres Il permet aussi de calculer de fa on exacte sans approximation avec des en tiers ayant jusqu 19723 chiffres et de manipuler les expressions alg briques litt rales L apprentissage de ce langage sera rapide pour ceux qui connaissent d j un Basic En effet sa programmation est tr s proche des Basics usuels Les performances extraordinaires en analyse num rique et en alg bre font du Basic 1000d un outil sans gal sur micro ordinateurs destin aux cher cheurs des laboratoires centres de recherches et bureaux d tudes aux amateurs d alg bre et d arithm tique aux lyc ens tudiants et professeurs Calculs en flottants Le programme suivant calcule V2 avec 50 chiffres exacts precision 50 print sqr 2 sqr 2 Sortie 115 ms sqr 2 0 14142135623730950488016887242096980785696718753769 E 1 L indication 115 ms apr s Sortie indique le temps du calcul de l exemple en millisecondes L
133. mul print elementv c 1 print elementv c 2 print element c 3 Sortie 11 12 abc nomi LET nomi Commande Met une valeur dans une variable ou index Le mot clef let est en g n ral omis Cas des variables de type var Si nomi est de type var la forme de l assignation est 116 Chapitre 9 Notions de base nomi expr Nous avons d j vu que si l option factor resp develop est valid e il y a conversion en type factoris resp polyn me si c est possible Exemple La fonction formf renvoie X 1 mais dans l assignation cette forme est d velopp e Par contre dans print le d veloppement de formf n est pas effectu develop W formf X 2 2 X 1 print W formf X 2 2 X 1 Sortie 115 ms X72 2 X 1 X 1172 Exemple La derni re assignation est faite sous forme factoris e mais sans recher cher les facteurs comme dans formf factor W formf X 2 2 X 1 PRINT W W X 2 2 X 1 PRINT W Sortie 175 ms X 1 2 X72 2 X 1 Cas des index Si nomi est de type index size l assignation se fait par nomi entier o l entier sign doit pouvoir tenir dans size bits Cas des variables de type char Si nomi est de type char l assignation se fait par nomi vircha ne Exemple char CH CH 1 X 72 1 X 72 print CH Sortie 35 ms 1 X 72 X72 2 X 1 Chapitre 9 Notions de base 117 Cas nomi de type inconnu Si nomi est un nom inconnu et non indic Basic 10004 lui d
134. multiplie v par x Pour les variables mais pas les index ces proc dures quivalent aux commandes vadd vsub et vmul du Basic 1000d Noter qu il est impossible de d finir une proc dure analogue pour la division nom e div car div est d j un mot clef La proc dure inc resp dec incr mente resp d cr mente v d une unit Exemple v 3 add v 2 sub v 10 5 mul v 2 2 inc v dec v print v Sortie 45 ms 16 ROUND x n Fonction Valeur arrondie r el 478 Chapitre 20 Biblioth que STND entier 16 n 0 par d faut La fonction round arrondit le nombre x n chiffres apr s le point d cimal Exemple La valeur arrondie est un nombre exact x exp 1 formatx 10 print x round x 3 Sortie 165 ms 0 2718281828 E 1 2 718000000 FALSE TRUE V_fonctions valeur constantes La fonction true resp false renvoie la valeur 1 resp 0 Exemple print true false Sortie 20 ms 1 0 ARRAYFILL T x Proc dure Initialisation d un tableau TO nom du tableau suivi de expr exprcha ne ou entier suivant le type du tableau La proc dure arrayfill remplit tout le tableau T avec la valeur x Pour les index seules les tailles 8 16 et 32 sont accept es Exemple dim V 10 10 T 10 arrayfill T abc arrayfill V 2 x random 11 y random 11 print V x y V x y print T x T x Sortie 165 ms VC 0 4e 2 T 0 abc TRUNC x Chapitre 20 Biblioth
135. of ia Chapitre 11 Programmation 193 Sortie 80 ms 55 6332659870762850625 Exemple Ecriture de 10 lignes identiques puis de la table des symboles ASCII print conc 1 1 10 of pour continuer appuyer sur une touche amp chr 13 ift keyget print conc i 0 15 of conc j i ff 16 of f amp chrp j a Les boucles des fonctions sum prod et conc peuvent entrer en conflit avec les boucles des v ritables commandes for next Cela peut tre la cause d erreurs comme dans l exemple suivant for I 1 100 print sum I 1 10 OF I next En sortant de la commande sum I vaut toujours 11 et il s en suit un bouclage infini Exponentiation par PROD et int gration par SUM Pour n grand le calcul de w 1 x est plus rapide par w PROD J 1 n OF 1 x que par w 1 x n De m me le calcul de l int grale en x du polyn me w est plus rapide par Iw SUM J ORD w x 1 DEG w x 1 OF COEF w x J 1 Jxx J que par Iw INTG w x Voici les temps en s pour divers n Le correspond une erreur m moire 1040ST n prod 1 x n sum intg 128 4 3 2 5 512 105 205 66 95 1024 639 2492 299 Le calcul par 1 x 512 est effectu par l vations successives au carr c est dire seulement par quelques produits de grands facteurs La fonction prod qui effectue un grand nombre de produits mais avec toujours le petit facteur 1 x se trouve tre beaucoup plus rapide Notons toutefois que pour n lt 212 c est 1 x n qui est le
136. open O 1 T TST write 1 pi exp 1 close 1 open I 1 T TST input 1 u v print u v seek 1 line input 1 c print c close 1 Sortie 3800 ms 0 3141592654 E 1 0 2718281828 E 1 0 3141592654 E 1 0 2718281828 E 1 Exemples de fichiers virtuels Les fichiers virtuels MEM sont commodes lors de la mise au point des programmes car ils conomisent le temps des acc s disques Supposons qu on d sire analyser lexicalement un fichier disque ASCII On commence par mettre au point le programme avec un fichier mem c et seulement une fois le programme termin et test on remplacera mem c par le nom du fichier L exemple ci dessous donne le programme en cours de mise au point Le fichier est lu caract re par caract re avec input jusqu la fin du fichier signal e par eof La fonction upper1 est utilis e pour d terminer les lettres qui sont group es en mots dans la table dico La fonction search indique les mots nouveaux qui sont rang s par sort suivant la relation d ordre cmp1 La valeur F i donne le nombre d occurrences du mot dico i La sortie pour le moment est effectu e sur l cran Pour programme final on remplacera vbs par le nom du fichier de sortie La liste des mots est pr sent e dans l ordre alphab tique puis suivant les fr quences apr s un nou veau tri La commande permute assure que pour chaque valeur de la fr quence les mots sont galement dans l ordre al
137. par rapport aux instructions distingo et nodistingo peu importe l ordre d ex cution Lab print 1 goto LAB2 LAB print 2 goto Lab3 nodistingo Lab2 print 3 goto LAB Lab3 print 4 distingo LaB print 5 Sortie 55 ms 1 3 2 4 5 Fonctions et Proc dures Ce chapitre est assez difficile par suite des nombreuses possibilit s of fertes par le Basic 1000d Aussi avant de nous lancer dans la description rigoureuse de la syntaxe nous allons d abord expliquer quelques exemples Chapitre 12 Labels Sous programmes 249 R cursion Factorielle La fonction F n calcule n par r cursion en s appelant elle m me Dans le programme de la fonction le mot clef value qui s utilise comme une variable permet de donner sa valeur la fonction Dans la fonction n est une variable locale qui n influe pas sur les n des niveaux pr c dents ni en particulier sur l index n du programme principal Il y a passage par valeur de l argument for n 1 40 print n F n next n stop F function n value 1 ift n 0 return value n F n 1 return Sortie 11410 ms 1 1 2 2 3 6 40 815915283247897734345611269596115894272000000000 Passages d arguments par valeur et adresse L appel de la proc dure Z dans l exemple suivant initialise 100 l ments d un tableau avec les valeurs U 1200 U 1 1199 U 99 1101 Dans la proc dure Z les noms i et T sont des index locaux T est initialis avec la valeur 1200 Da
138. plus rapide La fonction sum est plus rapide et utilise moins de m moire que intg parce que intg travaille sous forme factoris e 194 Chapitre 11 Programmation Boucles FORV et FORC FORV v IN v_ensemble Blocv NEXTV Commandes de boucle FORV v nomi de type var Dans la commande forv le v_ensemble doit tre de type fini c est dire consister d expr isol es et de progressions Les segments continus ne sont pas autoris s Le bloc de lignes Blocv est ex cut plusieurs fois v parcourant l ensemble des valeurs du v_ensemble Si le v_ensemble est vide Blocv n est pas ex cut et l ex cution continue apr s la commande nextv Exemple Le v_ensemble peut comporter la m me valeur plusieurs fois comme ici trois fois la valeur 1 La boucle est alors ex cut e trois fois avec cette valeur Le v_ensemble est calcul au moment de l instruction forv une fois pour toutes La modification de a ne change rien la boucle La modification de la variable de boucle v l int rieur de la boucle ne modifie pas non plus la boucle la diff rence des boucles for a 100 forv v in 1 1 1 a 25 2 print v a 7 v 7 nextv Sortie 155 ms 1 1 1 27 2 26 77 2 51 127 2 76 177 2 FORC c IN c_ensemble Bloc NEXTC Commandes de boucle FORC c nomi de type char Dans la commande forc le c_ensemble doit consister d exprcha nes isol es et de csegments a b o a et b sont de longueur 1 Les autres csegments ne son
139. print using 1 10 print using 0 10 Sortie 55 ms 1 0000 10 0000 0 10 00 Exemple Voici un exemple de format exponentiel La pr sence de impose le format exponentiel On peut ins rer des espaces ou des virgules dans le format Elles seront galement ins r es dans les nombres sortis Le per met d attribuer une place au tilde indiquant une valeur approch e Le nombre de chiffres avant le point d cimal est fix par les variables d tats format1 et formatm comme lors d impressions sans using print using 77771 100 3 Sortie 35 ms 0 3 3 E 2 Exemple La valeur des variables d tat format et formatx est modifi e localement dans le print avant la sortie de chaque nouvelle expression suivant le nombre Chapitre 10 Entr e Sortie 135 de chiffres demand s apr s la virgule Cette modification se prolonge dans les fonctions appel es par print Elle reste d finitive jusqu clear en cas de sortie erreur avant la fin du print using Inversement si expression crire modifie les variables d tat format ou formatx comme la fonction modif dans l exemple la sortie est d r gl e print using formatx format print using modif formatx print format formatx stop modif function formatx 17 value formatx return Sortie 90 ms 3 00 3 00 17 0000000000000000 4 000 11 0 Exemple Le initial place le symbole F suivant devant le
140. programmes 61 Erreur lors de l appel du d bogueur partir de l diteur On ne peut plus reprendre l ex cution programme trop modifi ou on indique une ligne de d part ill gale DEVELOPPEMENT EN X K Dans str w x si w n est pas une somme de la forme a x o i est entier relatif et a est ind pendant de x comme par exemple dans print str 1 1 x x DIM SIZE MODIFIE Par exemple index t 10 index t 11 Par contre il est admis de red finir un tableau avec les m mes dimensions DISQUETTE Probl me lors d une lecture criture DIVISION Exemple qui conduit une division par 0 w mdpure 2 1 4 DOMAINE DE DEFINITION Un argument a une valeur en dehors des valeurs accept es par la com mande ou fonction Par exemple le num ro de canal est trop grand dans open i 250 x x ENSEMBLE Ensemble mal crit par exemple dans ift 1 in a ENSEMBLE ILLEGAL POUR BOUCLE Par exemple l ensemble est infini dans forv v in 1 5 nextv ENTIERX S La taille de l entier est incorrecte Par exemple il faut un entier dans 128 127 pour pokebs pokebs 200 128 EOL DOIT ETRE O OU 13 10 Les fichiers lus par line input n doivent coder la fin de ligne soit par loctet 0 fichier Z soit par les deux octets 13 10 fichier ASCII Le codage par chr 13 seul n est pas admis EXCEPTION 68000 Une erreur d tect e par le micro processeur EXPONENTIELLE Exposant plus grand ou gal 215 Par exem
141. push mtimer for i 0 199 vsync next i print using Hz 1000 xi mtimer pop Sortie 2895 ms 70 2 Hz SETCOLOR n r v b SETCOLOR n rvb Proc dure Fixe la couleur n r v b rvb entier 16 La commande setcolor en posant rvb 256r 16v b est quivalente color n rvb Exemple En monochrome apr s setcolor 0 0 on inverse les couleurs Pour revenir aux couleurs habituelles on peut utiliser setcolor 0 1 Une autre m thode pour remettre les couleurs usuelles consiste entrer dans le d bogueur puis en sortir par Arret F2 BITBLT a BITBLT u Proc dure Copie de bloc par la ligne A a u Les param tres d entr e forment un tableau de 76 octets qui est soit transmis par adresse a est l adresse du tableau soit initialis partir du tableau u BITBLT s d p Proc dure Copie de bloc par le VDI 464 Chapitre 20 Biblioth que STND s d Les tableaux s et d donnent les MFDB memory form descriptor des blocs source s et destination d s 0 d 0 adresse paire de d part du bloc s 1 d 1 largeur en pixels du bloc s 2 d 2 hauteur en pixels du bloc s 3 d 3 largeur en mots du bloc s 4 d 4 non utilis s 5 d 5 nombre de plans vid o 1 2 ou 4 p 0 p 1 p 2 p 3 entiers 16 coordonn es absolues du rectangle source p 4 p 5 p 6 p 7 entiers 16 coordonn es absolues du rectangle destination p 8 entier 0 15 mode de transfert L appel de l
142. que fonctions comme 1_begin et donc de fa on pas enti rement satisfaisante pour la raison que leurs valeurs ne sont pas fournies par le VDI Elles renvoient la derni re valeur fix e qui peut tre fausse si la station de travail a t chang e entre temps BOX x y xp yp Commande Bord d un rectangle PBOX x y xp yp Commande Rectangle plein PIBOX x y xp yp Commande Rectangle plein sans bord RBOX x y xp yp Commande Bord d une bo te arrondie PRBOX x y xp yp Commande Bo te arrondie pleine X y et xp yp r els coordonn es relatives de deux sommets oppos s Exemple Le programme utilise les commandes box pbox pibox rbox et prbox origin 100 100 rbox 0 0 260 170 box 10 10 50 80 l_type 2 box 10 90 50 160 f_type 3 f_style 12 pbox 60 10 110 160 f_type 2 f_style 22 prbox 120 10 180 160 pibox 190 10 250 160 Sortie 735 ms CIRCLE x y r a b Commande Trace un arc de cercle PCIRCLE x y r a b Commande Remplit un disque ou un secteur 414 Chapitre 18 Graphismes X y r els coordonn es relatives du centre r r el rayon a b r els angles en 1 10 de degr Exemple Trace des cercles concentriques avec la commande circle cursh 0 cls hidecm originx 320 originy 200 for I 5 375 5 circle 0 0 I next Sortie 4290 ms Exemple Ilustre la diff rence entre les deux commandes suivantes pcircle x y r 0 3600 pcircle x y r et le trac avec et sans bord sans
143. s par le Basic et les modifier n a pas d effet CONTRL INTIN PTSIN INTOUT PTSOUT Constantes CONTRL k INTIN i PTSIN j INTOUT i PTSOUT Index 16 k entier k 0 11 i j entier i 0 127 j 0 255 442 Chapitre 19 Appels syst me En tant que constantes ce sont les adresses de tables de 24 256 ou 512 octets permettant le passage des param tres au VDI Ces tables peuvent tre initialis es ou lues en utilisant les formes indic es correspondant des mots de 2 octets Ainsi intin 0 7 ptsin 4 x ptsin 5 y v ptsout 0 w intout 1 quivaut pokews intin 7 pokews ptsint8 x y v peekws ptsout w peekws intout 2 VDI VDI id k n ptsi inj S VDIR VDIR id k n ptxi ptyi inj S Commandes Appel VDI VDIF V_fonctions Appel VDI id entier 16 identificateur de la station de travail entier k 10 131 num ro de fonction n ptsi inj entier 16 ptxi ptyi r els coordonn es relatives exprcha ne Les appels du VDI peuvent tre effectu par les commandes vdi et vdir et par les fonctions vdif et vdirf Les arguments de vdi et vdif d une part de vdir et vdirf d autre part sont identiques Les fonctions renvoient en sortie la valeur de intin 0 Si aucun argument n est donn la commande ou fonction effectue un appel VDI brut sans initialiser les tableaux Il faut donc initialiser les tableaux contrl ptsin
144. sin 5z 0 sin 7x sin Ty sin 72 0 Nous allons d abord changer d inconnues au lieu de x y z nous utiliserons z sing z2 siny et z3 sinz Il faut d abord exprimer sinnx n 3 5 ou 7 en fonction de x sing Le programme suivant effectue ce calcul Les litt raux c et s repr sentent cos x et sinx La variable sn qui repr sente sin ng s obtient comme partie imaginaire du nombre complexe en exp inx c i s n Elle est crite en fonction de s par la substitution c 1 s complex i for n 3 to 7 step 2 en c i s n sn Im en sn subsrr sn c 2 1 s 2 print sin justl n x change sn s sin x next n R sultat 835 ms sin 3x 4sin x 3sin sin 5x 16 sin z 20 sin z 5sin x sin 7x 64 sin z 112 sin z 56 sin x 7 sin Le programme suivant crit en 1 s le syst me r soudre suivant les inconnues z i 1 2 3 lit x 3 w3 sum i 1 3 of 4xx i 73 3 x i w5 sum i 1 3 of 16 x i 5 20x xx i 3 5xx i w7 sum i 1 3 of 64 xx i 77 112 x i 5 56x xx i 73 7 x Chapitre 17 Exemples d application 393 i print w3 0 print wb 0 print w7 0 Une m thode trop brutale Essayons la r solution de ce syst me de trois inconnues trois quations par limination Le programme suivant limine d abord x3 donnant deux quations en x et x2 de degr s 15 et 21 respectivement La factorisation des polyn mes obtenus montre qu
145. soit lors d une lecture criture Dans l exemple suivant la longueur des champs 4 est inf rieure la longueur d enregistrement 5 open R 1 MEM C 5 field 1 4 AS x put 1 LONGUEUR DE CHAMP Lors de l criture d un fichier acc s s lectif le champ en cause de type char a une longueur diff rente de celle sp cifi e dans field Dans l exemple suivant au moment de l criture le champ x a une longueur de 3 octets au lieu des 4 octets attendus open R 1 MEM C 4 66 Chapitre 8 Mise au point des programmes field 1 4 AS x x abc put 1 MEMOIRE Cette erreur se produit lorsqu une instruction n a pas dispos d assez de place m moire Essayer d abord d augmenter la valeur de pack Par exemple si pack vaut 10000 et si une instruction a besoin de 10002 octets de m moire il est possible d obtenir cette erreur alors que print fre ex cut apr s l erreur indique 500000 octets de libre L erreur s est produite parce que le Basic con statant qu il restait plus de 10000 octets utilisables n a pas effectu un nettoyage de la m moire Il se peut qu il n y ait vraiment pas assez de place m me apr s un pack Si une op ration sur une cha ne trop longue est en cause penser utiliser cadd long au lieu de long long amp qui n cessite deux fois plus de m moire De m me pour des variables contenant des expr gigantesques les op ra tions vadd vmul etc peuvent
146. sont renvoy s respectivement par modr p q et mods p q Le nombre r peut galement tre obtenu par mod p q et p mod q La fonction div p q renvoie l entier s tel que p s q r La fonction divr p q renvoie l entier s2 de m me signe que pq tel que p s2q r2 o ra 0 gll Ce m me entier s2 est renvoy aussi par les expressions p q p div q Les fonctions mod et div acceptent en r alit pour premier argument une expr exacte quelconque et pour deuxi me argument un polyn me quelconque et non seulement des r els exacts Leur effet dans le cas g n ral ainsi que d autres fonctions de division en nombres complexes ou en polyn mes modulaires seront tudi es plus loin Les fonctions modr mods et divr n acceptent comme argu ments que des nombres r els mais la diff rence de mod et div ces arguments peuvent tre flottants Dans le cas d arguments flottants divr renvoie une valeur exacte mods et modr des valeurs flottantes Exemple print modr 10 22 7 modr 10 pi print divr 10 22 7 ff divr 10 pi Sortie 125 ms 4 7 0 5752220392 3 3 GCDR e f gi V_fonction Pgcd e f gi entiers La fonction gcdr calcule le pgcd des entiers e f Exemple Calcule le pgcd de deux nombres d une centaine de chiffres chacun Le r sultat peut tre facilement v rifi puisque le pgcd de 2P 1 et 21 1 est 27 1 o r gcdr p q print gcdr 2 370 1 2 430 1 Sortie 30 ms 1023
147. source Ex cution du programme Lancer le programme case Run ou touche F8 La fen tre RUN s ouvre et le programme y crit ses r ponses Apr s ex cution la fen tre RUN se trans forme en fen tre Basic sans effacement des r sultats Correction des erreurs Que se passe t il en cas d erreur Par exemple supposons que la ligne 5 soit Chapitre 2 Visite rapide du Basic 10004 15 for i 1 to 20 o vous avez tap la lettre O au lieu du chiffre 0 dans 20 L ex cution de ce programme s arr te avec le message XERREUR INSTRUCTION ILLEGALE for i 1 to 2 5 for i 1 to 20 La premi re ligne donne la cause de l erreur Le Basic d cod lin struction comme tant une boucle de 1 2 puis a trouv la lettre O qui n est pas pr vue dans la syntaxe de l instruction for D o le diagnostic d instruction ill gale comme cause de l erreur La deuxi me ligne indique avec un point d interrogation l endroit o l erreur s est produite La troisi me ligne num ro t e recopie le texte entier de la ligne source en erreur Comment corriger une erreur Il faut d abord en comprendre la cause Pour vous aider dans la recherche des causes ce manuel contient une description des messages d erreurs ainsi que des indications sur les causes possibles De plus vous pouvez examiner le type des mots de l instruction commande type et le contenu des variables par print Passons maintenant la correction de la s
148. souris index P 79 ift nextperm 79 P 1 1 exg P 0 P random 80 cursh 0 cls hidecm for i 0 79 origin modr P i 8 80 divr P i 8 40 pbox 0 0 80 40 next ift inp 2 cls Exercice Max Detprm D terminer une permutation des l ments de la matrice 1 4 7 do o ND OO w telle que la valeur absolue du d terminant de la matrice soit le plus grand nombre premier possible Op rations dans les variables Dans cette section nous d crivons des commandes qui modifient directe ment la valeur d une variable comme par exemple vmul x 5 qui multiplie la variable x par 5 Cette forme pr sente l avantage d tre plus rapide et plus conome en m moire que la commande X X 5 EXG a b Commande Echange a b nomi du m me type var char index 32 index 16 ou index 8 La commande exg change les valeurs de a et b Chapitre 11 Programmation 223 Exemple Les num ros des variables donn s par varnum ne sont pas modifi s seuls les contenus sont chang s var T 1 T 0 1 T 1 2 print T 0 T 1 varnum T 0 varnum T 1 exg T 0 T 1 print T 0 T 1 varnum T 0 varnum T 1 Sortie 85 ms 1 2 537 536 2 1 537 536 CADD c vircha ne Commande Concat nation c c amp vircha ne VADD v expr Commande Addition v v expr VSUB v expr Commande Soustraction v v expr VMUL v expr Commande Multiplication v v expr VDIV v expr Commande Division v v expr VDIVE v expr Commande Division exac
149. stop esum function f b r local index i for i ordf f r degf f r vadd value coeff f r i ppwr i b i 1 next i return Sortie 2730 ms lt 2s r 2 2s gt 1 4 a 2 lt 2plr 2 2p gt 1 12 a 2 lt 2s r 512s gt 27720 a 5 lt 2plr 5 2p gt 15120 a 5 Partie principale et Contenu Les fonctions red et redf introduites ici permettent de simplifier des quations Ainsi pour r soudre p 0 en zx on remplacera d abord p par redf p x red p x ou red redf p x x CONT p xi V_fonction Contenu RED p xi V_fonction Partie principale P poly xi litt ral Les n arguments apr s p d finissent n litt raux z1 2 Zn Si aucun litt ral n est donn on prend par d faut tous les litt raux de p Soient A et B les deux 292 Chapitre 13 Calculs exacts polyn mes tels que p A x B o ne contient pas les litt raux 21 2 En o B est un polyn me normalis et o les polyn mes coef B x1 ki Zn kn pour divers k kn ont pour pgcd 1 Les fonctions cont et red renvoient respectivement sA et sB o s 1 Lorsque aucun litt ral n est donn pour les formes red p et cont p s 1 Exemple Contenus et parties principales du polyn me p 17 x y y 3 19 La r solution de l quation p x 0 en x est imm diate en posant red p x 0 p 17 19 x y 51 19 x 17 19 y 2 51 19 y pr cont p x pr red p x pr cont p pr red p stop pr print
150. suivant les r gles suivantes k fs Remplacement par largument k k primaire k doit avoir une valeur enti re ou nulle avant l ex cution de l instruction A Le calcul de k ne doit pas appeler de fonctions crites en Basic mais il n y a pas de v rification En g n ral ses valeurs sont purement num riques ou contiennent seulement un index cette exigence n est donc pas contraignante Si k 0 k est remplac par le nombre d arguments d appel n Par exemple si n 250 0 est remplac par 8250 Si k 1 n k est remplac par le texte de l argument k Si k a une autre valeur ou est absent il y a erreur Valeur Apr s Si k est dans une instruction du programme principal il y a erreur Dans Main La partie de l instruction qui est remplac e commence et se termine soit sur le caract re f a S si on a fait suivre k de ce caract re soit sur le dernier espace apr s k Pour calculer la somme de tous les arguments une instruction comme w sum i 1 0 of i n est pas correcte En effet c est avant l ex cution que l on effectue le remplace ment de i par un argument ce remplacement est effectu une seule fois Si i a une valeur acceptable comme num ro d argument l instruction calcule 0 fois la valeur de cet argument sinon erreur On corrigera en w 0 for i 1 0 w w i next i ou en utilisant arg en w sum i 1 00 of val arg i 258 Chapitre 12 Labels Sous programmes
151. timer timer print Elimination de x 2 w7 elim w7 w5 x 2 w7 red w7 print quation de degr deg w7 left w7 200 sal timer timer Sortie 4h1 2 MODIFICATION DE STRUCTURE 394 Chapitre 17 Exemples d application CLEAR EFFECTUE L limination de x 3 donne les deux quations quation de degr 18 quation de degr 12 Elimination de x 2 quation de degr 184 Utilisation des Sym trie Le syst me d quations est invariant dans les permutations de 1 2 et x3 On peut mettre profit cette sym trie pour r soudre le syst me Intro duisons les fonctions sym triques 81 T3 T2 T1 S2 T3 T2 T3 T1 Loi 83 T3 T271 Nous allons r crire le syst me r soudre en fonction de ces fonctions sym triques Les solutions x s obtiendront ensuite comme racines de l quation de degr 3 en u u3 su sou 53 Q Le programme suivant utilise la fonction symf de la biblioth que MATH pour r crire le syst me d quations en fonction de s En entr e de cette fonction on donne les expressions sym triques l aide de la variable sv Le litt ral d homog n isation Z est ensuite mis gal 1 lit x 3 w3 sum i 1 3 of 4 x i 73 3 x i w5 sum i 1 3 of 16 x i 5 20x xx i 3 5xx i w7 sum i 1 3 of 64 xx i 77 112 x i 5 56x xx i 73 7 x i var sv 3 lit s 3 sv 1 x 3 x 2 x 1 sv 2 x 3 x 2 x 3 x 1 x 2 x 1 sv 3 x 3 xx 2 x 1
152. un nombre n tr s grand et check s obtient comme le reste sign modulo le plus grand nombre premier cod sur 16 bits 65521 de n2 6 L appel xbios F fixe la configuration du port s rie RS232 avant la transmission des donn es Le protocole XMODEM utilise une m thode analogue dite de redondance cyclique c string 32 abcd n cvz c check mods n x2716 65521 ift xbios 15 0 0 86 1 1 1 open o 1 aux print 1 c mkz check 2 MKI ws MKL ls C_fonctions Conversion ws cw ou ls cl CVI cw CVL cl V_fonctions Conversion cw ws ou cl ls entier 16 ls entier 32 212 Chapitre 11 Programmation cw cl exprcha nes len cw 2 et len cl 4 cas entier cha ne Cvi Mki 215 25 2 octets Cvl1 Mk1 2 1 2 1 4 octets La fonction mki resp mk1 renvoie une cha ne de 2 resp 4 caract res repr sentant le codage machine d un entier sign mki ws est identique mkz ws 2 lorsque ws est un entier 16 De m me mk1 s et mkz s 4 sont identiques mis part que ls est limit aux entiers 32 dans la premi re forme Les fonctions cvi et cvl sont inverses des fonctions mki et mk1 et renvoient respectivement un entier 16 et un entier 32 Les lettres i et 1 dans les mots cvi cvl mki et mk1 rappellent les mots Integer et Long Exemple char c c mki 6789 print h cvi c c mk1 12345678 print h cvl c Sortie 50 ms 6789 12345678 MKS p MK
153. une cha ne de caract res contenant le texte de l argu ment k Si l entier k ne correspond pas un argument elle renvoie la cha ne nulle Exemple Ceci montre la diff rence entre le calcul de la cha ne 1 et la cha ne arg 1 px AB amp CD stop px print arg 1 arg 1 print 1 1 return Sortie 40 ms arg 1 AB amp CD 1 ABCD Exemple La fonction arg k est utilis e pour d tecter les arguments absents Remarquer qu il est n cessaire d enlever les espaces aux extr mit s de l argument l aide de just1 avant de pouvoir affirmer son absence Dans l exemple arg 1 est vide mais arg 3 est une cha ne de deux espaces Py h po stop py for i 1 C0 absent ift just1 arg i print argument i next i return Sortie 70 ms argument 1 absent argument 3 absent R cursivit 260 Chapitre 12 Labels Sous programmes Voici une fonction F N qui calcule factorielle N par F N N F N 1 si N 1 et F 1 1 print F 5 stop F function if 1 1 value 1 else R value 01 F 1 1 endif return Sortie 70 ms 120 Quelles sont votre avis les instructions R ex cut es donc apr s sub stitution de 1 lors du calcul de F 5 R fl chissez bien ce ne sont pas R value 5 F 4 R value 4 F 3 R value 2 F 1 V rifiez votre r ponse en ex cutant le programme l aide du d bogueur BREAK en R puis plusieurs CYCL ou en regardant la r ponse un peu plu
154. unit k qui d finit les canaux ouverts et ferm s Chapitre 10 Entr e Sortie 157 vk k 0 15 Pour les canaux i tels que le bit de unit soit 1 et le bit de env soit 0 met le volume lt 8 i k gt wk k 0 254 Attend k 1 en unit s de 20 ms lt FF k 1 gt xk k 0 255 Met x k yk k 1 255 Met y k z k k 0 255 Met z k Exemples de boucles music u3Am 13v15x71y255z35r0w6x91z55r2 music o50Av15m9x50y1z200r0 Souris La visibilit de la souris conditionn e par des variables d tat comme showm et hidem a t tudi e en m me temps que la visibilit du curseur MOUSE x y k Commande Lecture de la position et des boutons de la souris x y k nomi de type var ou index La commande mouse met dans x et y des entiers donnant la position de la souris x 0 639 et y 0 399 en monochrome Elle met dans k un entier qui 158 Chapitre 10 Entr e Sortie indique l tat des boutons Le bit de k correspond au i 1 i me bouton k bouton appuy 0 aucun 1 gauche 2 droit 3 gauche et droit Exemple L tat de la souris est crit Dans la commande print chr 5 posi tionne le curseur au coin haut gauche de la fen tre et chr 8 efface la fin de ligne Le clignotement de la souris est provoqu par print qui cache la souris avant d crire les r sultats Arr t par appui sur le bouton droit hidec do mouse x y z print chr 5 x y
155. v Sortie 695 ms 14348907 i 1048576 343 i 78125 336 Chapitre 14 Calculs conditionnels Nombres complexes 184 i 14 30895 i 17938 0 CXGCD a b CXINV a b V_fonctions Pgcd d entiers de Gauss D 4 4 entiers de Gauss Un entier de Gauss est un nombre complexe dont les parties r elle et imaginaire sont des entiers Il doit tre donn sous forme exacte et non flottante Si a et b sont deux entiers de Gauss on dit que a divise b s il existe un entier de Gauss c tel que b ac La divisibilit peut tre test e par cxmod b a qui est nul si et seulement si a divise b Le pgcd de a et b g cxgcd a b est un entier de Gauss de norme cxnorm g maximum qui divise a et b Le pgcd est unique une unit 1 ou i pr s Il existe des entiers de Gauss x et y tels que ax by g Identit de Bezout La fonction cxinv permet d obtenir des entiers de Gauss v rifiant cette galit par x cxinv a b y cxgcd a b axx b Exemple La m thode suivante permet d crire certains nombres premiers comme somme de deux carr s Pour cela le nombre premier p doit diviser un nombre de la forme w 1 par exemple p 4562284561 qui divise 10246 1 Pour crire p u v il suffit de trouver un entier de Gauss autre qu une unit qui soit un facteur de p puisque on en d duit alors une factorisation p u iv u iv u v Comme w 1 wW 1 w 1 w p divise un des deux
156. vous placez le curseur sur le s de sqr w tapez w 2 et effacez la fin de ligne par s Delete Taper la derni re ligne 14 Chapitre 2 Visite rapide du Basic 10004 Sauvegarde et chargement Pour sauvegarder le programme que vous venez d diter cliquer le bou ton gauche sur Save case F12 ou appuyer sur s F2 Vous pouvez alors soit taper le nom du fichier au clavier suivi de Return soit cliquer le bouton pour appeler le s lecteur de fichier du syst me Si vous donnez le nom d un fichier d j sur disque un avertissement vous permet d viter le recouvrement de l ancien fichier Il est tr s d sagr able de ne plus pouvoir relire un fichier important sur disque Basic 1000d vous permet de v rifier que la sauvegarde s est bien pass e en relisant le fichier et en comparant avec le fichier en m moire Pour cela cliquer Verify du menu FILES Dans l exemple propos comme la source tient en entier dans le tampon disque la v rification a lieu dans la m moire vive Il faut recliquer sur Verify pour forcer une vraie relecture du disque Cette v rification exige ici que l extension du fichier soit Z La case Merge F11 permet de lire un fichier et de le mettre la fin de la source pr c dente La commande Verify est galement disponible en lecture Dans le menu FILES on trouvera d autres op rations de chargements et sauvegardes par exemple sauvegarde d un bloc et chargement devant une ligne quelconque de la
157. x l algorithme de Gosper 1978 est utilis Cet algorithme permet d obtenir F x si F x F x 1 est rationnel en x Il est programm dans la fonction sdrap Comme exemple de fonctions f x acceptables citons N x LE x n1 x t n x x x nx o N x est un polyn me en x et n1 n2 Ng sont des nombres entiers naturels diff rents Temps de calculs Voici les temps de calcul en s pour f x ppur x k k temps k temps 0 0 2 2 0 3 2 0 5 5 1 5 5 1 7 10 4 10 6 20 22 20 35 50 500 dsum f x a b V_fonction Sommation alg brique Sas f x f a b expr litt ral La fonction dsum renvoie la somme de f x sur les entiers x a b si cette somme est rationnelle Sinon message et arr t La fonction f x est donn e par l expr f contenant le litt ral x Exemple La premi re sortie montre que la somme sur x des entiers de 1 n est n n 2 printdsum x printdsum x 10 printdsum 1 x x 2 x 8 bary 2 j 1 j x j 1 s x s 1 1x 1 1 stop printdsum print La somme sur les valeurs enti res x de 1 n de C1f est 374 Chapitre 16 Biblioth que Math matique print dsum 1 x 1 n return bary print La somme sur j de 1 s l s de 1f vaut dsum i j 1 8 1 s return Sortie 17 s La somme sur les valeurs enti res x de 1 n de x est 1 2 n 2 1 2 xn La somme sur les valeurs enti res x de 1 n de x 10 est 1 11 xn 11 1 2 n 10 5 6 n 9 n 7 n 5 1
158. z chr 8 ift z 2 stop loop Exemple On trace un cercle centr sur la souris Arr t en cliquant les deux bou tons hidec K 0 Do ift K lt gt 1 Graphmode 3 ift K 1 Graphmode 1 ift K 2 Cls ift K 3 stop Mouse X Y K Circle X Y 40 Circle X Y 40 Loop SETMOUSE x y Commande D place la souris en x y X y entier 16 La commande mouse du Basic 1000d utilise implicitement aes 79 et non vdi 124 qui fonctionne imparfaitement avec PAES Cependant la fonction 79 de PAES n est pas non plus exempte de d faut Ainsi apr s la commande Chapitre 10 Entr e Sortie 159 setmouse elle renvoie des valeurs fausses tant que la souris n a pas t d plac e Le programme suivant explique cette difficult print C La souris va tre d plac e par SETMOUSE appuy er sur une touche ift keyget print Position initiale MOUSEX MOUSEY SETMOUSE MOUSEX 25 MOUSEY 25 print La nouvelle position est donn e exactement par V DI 124 print Par contre MOUSEX MOUSEY ou AES 79 donnent la position avant d placement L print Maintenant d placer la souris puis appuyer sur une touche IFT KEYGET print Les diverses indications coincident L stop L VDI 124 print VDI 124 gt ptsout 0 ptsout 1 print MOUSEX Y gt MOUSEX MOUSEY AES 79 print AES 79 gt gintout 1 gintout 2 return Sortie La souris va tre d plac e par SETMOUSE appuyer sur une touche Position initiale 391 307 La nouvelle posit
159. 0 1 Exemple basse r solution Le programme suivant en basse r solution montre une fa on d obtenir la table ci dessus Pour chaque valeur de l index on remplit un rectangle et on lit le num ro n de la couleur d un point du rectangle l aide de la fonction point Cliquer sur un des rectangles Le num ro n cu i de sa couleur est d termin l aide de la table de conversion puis la couleur est chang e par color n Il aurait t plus direct de la changer par vcolor i en utilisant son index index cv 15 if resolution message Programme Basse R solution stop endif locate 4 0 print index num ro RVB for i 0 15 f_color i pbox 0 40 8 i 23 47 8 i n point 10 44 8 i cv i n locate 5 1i 6 404 Chapitre 18 Graphismes print justr i 2 justr n 6 print h using color n next i hidec do if mousex in 0 23 i divr mousey 40 8 if i in 2 15 n cv i j random 800 and 777 color n j locate 5 i 20 print h using color n endif endif loop POINT x y VPOINT x y V_fonctions Num ro et Index de couleur X y r els coordonn es relatives La fonction point resp vpoint renvoie le num ro resp l index de la couleur du point x y Exemple monochrome Le tableau d index 1 ecr d fini par local access donne acc s la m moire cran Le point x y de l cran correspond l l ment ecr 640y x local datai 31303030 256000 xbios 2 7030020
160. 0 1000 10000 50000 100000 500000 1000000 20 00000 5000000 data 10000000 20000000 90000000 100000000 200000000 5 00000000 1000000000 li litromberg a b 1 1og 5 print li b 1li next i Sortie 18 s 1i 10 5 1i 100 29 1i 1000 177 1i 10000 1245 1i 500000000 26356831 1i 1000000000 50849234 Chapitre 16 Biblioth que Math matique 385 Racines r elles d un polyn me Les sous programmes suivants d terminent toutes les racines r elles d un polyn me f unilitt ral en x par exemple avec leurs multiplicit s On ob tient des valeurs exactes pour les racines rationnelles et des valeurs flottantes approch es mieux que 27P cision en valeur relative pour les racines irra tionnelles zerop f q zero f T M p q Proc dures Racines r elles poly unilitt ral q entier 32 Si q 0 f est d abord compl tement factoris dans Q x Il est en g n ral avan tageux pour le temps de calcul d utiliser q 0 On conseille donc de n utiliser q 0 que si f est connu comme irr ductible De m me si une factorisation de f est connue il vaut mieux entrer cette forme factoris e P nomi de type var ou index p contient en sortie le nombre de racines distinctes T M nomi de type var qui doivent tre d clar s par var T n M n o n est au moins gal au nombre de racines distinctes la valeur n degf f x convient toujours La proc dure zero renvoie les vale
161. 000 pokeb ptr TAMPON 7 28 print peekb ptr TAMPON 7 Sortie 470 ms 40 Cependant comme ptr est pr c d d un pack implicite la valeur ren voy e reste valable tant qu aucune modification de variable y compris syst me comme log 2 ou pi apr s un changement de precision n est effectu e Dans le cas des index ptr x est une adresse fixe Exemple Tampon fixe Le programme cr e une zone fixe de 100000 octets d adresse J Pour un autre exemple voir la fonction gemdos 36 index 8 tamp 99999 J ptr tamp 0 NEXTCODE NEXTLINE V_fonctions Adresse et num ro de l instruction suivante Les fonctions nextcode et nextline sont utilisables seulement dans les proc dures B_TRACE et B_DEBUG Si l instruction suivante n est pas dans la source nextline renvoie 0 Exemples Voir B_TRACE et B_DEBUG Temps Heure et Date 238 Chapitre 11 Programmation PAUSE t Commande Attend t millisecondes entier 32 Exemple La proc dure slowprint affiche une cha ne avec une attente de t ms entre chaque caract re Les caract res sont isol s par mid et lattente est effectu e par pause slowprint 100 Une pause vaut quatre soupirs stop slowprint procedure index t char c local index i for i 1 len c print mid c i 1 pause t next print return Sortie 3070 ms Une pause vaut quatre soupirs TIMER V_fonction Temps en secondes MTIMER V_fonction Temps en millisecondes CLEAR TIMER Commande Mise z ro
162. 000000 i x1 0000000000 Pour calculer la racine quatri me en complexes il est toujours plus rapide d utiliser l exponentielle En effet la forme sqr p en complexe est calcul e par p 1 2 complex i print 4 7 1 4 Sortie 180 ms 1 0000000000 i x1 0000000000 Par contre en r el l extraction de deux racines carr es qui est effectu e par une proc dure sp ciale est plus rapide que l exponentielle print sqr sqr 5 Sortie 40 ms 0 1495348781 E 1 print 5 1 4 Sortie 90 ms 0 1495348781 E 1 PI V_fonction Valeur de x 3 14 Exemple Ecrit pi avec 50 chiffres precision 50 print pi Sortie 80 ms 0 31415926535897932384626433832795028841971693993751 E 1 342 Chapitre 15 Calculs approch s Exercice piR2 Calculer la surface d un cercle de rayon 1 7 avec 100 chiffres exacts EXP p V_fonction Exponentielle P nombre r el ou complexe La fonction exp renvoie e L argument est limit par Re p lt 22500 environ Exemple print exp 22500 complex i print exp 22500 i Sortie 340 ms 0 4225156727 E 9772 0 2282861922 E 9772 i 0 3555346792 E 9772 LOG p LOG p a LOG10 p V_fonctions Logarithme p a Nombres r els ou complexes La forme log p renvoie le logarithme naturel log p La forme log p a renvoie x log p log p loga le logarithme en base a de p Elle donne une solution x de l quation p a La fonction 1og10 p qui quivaut log p 10 renvoie log 0 p
163. 01 1 9 Constante type de mot clef Les constantes s utilisent comme des V_fonctions sans arguments Les constantes suivantes correspondent aux valeurs courantes de base TWO EIGHT 78 Chapitre 9 Notions de base TEN SIXTEEN Constantes Les constantes two eight ten et sixteen renvoient respectivement les valeurs 2 8 10 et 16 Exemple Pour revenir en base dix on peut utiliser une quelconque des commandes base ten base 810 base A base 1010 mais pas base 10 qui est sans effet Entr e des nombres En plus des chiffres on dispose des symboles E 8 et Exemples 003 nombre en notation d cimale 04000 en base gt dix si le premier chiffre est une lettre il faut le faire pr c der de 0 sinon le Basic croit lire un nom 16 E 12 notation exponentielle de 16 10712 10 3 E 10 et 10 3110 valent 103 10 Lorsque E est aussi un chiffre en base 16 par exemple un espace est n cessaire devant le E repr sentant l exposant L exposant peut aussi s indiquer par e minuscule ou Exemple base 16 print 1e10 1 E10 1110 Sortie 55 ms 1E10 10000000000000000 10000000000000000 Si on fait pr c der le nombre de resp 8 le nombre est d cod en base 16 resp 2 10 Attention dans A A 15 seul A A est en base 16 15 est en base courante La raison est que dans p q comme dans p q p q le Basic d code 2 nombres et effectue une op ration Calculs en nombres exacts Les calculs rationn
164. 1 10 of t i print peekz a pokecb a a peek 0 100 print h conc i 1 10 of t i Sortie 205 ms 65 66 67 68 0 1 1 1 1 1 ABCD 60 1E 1 0O 0 4 0O 20 O 1 6C 60 0O 1 6C 60 D codage et Ex cution Les commandes et fonctions de ce paragraphe peuvent entre autres faciliter la r alisation de biblioth ques de programmes et d mulateurs XQT vircha ne Commande Ex cution d instructions Basic Chapitre 11 Programmation 231 vircha ne doit contenir une ou plusieurs instructions Basic s par es par chr 0 La commande xqt ex cute ces instructions Exemple Utiliser le d bogueur pour voir que xqt print 1 amp chr 0 amp print 2 ex cute les instructions print 1 print 2 Exemple goto calcul La sortie obtenue correspond l ex cution de goto L2 dans la commande xqt char LBL 1 LBL O L1 LBL 1 L2 xqt goto amp LBL random 2 Li print 1 stop L2 print 2 stop Sortie 35 ms 2 Exemple L appel de vdi 6 pour 60 points trace une spirale en 9 s hidecm xqt vdi 6 60 amp conc i 1 60 of amp just1 cint 200 2 xixcos i amp amp justl1 cint 200 2 ixsin i Les instructions dans vircha ne sont cach es et ne peuvent d finir des labels Les structures if select case forv doivent tre compl tes Un programme comme xqt do print 1 loop est accept mais le retour apr s loop n est pas garanti Il faut crire xqt do print 1 loop Les rem
165. 1 1000 of 1 type i j Sortie 1 s i est de type index j est de type index Exemple Les index 32 a et b sont galement d finis de fa on implicite et il en est de m me pour tout nom se terminant par ou qui appara t gauche d une assignation Par contre c qui appara t dans une expression est un litt ral a 1 b 7 w ch type a b c Sortie 115 ms a est de type index b est de type index c est de type lit LIT nomi nomi Commande D claration de litt raux Exemple lit X Y Z 2 3 print sum i 0 2 of Z i i Sortie 55 ms Z 2 2 Z 1 1 Z 0 0 d finit les litt raux simples X Y et les 3 x 4 litt raux Z 2 3 Z 1 3 Z 0 3 Z 2 2 Z 0 0 L ordre donn est l ordre de num rotation des litt raux qui Chapitre 9 Notions de base 91 fixe l ordre dans lequel les litt raux s impriment Le nombre de litt raux est limit 215 le litt ral indic Z compte pour 12 Les litt raux n ont pas de valeur La d claration des litt raux simples est facultative celle des litt raux indic s est obligatoire CHAR nomi nomi VAR nomi nomi Commandes D claration de variables de types char et var Exemple char c ch 49 var A B C T 7 U 8 3 La premi re instruction d finit la variable simple c et les variables ch i o va de 49 0 ordre d croissant de type char La deuxi me instruction d finit les variables simples A B C et les variables T i o va de 7 0 ordre
166. 10 of f amp chr 4i random 26 amp just1 random 2 1 print CHANT music CHANT Sortie 4465 ms Dimanche Lundi 036 t5 P2 X2 W1 U1 X2 I2 E1 A1 51 D2 Les variables de type var prennent 4 sortes de valeurs soit un polyn me soit un produit de polyn mes soit un nombre flottant r el soit un nombre flottant complexe Le codage de la valeur de la variable commence par un mot 2 octets indiquant la forme de son contenu Pour un nombre flottant ce mot est gal 1 r el ou 2 complexe pour un polyn me 0 Une autre valeur atteste de la forme factoris e et donne le nombre de facteurs IMPLICIT INDEX rg rg IMPLICIT CHAR rg rg Commandes Types implicites des noms rg a a b indique un ou plusieurs caract res a b Caract res alphanum riques ceux qui servent crire les noms Par exemple I L d finit l ensemble des lettres I J K L et aussi en minuscules si nodistingo est actif Nous avons indiqu que lorsque Basic 1000d trouve un nom inconnu gauche d une assignation le nom est mis de type var La commande implicit permet de modifier cette r gle Exemple implicit index I M implicit char C a pour effet que tous les noms inconnus gauche d une assignation qui se terminent par C seront pris de type char et que ceux qui se terminent par une des lettres de I M seront pris de type index 32 Ces noms doivent bien s r toujours tre sans indice sinon on a l erreur dimension n
167. 101 par 1 1 x 7x est tr s impr cis on n obtient que 3 chiffres exacts Par contre l expression est calcul e avec plus de 10 chiffres exacts par exp x logi 1 x print exp 10 12 1og1 10 12 print 1 10 7 12 7 10 12 Sortie 215 ms 0 2718281828 E 1 0 2716110034 E 1 SIN p COS p TAN p ASIN p ACOS p ATN p ATN2 q p V_fonctions Fonctions trigonom triques P d r els La pr cision des fonctions sin cos et tan se d t riore pour les grandes valeurs de l argument m me si l argument est donn en exact 344 Chapitre 15 Calculs approch s Exemple Le programme suivant crit l erreur absolue sur sin p pour des grandes valeurs de p de l ordre de 10 En pr cision 10 cette erreur devient insuppor table lorsque p est de l ordre de 101 for n 4 20 print n abs sin 10 n 1 6 pi 1 2 next Sortie 1495 ms 10 0 6159473465 E 5 14 0 8662802676 E 1 La fonction asin p pour p 1 1 calcule la d termination de Parc sinus de p comprise dans 7 2 7 2 Exemple Examine l erreur relative sur asin sin w pour des petits nombres for i 1 100 w 2 i 7 y abs asin sin w v w h max h y next i print h Sortie 13380 ms 0 3730349363 E 13 La fonction acos p pour p 1 1 calcule la d termination de Parc cosinus de p comprise dans 0 7 Au voisinage de p 1 la pr cision relative correspondant la pr cision en cours est obtenue si l argument est exact En
168. 103 Le canal n doit poss der un pointeur disques ou mem i entier 32 d faut 0 La fonction lof renvoie la longueur du fichier utilis comme canal n La fonction eof renvoie 1 vrai si le pointeur du canal n est en fin par exemple si le fichier a t enti rement lu 0 faux sinon La fonction loc renvoie le pointeur du canal n qui est un entier 0 1of n La commande seek place le pointeur du canal n en i Sii lt 0 la commande seek est identique rseek n i La commande rseek place le pointeur du canal n octets avant la fin du fichier La commande relseek d place le pointeur du canal n de octets Exemple Le pointeur du canal est plac en 0 apr s open i ou seek 1 Il est plac en fin de fichier apr s open a ou rseek 1 print lof loc eof c 123456789 open i 1 mem c pointeur relseek 1 5 pointeur seek 1 pointeur 174 Chapitre 10 Entr e Sortie rseek 1 pointeur close 1 open a 1 mem c pointeur stop pointeur print using 1of 1 1oc 1 eof 1 return Sortie 195 ms lof loc eof 9 0 0 9 5 0 9 0 0 9 9 i 9 9 f BPUT n a 1 Commande Ecriture sur un canal BGET n a 1 Commande Lecture d un canal n entier dans 0 103 a entier 32 l entier 32 gt 0 d faut l 1 La commande bput crit sur le canal n les l octets se trouvant partir de l adresse m moire a La commande bget crit dans la m moire pa
169. 112 espace caract re 20 72 107 173 177 206 libre 44 235 esum 291 tat du p riph rique 176 tiquette label toile 6 Euclide 326 algorithme pgcd Euler 326 349 380 383 euler_phi 349 even 280 v nement 138 48 exact 78 9 275 336 exact 276 277 exactp 106 ex cution 14 50 2 241 2 d une cha ne 230 2 exg 221 222 exist 166 existence du fichier 166 exit 63 185 195 196 exitif 185 198 199 exitselect 198 199 exp 342 expi 343 exponentiation exposant exponentielle 342 3 exposant 61 103 4 126 132 193 320 1 485 expr 99 101 104 106 7 234 expra 101 3 exprc 101 2 exprcha ne 102 108 234 expression 99 106 exprn 101 F 10 fact 103 facteur 314 5 premier 283 3524 factor 96 98 100 116 223 278 factore 315 factorielle 249 260 2 285 339 factorisation entiers 283 3524 polyn mes 4 96 9 322 332 485 factorn 314 factorp 311 314 false 478 fcha ne 108 fen tre 11 146 7 401 458 475 6 ferme le canal close Fibonacci 5 6 261 326 fichier 14 40 3 161 82 ASCII ASCII Z 2Z field 65 181 204 FILES 14 40 3 files 481 files 163 164 481 fileselect 481 FILL 44 fill 411 fin de fichier 173 eof fin du programme 243 FIND 47 8 fix 279 479 fl che 160 float 339 floatp 106 flottant 2 80 9 92 103 4 106 212 3 324 338 46 380 90 484 complexe 333 5 FND CHG 46 8 folder r pertoire fonction 5 6 248 74 d erreur 382 interne v_ et c_fonction tran
170. 12525 ms 9691693562453961335247239 Calcul modulo 37 du nombre 8888107 print mdpwre 8888 10 777 37 Sortie 8520 ms 26 Factorisation d un nombre al atoire w random 10 10 print Factorisation de w w print prfact w Sortie 175 ms Factorisation de w 4202284092 272 x 3 23 29 163 3221 Calcul formel Le programme suivant est un exemple de calcul formel W 1 X 72 PRINT W Sortie 35 ms X72 2 X 1 En Basic ordinaire X et W sont des variables qui prennent certaines valeurs Par exemple si X vaut 0 alors W vaut 1 Le m me programme crit en Basic 1000d est tr s diff rent Le nom X qui appara t droite dans la premi re ligne est un litt ral Il n a pas de valeur W qui appara t gauche est une variable Sa valeur est l expression 1 X 2 Le r sultat du PRINT est la forme d velopp e de l expression Basic 10004 est capable de traiter les expressions rationnelles crites avec plusieurs litt raux par exemple pour les d velopper comme dans print formd 1 x 5 2 a b 2 Sortie 110 ms 1 25 x 2 10 x 25 a 2 2 axb b 2 1 Dans le probl me inverse factorisation Basic 1000d est tr s brillant il peut trouver tous les facteurs irr ductibles sur Q print 1 x 9 formf 1 x 9 4 Chapitre 1 Pr sentation du Basic 1000d Sortie 1090 ms 1 x79 x 1 x 6 x 3 1 x x 2 x 1 Basic 1000d peut effectuer substitutions d rivations Par exemple la d riv e de 1 ax b
171. 150 201 284 changer 46 8 cha ne 201 lecteur 162 nom d un fichier 167 changes 201 char 107 109 116 234 char 91 92 3 264 267 chargement fichier 14 42 3 168 70 cran 136 charn 488 chdir 40 1 163 427 chdrive 40 1 162 424 checker 137 166 chemin de r pertoire 40 1 163 chercher 46 8 232 chinois 350 chinois1i 350 chinois 351 chinoiseq 350 choix select case chr 91 206 207 chrp 131 207 cint 279 circle 401 413 440 clavier 22 144 148 151 153 171 clear 44 52 62 77 82 85 6 92 96 122 135 238 242 262 264 331 401 489 492 clear cond 329 330 clear timer 238 clearw 475 Clebsch Gordan 367 9 clignotement 124 158 160 clip 401 410 clock 29 240 close 129 169 70 172 173 180 243 closew 475 clr 24 cls 125 cmp 75 205 216 cmp1 178 205 217 codage cryptographie c_ensemble 113 index 90 m moire 210 236 nombres exacts 484 nombres flottants 484 polyn me 484 produit de polyn mes 485 v_ensemble 113 coef 289 290 coeff 290 coefficient 289 90 310 1 colonne 121 color 74 402 463 commentaire 50 244 communication 3 COMP 44 comparaison 44 60 101 2 205 comparateur 101 2 107 8 complex 80 328 331 complexe 2 5 65 6 80 1 92 103 6 328 9 331 6 484 conjugu 333 exact 104 complexp 106 con 171 176 8 conc 192 concat nation 108 192 223 cond 223 302 328 491 condition 5 60 186 328 31 cond confirmation 149 conjugu complexe 333 console 171 co
172. 170085879617892222278962370389737472000000000000000000 0000000000000000000000000000000 Lorsque la commande remember I est ex cut e il y a deux possibilit s Tout d abord si I n est pas une entr e de la table du remember la fonction est valu e normalement et sa valeur remplace dans cette table la valeur la plus ancienne Si par contre I est une entr e de la table du remember la valeur de la fonction est simplement lue dans la table La table du remember est vid e par clear Il est possible d utiliser remember simultan ment dans plusieurs fonc tions Il faut alors des entr es distinctes Par exemple si les arguments de F n et G n sont limit s 0 100 on peut crire F function n remember n G function n remember 101 n Exemple Calcul du nombre de partitions Ce probl me de base de la th orie additive des nombres nous fournit un exemple de remember Par exemple il y a 5 partitions du nombre 4 4 3 1 2 2 2 1 1 1 1 1 1 La fonction p n suivante calcule le nombre de partitions de n par la formule de r currence d Euler La valeur exacte p n est compar e la valeur R n d une formule approch e de Rademacher 1937 Les deux premi res instructions mod ifient la structure du Basic s_pro permet une profondeur d appel importante et on donne s_rem sa valeur optimum 201 aucune valeur de p n ne sera calcul e deux fois s_pro 20000 s_rem 201 format 1 forv i in 4 10 40 5 50 200 50
173. 2 xdke 3 xf 2 xuxy 4 d e 3 xf xuxv 2 2xd e 2xf 3xy 2 2 xdke 2 xf 2xv3 0 Trac de courbes fplot t1 t2 t3 x0 y0 sx sy fx fy Proc dure Trac de courbe tl t2 t3 r els d finissent le v_ensemble t1 t2 t3 Chapitre 16 Biblioth que Math matique 379 x0 y0 r els coordonn es absolues de l origine SX Sy r els positifs facteurs d chelle fx fy noms de V_fonctions La proc dure fplot permet de tracer la courbe plane donn e sous forme para N m tr e par x fx t y fy t Le trac est effectu partir des points correspondants aux valeurs t du V_ensemble t1 t2 t3 Les points adjacents sont reli s par des segments de droite La courbe est dispos e de fa on tradi tionnelle avec y croissant vers le haut de l cran La valeur sx resp sy donne le nombre de pixels qui repr sentent la longueur 1 sur l axe des x resp y Exemple monochrome Le programme trace en 15 s la n phro de d quation x 3sint sin 3t y 3 cost cos 3t La courbe est obtenue en faisant varier t de 0 27 avec un pas de 7 30 D origine est le point de coordonn es absolues cran 320 232 D unit vaut 50 pixels sur les axes Ox et Oy fplot 0 2 pi pi 30 320 232 50 50 fx fy stop fy function t value 3 xcos t cos 3 t return fx function t value 3 xsin t sin 3 t return axis x0 y0 x1 yl x2 y2 dx dy x y Proc dure Trac d axes x0 y0 r els coordonn es relatives de
174. 2 xn 3 5 66 n La somme sur les valeurs enti res x de 1 n de 1 x x 2 x 8 est 1 13440 x nl x n 8 1x n 7 1 n 6 1 n 5 1 n 4 1 n 3 1 n 2 1 n 1 1x x 919 n 7 33084 n 6 495054 n 5 39 78184 n 4 18463431 n 3 49218316 n 2 69240596 n 39204016 La somme sur j de l s l s de 2 j 1 x jx j 1 s x s 1 1x 1 1 vaut 0 sdpoly f x V_fonction Sommation alg brique polyn me en x litt ral La fonction sdpoly renvoie le polyn me F x qui v rifie P quation 1 et tel que F x 0 pour z 0 sdfrac f x V_fonction Sommation alg brique expr litt ral La fonction sdfrac renvoie lexpression F x qui v rifie l quation 1 et telle que F x 0 S il n y a pas de solution arr t apr s message sdrap w x V_fonction Sommation alg brique expr litt ral Pour sommer f x donner comme argument w le rapport f x f x 1 Si F x F x 1 est rationnel une solution F x s obtient par sdrap w x x f x Chapitre 16 Biblioth que Math matique 375 La fonction sdrap permet la sommation d expressions non rationnelles en x comme par exemple f x x x u On a en effet f x f x 1 u x 1 et l appel print sdrap x u x 1 x donne la solution u l ru x 1 u 1 mais il faut continuer le calcul de F b F a 1 la main parce que le Basic 10004 n accepte pas l expression u 1 F x G om trie plane Coordonn es Les coord
175. 24 34 8 42 44 490 HELPS 45 heure 29 238 41 hex 209 hidec 123 hidecm 123 125 hidem 123 157 451 himem 44 68 482 490 492 494 512 home 23 homog 294 homog ne 287 294 horloge 238 41 hunt 439 hydrog ne 290 hyperbolique 345 6 hyperg om trique 299 301 382 fa F identificateur nom nomi d objet 141 du canal 171 IEEE 212 3 if 184 187 197 200 231 ift 54 185 199 ikb 171 im 333 imbrication des boucles 63 199 200 imp 100 461 implicit 92 117 importer 459 460 imprimante 46 124 5 132 3 171 176 473 4 in 101 102 107 109 111 forc forv inc 477 increment de boucle 63 ind 72 105 indentation 21 index 89 91 104 116 234 264 487 index 89 90 92 3 264 266 7 indicateur Euler 349 indice 72 92 3 126 132 infow 475 initialisation 93 230 242 3 273 478 inkey 153 inp 175 180 222 431 inp 175 431 input 28 60 123 150 172 176 177 328 449 input 165 177 178 180 input_dev 172 177 insert 22 24 insertion 203 214 5 installer une application 8 instr 75 232 instrk 232 instruction 50 suivante 237 int 279 integerp 106 int grale 4 17 64 99 193 296 7 348 370 2 3834 integre 348 interd 377 intersection 377 intervalle 109 10 intg 193 296 370 intgi 370 intg2 370 intg3 371 intg4 371 intgm 296 intin 441 intlg 281 intout 441 introot 281 intsqr 79 280 inv 309 inverse 309 10 320 1 cha ne 205 matrice 356 7 tablea
176. 286 339 point 407 416 point 403 404 point l infini 376 point virgule pointeur du canal 173 poke 43 227 30 cha ne 229 poke 482 pokeb 228 pokebs 61 228 pokecb 229 pokecw 229 pokel 228 pokels 228 poker 59 228 pokews 228 police de caract res fonte pollard 352 poly 104 106 polyappr 357 polyfill 417 447 polygone 417 poly1l 311 polyline 417 447 polyln 311 polym 284 313 polymark 417 447 polymn 284 313 polyn 310 polyn me 92 95 484 al atoire 324 homog ne 287 normalis 95 sym trique 362 4 polyp 106 pop 55 60 68 82 185 225 267 489 491 pop 55 68 225 239 488 491 portion 414 pos 121 128 462 position de la souris 157 60 pourcent ppur 261 285 286 339 prbox 413 pr cision 2 13 85 9 338 precision 85 86 87 237 242 precision2 86 277 premier 283 316 8 336 352 premier 318 prfact 59 283 352 prfact 283 primaire 103 4 prime 190 318 print 60 77 125 158 172 176 print b 46 PRINTER 46 PRINTING 45 print_dev 172 176 prinv 321 procedure 253 272 517 proc dure 6 7 248 74 processeur rationnel 2 3 78 9 prod 192 produit 192 multiplication de polyn mes 92 95 485 progression 110 projection 377 projorth 377 protocole 211 prsqr 351 prtst 191 317 pseudo division 306 7 psing 297 ptr 90 236 271 487 492 ptrptr 486 ptsin 441 ptsout 441 puissance exposant push 68 82 224 491 push 68 225 239 267 488 9 491 put 181 qua3j 368 qua
177. 30 Chapitre 11 Programmation La fonction peek renvoie la cha ne de l octets commen ant l adresse a La fonction peekz renvoie la cha ne form e des octets partir de l adresse a jusqu au premier octet nul rencontr Cette cha ne ne contient aucun octet nul Les commandes pokecb et pokecw implantent vircha ne dans la m moire partir de l adresse a ou ap raison d un caract re par octet pour pokecb ou d un caract re par mot pour pokecw l octet fort du mot tant mis z ro On implante galement un octet ou mot nul apr s la cha ne sauf si l option a a L est mise Exemple Les 100 octets partir de l adresse a repr sentent les valeurs de t i pour i allant de 1 100 Le premier pokecb remplit tous ces octets avec 1 Cette m thode permet d initialiser un grand tableau d index beaucoup plus rapidement que par une boucle L option a L est ici indispensable sinon un octet nul serait implant en dehors de la zone attribu e au tableau t ce qui peut d truire des donn es et conduire une erreur Fatale Le deuxi me pokecb implante une cha ne avec un z ro terminal L effet de ces pokecb est examin par simple lecture de t i peekz est utilis pour relire la cha ne implant e Ensuite une combinaison de pokecb et peek permet de recopier les 100 octets partir de l adresse 0 dans le tableau t index x8 t 100 a ptr t 1 pokecb a a chr ff 100 pokecb a ABCD print conc i
178. 30 xs 2 16 s 1 74 30 xs 1 72 15 0 s 1 1344xs 2 72xs 1 72 1008xs 2 72 1344xs 2 s 1 74 2688 s 2 s 1 2 1260 s 2 320 s 1 76 1008 s 1 74 1008 xs 1 72 315 0 Cas s 0 Il appara t ainsi d abord la solution suivante de ce syst me s 0 S2 arbitraire La valeur correspondante de s3 s obtient en reportant s 0 dans l quation e3 0 ce qui donne s3 0 L quation correspondante en u est u sou 0 Les solutions en x sont une permutation pr s z 0 ce qui donne x 0 mod 7 wo X3 396 Chapitre 17 Exemples d application Cas s 0 On poursuit la r solution en supprimant le facteur s 0 des quations et en liminant s2 On obtient une quation en s que l on factorise Cela est r alis par le programme suivant lit s 3 e5 40 s 2 s 1 2 30 s 2 16 s 1 4 30 s 1 2 15 e7 1344 s 2 2 s 1 2 1008 s 2 2 1344 s 2 s 1 4 2688 s 2 xs 1 72 1260 s 2 320 xs 1 76 1008 s 1 4 1008 s 1 72 315 e7 elim e7 e5 s 2 print formf e7 0 R sultat 6 s 4 48s 3 256s 2880s 100805 126005 4725 0 L quation obtenue est de degr 10 en s mais c est en fait seulement une quation de degr 5 en s La factorisation obtenue donne les deux cas suiv ants Cas s 3 4 En reportant cette valeur dans e5 par la commande print subsr e5 s 1 2 3 4 on obtient la valeur 3 2 pour e5 c est dire qu
179. 3jp 368 qua6j 368 qua6jp 368 qua9j 368 qua9jp 369 quac 367 quacg 368 quaf 367 quantique 290 367 9 quasum 368 QUERY 43 QUIT 44 quit 242 quotient division Racah 367 racine carr e 280 341 carr e modulaire 351 k i me 281 304 d un polyn me 98 348 385 7 racines 348 Rademacher 262 518 ramassage des poubelles 235 492 ramasse miettes 235 492 random 186 324 randomize 243 324 rangement 178 80 213 20 rationnel 78 9 ratnump 106 rayon 377 rbox 413 RC 471 re 333 read 58 69 117 151 328 recherche 46 8 218 439 rectangle 413 r cursivit 5 6 249 259 63 443 red 98 291 303 308 red claration 93 redf 291 292 r el 92 105 331 484 r entrant r cursivit register 436 relseek 173 rem 244 remarque 244 remember 5 6 69 261 491 remplissage 409 12 468 9 renomme un fichier 167 renverse 205 215 inverse r partition normale 382 repeat 56 195 196 200 254 r pertoire 40 1 161 7 r p te 207 r serve 492 r sidu division quadratique 351 r solution 10 21 120 400 433 d quations quation r sultat de fonction value resume 482 retour de sous programme 252 retrac 146 return 69 82 185 195 251 252 254 5 264 266 r utilisation 12 129 right 203 rinstr 232 rinstrk 232 rmdir 162 426 rnd 254 324 romberg 383 root 304 332 round 477 RS232 171 211 rscreen 60 136 444 rseek 173 rset 181 203 run 168 241 242 RUN 1
180. 4 52 RUN 52 rvb 402 463 r_files 69 491 493 satn 299 saut de page 124 126 sauvegarde cran 136 fichier 14 168 9 Savage 87 save 40 1 168 SAVE 42 3 SAVE IMG 43 save 115 167 168 SAVE B 43 scos 299 screen 60 136 444 resolution 28 120 121 126 137 1524 scrolling 122 464 400 410 resolution0 59 120 reste division restore 117 restriction 401 r sultante 303 sdfrac 374 sdpoke 482 sdpoly 374 sdrap 374 search 178 218 seconde 238 secteur 413 seek 173 178 180 segment 110 select case 186 187 197 200 231 328 s lecteur de fichier 40 163 481 s lection d une instruction 187 s parateur 47 s quence escape 131 s rie 299 301 setcolor 463 setmouse 158 settime 239 sexp 299 sgeq 355 359 sgeqd 355 359 sgeqe 355 360 sget 466 sgn 278 shift s showc 123 showcm 123 showm 123 157 451 shyg 299 signe 102 278 simplex 388 simplexe 387 sin 343 364 sinh 345 sixteen 78 size 69 sleq 354 356 slog1 299 Slowinski 326 slpoke 482 somme 192 int grale de deux carr s 336 des racines 289 en termes finis 372 5 son 153 7 479 81 sort 178 215 219 246 417 sortie 120 82 d une structure if 198 d une structure select 198 9 519 de boucle 190 196 8 du Basic quit sound 479 source 8 13 20 37 42 44 46 168 490 souris 22 123 138 145 148 157 61 sous programme 5 8 24874 soustraction 223 space 206 spc 128 206 spoke 482 sprite 467 sput
181. 4 return Sp6 l1locate 0 70 print time return Spb f_type 2 random 2 f_style 1 random 12 pcircle menu 10 menu 11 50 return MENU a k Commande Construction de l arbre du menu a k nomi de type char La commande menu utilise les variables du tableau a partir de a k Le tableau peut avoir un ou plusieurs indices mais ici nous supposerons qu il a un seul indice et que l on utilise la commande menu a 0 Le tableau a k doit tre rempli avant l appel de la commande menu par ex emple comme suit k exemple 0 desk Titre du premier menu d roulant 1 info Ligne d information Dre cacre S paratrice 3 1 Premier accessoire 8 6 Sixi me accessoire 9 Vide marque la fin du premier menu 10 files Titre du deuxi me menu 11 open Premier l ment du deuxi me menu d roulant x Vide marque la fin du menu m Vide marque la fin du dernier menu m 1 Vide marque la fin des donn es 4 7 Les l ments a k commen ant par sont d connect s en gris Par exemple si on initialise a 3 a 8 avec les accessoires ne peuvent pas tre appel s La commande menu provoque seulement la construction de l arbre du menu si elle est possible Le menu ne sera dessin qu apr s la commande on menu Chapitre 10 Entr e Sortie 141 Entr e n du menu Nous d signons ainsi la n 1 i me cha ne utilis e par la commande menu a k Seulement certaines entr es sont repr sent es sur l
182. 42 format 101 Remarquer que precision est une variable d tat mais que precision est seulement une commande Calculs en flottant Les op rations et dans lesquelles appara t un nombre flottant sont effectu es en flottant seulement la pr cision en cours Une exponentiation Chapitre 9 Notions de base 87 comme 2 1 2 qui ne peut tre calcul e en exact est galement calcul e en flottant Les V_fonctions flottantes sont calcul es avec la pr cision courante Temps de calcul typiques en secondes precision 10 11 100 200 500 1000 1230 w xw 0 002 0 002 0 01 0 03 01 06 09 1 w 1 0 01 0 01 0 03 0 07 0 3 08 12 w1000 0 02 0 02 0 14 044 2 9 13 vw 0 01 0 01 0 05 0 11 04 13 28 e 0 03 0 06 0 89 31 18 85 135 log w 0 05 0 09 1 38 4 7 27 124 258 w 0 07 0 14 2 21 7 7 46 210 396 sin w 0 04 0 09 1 67 6 0 39 187 362 tan w 0 04 0 18 3 30 12 1 78 374 726 arctanw 0 05 0 12 2 95 116 78 396 880 print w 0 03 0 03 0 14 0 30 1 0 29 4 1 Le nombre r el flottant w 17 19 lt a t utilis Les V_fonctions flottantes sont calcul es par polyn mes en m moire jusqu la pr cision 10 et par des d veloppements limit s et relations fonctionnelles au del C est pourquoi les temps augmentent fortement en pr cision 11 Les calculs en pr cision inf rieure 10 ne sont pas recommand s le gain en temps tant de 30 au mieux Tests d exactitude et de vitesse Ces tests sont destin s v rifier l exactitude des ca
183. 444 compos Exemple Le programme d termine les nombres premiers palindromes de 7 chiffres 318 Chapitre 13 Calculs exacts forv i in 1 3 7 9 for j 0 9 for h 0 9 for k 0 9000 1000 m 1000001 i 100010 xj 10100 h k if prtst m print justr m 8 n n i endif next k h j nextv print print nb de solutions n Sortie 368 s 1003001 1008001 1022201 1028201 TE solutions 668 PRIME m V_fonction Nombre premier plus grand ou gal m entier m gt 1 La fonction prime utilise prtst Son r sultat n est donc que probablement vrai si m gt 108 avec un taux d erreur plus faible que 1074 Exemple La fonction suivante premier k donne le k i me nombre premier Le centi me nombre premier est affich print premier 100 stop premier function index j value 1i for j 1 j value prime value 1 next j return Sortie 1115 ms 541 Performances de PRIME La boucle suivante sur les nombres premiers inf rieurs 106 est effectu e en 20000 s environ m 1 while m lt 10 6 m prime m 1 Chapitre 13 Calculs exacts 319 wend MDS A p V_fonction Reste modulo p la fonction mds renvoie un unip gal l unip modulo p et coefficients dans p 2 p 2 Noter que la fonction mod A p renvoie un unip quivalent A et coefficients dans 0 p Ces deux fonctions seront tr s utiles dans les calculs modulaires Ainsi on crira mod A B p mds A B p etc pour effectuer les multiplications et additions
184. 45 3007961 x 6168647 6172953 D termination al atoire de l erreur Erreur gt 0 7024234232 E 3 V rifi en 15603 points Syst me d quations La m thode de r solution d un syst me d quations est bas e sur luti lisation de la fonction elim eql eq2 x qui limine x entre eql et eq2 et de la fonction formf qui factorise les expressions litt rales Les quations peu vent tre non lin aires M me dans ce cas le programme trouve toutes les solu tions rationnelles et exprime les solutions non rationnelles en termes de z ros de polyn mes une inconnue Les quations peuvent comporter d autres litt raux que les inconnues les solutions obtenues sont alors les solutions g n riques val ables pour toutes les valeurs de ces autres litt raux Les nombres d quations et d inconnues peuvent tre diff rents Les quations peuvent ne pas tre ind pendantes pour chaque relation entre qua tions on obtient le message quations non ind pendantes S il y a moins d quations ind pendantes que d inconnues le programme exprime les solutions en fonction d inconnues pouvant tre arbitraires S il y en a plus on obtient le message syst me impossible Si au cours de la r solution il y a un facteur com mun entre 2 quations la r solution est faite d abord en supposant ce facteur diff rent de z ro puis ensuite en rempla ant les deux quations par ce facteur sgeq m n eq Z sgeqd
185. 466 sqr 341 sroot 289 ssin 299 stack 225 491 stack 225 491 station de travail 440 471 statistique 382 step for stirling 381 STND 8 11 457 82 stop 50 52 56 69 243 245 6 482 str 61 103 107 208 300 string 206 207 SU 2 367 9 sub 477 subs 293 294 340 subsr 293 294 330 subsrr 293 294 330 substitution de caract res 201 de cha ne 201 math matique 293 340 source 46 8 sum 192 superviseur 437 sure 149 swap 482 symbole Atari 130 sym trie 363 394 symf 363 394 symsigma 362 520 symsum 362 systab 46 132 443 454 494 syst me d quations quation d exploitation 421 56 494 lin aire 354 6 systeme 348 s_cond 69 328 491 493 s_menu 69 491 493 s_name 69 491 492 s_pro 44 70 189 252 261 2 264 490 492 s_rem 261 491 493 s_src 490 492 s_var 70 224 264 301 393 491 493 s_xqt 44 70 252 491 492 t level 17 20 1 tab 21 23 tab 126 128 table canaux 101 103 172 cases du damier 137 celsg 113 codes ASCII 523 codes d impression 130 codes keytest 151 2 conversions imprimante 46 132 3 couleurs exemples 402 couleurs num ro et index 403 entiers 228 erreurs 59 70 motifs de remplissage 524 p riph riques 471 r solutions 120 400 s quences escape 131 size 89 types des noms 73 486 using cha nes 133 using expr 134 variables internes 494 velsg 113 v rit 100 1 tableau 72 93 4 105 267 tabulation 124 128 134 taille 69 89 90 tampon 180 237 d
186. 50 il vaut mieux augmenter N FOR J 1 50 FOR I 0 9 T I 0 next I FOR I 1 N VADD T RANDOM 10 1 326 Chapitre 13 Calculs exacts next I KHI FLOAT SUM I 0 9 OF T I 2 x10 N N SELECT CASE KHI CASE IN 3 325 16 92 print CASE IN 2 088 21 67 print o CASE OTHERS print 0 endselect next J print next R Exercices de programmation Exercice Fibo Nous avons donn dans le chapitre d introduction un programme calcu lant exactement le milli me nombre de la suite de Fibonacci 1 1 2 1 1 3 2 1 5 3 2 Le r sultat est un nombre de 209 chiffres Ecrire un programme calculant ce nombre sans utiliser une fonction appel r cursif pour minimiser le temps de calcul Exercice Grandissime Les nombres de Mersenne M sont les nombres premiers de la forme 2P 1 Un entier N est appel nombre parfait s il est gal la somme de ses diviseurs comme par exemple 6 1 2 3 Un th or me c l bre Euclide et Euler montre que les nombres parfaits pairs sont en correspondance bijective avec les nombres de Mersenne Les nombres parfaits pairs sont l ensemble des nombres de la forme 2271M o Mp 2P 1 est un nombre de Mersenne En 1979 le vingt septi me nombre de Mersenne connu 244497 1 tait aussi le plus grand nombre premier connu D Slowinski Mais la liste des nom bres de Mersenne connus s allonge presque tous les ans 286245 1 22160917 en 1985 Ecrire les nombr
187. 53 Souris RE Lecteurs de TEIS petoa m Tiki D aa a de aan 2e LOL Gestion par fichier complet 168 Gestion s quentielle ou s lective 170 11 Programmation 183 Structures IF DR AE ne d aaea aaia 2e LSA Structures SELECT CASE UN NN NN ER A EE a aaa a gO Boucles FOR NN AM SR A tr les Boucles FORV et FORC Lt at M re LR ne al 4 a 94 Boucles DO WHILE et REPEAT 195 Sortie des structures SR AS M RE EE NE fees ete a es tee OO Remarques sur les eue nest ie De rer tt Nas et 009 Traitement des cha nes 200 Conversions avec cha nes Le hi d Eee Ha 208 Copie tri recherche et D Ra ton ete han de 44 278 Op rations dans les variables 222 Pile utilisateur a 224 Peek et Poke 227 D codage et Ex cution 230 Informations M moire 235 Temps Heure et Date 237 Contr le de l ex cution ee ET a tn de 9 4 tot he 2A Traitement des erreurs et du Break A a Made AN Aaaa AA 12 Labels Sous programmes 247 Labels et Branchements 248 Fonctions et Proc dures 248 Structure des sous programmes
188. 8 B print Ligne B gt I I J J next I Sortie 120 ms Ligne A gt I 1 Ligne B gt I 1 J 1 Ligne A gt I 2 Ligne B gt I 2 J 1 On peut utiliser plusieurs next pour la m me boucle ainsi for i 1 10 190 Chapitre 11 Programmation ift i 2 next i ift i 3 next i next i est correct Explications La commande next I J quivaut la suite next I next J La commande next I termine toutes les boucles commenc es apr s la boucle I puis ajoute c I et si la valeur obtenue est entre a et b reprend la boucle Sinon elle termine la boucle I La commande next sans index concerne la derni re boucle La commande for I lorsque le programme est d j dans une bou cle sur I non termin e termine toutes les boucles commenc es apr s l ancienne boucle I Dans b 10 c 1 for i 1 b c b b 1 c c 1 next i les modifications de la borne b et du pas c de la boucle ne changent pas la boucle Les limites et pas sont calcul s une fois pour toutes lors de la commande for On peut en particulier utiliser sans crainte for i 1 i next i Dans for i 1 10 i i 1 next i l index de boucle est modifi La boucle ici en devient sans fin Exemple Illustration de la sortie de boucles for Le programme recherche des nombres premiers qui en syst me d cimal poss dent la propri t suivante Si on modifie un seul de ses chiffres on n obtient jamais un nombre premier Le premier chiffre n est pas ch
189. 8 25916 1136 20432 calcul 3 22 205 0 8 29 der 1 6 32 0 2 6 intg 4 19 95 2 61 formf 4 15 65 9285 Calcul des expressions math matiques Nous allons d finir de fa on pr cise les expressions math matiques La forme la plus g n rale est not e expr La d finition fait intervenir un grand nombre de d finitions dont certaines avec cha nes de caract res ne seront vues que dans les sections suivantes Pour simplifier nous n avons pas fait appara tre la distinction entre exacts et flottants Une op ration entre exacts donne un 100 Chapitre 9 Notions de base exact mis part l exponentiation Une comparaison donne un exact les autres op rations donnent un flottant si un des op randes est un flottant Cependant si ce r sultat ne peut tre converti en flottant comme dans 2 x o x est un litt ral on obtient l erreur Nombre Complexe Indiquons ici sous quelle forme factoris e ou d velopp e sont effectu s les calculs d expr Si l option est factor tous les r sultats des calculs interm diaires sont sous forme factoris e Si l option est develop a Le r sultat d une exponentiation est polynomial si possible b Le r sultat de A B A B x B est sous forme polyn me si A et B sont tous deux sous forme polyn me Sinon le r sultat est factoris c A B est calcul en factoris et le r sultat est converti en polyn me si c est possible Exemple Ecrit en factoris polyn me factori
190. A A1 A An Bo Bi Bm 0 0 0 0 Bo Bm 1 Bm 0 0 0 0 0 Bo Bm Bm Si p et q ne contiennent pas x elim renvoie 1 Exemple La r solution du syst me d quations T y rz a 3 zyz 2a r y z a 5 est obtenue en liminant y et z Les racines en x sont les z ros de W et se lisent de suite 1 2 et a sur la forme factoris e Wi elim x y z a 3 x y z 2 xa y W2 elim x y z a 3 x 2 y 2 z 2 a 2 5 y W elim W1 W2 z print formf W Sortie 520 ms 4x x 2 72 x 1 72 x a 2 Exemple Avant l limination de x entre p et q il vaut mieux pour la rapidit de elim remplacer p et q par leurs parties principales red p x et red q x p x 2 y a q b 1 x c 304 Chapitre 13 Calculs exacts print elim p q x print elim red p x red q x x Sortie 200 ms y a b 2 2 y a b y a axb 2 c 2 2 xaxbxc 2 a c 2 y c 2 ROOT p k V_fonction Racine k i me exacte P expr k entier k gt 0 S il existe une expression rationnelle q telle que p q la fonction root renvoie q Sinon elle renvoie 0 Exemple print root A 2 2 AxB B 2 C 2 2 print root 3 2 Sortie 95 ms c 1 A B 0 Division et PGCD DCOM p1 p2 pj V_fonction Diviseur commun pl p2 pj expr La fonction dcom p1 pn renvoie une expression q telle que p1 q Pn q soient des polyn mes de pgcd gal une constante La valeur q est sous forme produit avec un facteur constant gal 1 Exemple
191. AL k Variables d tat k entier 16 Apr s l une des 4 commandes g entier pair videoinverse videoinverse g videonormal g print chr 15 on obtient l impression en mode inverse Apr s l une des 4 commandes u entier impair videonormal videoinverse u videonormal u print chr 17 on obtient le retour en impression normale Les valeurs de ces variables d tat sont 70 et 71 en modes inverse et normal respectivement Chapitre 10 Entr e Sortie 123 Exemple Sur l cran la premi re ligne de la sortie est affich e en blanc sur noir videoinverse print h videoinverse videonormal print h videonormal Sortie 30 ms 70 71 SHOWM k SHOWC fk SHOWCM jk HIDEM k HIDEC k HIDECM k Variables d tat Visibilit souris et curseur k entier 32 Les variables d tat showm showc showcm hidem hidec et hidecm renvoient toutes la m me valeur enti re x Si and 8000 vaut 0 la souris est visible cach e sinon Si x and 80 vaut 0 le curseur est visible cach sinon Pour faire appara tre dispara tre la souris le curseur ou les deux on peut utiliser la variable de nom convenable comme commande sans pr ciser k On peut aussi utiliser indiff remment une quelconque des variables avec la valeur de k correspondant l tat souhait Seule est prise en compte la valeur de x k and 8080 suivant les r gles ci dessus Exemple On cache la souris pendant 3 s puis on la remet visible ou
192. APPELS DE FONCTIONS EXTERNES 256 Chapitre 12 Labels Sous programmes Par contre l emploi de value dans les arguments de toutes les fonctions internes du Basic par exemple mod value x x 2 2 est correct L emploi de value n est pas autoris si une fonction n est pas en cours de calcul Les arguments Envoi des arguments Fonctions Par exemple les arguments A1 A2 sont transmis la fonction XYZ par la notation XYZ A1 A2 o la liste des arguments s par s par des virgules est plac e entre parenth ses derri re le nom du label de fonction XYZ Dans l appel print XYZ a b print il y a 4 arguments En Basic 10004 les arguments peuvent tre presque n importe quoi Ici le premier argument ressemble une expression le deuxi me est le mot clef print le troisi me le caract re et le quatri me est vide Au moment de l appel de la fonction Basic 1000d ne cherche pas calculer la valeur des arguments Il d termine seulement le nombre et le texte des arguments et ces donn es sont empil es pour permettre des appels r cursifs C est au programme de la fonction de donner leur r le aux arguments Proc dures Par exemple les arguments A1 A2 sont transmis la proc dure PPP par la notation PPP A1 A2 o la liste des arguments s par s par des virgules est plac e derri re le nom du label proc PPP La notation PPP AI A2 est galement admise R gles pour la s paration des
193. Cela appara t sous la forme og x a dans le r sultat mais attention cette forme n est pas une fonction de x mais le nom d un litt ral cr par Basic 1000d On ne peut donc ni le d river ni l int grer de fa on correcte Exemple En principe W log X 1 cependant le calcul de la d riv e de W par der donne 0 et son int gration par intg est fausse W intg 1 X 1 print W der W X print inte W X Sortie 165 ms og x 1 0 og X 1 1 x X Si og x 0 appara t plusieurs fois c est en fait un nouveau litt ral chaque fois Exemple La sortie n est pas nulle pour le Basic print intg 1 x intg 1 x Sortie 175 ms og x 0 og x 0 Il est donc clair que si le r sultat d une int gration multiple par intgm contient des og x l int grale peut tre fausse car ces og x ont t consid r s comme des constantes dans les int grations successives PSING p x q y V_fonction Partie singuli re P q expr X y litt raux p et q ne doivent pas contenir le litt ral y 298 Chapitre 13 Calculs exacts Si P Po gt x q o po est r gulier en x q et est ind pendant de x la fonction psing renvoie la partie singuli re de p mise sous la forme m Ai Exemple Le programme montre que la d composition en l ments simples de la fraction rationnelle p est donn e par e e a x 1 x 1 x 1 p x 5 2 x 4 3 x 2 2 x 1 x73 3 x 2 3 x 1 q psi
194. D p C_fonctions Conversion r el p format IEEE CVS s CVD d V_fonctions Conversion format IEEE p P r el s exprcha ne de 4 octets d exprcha ne de 8 octets Les fonctions mks et mkd convertissent un r el aux formats recommand s par PIEEE pour les flottants simple ou double pr cision Ces formats ne sont pas Chapitre 11 Programmation 213 utilis s par le Basic 1000d mais les fonctions de conversions permettent la jonc tion avec des terminaux ou programmes utilisant ces formats Le nombre 0 est cod par 32 ou 64 bits nuls Le nombre p 52 1 x o s est le signe m un entier et x 0 1 est cod par Format 32 bits Format 64 bits bits bits 31 s 63 s 30 23 m 127 62 52 m 1024 22 0 cint x2 3 51 0 cint x2 Les C_fonctions mks et mkd renvoient une cha ne de 4 ou 8 octets contenant ces formats Les fonctions cvs et cvd effectuent les conversions inverses Exemple On crit le plus petit r el strictement positif repr sent dans ces formats ainsi que le plus petit r el n gatif Le premier nombre est repr sent par des z ros sauf le bit 0 et le deuxi me par tous les bits gaux 1 print 32 bits cvs mkz 1 4 cvs mkz 1 4 print 64 bits cvd mkz 1 8 cvd mkz 1 8 Sortie 385 ms 32 bits 0 5877472455 E 38 0 6805646933 E 39 64 bits 0 1112536929 E 307 0 3595386270 E 309 Copie tri recherche et permutations Les commandes de cette section agissent sur N
195. ENR p V_fonction Num rateur et d nominateur P r el exact Si p a b o a et b sont des entiers premiers entre eux b gt 0 les entiers a et b sont renvoy s par les fonctions numr et denr respectivement Exemple print 123 456 numr 123 456 denr 123 456 Sortie 45 ms 123 456 41 152 INTSQR p V_fonction Partie enti re de la racine carr e P r el p gt 0 La pr cision de la fonction intsqr est infinie quel que soit precision2 D entier k intsqr p v rifie donc toujours les in galit s k lt p lt k 1 Chapitre 13 Calculs exacts 281 Exemple Le calcul de sqr w d pend de la pr cision la diff rence de celui de intsqr w w 10 25 72 10 100 print intsqgr w int sqr w Sortie 145 ms 9999999999999999999999999 9999999999999998758486016 INTROOT p k V_fonction Partie enti re de la racine k i me P r el p gt 0 k entier k 1 215 La pr cision de la fonction introot est infinie quel que soit precision2 L entier r introot p k v rifie donc toujours les in galit s r lt p lt r 1 Exemple Comparaison avec int w 1 3 qui d pend de la pr cision w 107 20 3 print introot w 3 int w 1 3 Sortie 200 ms 100000000000000000000 99999999999991873536 INTLG p V_fonction Partie enti re du logarithme base 2 P r el p gt 0 Comme pour intsgr et introot la pr cision de la fonction intlg est infinie quel que soit precision2 L enti
196. Essayons le programme B_USER Ce pro gramme pourrait s appeler en mode direct par B_USER qui est identique gosub B_USER Pour appeler ce programme particulier il est inutile de taper ces com mandes il suffit de cliquer la case B_USER Vous voyez appara tre un damier mais ce damier est g r par le pro gramme B_USER Il vous permet d appeler sans effort d autres programmes de la biblioth que MATH S lectionnez par exemple la case Int gre et entrez x x 2 1 Imm diatement vous obtenez une valeur de f zods Appelez de nouveau B_USER et cliquer la case Syst me pour lui faire r soudre de fa on exacte le syst me d quations r5 y 33 x L y 5 Le programme vous guidera pour l entr e du syst me Maintenant s lectionnez la case L gt S du menu LBR HLP Cela a pour effet de faire passer la biblioth que dans la source comme vous pouvez le v rifier en ouvrant la fen tre Edit Source Cliquer alors la case T level case F20 ce qui liste seulement les lignes avec des labels Recherchez le label B_USER et cliquez le bouton droit sur sa ligne Vous obtenez alors le listing du programme et dans quelques jours vous serez m me de pouvoir le modifier votre gr ou d crire vos propres programmes B_USER 18 Chapitre 2 Visite rapide du Basic 10004 Modes d emploi Help Il y a dans le Basic 1000d trois zones contenant du texte Nous avons vu les zones Source et Biblioth que La troisi
197. IN 0 maj 1 UPPERS s Chapitre 11 Programmation 201 UPPER1 s C_fonctions Conversion en majuscules LOWERS s C_fonction Conversion en minuscules exprcha ne Avec upper les lettres non accentu es a z sont chang es en A Z mais pas les lettres etc La fonction upper1 supprime les signes diacritiques des lettres a z change toutes les lettres en majuscules et d fait les ligatures et La fonction lower change les majuscules A Z en minuscules Exemple L appel d upper puis de lower ne redonne pas la cha ne de d part M upper Biblioth que Math matique print M a lower M print upperi f hn s che cheveux Sortie 95 ms BIBLIOTH QUE MATH MATIQUE biblioth que math matique FOEHN SECHE CHEVEUX CHANGES s ui vi C_fonction Substitutions de cha ne s ui vi exprcha ne La fonction change remplace dans la cha ne s toutes les occurrences de la cha ne ui par la cha ne vi puis sur le r sultat change u2 en v2 Dans ui u2 on distingue ou non les majuscules des minuscules selon la variable d tat distingo ou nodistingo Exemple La lettre a est chang e en ab puis la lettre b en c print change abab 4 a ab 5 h nc Sortie 15 ms CHANGESS s sp C_fonction Substitutions de caract res exprcha ne modifier sp exprcha ne au plus les 256 premiers caract res sont pris en compte 202 Chapitre 11 Programmation L
198. LOCK k Chapitre 11 Programmation 241 NOCLOCK k Variables d tat Visibilit de l horloge DATE k NODATE k Variables d tat Visibilit de la date k entier 32 Les deux variables d tat clock et noclock renvoient la m me valeur enti re x Si x 0 l horloge est cach e sinon l horloge est affich e sur la case F40 du menu Le nombre de bits non nuls de x r gle le d lai de r criture de l horloge Par exemple x FFFF correspond une r criture toutes les secondes x 5555 une toutes les deux secondes et x 1 une toutes les 16 s Pour faire appara tre resp dispara tre l horloge on peut utiliser la com mande clock resp noclock sans pr ciser k On peut aussi utiliser indiff remment une quelconque des deux commandes avec la valeur de k correspondant l tat souhait Seule est prise en compte la valeur de x k and FFFF Les deux variables d tat date et nodate renvoient la m me valeur enti re y qui a une signification analogue x mais pour la date Ainsi si y 0 la date est cach e Sinon la date est affich e devant l heure dans le menu Pour pouvoir afficher l horloge ou la date pendant l ex cution du pro gramme il est n cessaire que cursh soit plus grand ou gal 4 Exemple Examiner en mode direct l effet des commandes clock 5555 clock 1111 clock 0101 clock 1 clock 0 clock 1 Contr le de l ex cution NEW Commande Efface la source RUN f
199. NTINFOY y1 y2 y3 y4 y5 Procedure Informations sur la fonte courante yl y5 nomi de variables ou index La proc dure vqt_fontinfoy appelle vdi 131 et met dans y1 y5 les posi tions des lignes horizontales inf rieure descendante demi ligne ascendante et sup rieure de la fonte Exemple d utilisation du GDOS Cet exemple n cessite que le driver d imprimante e g FX80 SYS cor respondant au p riph rique 21 soit disponible La pr sence du GDOS est v rifi e par gdos puis de la place m moire pour le driver et les fontes est lib r e au d but du programme Une station de travail est ouverte par la fonction v_opnwk appel e seule ment avec l argument ap 21 qui correspond une imprimante Les commandes graphiques du Basic qui appellent le VDI e g text et line concernent nor malement la station de travail virtuelle ouverte par le Basic Dans l exemple apr s v_h h ces commandes graphiques agissent sur la sortie imprimante et non 474 Chapitre 20 Biblioth que STND plus sur l cran Par contre print qui est ind pendant du VDI continue crire sur l cran Les valeurs xmax et ymax donnent les dimensions ici en pixels de la page imprimante Le programme charge des fontes et utilise le premier jeu avec une hauteur de 10 pixels et le deuxi me jeu de fontes avec une hauteur de 20 points Il encadre le nom de la fonte et trace un sch ma montrant les lignes horizontales de la deuxi me fo
200. PRFACT e f PRFACT e f V_ et C_fonctions D composition en facteurs premiers de e e f entiers e 0 e 1 par d faut f e L effet de la fonction prfact d pend de la valeur de f Si f 0 prfact cherche le plus petit facteur premier de e Si f gt 0 prfact cherche les facteurs premiers 284 Chapitre 13 Calculs exacts de e inf rieurs f 1 Si f lt 0 prfact cherche le plus petit facteur premier de lel mais la diff rence de f 0 la recherche est limit e aux facteurs premiers inf rieurs f 1 Ainsi si f n est pas donn pour e gt 0 prfact d compose compl tement e en facteurs premiers La factorisation obtenue est a a An e pi X p3 Xe X pr o p lt p2 lt gt lt Pn sont des nombres premiers sauf peut tre pn si f est donn La fonction renvoie cette factorisation sous une forme non standard cod e comme un polyn me ill gal d signe la juxtaposition des mon mes P pute pu pau o u est le litt ral phantom de num ro z ro et de nom vide Le polyn me P est ill gal les mon mes sont ordonn s suivant la valeur des coefficients et non suivant les exposants et des exposants identiques peuvent appara tre Utiliser P dans des expressions n a donc aucun sens mais on peut l afficher et le d cortiquer On obtient n par polymn P et en posant M polym P i pi et a sont donn s par norm W et deg M La fonction prfact effectue la m me facto
201. PTRPTR n V_fonction Adresse m moire pointant le type de n n nom t 0 C V_fonction D F commande 10 1F lit 20 2F index 30 3F var 40 4F char 50 label proc 51 label effac 52 label de V_fonction 54 label de C_fonction 60 6C C_fonction 70 constante 71 then 72 of datav 73 value 74 variable d tat 75 xor or and 76 79 variable d tat 78 C_fonction et commande 79 V_fonction et commande Si n est un nom de type inconnu ptrptr renvoie 0 Si n est un mot clef ou un nom d fini par l utilisateur ne pas crire les indices pour un nom indic ptrptr renvoie une adresse pointant dans la description de n Devant cette adresse on trouve les caract res du nom et sa valeur distingo nodistingo Encore devant on trouve un mot long qui pointe vers le nom suivant Les noms sont organis s en environ 1000 listes li es Le d codage d un nom consiste d terminer la liste du nom qui est calcul e par une op ration sur les caract res du nom puis localiser le nom dans sa propre liste La localisation d un nom prend un temps n gligeable devant les calculs math matiques parce que chaque liste est courte et le fait que Basic 1000d la diff rence de la majorit des interpr tes Basic qui Chapitre 21 C ur du Basic 10004 487 codent les noms travaille directement sur le code ASCII n est pas p nalis par des temps de d codage longs A l adresse ptrptr n on trouve le type t du nom n un octet Dans le
202. Prend les valeurs et ce qui indique si on est en int rieur ou ext rieur de parenth ses Les commandes A Z diff rent suivant la valeur de cette variable note Prend les valeurs enti res dans 0 95 La p riode correspondant note est en unit s de 8 x 1076 seconde p note qui est la partie enti re de 3822 x 2770te 12 Par exemple pour note 45 p note 284 correspond une p riode de 2 272 ms et une fr quence de 440 Hz environ octave 36 Prend les valeurs enti res dans 0 95 C est le num ro de la note A tmps 8 Temps en unit 20 ms au d but 160 ms x 1 y 10 z 251 Limites et pas d une boucle for I x z y modulo 256 unit 1 unit ao 2a1 4a2 o a bit de unit vaut 0 ferm ou 1 ouvert et indique l tat du canal i Initialement seul le canal A est ouvert env Le bit de env est 1 si enveloppe est valid e pour le canal i Au d but de music le volume est mis 10 par lt 7 FE gt lt 8 10 gt En fin de music les canaux sont ferm s par lt 7 FF gt lt FF 0 gt Sous commandes Met par Met par Ak Zk Posons n 0 pour A n 1 pour B n 25 pour Z Cette commande d finit note n octave qui doit tre dans 0 95 La commande 156 Chapitre 10 Entr e Sortie d pose la p riode p note dans les registres des canaux ouverts tels que bit de unit 1 lt 2i p gt lt 2i 1 pr
203. Programmation L erreur provient du fait que 0 e1 a t d cod comme un nombre en notation exponentielle On crira pour viter cette erreur ift x 0 e1 1 ou ift x 0 then e1 1 Structures SELECT CASE SELECT CASE x CASE dcomp1 bloc1 CASE dcomp2 bloc2 CASE OTHERS blocn ENDSELECT Commandes Structure select case x expr ou exprcha ne dcomp1 dcomp2 membres de droite des comparaisons ou inclusions Si on juxtapose x et dcompl on doit obtenir une exprc qui ne soit pas une expra Variante d criture On peut crire select x au lieu de select case x Dans la structure select case au plus un des blocs bloci ou bloc2 ou est ex cut C est le premier bloci tel que la condition x dcondi soit vraie ou bien le bloc apr s case others si les conditions pr c dentes taient toutes fausses L expr ou exprcha ne x n est valu e qu une seule fois Exemple Suivant la valeur de random 100 un et un seul des print est ex cut puis l ex cution continue apr s la ligne de la commande endselect Par exemple pour la valeur 40 seul beaucoup est imprim le print suivant est ignor SELECT CASE random 100 CASE lt 20 Chapitre 11 Programmation 187 print un peu CASE IN 20 40 print beaucoup CASE IN 40 70 100 2 print la folie CASE OTHERS print pas du tout ENDSELECT Sortie 35 ms beaucoup Exemple Attend l entr e d un nom au clavier puis le teste
204. QQ Remplacement par Ce remplacement effectu avant l ex cution de l instruction permet la pr sence du caract re Exemple Le premier appel de phi calcule sin 0 5 et le deuxi me appel 4 cos 0 3 La fonction crit galement sur l cran print phi sin 5 print phi 4xcos 3 stop phi function print 1 est remplac par 1 value 01 02 return Sortie 245 ms 1 est remplac par sin 0 4794255386 1 est remplac par 4 cos 0 3821345957 E 1 Exemple On examinera le r le de f a S dans cet exemple utiliser le d bogueur pour voir le texte modifi de l instruction print mi0 lt gt RAT TT TT stop mi0 function for i 1 00 value valueg i amp just1 i amp if next i return Sortie 75 ms lt gt 71 lt gt 277 os 22 AAAhATTTT Exemple Le programme affiche la table ASCII comme la commande diteur du menu HELPS La fonction F_1L renvoie une cha ne de longueur 2 contenant l criture de l argument Comme la fonction est appel e en base 16 cette criture est ici hexad cimale print C justc TABLE DES CODES ATARI 39 print H conc I 0 F OF F_1L I FOR J 0 15 print H F_1L J videoinverse print H conc 1 0 F OF amp chrp I x10 J videonormal Chapitre 12 Labels Sous programmes 259 next J stop F_1L function VALUE justr right 1 1 2 return ARGS k C_fonction Texte de l argument k La fonction arg renvoie
205. R crire p N D o N num p et D den p sont des polyn mes b Faire appara tre autant que possible le mon me M c Remplacer partout en m me temps dans p M par qi Si on utilise pour M le litt ral x subsr p 21 q1 2 q2 donne le m me r sultat que subs p 1 q1 2 q2 mais lorsque p est factoris subs qui ne d veloppe pas les facteurs est plus rapide Par exemple W subsr x 1 7100 x y 1 prend 6 s alors qu avec subs en mode factor le calcul prend 0 02 s 294 Chapitre 13 Calculs exacts La fonction subsrr effectue les m mes transformations que subsr puis recommence ces m mes transformations jusqu ce que p reste inchang pendant tout un cycle de transformations Cela peut donner une boucle sans fin comme dans W subsrr x 1 x y y x Exemple Noter que subs renvoie une forme factoris e La deuxi me instruction montre l galit 1 V2 577 4082 print subs x y 2 x x 5 1 y 1 print subsr i s 8 s 2 2 print subsr x 16 x 2 x print subsrr x 16 x 2 x print subsrr axx 4 b xx 2 c x 2 yxx Sortie 375 ms x 710 408 s 577 x 8 x x y 3 a x y b c HOMOG p x V_fonction Homog n isation P expr ne contenant pas x litt ral La fonction homog homog n ise p par le litt ral x Exemple L exemple montre aussi comment d shomog n iser par subs W homog 1 3 xz 7 xz72 9 a 14 x print W print subs W x 1 Sortie 180 ms a 14 9 x 14 1
206. S g237 b173 Voir vat_extent de la biblioth que STND 117 m Information sur le caract re m de la fonte courante 8240 b173 118 Interruption compteur 8209 b189 119 m Charge les fontes g85 b185 Voir vst_load_fonts de la biblioth que STND 120 m Ote les fontes g87 b187 Voir vst_unload_fonts de la biblioth que STND 121 x y xp yp X Y XP YP m c cp Copie un rectangle g180 b184 122 c Montre la souris g211 b179 Il vaut mieux utiliser showm 123 Cache la souris g213 b179 Il vaut mieux utiliser hidem 452 Chapitre 19 Appels syst me 124 Retourne la position de la souris g214 b183 En sortie ptsout 0 et ptsout 1 donnent les coordonn es et intout 0 le bou ton bit 0 gauche bit 1 droite Voir mouse 125 Interruption bouton g216 b189 126 Interruption mouvement de la souris g217 b189 127 Interruption trac de la souris g219 b189 129 x y XP yP f Restreint l affichage g88 b154 Identique clip x y xp yp f 130 n Information sur la fonte num ro n b186 Voir vqt_name et vqt_name de la biblioth que STND 131 Information sur la fonte courante b186 Voir vqt_fontinfoy de la biblioth que STND AES GCONTRL GLOBAL GINTIN GINTOUT ADDRIN Chapitre 19 Appels syst me 453 ADDROUT Constantes ou Index En tant que constantes ce sont les adresses de tables de nb octets permettant le passage des param tres avec PAES En tant que noms indic s les indices vont
207. UN F18 Permet de faire partir l ex cution d une ligne quelconque Il faut entrer la ligne m me syntaxe que dans la commande ligne A la diff rence de RUN F8 un clear n est pas effectu sauf si la source a t trop modifi e en d truisant par l les variables du programme De plus les programmes B_INIT B_TRACE et B_END sont ignor s dans ce mode d ex cution Mise au point des programmes 54 Chapitre 8 Mise au point des programmes D bogage Le d bogueur permet de contr ler l ex cution d un programme L cran du programme n est pas modifi de sorte que l ex cution par le d bogueur produit les m mes r sultats que l ex cution par RUN Entr e dans le d bogueur DEBUG F9 Correspond RUN F8 Les programmes B_INIT B_TRACE et B_END sont ex cut s sans contr le du d bogueur DEBUG F19 Correspond RUN F18 Permet d ex cuter une portion de code partir d une ligne quelconque et sans r initialisation DEBUG F29 Permet de reprendre l ex cution d un programme apr s retour la fen tre Basic L cran du programme est alors r tabli On peut l aide de cette commande poursuivre l ex cution d un programme arr t par Break ou par une erreur apr s correction de l erreur Ecran de d bogage Il contient le damier DEBUG et une dizaine de lignes source Ce sont les lignes partir de la ligne ex cuter Remarquer que ces lignes
208. V_fonctions Facteurs P expr k entier 16 par d faut k 1 Si le codage de p est une forme factoris e p P P k 2 le nombre de facteurs s est donn par factorn p le k i me facteur P est donn par factorp p k et son exposant az est donn par factore p k Nous posons ai 1 Pk 1 et ax 0 pour k 1 s Les fonctions factorp et factore sont ainsi tendues toutes les valeurs de k Si p est cod sous forme polynomiale la fonction factorn p renvoie 0 factorp p k renvoie p si k 1 et 1 sinon La fonction factore p k renvoie 1 si k 1 et 0 sinon La fonction factorn p est galement utilisable lorsque p est une ex pression flottante Elle renvoie 1 ou 2 pour une expression r elle ou complexe respectivement Si W est une variable factorp W peekws ptr W Exemple Valeurs de factorn pour les divers cas possibles wexpr 1 x 3 print factorn wexpr peekws ptr wexpr wexpr wexpr 147 x x y 2 z print factorn wexpr peekws ptr wexpr wexpr wexpr 2 5 print factorn wexpr peekws ptr wexpr wexpr complex i wexpr 27 1 3 print factorn wexpr peekws ptr wexpr wexpr Sortie 430 ms O 0 x 3 3 x 2 3 x 1 3 3 147 z 1 x 2 2 x y y 2 1 1 0 1414213562 E 1 2 2 0 1500000000 E 1 ix0 2598076211 E 1 Exemple On montre comment d composer une forme factoris e factor p 7 123 3 x 1 3 17 x 2 2 316 Chapitre 13 Calculs exacts print Fa
209. _dev INPUT_DEV nomdev Commande Fichier implicite d entr e input PRINT_DEV nomdev Commande Fichier implicite d criture print LPRINT_DEV nomdev Commande Fichier implicite d impression 1print nomdev A la m me syntaxe que dans open Exemple La sortie cran est d rout e vers NUL ce qui supprime l affichage par print La sortie imprimante est d rout e vers l cran VBS qui correspond devid 1 La commande close r tablit les sorties usuelles print _dev nul print x y z iprint_dev vbs lprint using devty devid devty 103 devid 103 close Sortie 60 ms devty 2 devid 1 Lorsque la sortie du print est d rout e vers un fichier disque la com mande print_dev joue le r le de la commande open Mais il faudra terminer la sortie par une commande close 102 ou print_dev VBS qui ferme le fichier CLOSE n Commande Ferme le canal n tous les canaux par d faut Entier n 0 103 Chapitre 10 Entr e Sortie 173 Noter qu un espace entre close et est n cessaire car close 1 est dans sa totalit un nom valable du Basic La fermeture des canaux 101 103 remet les valeurs naturelles des p riph riques de ces canaux LOF In V_fonction Longueur du canal EOF n V_fonction Test de fin de fichier LOC n V_fonction Pointeur du canal SEEK n il RSEEK n i RELSEEK n i Commandes Positionnement du pointeur de canal entier n 0
210. a nes de liste sont sorties imm diatement apr s valuation Exemple Le premier print sort en un morceau le deuxi me en 3 morceaux print cursc amp chr 32 20 amp cursc print cursc chr 32 20 cursc Sortie 75 ms 0 0 0 23 Tabulation Lorsqu une virgule pr c de un l ment el de liste il y a d abord sortie d espaces pour que le compteur de tabulation devienne un multiple de 16 Il n y a pas de tabulation lorsque un point virgule remplace cette virgule Le compteur de tabulation vaut pos ou cursc pour le p riph rique VBS 1pos pour le p riph rique LBS et est un compteur interne local la commande print ou lprint en cours pour les autres p riph riques Ce compteur est mis z ro apr s envoi de chr 0 ou de chr 13 On notera que dans la sortie impri mante il ne repr sente la position de la t te d impression que si des s quences de commandes ne sont pas utilis es Dans le cas des p riph riques autres que vbs et Ibs le compteur local est g r comme 1pos voir cette fonction mis part qu au d but du print ou lprint ce compteur est initialis z ro et qu il n y a pas de longueur de ligne maximum Le d terminant tab n qui peut tre suivi indiff remment de ou force le compteur de tabulation sur la valeur n Cela est r alis par sortie d espaces ventuellement pr c d e d un passage la ligne si le compteur tait sup rieur n Seul modr
211. a fonction changes remplace chaque code ASCII de la cha ne s par un autre sans changer la longueur de s Chaque code ASCII 0 255 devient le i 1 i me caract re de la cha ne sp ou FF si i gt len sp Lorsque le signe pr c de sp le code est transform en j si est le j 1 i me caract re de la cha ne sp Ainsi lorsque sp est form d une permutation des 256 caract res distincts 0 255 les transformations t changes s sp s changes t sp sont inverses l une de l autre Exemple 2001 char sp sp chr 255 amp conc i 0 254 of chr i print changes IBM sp print changes HAL sp Sortie 500 ms HAL IBM JUSTR s a f JUSTL s a f JUSTC S l a l f g C_fonctions Justification droite gauche et centrage s exprcha ne a entier 32 d faut a 0 f g entier 0 255 d faut g f et f 32 Appelons sp la cha ne obtenue en enlevant les espaces aux extr mit s de la cha ne s Ces C_fonctions cr ent une cha ne de longueur max len sp a en rajoutant des caract res de code ASCII f et g par d faut des espaces justr devant la cha ne sp just1 apr s la cha ne sp justc devant f et apr s g sp de fa on presque gale Les formes comme just1 s avec seulement le premier argument sup priment les espaces aux extr mit s de la cha ne s Exemple La fonction justr utilis e avec f 48 permet d crire des nombres pr
212. a largeur de ligne en pixels les valeurs paires de e sont trait es comme la valeur impaire e 1 d et f entier 16 d 0 2 e 0 2 d but et fin de ligne dou f 0 droit 1 fl che 2 rond Exemple basse r solution Affiche des lignes de diverses couleurs et l index de couleur 1_color for i 0 15 l_color i print Couleur l_color line 90 8 i 36 190 8 i 36 next i Exemple Chapitre 18 Graphismes 407 monochrome L exemple suivant dresse une table des types des lignes avec des exem ples de styles utilisateur al atoires Devant chaque ligne trac e on crit son type 1_type son paisseur l_width et ses extr mit s l_begin et l_end Arr t par appui sur une touche table print c justc Styles de ligne 25 for i 1 6 table i 1 0 0 i 4 next i for i 1 3 table 1 3 i 0 0 i 10 for i 17 23 l_type mods random 2 16 2 16 style de ligne al at oire table 7 1 0 0 i next i ift keytest exit hidecm loop stop procedure a b c d y l_type a l_width b l_begin c l_end d locate y 0 print a b c d hidec line 104 16 y 8 200 16 y 8 return Ce paragraphe n a d int r t que pour l utilisateur du GDOS En tant que fonctions les valeurs 1_color 1_type et 1_width sont demand es au syst me par vdi 35 et concernent la station de travail courante Par contre 1_begin et 1_end dont les valeurs ne sont pas fournies par le VDI renvoient les derni res valeurs fix es par les commandes 1_begin et 1_end
213. a proc dure bitblt quivaut l appel suivant d une autre proc dure de la biblioth que bitblt_d bitblt_d s 0 s 1 s 2 s 3 s 5 d 0 da 1 d 2 d 3 d 5 p 0 p 1 p 2 p 3 p 4 p 5 p 6 p 7 p 8 Exemple monochrome Reproduit 5 fois le haut de l cran par bitblt_d print Exemple avec cran monochrome ift resolution lt gt 2 stop for i 64 320 64 bitblt_d xbios 2 640 400 40 1 0 0 0 0 0 0 0 639 63 gt 0 1 639 i 63 3 next i i keyget print c Exemple monochrome On r alise un d filement horizontal de l cran L cran apr s copie dans le tableau scr est divis en deux rectangles par une droite verticale Le grand rectangle de gauche de largeur 640 v pixels est d plac de v pixels vers la droite Le petit rectangle de droite de largeur v pixels est recopi gauche de l cran En r p tant ces op rations on obtient le d filement Les param tres d entr e sont plac s dans un tampon de 76 octets dont on transmet l adresse bitblt Comme ce tampon est d truit par bitblt il Chapitre 20 Biblioth que STND 465 est n cessaire de l initialiser avant chaque appel La table suivante donne la description du tampon ANO 8 10 14 16 18 22 24 26 28 30 32 36 38 40 42 46 48 50 52 largeur du bloc en pixels hauteur du bloc en pixels nombre de plans vid o destination 1 2 ou 4 premier index de couleur deuxi me index de couleur mode com
214. abel le Break provoque le retour la fen tre Basic Apr s on break next lappui sur Control Shift et Alternate est sans effet Exemple Pendant les 5 premi res secondes le Break est sans effet Pendant les 5 secondes suivantes il provoque un branchement en b Sinon pendant les 5 derni res secondes il provoque le retour la fen tre Basic on break next pause 5000 on break goto b pause 5000 on break stop pause 5000 stop b print Traitement du Break 12 Labels Sous programmes 248 Chapitre 12 Labels Sous programmes Labels et Branchements GOTO label Commande Branchement Le branchement goto doit obligatoirement se faire par un label label type de nom Pour le programme Basic comme pour l diteur les labels sont des noms non indic s plac s en t te de ligne et suivis de Il y a cependant des diff rences entre le traitement des labels par l diteur et le Basic Les labels de la biblioth que sont inconnus de l diteur mais connus du Basic Les labels de la source apr s end sont connus de l diteur inconnus du Basic Pour l diteur il n y a jamais de diff rences entre majuscules et minuscules pour le Basic tout d pend la variable d tat distingo ou nodistingo Exemple Les majuscules sont identiques aux minuscules pour les labels Lab2 et Lab3 Les majuscules sont diff rentes des minuscules pour les labels Lab LAB et LaB Tout d pend de la position du label
215. able v Noter qu il est n cessaire de d clarer les variables dans B_INIT ou B_TRACE et que lors de l ex cution de B_DEBUG la variable d contient d j le texte de la ligne suivante forv v in 5 11 13 1 print v nextv stop B_TRACE c peekz nextcode exg c d return B_DEBUG print La ligne pr c dente tait c 52 Chapitre 7 Ex cution des programmes print v v return B_INIT char c d var v breakpoint return B_USER La proc dure B_USER est appel e en cliquant sur la case B_USER F7 de la fen tre Basic ou Edit Source Cet appel est quivalent l appel en mode direct par B_USER et n est donc pas pr c d de clear Ex cution Run RUN F8 Lance l ex cution du programme dans la source ce qui produit les ef fets suivants Une instruction clear efface tous les anciens labels et variables Ensuite Basic 1000d effectue un premier passage pour construire la table des labels Il parcourt pour cela la biblioth que puis la source chacune jusqu une instruction end o jusqu la fin s il n y en a pas Le programme B_INIT est appel s il existe Les instructions sont ex cut es en partant de la premi re ligne de la source le programme B_TRACE s il existe est appel avant chaque in struction L ex cution s arr te sur une commande stop end ou une erreur ou encore ad libitum par Break Il y a alors retour dans la fen tre Basic puis appel du programme B_END s il existe R
216. ac Table des noms index Contient les descriptions des l ments globaux index variables litt raux et labels ainsi que les valeurs des index globaux Tampon des noms Zone de s_name octets environ servant inscrire les noms inconnus lors d une instruction donn e Apr s l ex cution de l instruction la longueur de cette zone est restaur e par d placement vers le haut de toute la m moire au dessus s_name n a besoin d tre modifi que si vous utilisez une instruction contenant un trop grand nombre de noms inconnus Adresses des variables A chaque variable correspond un mot long donnant l adresse de son contenu Par num ros croissants les variables sont class es en e Variables internes e Variables conditions s_cond variables contenant les conditions commande cond du pro gramme e Variables fichiers R r_files variables de type char contenant les informations sur les fichiers acc s s lectif e Variables remember s_rem variables m morisant les valeurs des fonctions e Variables des piles interne et utilisateur Cela correspond un ensemble de s_var variables L ensemble est utilis partir du bas pour stocker les value des fonctions les valeurs interm diaires lors des calculs d expressions et par certaines fonctions comme det ou elim C est la pile interne Les variables locales y sont galement empil es L ensemble est utilis partir du haut pour les commandes push pushf l
217. access ecr 255999 print point 40 200 vpoint 40 200 ecr 640 200 40 1 print point 40 200 vpoint 40 200 Sortie 365 ms 0 o0 1 1 GRAPHMODE n Variable d tat Mode graphique entier n 1 4 Chapitre 18 Graphismes 405 La variable d tat graphmode a quatre valeurs possibles qui conditionnent les affichages graphiques n mode graphique 1 remplac 2 transparent 3 invers 4 renvers transparent Exemple monochrome Une bo te 51 x 82 et la valeur de graphmode sont affich es pour chacun des modes graphiques f_type 3 f_style 8 pbox 0 101 639 142 f_type 2 f_style 9 for i 1 4 graphmode i origin 150 i 100 80 pbox 0 0 50 81 text 5 100 mode amp just1 graphmode next i Sortie 755 ms La remarque suivante n a d int r t que pour l utilisateur du GDOS En tant que fonction la valeur graphmode est demand e au syst me par vdi 35 et concerne la station de travail courante Trac de points et de lignes L_COLOR i L_TYPE t L_WIDTH e L_BEGIN d 406 Chapitre 18 Graphismes L_END f Variables d tat Attributs de lignes entier 16 0 15 index de la couleur entier 16 type du trait continu tiret point point trait trait point point trait d fini par l utilisateur 7 nouveau masque NOR amp ND LS Si t 1 7 t est consid r comme tant un masque de 16 bits d finissant le type de ligne 7 e entier 16 e 1 39 C est l
218. accr npar doivent contenir en entr e les accroissements initiaux f fonction minimiser simplex va appeler cette fonction en lui transmettant les coordonn es d un point La fonction f doit renvoyer la valeur en ce point On utilisera donc un programme du type suivant f function access x npar 1 Le nombre de variables npar Mnpar est initialis par le sous programme simplex et x 0 x 1 X Npar 1 donnent les coordonn es du point que la fonction f ne doit pas modifier Si un sixi me argument est donn simplex crit ses tapes le num ro d it ration la valeur de la fonction et les minimums trouv s Sorties La fonction simplex renvoie la valeur du minimum trouv Les coor donn es du minimum sont dans par 1 par npar Le nombre de fois que la fonction a t calcul e est simplex_iter Performances La minimisation de y X xi 1 est effectu e en partant de par i 0 avec des accroissements accr i 1 10 et pour eps 1071 Voici pour divers N Npar le minimum atteint m le nombre d it rations et le temps du calcul t n m i t s 1 7E 10 166 24 2 1E 09 299 92 3 1E 09 485 252 5 1E 09 1002 1078 10 5E 09 7780 29114 Exemple Le programme qui suit correspondant n 2 c est dire la min imisation de 4 1 1 z2 1 Le temps de sortie diff re de 45 s de celui dans la table ci dessus par suite de l affichage des tapes de l optimisation P
219. al C est un exemple de calculs en nombres alg briques Si on veut traiter exactement V2 on utilise un litt ral y repr sentant ce nombre et on introduit le polyn me C y 2 Les diverses expressions contenant y peuvent alors se simplifier en prenant leur reste modulo C Pour les multiplications additions etc il suffit d effectuer des calculs conditionnels cond y 2 2 La fonction gcdi permet de calculer le pgcd des deux polyn mes et B contenant un nombre alg brique repr sent par le litt ral y et d fini par la condition C 0 Elle renvoie un polyn me de degr en y inf rieur k De plus si c est possible ce qui est le cas si x et y sont les seuls litt raux et si C est irr ductible son coefficient de plus haut degr en x est rendu ind pendant de y Sommation alg brique La fonction dsum f x a b permet de sommer sur l entier x a b a et b d signent des entiers a lt b certaines expressions rationnelles f Comme a et b peuvent contenir des litt raux cette fonction est tr s diff rente de sum x a b of f La m thode consiste d terminer une fonction F x telle que F z F x 1 f x 1 La somme vaut alors F b F a 1 Si f x est un polyn me de degr k en x F x est un polyn me de degr k 1 La fonction sdpoly le calcule par Chapitre 16 Biblioth que Math matique 373 simple identification dans l quation 1 Si f x est une fraction rationnelle en
220. ammation 209 Sortie 35 ms 1 7 x 12 BIN p OCT p HEX p C_fonctions Conversion expr p base 2 8 et 16 P expr La fonction bin resp oct hex renvoie une cha ne contenant l expr p crite en binaire resp octal hexad cimal L expr p est d cod e avec la valeur courante de la base Exemple Affiche 1015 en binaire octal et hexad cimal print bin 10 15 print oct 10 15 print hex 10 15 Sortie 125 ms 11100011010111111010100100110001101000000000000000 34327724461500000 38D7EA4C68000 Exemple Donnons ici la g n ralisation base p b de ces fonctions une base b quelconque Ainsi base p sixteen est identique hex p L exemple convertit un nombre de base 10 en base 36 print base 101560761707988 36 stop base function push base 01 base 2 value str pop base pop return Sortie 50 ms 1000DBASIC MKXS x C_fonction Conversion expr c CVX c V_fonction Conversion x expr 210 Chapitre 11 Programmation exprcha ne codage m moire d une expr Les fonctions mkx et cvx sont inverses l une de l autre Les noms de ces fonctions viennent de convert CV make MK et expression X La fonction mkx x renvoie le codage m moire de x Exemple Les repr sentations m moires de x et c sont identiques x 2z 1 z 1 char c c mkx x print x print cvx c Sortie 75 ms z 1 1 z 1 z 1 1 z 1 Exemple save trente exp mkx
221. ang en 0 On effectue une boucle qui n est pas une boucle for mais r alis e l aide de goto sur tous les nombres premiers r tels qu en changeant le chiffre des unit s on obtienne un nombre non premier Cette boucle est incr ment e lignes 2 5 en prenant r prime d o d est un multiple de 10 et en v rifiant que le nombre premier r1 suivant r n est pas dans la m me dizaine que r On Chapitre 11 Programmation 191 d termine ensuite les nombres r2 obtenus en changeant le k i me chiffre de r partir de la droite k va de 2 m le nombre de chiffres de r par le chiffre i de 0 9 Noter que le chiffre de gauche de r pour k m n est pas chang en i 0 Cela est r alis en donnant pour borne inf rieure de la boucle for sur i l expression k m qui vaut 0 ou 1 Si un de ces nombres est premier on sort des boucles for sur i et k et on poursuit la boucle sur r La sortie des boucles for s effectue par un simple goto Lorsque le programme ex cute ensuite for k 2 m les anciennes boucles sur k et i sont d pil es Noter que l instruction ift r2 r ift prtst r2 goto a est quivalente ift r2 lt gt r and prtst r2 goto a mais plus rapide parce que le calcul de prtst r2 qui est tr s long est vit lorsque r2 r r 0 a d divr r 10 10 10 r prime d ri prime r 1 ift divr ri 10 divr r 10 goto a m gint 1ogi0 r for k 2 m f 10 k 1 ri modr r 10 k ri divr ri f xf ri r ri for i k
222. angle arrondi g123 b158 Identique rbox x y Xp yp 7 x y dx dy a b Portion d ellipse g118 b160 Identique pellipse x y dx dy a b 6 x y dx dy a b Arc d ellipse 8116 b160 Identique ellipse x y dx dy a b 5 x y dx dy Ellipse pleine g121 b160 Identique pellipse x y dx dy 4 x y 0 0 r 0 Disque g114 b159 Identique pcircle x y r 3 x y 0 0 0 0 r 0 a b Secteur g111 b159 Identique pcircle x y r a b 2 x y 0 0 0 0 r 0 a b Arc de cercle g108 b159 Identique circle x y r a b L x y XP YP Rectangle plein g106 b158 Identique pbox x y xp yP 1 a0 a10 Ouvre une station de travail g71 b150 Voir v_opnwk de la biblioth que STND 2 Ferme station de travail g77 b151 Voir v_clswk de la biblioth que STND Chapitre 19 Appels syst me 447 3 Vide la station de travail g83 b154 Voir v_clrwk de la biblioth que STND Lorsque la station de travail est un cran la fonction efface l cran 4 Mise jour g84 Voir v_updwk de la biblioth que STND 5 Editeur du VDI b175 8 b180 b188 Basic 1000d met contr1 1 0 et contr1 3 0 Les sous fonctions doivent tre appel es en pokant dans contrl et par appel brut si contrl 1 ou contr1l 3 sont 0 6 n x1 yl Xn yn Trace la ligne bris e entre n points g90 b157 On peut utiliser Line ou polyline de fa on quivalente 7 n xl yl xn yn Trace n marqueurs g92 b166 On peut utiliser mark ou polymark de
223. ans la source Voir FND CHG Mots clefs L appui sur des lettres de A Z tout en maintenant Control enfonc crit lors du rel chement de Control un mot clef du Basic Si on appuie ensuite sur Control et du pav num rique ce que nous notons c ce mot clef est remplac par le mot clef suivant du Basic On peut rappuyer sur c ou maintenir ces touches enfonc es pour faire d filer la totalit des mots clefs du Basic Chapitre 3 La fen tre Edit Source 23 Par exemple la frappe de c P donne print la frappe de c PA ou de c P suivi de c donne precision la frappe de c PB ou de c PAA ou de c P suivi de deux frappes sur c donne procedure etc On dispose ainsi d abr viations d une deux ou trois frappes pour tous les mots clefs Soit n le num ro d ordre du mot clef crit par c x x d signant n importe quelle lettre La frappe de c x y z crit le mot clef num ro n d y d z o d A 1 d B 2 d Z 26 Les touches mouvements La commande Editing du menu HELPS donne le r sum des mouve ments possibles CR d signe la touche Return ou Enter T etl D placent le curseur verticalement ou font d filer la fen tre et D placent le curseur horizontalement et font d filer la ligne s T ou c Home Curseur sur la premi re ligne de la source s Curseur apr s la derni re ligne de la source s et s Curseur sur le premier ou dernier
224. ant 1 Exemple L expression complexe est r duite sa forme canonique seulement apr s une assignation complex i print i 2 d i 2 print d Sortie 40 ms 172 1 Exemple R duction un seul facteur nombre complexe complex i factor w 3 i 7 2 i 3 2 a i b print w Sortie 215 ms 8 169 1453 xi 4929 x ixb a 1 332 Chapitre 14 Calculs conditionnels Nombres complexes e La V_fonction formf p peut factoriser des polyn mes avec nombres complexes Exemple complex j W 4 x 3x j 4 x 3 j print W print formf W print formf x 4 1 Sortie 680 ms 16 x 2 9 3 j 4xx x 3 xj 4 x j x 2 j x 2 Cependant la diff rence des calculs rationnels r els formf ne sait pas factoriser toutes les expressions factorisables en complexes e La fonction dive et la commande vdive fonctionnent pour les polyn mes en complexes Exemple complex i print dive a 2 b 2 a ixb print dive 1 3 i 1 Sortie 75 ms i b a 3 10 i 1 10 e Ailleurs le traitement des expressions complexes peut tre incomplet En par ticulier la r gle qu une expression factoris e ne comporte que des facteurs deux deux premiers entre eux n est valable qu en r els Des expressions factoris es comme a i b a 2 b 2 o les deux facteurs ne sont pas premiers sur C ne sont pas automatiquement simplifi es e La fonction root ne fonctionne pas en complexes Exemple Le Basic ne reconna t pas que V2i
225. ants La pr cision est gale la pr cision en cours sans toutefois pouvoir d passer 166 chiffres d cimaux Lorsque l argument x de gamma est entier le calcul est galement effectu via le d veloppement de Stirling ce qui permet de tester la pr cision de la m thode Exemple La relation r x 1 x x sin rx est v rifi e pour x 1 3 precision 50 gi gamma 1 3 g2 gamma 2 3 print gi print g2 format 5 print g2 gi pi sin pi 3 Chapitre 16 Biblioth que Math matique 381 Sortie 18 s 0 26789385347077476336556929409746776441286893779573 E 1 0 13541179394264004169452880281545137855193272660568 E 1 0 3177 E 52 stirling n Proc dure Calcul du d veloppement de Stirling l ordre 2n 1 entier n gt 0 bernoulli Proc dure Sort les nombres de Bernoulli Il faut d abord appeler stirling pour initialisations Exemple On obtient entre autres le d veloppement asymptotique 1 1 139 571 T LE 1 2 9 1 te ma ro x e r n 1 127 28827 518407 248832077 163879 209018880x stirling 3 bernoulli Sortie 1450 ms Sortie du d veloppement de Stirling de log x l ordre 5 log I x x 1 2 log x x log 2 pi 2 psi 0 1 x 7 psi 1 12 x 1 360 x 3 1 1260 x 5 timer 0 Voici aussi le d veloppement de Stirling de x T x exp x x x 1 2 sqr 2 xpi x 1 1 12 x 1 288 x 2 1 39 51840 x 3 571 2488320 x 4 163879 209018880 x 5 0 1 x
226. aque enre gistrement comporte deux champs une variable de type char de 16 octets et un index 4 octets La longueur d enregistrement pr cis e dans open est 20 Le champ de type char est rempli par 1set Si on d sire ensuite utiliser un fichier disque on remplacera MEM D dans open par le nom du fichier Index TEL OPEN R 1 MEM D 20 FIELD 1 16 AS NOM FIELD 1 4 AS TEL TEL 60779250 lset NOM Pr fecture PUT 1 TEL 46277057 lset NOM SEFRANE PUT 1 for i 1 2 GET 1 i print NOM using TEL next i close 1 Sortie 115 ms Pr fecture 60 77 92 50 SEFRANE 46 27 70 57 Programmation 184 Chapitre 11 Programmation Structures IF IF x1 blocl ELSE IF x2 bloc2 ELSE blocn ENDIF Commandes If structur x1 x2 expr bloc1 bloc2 D signent des lignes d instructions Basic Variantes d criture On peut crire if x1 then au lieu de if x1 et else x2 au lieu de else if x2 Le nombre de blocs de la structure est illimit Voici les structures les plus simples IF x1 bloci ENDIF et IF x1 bloci ELSE bloc2 ENDIF Si x1 0 les lignes blocl sont ex cut es mais bloc2 ne sera pas ex cut et l ex cution continue apr s la ligne de la commande endif Si x1 0 on saute le bloc1 et on ex cute le bloc2 s il est donn cas avec else Les blocs eux aussi peuvent contenir un nombre illimit de structures if Dans les exemples IF x1 bloci ELSE IF x2 Chapitr
227. ar chdrive et d un chemin de r pertoires lisible par dir et modifiable par chdir il y a un chemin pour chaque disque n a pas besoin d tre pr cis Exemple Apr s ex cution des commandes Basic chdrive A chdir REP EXX BLEU EYY le chemin d acc s par d faut est A REP EXX BLEU EYY chdrive vaut 1 lecteur A dir vaut REP EXX BLEU EYY et le nom du fichier ci dessus peut tre simplifi en COL Z ou m me en COL dans les commandes comme save ou merge qui rajoutent l extension Z Les formes REBLEU H Y REBLEU H Y VERT EYY GYT Z correspondent alors respectivement aux noms complets A REP EXX BLEU EYY REBLEU H Y A REBLEU H Y A REP EXX VERT EYY GYT Z En effet un au d but indique que le nom est donn partir de la racine du disque et fait revenir au r pertoire parent Lorsqu une commande demande le nom d un fichier Basic 10004 offre deux possibilit s On peut soit entrer le nom complet ou simplifi au clavier soit cliquer sur la souris pour faire appara tre le s lecteur de fichier de PAES L extension est Z par d faut pour les fichiers source biblioth que et help Lors de l criture d un fichier sur disque une confirmation est demand e lorsqu un fichier de m me nom existe d j Ce fichier sera en effet recouvert par le nouveau A Si on veut sauvegarder la source sous forme ASCII o les lignes sont s par es par chr 13 chr 10 il faut utiliser une extensio
228. as il n y a pas de retour de la fonction sauf par Break Exemple Le polyn me x 1 est factoris modulo 19 print mdff x 9 1 19 Sortie 755 ms x 17 x 161 x 11 x 9 x 7 x 6 x 5 x 4 x 1 MDSMP U p V_fonction R duction en l ments simples modulo p U forme factoris e d crivant la fraction r duire Soient n 1 unip A2 A3 An premiers deux deux modulo p La r duction en l ments simples mod p de 1 A2 X 3 X X n consiste d terminer les n 1 unip B2 B3 Bn tels que deg B lt deg A pour i 2 3 n qui v rifient 1 B gt bB B 2 s nnn _ d D AN AS AE A A a map Chapitre 13 Calculs exacts 323 La fonction mdsmp effectue cette r duction En entr e U doit tre la forme factoris e U A1 xX A X A3 X X o le facteur constant A factorp U 1 et les exposants factore U i ne jouent aucun r le Les n 1 unip B2 B3 Bn sont renvoy s au moyen d une forme non standard W mdsmp U p cod e comme une forme produit L unip B s obtient par B factorp W i La forme W est non standard car les unip B ne sont ni premiers deux deux ni ordonn s de fa on habituelle Il est cependant possible de l afficher Exemple R duction de 1 A2 x A3 On forme U en mode factor on en tire 42 et 43 et on v rifie qu ils sont premiers modulo 29 La r duction 1 B B Ar A de mod 29 quivaut
229. ations m moires par gemdos 48 il faudra en g n ral lib rer ces zones par gemdos 49 avant de pouvoir r augmenter himem SYSTAB V_fonction Adresse table variables internes L adresse systab permet l acc s aux variables internes du Basic suivantes on donne les adresses en d cimal par rapport systab B octet W mot et L mot long 16 W identificateur de l application 1 normalement 2 5xL contrl intin ptsin intout ptsout bloc VDIPB 22 6 L gcontrl global gintin gintout addrin addrout bloc AESPB 46 20B option print E 66 20xB option print I 90 128xB table de conversion pour l impression de la source Appendice 496 Solution des exercices Solution des exercices Apluslong Utilisons le menu FND CHG D finir case F1 S comme JAS et chercher S case F8 Cela cherche les A entre s parateurs car le label A ne peut appara tre qu entre s parateurs Revenir dans FND CHG et d finir case F2 T comme apluslong et chercher case F9 cette cha ne Supposons qu elle n existe pas on obtient le diagnostic pas trouv Revenir a FND CHG et changer case F10 Si maintenant vous avez un regret et trouvez que le nouveau nom est trop long vous pouvez annuler le changement comme suit parce qu il n y avait pas de cha ne apluslong l origine Revenir dans FND CHG et permuter S et T case F3 puis changer case F10 Nb_nom Un nom commence par une des 52 lettres majuscu
230. au plus une instruction par ligne La r f rence une ligne dans le programme par exemple dans goto doit obligatoirement se faire l aide d un label L apostrophe non entre guillemets indique le d but d un commentaire Programmes de contr le Ce sont des proc dures que vous pouvez crire en Basic et qui contr lent l ex cution des autres programmes Les noms de ces proc dures sont pr d ter min s et doivent tre crits en majuscules Ces sous programmes peuvent se trouver dans la source ou la biblioth que ou tre absents B_INIT B_END Basic 1000d ex cute la proc dure B_INIT au d but de RUN F8 et DEBUG F9 et la proc dure B_END lors du retour la fen tre Basic apr s stop end Break ou erreur Exemple La proc dure B_INIT ouvre compl tement la fen tre RUN et le nombre calcul par le programme est affich sur la premi re ligne de l cran L instruction message du programme est ex cut e dans cette fen tre mais celle de la proc dure B_END est effectu e apr s le r tablissement du menu Basic Lorsque une in struction est effectu e en mode direct les proc dures B_INIT et B_END sont ignor es print 10710 message Fin du programme stop B_INIT cursh 0 cls return B_END message Retour au Basic return B_TRACE La proc dure B_TRACE est ex cut e avant chaque instruction sauf dans les programmes B_INIT B_END B_DEBUG ou B_TRACE pendant RUN F8 ou DEBUG F9 Chapi
231. aucune une ou plusieurs fins qui peuvent tre cach es dans des commandes xqt ou ift la m me boucle Mais attention ne pas oublier qu une boucle for i commenc e avec un index de boucle non termin e termine toutes les boucles apr s la premi re boucle i 200 Chapitre 11 Programmation Les commandes nextv nextc wend until et loop terminent les boucles for commenc es dans leur bloc de r p tition Par contre par exemple wend ne peut pas terminer une boucle forv commenc e et non ferm e dans son bloc de r p tition On obtient alors l erreur Mauvaise Imbrication Les commandes de structures if et select case et de boucles do repeat while forv et forc doivent tre visibles c est dire que des instruc tions comme ift x else xqt wend dans lesquelles else et wend sont cach s sont incorrectes En effet lorsque while voudra sauter le bloc il sera incapable de trouver wend dans xqt De m me le if pr c dant le else cach sera incapable de le localiser Traitement des cha nes MINS s1 s2 si MAXS s1 s2 si C_fonctions Minimum ou maximum s1 s2 si exprcha nes Les fonctions min et max distinguent ou non les majuscules des minuscules suivant la variable d tat distingo ou nodistingo Les noms des fonctions analogues pour les r els ont des noms diff rents min et max Exemple c maj n d MIN print min c d distingo nodistingo print min c d distingo Sortie 35 ms M
232. aus e par une erreur dans une autre ligne Dans ce cas la ligne avec le point d interrogation diff re de la ligne num rot e et il faudra rechercher dans la source la ligne en erreur Si vous ne comprenez pas d o vient l erreur de syntaxe v rifiez le type du nom qui a produit l erreur ainsi que son contenu Exemple Supposons qu un programme produise l erreur ERREUR INDEX ADRESSE t_type t t_type t La commande qui d finit le type de texte graphique vous semble correcte vous examinez le type et le contenu du nom t en ex cutant en mode direct type t print t Les r ponses respectives sont t est de type lit t Ainsi vous avez peut tre oubli de donner t sa valeur t 3 par exemple et t qui tait ind fini a t consid r comme tant un symbole Mais l erreur tait peut tre que vous vouliez crire t_type T o T avait bien une valeur enti re Chapitre 8 Mise au point des programmes 59 Les erreurs sont bien s r encore plus difficiles d couvrir lorsqu elles ne provoquent pas d erreurs de syntaxe En pratique il est indispensable d utiliser le d bogueur pour ex cuter tout nouveau programme et en radiquer les erreurs de logique Lorsqu une erreur se produit dans un programme de la biblioth que la q P P que ligne en erreur n est pas num rot e Dans ce cas on peut ex cuter de nouveau le programme avec la biblioth que charg e dans la source pour localiser l erreur Messa
233. autre nom voir les commandes disques du menu FILES Pour lire la fen tre Help vous disposez d une table des mati res et d un index extr mement perfectionn s Le fichier Help peut contenir des exemples de programmes en Basic Ces exemples peuvent facilement tre copi s dans la source Organisation du fichier Help Le fichier Help contient des titres rang s suivant leur niveau de A E et du texte ordinaire niveau F Lorsqu on liste Help partir d un point donn on peut choisir un niveau de A F Seuls les l ments de niveau sup rieur ou gal sont pr sent s De plus les titres et sous titres qui contiennent le point de d part de la page sont toujours pr sent s Autrement dit un fichier Help a une structure d arbre de profondeur maximum 6 et les commandes de la fen tre Help permettent de se d placer rapidement dans cet arbre Par exemple la lecture au niveau B ne retient que les textes titres jusqu la profondeur 2 et cliquer le bouton droit sur une ligne ouvre l arbre jusqu la profondeur suivante Index Entrer la CLEF c est dire le mot sur lequel vous voulez des claircisse ments On peut entrer la clef au clavier c lettre et c pour le d filement donnent les mots clefs du Basic qui est valid e par simple criture sans qu il soit n cessaire d appuyer sur Return ou bien prendre un mot d j crit en pla ant la souris sur le mot et en cliquant le bouton gauche Ensui
234. autres Basics Si x 1 il y a branchement en L1 Par contre si x 2 l instruction L2 est ex cut e c est dire qu il y a appel de la proc dure L2 Si on voulait effectuer un branchement L2 il fallait r p ter goto on x goto L1 goto L2 Boucles FOR FOR i a TO b STEP c Bloc NEXT i j Commandes de boucle FOR index 32 a b c entiers 32 c 0 Variante d criture Les mots clefs to et step peuvent tre remplac s par des virgules Chapitre 11 Programmation 189 Le bloc de lignes entre les commandes for et next est ex cut au moins une fois avec l index i prenant successivement toutes les valeurs a a c a 2c a nc comprises entre a et b inclus Si le pas de la boucle c est omis il est pris gal 1 si a lt b ou 1 si a gt b Exemple for J 0 8 2 W X J PRINT J W next Sortie 115 ms O 1 2 X72 4 X4 6 X 6 8 X 8 Boucles imbriqu es Le nombre d imbrications est limit par la variable d tat s_pro qui peut tre modifi e si n cessaire Le next peut tre commun si on indique les index de boucle Exemple La boucle I correspond implicitement au pas c 1 for I 7 6 for J 1 to 3 print I J g next J I Sortie 120 ms 71 7 2 73 61 62 6 3 Exemple anormal Dans cet exemple par suite de l absence de next J il n y a pas vraiment de boucle sur J qui reste toujours gal 1 for I 1 2 A print Ligne gt I I for J 1 1
235. binatoire de transfert d calage horizontal source d calage vertical source adresse du bloc source double du nombre de plans source nombre d octets par ligne source 0 ou 2 suivant le mode d calage horizontal destination d calage vertical destination adresse du bloc destination double du nombre de plans destination nombre d octets par ligne destination 0 ou 2 suivant le mode 0 ou adresse matrice de remplissage 0 ou 2 pour utiliser la matrice de remplissage 0 ou 32 si la matrice est multicolore masque de r p tition du motif 12 mots nuls Le mot long en 10 permet d associer au transfert une op ration logique entre source et destination La valeur de l octet fort de ce mot 0 15 fixe l op ration selon la table suivante qui indique le pixel de destination 0 ou 1 en fonction des pixels source s et d 0 ou 1 hidecm 0 0 8 not s or d 1 sandd 9 seqv d 2 sandnot d 10 not d 3 s 11 sornotd 4 nots andd 12 nots 5 d 13 simpd 6 sxord 14 not s and d T sord 15 1 index 16 aa 37 bb 37 dd 37 scr 16000 466 Chapitre 20 Biblioth que STND index a b d s v a ptr aa 0 b ptr bb 0 d ptr dd 0 s ptr scr 0 v 32 origin 0 0 for i 0 399 16 line 0 i 640 200 next i pokew a 640 v 400 1 1 0 303 303 0 0 pokel a 18 s pokew a 22 2 80 2 v 0 pokel a 32 xbios 3 pokew a 36 2 80 2 copy aa 0 38 1 bb 0 1 bb 0 v bb 7 639 v bb 14 0 do pokecb a s peek xbios 3 32000 copy aa 0 38 1 dd 0 1 b
236. bord apr s noboundary origin 100 150 f_type 2 f_style 18 pcircle 0 0 45 pcircle 100 0 45 0 3600 pcircle 200 0 70 2100 3300 noboundary pcircle 200 100 70 2100 3300 Sortie 840 ms ELLIPSE x y rx ry a b Commande Trace une ellipse ou un arc d ellipse PELLIPSE x y rx ry a b Commande Trace une portion d ellipse pleine xX y r els coordonn es relatives du centre rx ry r els demi axes Chapitre 18 Graphismes 415 a b r els angles en 1 10 de degr Exemple Trace une demi ellipse puis une s rie d ellipses en utilisant la commande ellipse ellipse 150 180 120 70 0 1800 for i 1 60 2 ellipse 150 200 i 50 1 33 i next i Sortie 2010 ms Exemple Trac s de formes elliptiques bords par ellipse et formes pleines par pellipse origin 100 100 ellipse 150 100 50 33 1_width 10 l_begin 2 l_end 1 ellipse 150 100 120 70 1800 3600 f_type 2 f_style 11 pellipse 150 100 40 23 pellipse 150 0 120 68 2300 3300 Sortie 885 ms Marqueurs M_COLOR i M TYPEt M_HEIGHT h Variables d tat Attributs de marqueur entier 0 15 index de couleur 416 Chapitre 18 Graphismes entier t 1 6 type de marqueur marqueur point plus toile carr croix carreau oO RE ND h entier hauteur du marqueur en pixels Il n y a que 8 hauteurs qui sont effectivement possibles Les remarques suivantes n int ressent que l utilisateur du GDOS En tant que fonctio
237. c est dire que les coefficients sont pris modulo p En entr e les coefficients peuvent tre des entiers quelconque en sortie sauf pour la fonction mds ce sont des entiers dans 0 p Nous repr sentons les unip par B Q R etv vV Nous r servons la lettre v pour d signer un unip intervenant lorsque les autres unip B sont consid r s modulo v x et modulo p Il sera souvent n cessaire que v soit premier avec PRTST m V_fonction Teste si m est premier entier m gt 1 La fonction prtst met 0 faux si m n est pas premier et 1 vrai si m est premier En r alit la valeur renvoy e n est d montr e exacte que soit si c est 0 on est alors s r que m est compos mais les facteurs peuvent tre tr s difficiles d terminer ou soit si m lt 108 En effet prtst teste d abord si m a des facteurs lt 104 par division et s il n en a pas applique le test probabiliste de Miller amp Rabin voir N Koblitz 1987 chapitre 5 La probabilit que la r ponse 1 soit fausse est inf rieure 1074 La fiabilit peut tre augment e en r p tant l appel ainsi si deux appels fournissent 1 la probabilit d erreur est plus faible que 10780 Performances de PRTST Voici les temps de calculs en secondes de prtst m lorsque m est le nombre qui s crit avec n chiffres 1 en d cimal n temps 23 7 premier 53 1 compos 317 5876 premier 331 260 compos 1009 6843 compos 1511 22
238. c Sa longueur minimale est 4000 octets ce qui permet un fonction nement correct de PAES Ecran peek1s 436 Habituellement l cran occupe le haut de la m moire Les Variables d tat de structure La carte m moire d pend de variables d tats comme s_src qu il est possible de lire et de modifier Cependant une modification comme s_src 2000 provoque un r arrangement complet de la m moire suivi d un clear Il est donc impossible de modifier ces variables d tat dans une proc dure S_SRC a S_ NAME a S_XQT a S_PRO a S_MENU a S_VAR k S_COND m Chapitre 21 C ur du Basic 10004 493 R_FILES m MEM FILES m S_REM m Variables tat entier 32 pair a gt 512 entier 16 k gt 100 entier 16 m 1 2 s_menu s_var s_rem La signification de ces variables d tat est d taill e avec la description de la carte m moire dans la section pr c dente En pratique s_rem except on modifiera leurs valeurs en t te d un programme seulement apr s un message du Basic ayant indiqu une valeur trop faible PACK p Variable d tat Conditionne le nettoyage de la m moire P entier 32 pair p gt 2000 La commande pack sans argument force un nettoyage sans modifier la valeur de pack Noter que si on donne la variable d tat pack une valeur plus grande que l espace libre fre on force un r arrangement m moire plusieurs fois par instructions Les temps de calcul peuvent s en ressentir
239. c prendre des pr cautions dans les appels multilignes du VDI et de PAES si entre l implantation de la premi re valeur et l appel proprement dit d autres appels du VDI AES peuvent intervenir Une fa on de proc der est d utiliser des sous programmes qui ne d truisent pas les tableaux de param tres intin ptsin C est le cas de la fonction cpoint x y suivante cpoint function x y push screen value point x y rscreen pop return qui renvoie l index de la couleur du point x y Elle utilise screen rscreen pour conserver les param tres du VDI Exemple VDI et ligne A Trac d un camembert Cet exemple purement p dagogique pourrait tre trait plus simplement par les commandes graphiques du Basic vdi 23 2 type de remplissage vdi 3 vide l cran vdi 2 160 100 0 0 0 0 100 0 0 3600 trace cercle calla O appel de la ligne A AO register 0 bloc de variables de la ligne pokew A0 26 160 100 centre du cercle for 1 0 8 boucle sur 8 rayons pokew A0 2A 160 cint cos pi 8 I 100 extr mit du r ayon pokew A0 2C 100 cint sin pi 8 I 100 extr mit du r ayon calla 3 trace le rayon next for I 0 8 boucle sur 8 secteurs vdi 25 1 3 met couleur de remplissage vdi 24 9 I met style de remplissage intin 0 1 commande vdi 103 x y c avec remplissage manuel ptsin 0 160 cint cos pi 8 I 5 x50 ptsin 1 100 cint sin pi 8 1 5 x45 point dans le secteur vdi 103 next Sortie 4090 ms Cha
240. c1 et de la taille disponible sur la disquette Cette taille n est sortie que si le disque est A ou B ou si le bit4 de k est mis Si k 0 les noms de fichiers pr c d s de leurs longueurs sont group s raison de 4 par lignes La commande print A FILES a le m me effet que la commande dir du menu FILES de l diteur ou du Basic Si k 0 les noms de fichiers sont dispos s raison d une ligne par fichier et suivis des l ments suivants si le bit correspondant de k est 1 bit 0 attribut 1 longueur 2 date de cr ation 3 heure de cr ation 4 longueur libre sur disque Les attributs d un fichier sont cod s dans un octet bit 0 lecture seule 1 cach 2 syst me 3 racine 4 r pertoire 5 referm Exemple La commande imprime les noms longueurs dates et heures de cr ation des fichiers d extension Z du disque A lprint files A x Z 1110 Sortie imprimante 2120 ms A A X Z Exemple La C_fonction fulldir p suivante analyse files p 3 pour d ter sont les sous r pertoires de p Puis la fonction fulldir s appelle m me pour analyser ces sous r pertoires Noter le proc d utilis un nouveau canal n tout en assurant la r entrance de fulldir On recherche simplement un canal non encore ouvert i e tel que devty n 0 Noter galement l utilisation des fichiers virtuels MEM de eof line input miner quels ensuite elle pour ouvrir et input Dans l exe
241. cach e comme en entr e push hidem hidem pause 3000 hidem pop On notera que l appel du clavier keyget keytest input ou le retour la fen tre Basic remet le curseur et la souris D autre part dans print la souris et le curseur sont localement cach s et r tablis la fin du print Exemple Comme la commande print h showm and 8080 crit toujours 8080 il est n cessaire pour crire showm de lire sa valeur en dehors du print 124 Chapitre 10 Entr e Sortie hidecm push showm print h pop and 8080 ift keytest push showm print h pop and 8080 showm and 8080 Sortie 45 ms 8080 o 8080 A Lors des calculs la fr quence du curseur peut ralentir C est normal parce que le clignotement du curseur n est pas g r par interruption VBL par le syst me mais par le Basic 1000d qui pendant les calculs s occupe un peu moins du curseur Cette complication t rendue n cessaire par les insuffisances du GEM qui n arrive pas faire cohabiter un curseur clignotant et la souris il laisse des bouts de souris ou de curseur lors des croisements PAGE texte Commande Saut de page et titre imprimante La commande page n a d effet que lors de la sortie de la source par les commandes du menu PRINTER Elle force un saut de page et crit texte en haut de chaque nouvelle page PAGE _WIDTH k Variable d tat Nombre de caract res par ligne imprimante PAGE _LENGTH k Variable d tat Nombre de lignes pa
242. case du damier la vid o est chang e entre nor male et inverse de sorte qu il y a cr ation du damier La commande s occupe galement du changement de ligne toutes les 10 cases L unit a C sort le texte qui suit centr sur une ligne Le caract re a V change la vid o et le caract re a L fait passer la ligne suivante 138 Chapitre 10 Entr e Sortie Exemple Damier de 7 lignes et attente cliquage Pour sortir la sixi me ligne en vid o inverse on inverse la vid o a V on sort une case vide a O et on va la ligne a L Essayez ce que donne le simple changement de ligne a L push clock date cursh noclock nodate cursh 7 checker oMaJusCL OrDiNaIREGTelQuel STOP conc i 5 50 of o F amp just1 i gt a lt Exemple 7 lignes cls do i keyget 1FF ift i in 1 50 print Vous avez cliqu F just1 i ift i 4 exit loop cursh pop cls date pop clock pop Exemple de gestion des v nements Le programme est mis en attente d v nement par la commande on menu plac e dans une boucle Do On Menu Loop Avant cette boucle la commande menu Ms 0 permet de d finir des menus d roulants GEM et des commandes de la forme on menu lt type d v nement gt lt instruction gt indiquent au programme quels sont les v nements surveiller et les actions entreprendre lorsque l v nement survient Ainsi On Menu Sp1 stipule que lorsqu une entr e d un menu d roulant s
243. cha ne RUN ligne 242 Chapitre 11 Programmation DEBUG ligne Commandes Ex cution ligne ligne de d part avec la m me syntaxe que dans la commande ligne de la fen tre Basic La commande new efface la source et retourne l diteur Les commandes run et debug lancent le programme comme les commandes du menu RUN et DEBUG ou RUN et DEBUG si la ligne de d part est pr cis e Ces commandes du Basic sont les seules qui peuvent utiliser un num ro de ligne La commande run test vide la source charge le fichier source test z l extension par d faut est Z et lance le programme Avant cela elle demande confirmation Exemple Les commandes run et debug sont surtout utiles en mode direct Dans la source run label se comporte comme goto label Noter que goto r 3 est ill gal alors que run r 3 est admis Plut t que d utiliser des instructions comme run r 3 ou run 27 dans vos programmes il vaut mieux placer des labels sur les lignes 27 et r 3 et effectuer des branchements vers ces labels La mise au point de vos programmes sera plus facile imaginer que vous ins riez une ligne devant la ligne r print x debug r r print x Sortie 270 ms RUN RUN 1 1 QUIT Commande Sortie du Basic La commande quit quivaut la commande homonyme du menu TOOLS CLEAR Commande Initialisation du programme La commande clear ne modifie pas la source Elle efface tous les anciens noms et donn es en m mo
244. chier disque qui vient d tre lu ou crit et compare son contenu avec la zone m moire lue ou crite La fonction renvoie le nombre d octets qui diff rent mais si la v rification est impossible elle renvoie la valeur 1 Cette fonction est analogue la commande de m me nom du menu FILES et peut aussi tre utilis e apr s une op ration disque de l diteur Exemple La zone m moire de 256 octets correspondant au contenu de c est sauve gard e puis v rifi e Apr s avoir modifi deux octets dans cette zone la fonction verify prend la valeur 2 c space 256 bsave test ptr c 256 print verify pokeb ptr c 20 1 2 print verify Sortie 5835 ms 0 2 LOAD lc MERGE c SAVE c Commandes Concernent la source fcha ne Les commandes load merge et save effectuent les commandes homonymes de l diteur Si le nom du fichier c extension Z par d faut est omis elles demandent un nom La commande load demande confirmation ainsi que save dans le cas de recouvrement Apr s ces commandes il y a retour l diteur On dispose aussi d une commande run c d crite ailleurs qui charge et ex cute un programme SAVES f S Commande Sauvegarde S sous le nom f Chapitre 10 Entr e Sortie 169 LOADS F 1 C_fonction Contenu du fichier f S vircha ne f fcha ne repr sente le nom d un fichier extension DAT par d faut 1 entier 32 nombre d octets charg s Apr s C 1oad f il y a charge
245. co N 1 i search dico 1 N 1 1 P 1 if dico P i dico N 1 print Mot d j inscrit else N N 1 sort dico 1 N 1 P 1 N 1 220 Chapitre 11 Programmation endif print conc i 1 N of amp dico P i loop NEXTPERM N P j a V_fonction G n re une permutation N entier gt 1 P j premier l ment dans un tableau d index 32 a entier 32 indique l option d faut a 1 La fonction nextperm remplit les N l ments cons cutifs du tableau P partir de P j avec une permutation des entiers de 1 N et prend pour valeur 1 qui donne la parit de la permutation Si a 0 la permutation renvoy e est 1 2 3 N c est la premi re permutation suivant l ordre lexicographique Si a gt 0 le tableau P doit contenir en entr e une permutation de 1 2 N La fonction renvoie alors la permutation suivante des m mes nombres pour l ordre lexicographique Dans le cas o la permutation en entr e dans P tait la derni re N N 1 3 2 1 la fonction nextperm ne modifie pas P et prend la valeur 0 Si a lt 0 la fonction renvoie une permutation al atoire de 1 N La fonction nextperm permet de r aliser tr s simplement une boucle sur les N permutations de 1 N En pratique on ne pourra gu re r aliser de boucles compl tes que pour N lt 10 la boucle vide sur les 9 permutations de 1 9 n cessite 2000 s Exemple Boucle sur les permutations de 1 2 3
246. cos 3x en fonction de cos x Pour cela les deux litt raux c et s repr sentant cosx et sing sont li s par la relation sin x cos x 1 s 2 c 2 1 Une expression pour cos 3x est alors obtenue comme partie r elle de et qui se calcule par c ixs 3 cond s 2 c 2 1 s complex i wexpr c ixs 73 print cos 3x change Re wexpr c cos x Sortie 175 ms cos 3x 4xcos x 3 3 cos x Les performances mentionn es jusqu ici sont celles des fonctions de base du Basic 1000d Par programmation les possibilit s du Basic peuvent encore tre tendues Toutes les fonctions n cessaires au d corticage d une expression trouver les litt raux les exposants les coefficients etc sont pr sentes et per mettent de programmer soi m me n importe quelle manipulation d expressions non pr vue dans Basic 1000d On trouvera dans la biblioth que MATH de nombreuses extensions comme par exemple le traitement alg brique exact des expressions trigonom triques Une autre extension d crite dans ce mode d emploi permet les calculs exacts sur des nombres entiers de plus de 200000 chiffres Programmation Les proc dures et fonctions sont d une souplesse d emploi remarquable L exemple suivant calcule et crit les 1000 premiers nombres de la suite de Fibonacci Basic 1000d permet les appels r cursifs la fonction fibo s appelle elle m me Avec la commande remember qui m morise les derni res valeurs calcul es le temps
247. ct C est une expr exacte qui ne contient pas d autre litt ral que le litt ral complexe Plusieurs formes peuvent repr senter le m me nombre mais apr s assignation il y a r duction une forme canonique voir formc Exemple complex i w 1 1 i print w print 1 1 i Sortie 70 ms Chapitre 9 Notions de base 105 1 2 i 1 2 i 1 7 1 nombre complexe C est un nombre complexe exact ou flottant r el exact C est un poly r duit un nombre rationnel Exemple 72 13 r el C est un nombre flottant r el ou un r el exact entier C est un r el exact valeur enti re entier 32 ou adresse C est un entier dans 231 231 adressepaire C est une adresse paire comme le nom l indique entier 16 C est un entier dans 215 215 ind C est un entier acceptable comme indice de tableau Lors de la d clara tion des tableaux il ne peut exc der 215 pour les litt raux ou variables mais seule la place m moire limite sa valeur pour un tableau d index Lors de l utilisation des tableaux il ne doit pas d passer les dimensions d clar es litt ral g n ralisation du sens On utilisera le mot litt ral dans le sens d une expr dont la valeur est un seul litt ral Dans la suite litt ral sera toujours utilis avec ce sens g n ralis et type lit qualifiera un litt ral au sens strict Exemple La variable z de type var est aussi un litt ral sens g n ralis puisque sa valeur est
248. cteurs de p print exposant facteur for k 1 factorn p print factore p k tab 8 factorp p k next k Sortie 225 ms Facteurs de 7 123 17 x 2 2 3xx 1 73 exposant facteur 1 7 123 2 17 x 2 3 3 x 1 Exemple Le programme suivant attend comme entr e un polyn me non constant Il refuse les valeurs flottantes les nombres exacts et les formes factoris es non r ductibles un polyn me do input Entrer un polyn me gt p ift factorn p gt 0 p formd p ift factorn p 0 ift polyln p exit loop print p Exemple de dialogue Entrer un polyn me gt 17 pi Entrer un polyn me gt 124 Entrer un polyn me gt 1 x Entrer un polyn me gt x 2 2 x 1 1 x x 1 Calculs modulaires Basic 1000d poss de des fonctions effectuant des calculs modulaires Les fonctions consid r es ici utilisent le corps Z des entiers modulo p Dans cette section p d signe un nombre premier Les fonctions acceptent en g n ral aussi des valeurs n gatives de p mais p 0 et p 1 provoquent l erreur Non Entier Toutefois certaines fonctions sont aussi valables pour p entier quelconque On Chapitre 13 Calculs exacts 317 dispose de nombreuses fonctions tr s performantes agissant sur les nombres modulaires ainsi que sur les polyn mes unip unip Nous d signons ainsi des polyn mes un seul litt ral que nous notons par x et coefficients entiers Ces polyn mes sont consid r s comme tant des l ments de Z x
249. ction est utilis e par dir du Basic Exemple Voici une proc dure qui a le m me effet que print dir n printdir 0 printdir 3 stop printdir procedure local char dn dn chr 0 64 Chapitre 19 Appels syst me 429 print Disque C1 if gemdos 47 ptr dn 1 print Non trouv else print f peekz ptr dn endif return 48 1 Demande d allocation m moire 49 1 Lib ration de m moire 4A w 1 l R tr cit la taille d un bloc allou w est arbitraire l l adresse de base de l allocation et l la nouvelle taille du bloc qui doit tre inf rieure la pr c dente 4B w 1 1 1 Ex cute un programme 4C w Termine un programme 4E 1 w Recherche un fichier w indique les attributs voir files recherch s et est ladresse du nom pointe A Z par exemple Voir gemdos 4F 4F Recherche un fichier Exemple L exemple suivant liste les fichiers du disque A Les fonctions 4E et 4F renvoient dans le tampon en x les informations suivantes sur le fichier octets 0 20 r serv au syst me 21 attribut 22et 23 heure 24et 25 date 26 29 longueur 30 43 nom char c c A x x if gemdos 4E ptr c 1 print Pas de fichier 430 Chapitre 19 Appels syst me else print Fichier longueur repeat x gemdos 2F print just1 peekz x 30 15 justr peekls x 26 6 until gemdos 4F endif Sortie 4605 ms Fichier longueur DESKTOP INF 477 T Z 206 56 w 1 1 Change le nom d un f
250. ction sert configurer le sys t me pour une copie d cran sur une imprimante Epson 960 points par ligne Un cercle trac sur l cran est copi Noter cursh 0 pour vider tout l cran et hidecm pour cacher la souris et le curseur ift xbios 21 4 cursh 0 hidecm cls circle 100 100 80 hardcopy CLS Commande Efface l cran La commande cls n efface pas le menu Seule la partie en dessous de la ligne cursh est effac e et le curseur est plac gauche de la ligne cursh PRINT opt liste Commande Ecrit sur l cran p riph rique VBS LPRINT opt liste Commande Sortie imprimante p riph rique LBS Dans la section sur la gestion des fichiers nous verrons que les commandes print et lprint peuvent tre d rout es par exemple print peut envoyer des donn es vers un fichier disque 1print vers NUL pour supprimer l impression Aussi pour que les explications qui suivent restent valables pour un p riph rique quelconque nous utilisons les notations VBS et LBS pour indiquer les p riph riques de sortie cran et imprimante 126 Chapitre 10 Entr e Sortie liste e1 1 Indique les donn es sortir ou des sp cifications de mise en page Les virgules dans liste peuvent tre remplac es par des points virgules el expr exprcha ne TAB n USING u Ci dessus les d terminants using et tab sont des mots clefs n est un entier
251. d croissant et les 9 x 4 variables U 8 3 U 7 3 U 0 3 U 8 2 U 0 0 Les variables les deux types var et char sont trait s ensemble sont num rot es l int rieur du Basic par des entiers dans 0 215 Le nombre de variables ne peut donc d passer 215 Les ordres indiqu s ci dessus correspondent des num ros croissants Exemple La variable de type char c est d finie de fa on implicite et il en est de m me pour tout nom se terminant par et gauche d une assignation Par contre d qui appara t droite d une assignation est consid r comme litt ral c d type c d Sortie 90 ms c est de type char d est de type lit La d claration des variables simples est facultative La d claration des variables indic es est obligatoire Les variables la diff rence des index sont m moris es une adresse qui peut changer pendant l ex cution d un programme La place occup e en m moire par une variable donn e est galement variable et peut tre aussi grande que tout l espace disponible pour le programme Les variables de type char prennent pour valeur une cha ne de caract res de longueur quelconque de 0 tout l espace libre et de contenu quelconque Exemple Le caract re chr 0 dans la variable c provoque un changement de ligne l impression char CHANT c Dimanche amp chr 0 amp Lundi print c 92 Chapitre 9 Notions de base CHANT 036 t5 amp conc i 1
252. d lai Sinon au bout des n ms on consid re qu il s est produit un v nement timer et l instruction instr_timer est ex cut e Lorsque cette commande est absente tout ce passe comme si on avait donn un d lai nul et une instr_timer vide on menu timer O0 Chapitre 10 Entr e Sortie 143 ce qui fait que l attente dans la commande on menu est alors tr s br ve m me en absence d v nement Lors de l attente d v nements on doit donc soit placer on menu dans une boucle voir l exemple introductif soit sp cifier un grand d lai Les deux m thodes sont peu pr s quivalentes y compris pour l interruption par Break Exemple L exemple suivant revient attendre 5 secondes on menu timer 5000 print mtimer mtimer on menu Sortie mtimer 5010 ON MENU instruc Commande Surveillance des menus d roulants instruc instruction en Basic 1000d La commande on menu instruc sp cifie l instruction qui sera effectu e si une entr e du menu est s lectionn Exemple Affiche l entr e s lectionn e dans un menu Il ne peut y avoir plus de trois accessoires seul le deuxi me est actif Comme le menu est construit partir de C 1 l entr e du menu s lectionn e est contenue dans C menu 0 1 Les titres des menus dans la barre sont tronqu s 8 caract res mais les autres entr es peuvent tre plus longues Les guillemets dans ligne d information vitent que l apostrophe soit prise comme marque
253. d aux variables globales suivant la correspondance v 0 vli 0 0 v 1 vi 41 0 v 6 vl 0 1 v 35 v1 5 5 Remarquer que dans dataa on a crit v sans indice mais on aurait pu crire v 0 ou v min avec la m me signification L index local un indice j1 acc de l index global j comme suit j 0 5 j1 0 j4 5 j1 j 2 5 j1 2 La variable locale non indic e vp acc de la variable globale v 8 L utilisation d access permet d viter les probl mes de conflits de noms en sortie comme celui de l exemple que nous avons vu un peu plus haut Voici comment on peut r crire cet exemple tr s simplement avec access Le type de A doit tre connu lors de l ex cution de dataa A On a donc rajout la premi re ligne var P A 45 print A stop P local dataa 1f datav 2f access Y var A Y A return Sortie 15 ms 45 Le Basic permet galement des acc s avec changement de type et ga lement des acc s de type index en une adresse quelconque de la m moire Cela permet des effets int ressants comme par exemple de cr er un acc s index 1 bit 31 sur un index 32 le tableau bit 31 permettant de manipuler s par ment les bits de l index Chapitre 12 Labels Sous programmes 271 A Ces acc s sp ciaux sont cr s par datai au lieu de dataa L elocal dataa nomi est quivalent l elocal datai 31303030 nb_max a t qui met dans la liste des donn es enti res du local quatre valeurs La premi re
254. de la station v_h Pour des exemples de v_h on se reportera la section GDOS de la biblioth que STND WORK_OUT WORK_OUT i V_fonction entier dans 0 62 La forme work_out renvoie l adresse o se trouvent les informations retourn es par la commande implicite vdi 100 lors de l ouverture de la station de travail par le Basic Ces informations qui sont des entiers 16 peuvent tre lues par work_out i ou peekw work_out 2 i Les valeurs 0 44 resp i 45 56 Chapitre 19 Appels syst me 441 sont les sorties intout i resp ptsout i 45 de la commande vdi 100 Pour l interpr tation de ces valeurs voir le livre de L Besle 1986 p152 o elles sont d sign es par arg_out i Les valeurs 57 62 sont des variables internes du Basic Les valeurs normales en r solution 2 sont not es n 57 valeur maximum de cursl 24 58 cursh 4 59 valeur maximum de cursl 24 60 cursl 61 valeur maximum de cursc 79 62 cursc On peut obtenir des effets sp ciaux d impression et entr e en modifiant par pokew les valeurs work_out 57 et work_out 59 qui doivent tre gales et au plus gales 49 ou la valeur work_out 61 qui doit tre gale 1 modulo 4 et au plus gale 79 En effet le canal VBS du Basic est param tr par ces l ments 57 59 et 61 Ces valeurs sont r initialis es lors d un changement de r solution Les l ments 0 56 de la table par contre ne sont pas utilis
255. de 0 max nb max gcontrl 10 4 global 30 14 gintin 32 15 gintout 14 6 addrin 12 2 addrout 4 0 Ces tables peuvent tre initialis es ou lues en utilisant les formes indic es cor respondant des index 16 sauf pour addrin et addrout qui correspondent des index 32 Exemple gintin 1 13 addrin 0 x w gintout 1 quivaut pokews gintin 2 13 pokels addrin x w peekws gintout 2 AES AES k ini adj Commande Appel AES AESF V_fonction Appel AES k entier k 10 125 ini entier 16 adj entier 32 Nombre de renseignements donn s propos de la commande vdi restent valables et ne sont pas r p t s ici Si aucun argument n est donn la commande aes effectue un appel AES brut sans initialiser les tableaux Il faut donc initialiser les tableaux gcontrl addrin et gintin avant l appel brut AES L appel par 454 Chapitre 19 Appels syst me la fonction aesf utilise les m mes arguments que la commande aes En retour la fonction renvoie la valeur de gintout 0 Par exemple print aesf 77 crit l identificateur de l application 1 A Les tableaux gcontrl sont galement utilis s par le Basic et le bloc de param tres en systab 22 qui contient les adresses de ces tableaux peut tre modifi Si argument k est donn Basic 1000d se charge de remplir les 5 valeurs gcontrl 0 gcontrl 4 selon le num ro de fonction k Ensuite les n 1 arguments in0 inl
256. de donn es d une fen tre l autre 32 Chapitre 4 La fen tre Basic 1000d Commande n texte Cette commande permet de modifier une ligne de la source sans ouvrir la fen tre Edit Source Elle remplace la ligne n o n est un nombre d cimal par texte et d place le pointeur d insertion sur la ligne suivante M n 1 Le nouveau texte pris pour la nouvelle ligne ne contient ni les espaces en t te ni ceux avant le premier et non entre guillemets la diff rence de l dition dans Edit Source le premier caract re de P texte doit tre A Z a z 7 V ou Si texte est vide la ligne est remplac e par une ligne vide Cette commande est tr s commode pour la correction des erreurs En effet apr s d tection d une erreur la ligne ayant caus l erreur est crite sous la forme n texte Les commandes de recherche et changement elles aussi listent les lignes sous cette forme Pour corriger la ligne du programme en erreur il suffit de d placer le curseur sur le texte de corriger et d appuyer sur Return pour valider la correc tion La fen tre Help 34 Chapitre 5 La fen tre Help Les modes d emploi HELP L entr e dans le menu Help se fait en appuyant sur la touche Help ou partir du menu HELPS ou LBR HLP case Help Le fichier charg apr s l appui sur la touche Help n cessairement le nom HELP Z mais il est possible de charger dans Help des fichiers ayant un
257. des compteurs timer et mtimer Les fonctions timer et mtimer renvoient le temps coul depuis clear timer ou clear La valeur mtimer est toujours un entier multiple de 5 La valeur renvoy e par timer est gale int mtimer 1000 Exemple D termine le temps n cessaire pour factoriser 1 2 clear timer print formf i x 12 print timer mtimer Sortie 4920 ms x 2 1 x 1 x x 1 x x 4 x72 1 x x 2 x 1 x x 2 x 1 4 4905 DATE s Chapitre 11 Programmation 239 TIMES s Variables d tat Date et Heure SETTIME s s Commande Fixe la date et l heure exprcha ne L exprcha ne s doit avoir pour valeur hh mm ss ou mm nn yyyy En tant que C_fonctions time et date renvoient ces valeurs En tant que commandes time et date sont synonymes et le signe est facultatif La commande settime permet galement de fixer l heure et la date Exemple C est la forme de s qui indique si c est la date ou l heure Ici les com mandes time et date sont utilis es contre emploi L heure est d finie 2 secondes pr s d o la valeur trange du premier affichage de time Dans set time des formes simplifi es de s sont utilis es push et pop sont utilis es pour ne pas trop modifier l heure et la date du syst me push date time time 12 31 1988 date 23 59 59 print date f time pause 4000 print date f time settime 10 20 3 31 88 print date f time settime po
258. dessus dans Poke DEBUT FIN et DATA puis remplit le bloc m moire de DEBUT FIN 1 avec la valeur DATA par octets mots ou mots longs suivant la taille COMP F5 Comparaison m moire La commande demande DEBUT FIN et DEST puis compare le bloc m moire de DEBUT FIN 1 avec le bloc commen ant en DEST Elle crit les valeurs et adresses des octets diff rents dans les deux blocs Par exemple pour comparer le contenu de deux fichiers on peut lib rer d abord la m moire au dessus de 50000 par la commande Basic limit 50000 puis charger le premier fichier en 50000 le deuxi me en 50000 L o L est la longueur du premier fichier La commande Comp donne ensuite les diff rences entre les deux fichiers QUIT F9 Sortie du Basic 1000d MEM MAP F10 Carte m moire Cette commande peut s appeler dans la fen tre Basic en tapant CR On obtient par exemple Bspg 010AD8 Help 0391C6 0 Lbry 0391C8 0 Src 0391CA 498795 Limit OF4000 Himem 0F4000 Proc 20000 100 Xqt 4096 100 Fre 232550 24 La commande donne en hexad cimal les adresses de la page de base basepage des fichiers Help Biblioth que et Source le haut du Basic limit et le haut de l allocation himem En d cimal elle donne aussi les longueurs des fichiers ici Help et Bib lioth que sont vides et la Source prend 498795 octets La ligne Proc indique le nombre d octets disponibles dans la pile des proc dures et boucles ainsi q
259. dexi 233 d corticage 310 6 deffill 468 deffn 461 d finition 72 defline 469 defmark 470 defmouse 63 160 450 deftext 445 470 deg 286 288 290 degf 288 290 degr 286 8 d lai 138 142 238 delete 23 4 efface den 314 denf 313 d nominateur 280 313 4 denr 280 der 295 d riv e 4 99 295 365 6 derm 295 dertrigo 366 d shomog n iser 294 DESK 11 det 301 491 dete 227 d terminant d une matrice 4 274 301 2 mot clef 64 126 develop 96 100 116 223 242 d veloppement factorisation 96 7 de Stirling 380 1 limit 4 298 301 devid 171 175 devty 165 170 171 172 dfree 162 dim 93 dim 476 dir 164 166 DIR 41 2 dir 40 162 428 disque 14 40 3 115 161 82 271 graphisme 413 octets libres 162 virtuel 41 dist2 377 distance 377 DISTINGO 47 distingo 74 92 200 1 205 217 232 3 243 248 439 486 div 67 103 276 282 305 306 7 divd 306 dive 307 332 divez 307 diviseur commun 304 division 103 223 305 10 335 339 enti re 282 exacte 307 modulaire 319 divn 306 307 divr 103 281 339 do 56 195 196 200 254 dossier r pertoire dollar dpeek 482 dpoke 482 driver 473 droite 375 8 line droite 376 dsum 373 dual 376 dvarnum 94 dynamique allocation E 78 change 222 chiquier 2 cran 28 120 171 433 492 adresse 170 174 430 copie 125 466 7 sauvegarde 136 criture fichier 40 170 174 6 181 edit source 20 6 ouverture 29 31 edit 482 EDITING 23
260. dgcd A B 7 print P print mdmod A P 7 mdmod B P 7 print mdgcd 3 xP 0 7 Sortie 165 ms x 2 5 x 2 0 o0 x 2 5 x 2 MDPWR A n v p V_fonction Puissance doublement modulaire entier n lt 0 accept si mdgcd A v p 1 MDINV A v p V_fonction Inverse doublement modulaire La fonction mdpwr calcule la puissance n i me de l unip modulo l unip v et modulo p Elle renvoie l unip W coefficients dans 0 p et de degr deg W lt deg v tel que W A modulo v et modulo p L entier n n est pas limit 215 215 comme dans l expression A mais peut tre aussi grand que 1019723 La fonction mdinv A v p qui est identique mdpwr A 1 v p calcule A7 mod v mod p Exemple Le programme calcule W A500000 amp 7 A71000000 mod x 1 mod 17 La fonction mdmod permet de v rifier que W UT 0 mod z 1 mod 17 A 2 x 3 1 v x 7 1 W mdpwr A 10 6 2 v 17 U mdpwr A 10 6 v 17 Chapitre 13 Calculs exacts 321 print W print U print mdmod W 2 mdinv U v 17 v 17 Sortie 2380 ms 8 x 6 15 x 5 13 x 4 16 xx 73 15 x 9 8 x 6 6 x 5 4xx74 12 x73 9xx72 14 x 12 0 MDPWRE m n p V_fonction Puissance modulaire m n entiers La fonction mdpwre calcule la puissance n i me de l entier m modulo p Elle renvoie un nombre dans 0 p gal m modulo p o n est un entier qui peut tre n gatif et qui peut atteindre 1019723 Si n gt 0 p non pr
261. distingo nodistingo u o u a pour valeur un entier impair 1 par exemple sont quivalentes Elles agissent sur les labels en dessous de la ligne de la commande et sur les noms d finis apr s l ex cution de la commande m me si ces d finitions ont lieu sur une ligne situ e avant la commande dans la source Les majuscules et minuscules sont alors quivalentes Elles n ont aucun effet sur les noms d finis avant la commande Exemple La variable w d finie avec l option distingo ne peut tre r f renc e par W m me apr s passage en option nodistingo L impression de W qui est de type inconnu provoque la cr ation d un litt ral w en option nodistingo les nouveaux noms des litt raux sont crits en minuscules par le Basic Il en r sulte que l ancienne variable w devient inaccessible var w nodistingo type w W print w W type w W Sortie 170 ms w est de type var W est de type inconnu 0 vw w est de type lit W est de type lit La commande nodistingo p o p a pour valeur un entier pair 0 par exemple agit sur les labels en dessous de la ligne de la commande de sorte que les majuscules et minuscules sont quivalentes Elle agit de fa on oppos e sur les noms d finis apr s l ex cution de la commande en distinguant les majuscules des minuscules En effet d une part le nom des labels est d termin par un premier passage dans la source sans ex cution Ce passage reconna t les commandes no distingo
262. e 1 canall 2 canal 2 4 canal 3 forme entier 0 15 forme de l enveloppe p riode entier 0 65535 p riode de l enveloppe dur e entier 16 temps d attente en unit s de 20 ms Pour supprimer le son wave 0 0 Remarquer qu il est possible d omettre les param tres la fin des proc dures sound et wave La dur e est alors 0 et les autres param tres sont inchang s Exemple for i 0 25 sound 1 10 i 4 5 next i sound 1 10 284 10 sound 1 12 10 4 20 sound 2 12 13 4 20 sound 3 12 17 4 20 Chapitre 20 Biblioth que STND 481 wave 7 7 0 65535 200 wave 0 0 Sortie 5345 ms BMOVE s d l Proc dure Copie m moire s d l entier 32 La proc dure bmove d place les l octets en s vers l adresse d Noter que la commande Copy du menu TOOLS permet aussi d ex cuter cette commande partir de l diteur Exemple La proc dure bmove est utilis e dans la m moire cran print c conc i 0 255 of chrp i bmove xbios 2 xbios 2 16000 16000 Sortie 865 ms FILES path Proc dure Ecrit le r pertoire path exprcha ne donnant le nom d un r pertoire La proc dure files quivaut print files path 1 FILESELECT path f ch Proc dure S lection d un fichier path exprcha ne donnant le nom d un r pertoire f nom de fichier par d faut ch variable de type char En sortie de la proc dure fileselect ch est remplie avec le nom s lectionn vide si annulation VOID x
263. e formatl 1 print spc 12 Test 1 spc 13 Test 2 spc 9 Test 3 print precision string 2 t err amp spc 12 err forv p in 1 9 15 1 20 60 10 precision p clear timer print justr p 3 x 1 for i 1 100 x x tan x cos x sin x next i print justr timer 10 using 7777777 x 1 clear timer x 1 for i 1 2499 x tan atn exp log sqr xxx 1 next i print justr timer 8 using 7777777 x 2500 x 2 for i 1 20 x sqr x next i for i 1 20 x x 2 next i print using 777777 x 2 nextv Test 1 Test 2 Test 3 t err t err err 7 2 E 4 257 2 E 3 Sik 8 6 E 12 308 5 E 5 5 E 7 10 4 E 12 364 4 E 6 2 E 8 35 3 E 14 944 3 E 5 2 E 8 39 2 E 15 1063 2 E 6 9 E 11 41 1 E 16 1112 1 E 7 2 E 11 44 1 E 17 1173 1 E 8 1 E 11 44 2 E 18 1197 2 E 9 7 E 13 67 6 E 24 1758 1 E 14 1 E 17 102 2 E 34 2653 8 E 25 4 E 28 Chapitre 9 Notions de base 89 40 159 1 E 44 4200 5 E 35 10 E 38 50 217 1 E 55 5779 1 E 45 3 E 48 60 276 8 E 66 7233 2 E 55 4 E 59 Index lit var et char types de noms Exemple Nous avons d j vu des variables de type var et litt raux type lit dans l introduction voici un autre exemple Z3 A B 72 A B 2 Z Z3 4 print Z Sortie 50 ms A B Nous avons dans cet exemple des litt raux A et B et des variables Z et Z3 d finis de fa on implicite Basic 1000d a donn le type var aux noms inconnus trouv s
264. e tournez la fen tre Edit Source et corrigez coff en cof Vous pouvez maintenant reprendre le programme au point o il tait sans r ex cuter depuis le d but l aide DEBUG Taper Return le print est ex cut Pour voir l cran du programme appuyez sur E ou F6 Pour revenir au d bogueur appuyez sur K ou F10 Continuez le pas pas Observez que le calcul de l expression y i 2 y 2 i 58 Chapitre 8 Mise au point des programmes vous fait parcourir deux fois la fonction y Au fur et mesure que vous corrigez les erreurs vous n avez plus besoin d ex cuter toutes les instructions une une Le d bogueur offre de nombreuses possibilit s pour sauter les parties de programme d j au point Ainsi vous pouvez revenir de la fonction y en tapant sur D ou F5 et sortir de la boucle for next en tapant sur L ou F20 Erreurs de syntaxe Les erreurs de syntaxe sont clairement indiqu es L cran du programme avant l erreur est sauvegard ce qui permet apr s correction de l erreur de continuer l ex cution du programme par la commande diteur Debug La ligne en erreur est sortie avec son num ro de sorte que la correction de la source est facilit e L endroit o l erreur a t d tect e est marqu sur une autre ligne avec un point d interrogation La cause de l erreur est en g n ral juste avant ou apr s ce point d interrogation Remarquez que l erreur dans une instruction comme read peut tre c
265. e nous allons voir que le Basic 1000d peut galement tre programm pour traiter exactement des expressions math matiques faisant intervenir des fonctions transcendantes Les fonctions tudi es ici acceptent en effet des expressions exactes contenant les fonctions trigonom triques sin cos tg et cotg Voici des exemples sin x 72 3 cos axtg u 8 b cotg y 1 h 2 sin r2 sin x 5 4 cos x 5 4 2xcos x 5 72 sin 2 x cos cos x 2 Pour traiter une telle expression nous la rempla ons par un ensemble de fractions rationnelles permettant de la d crire en introduisant des litt raux Chapitre 16 Biblioth que Math matique 365 suppl mentaires qui repr sentent des sin et cos Ces litt raux ont pour noms ici trigo_1 0 i pour les sinus et trigo_1 1 i pour les cosinus D taillons la derni re expression ci dessus Nous posons ei x 2 e2 trigo_1 1 0 e3 trigo_1 0 0 trigo_1 1 1 L expression de d part est enti rement d crite par ces trois expressions ration nelles car on peut la retrouver comme tant gale e3 apr s les substitutions suivantes trigo_1 1 1 cos e2 trigo_1 0 0 sin ei trigo_1 1 0 cos ei Dans les programmes ci apr s l expression sera cod e par le v_ensemble vset el e2 e3 Notre cher lecteur aura sans doute remarqu dans cet exemple que le programme de codage reconna t que c est le m me argument el qui ap para t en 2 endroits diff rents une fois comme argument
266. e 11 Programmation 185 bloc2 ENDIF et IF x1 bloci ELSE IF x2 bloc2 ELSE bloc3 ENDIF si x1 0 seul bloc1 est ex cut si x1 0 et x2 0 seul bloc2 est ex cut si x1 et x2 sont gaux 0 seul bloc3 est ex cut deuxi me exemple Il est totalement correct de sortir d un bloc du if par une instruction de branchement quelconque On pourra ainsi quitter un bloc par goto return exit exitif etc Il est galement correct d effectuer un branchement vers un bloc du if Dans ce cas aussi apr s la fin du bloc l ex cution se poursuit apr s le endif de la structure IFT expr THEN instruction Commande IF uniligne Dans le mot clef ift le t rappelle le then pour distinguer cette commande de la structure if else endif Si expr a une valeur diff rente de z ro l instruction apr s then est ex cut e L instruction peut tre n importe quelle commande du Basic 1000d ou tre omise utile pour les fonctions comme gemdos dont on ne veut pas la valeur ou pour rectifier la pile par ift pop Exemple a random 2 ift a 0 print a est nul ift a 1 print a vaut un Sortie 25 ms a est nul On peut presque toujours omettre then Les proc dures et variables dont le nom par exemple el commence par E suivi d un chiffre 0 9 peuvent provoquer des erreurs dans la commande ift Exemple var x el ift x 0 ei 1 Sortie 15 ms XERREUR INSTRUCTION ILLEGALE ift x 0 e1 2 ift x 0 e1 1 186 Chapitre 11
267. e 20 Biblioth que STND entier n 0 4 La proc dure openw permet d ouvrir 4 fen tres jointives pour n 1 2 3 ou 4 le point de contact des 4 fen tres tant x y Si n 0 l cran sauf la barre des menus forme l cran x y origine des coordonn es graphiques Les sous programmes fournis offrent une gestion simple mais limit e des fen tres La proc dure clearw efface la fen tre et fullw ouvre compl tement une fen tre Les proc dures titlew et infow permettent de donner le titre et la ligne d infor mation La fermeture des fen tres est assur e par closew et galement par retour l diteur examiner B_END La table windtab permet l acc s aux param tres des fen tres Exemple Titlew 1 Ouvrir la fen tre On Menu Message gosub msg pokew windtab 2 6 Openw 1 Clearw 1 Do On Menu Loop msg if menu 1 22 Closew 1 cls stop endif if menu 1 23 hidecm fullw 1 endif return Divers DIM T V_fonction Nombre d l ments d un tableau TO nom de tableau suivi de Chapitre 20 Biblioth que STND 477 La fonction dim renvoie le nombre d l ments du tableau T Exemple var A 100 B 15 15 char D 9 9 9 index 1 F 9 9 9 9 print dim A dim B dim D dim F0 Sortie 200 ms 101 256 1000 10000 ADD v x SUB v x MUL v x DEC v INC v Proc dures Op rations nomi de type var ou index expr La proc dure add resp sub ajoute resp retranche x v et mul
268. e 3 f_style random 12 1 endif aes 104 menu 4 4 x gintout 1 y gintout 2 pbox x y xtgintout 3 y gintout 4 endselect return MENU n V_fonction Informations sur les v nements entier n 2 15 Apr s la commande on menu la fonction menu n renvoie les sorties de l appel implicite aes 25 n cessaires pour g rer l v nement 2 adresse du tampon de message 1 adresse de l arbre du menu 0 entr e du menu qui a t cliqu e menu_id menu 5 1 8 message de 16 octets 9 15 param tres gintout 0 gintout 6 Le tampon de message ou menu 1 menu 8 contient les messages des v nements fen tre Voir L Besle 1986 p196 8 pour leurs significations D taillons les sorties menu 9 menu 15 menu 9 Le type t de l v nement on menu T qui s est produit t T 1 key 2 button 4 mouse 0 Q mouse 1 148 Chapitre 10 Entr e Sortie Si plusieurs v nements sont simultan s on obtient la somme des valeurs correspondantes Les deux v nements souris mouse correspondent aux deux possibilit s pour m voir on menu mouse menu 10 Coordonn e x de la souris menu 11 Coordonn e y de la souris menu 12 Boutons actionn s boutons 0 aucun 1 gauche 2 droit 3 gauche et droit menu 13 Touches sp ciales du clavier touches Shift droite Shift gauche Control Alternate o AeA Ne Si plusieurs touches sont appuy es on obtient la somme des valeurs correspondan
269. e cha ne poss dant un type qui est un entier dans 0 216 Le codage m moire d un t_ l ment est r alis par longueur contenu 2 le type 4 la longueur L de la cha ne L la cha ne O0 ou 1 un octet nul ou absent sans signification qui permet d atteindre une adresse paire ESET t x ti xi C_fonction Construction d un t_ensemble t ti entier 0 216 X Xi exprcha ne La forme eset t x renvoie le t_ l ment construit avec l exprcha ne x poss dant le type t Si plus de deux arguments sont donn s eset t x t1 x1 renvoie le t_ensemble eset t x amp eset t1 x1 amp Il est possible d utiliser pour x ou x1 un autre t_ensemble et de cr er ainsi des structures contenant d autres structures Le type associ chaque l ment peut tre utilis pour indiquer si l l ment est un entier un nom de fonction un polyn me etc Exemple La C_fonction eset_bis t x renvoie le m me t_ l ment que eset t x Dans le cas o la longueur de x est impaire le dernier octet superf tatoire qui donne au t_ l ment une longueur paire est chr 0 t random 2 16 c conc j 0 random 100 of chr random 2 8 ift eset_bis t c eset t c print ok stop eset_bis function index t char x value mkz t 2 amp mkz len x 4 amp x ift len x mod 2 cadd value return Sortie 235 ms ok Chapitre 9 Notions de base 113 Codage d un v_ensemble Chaque velsg d un v_e
270. e d bogage I10 deb 5 I11 cof cof x deb deb deb 1 ift deb gt 0 goto 110 112 print coff for i 1 100 cof cof y i 2 y 2 i next i print cof stop y function i value z i i i i 1 ift modr i 5 0 value 1 return Ce programme boucle par erreur Si vous lancez le programme par RUN vous ne comprenez pas pourquoi rien ne sort Indiquons comment mettre au point ce programme 110 par le d bogueur On part de la premi re ligne 110 par DEBUG F9 Le d bogueur se positionne sur la premi re instruction Il est ensuite conseill d ex cuter chaque instruction au moins une fois en mode pas pas Appuyez sur Return la premi re instruction a t ex cut e le d bogueur est positionn sur la deuxi me ligne Appuyez encore 3 fois sur Return ou sur F1 Vous pouvez aussi cliquer au cours de ce pas pas sur les divers noms crits sur la page avec le bouton gauche Le d bogueur revient ligne 110 alors que vous auriez voulu aller ligne 111 Voil l erreur Retournez la fen tre Basic par Arret F2 ou touche A puis ouvrez la fen tre Edit Source changez goto 110 en goto I11 et relancez le d bogage par DEBUG F9 mais maintenant vous voulez aller jusqu en 112 rapidement Appuyez sur 5 seulement la ligne 112 est num rot e par 5 ou cliquez le bouton droit sur la ligne 112 Le d bogueur ex cute la boucle presque en vitesse r elle et se positionne en 112 Vous observez maintenant que vous vouliez crire cof et non coff R
271. e fen tre De toutes fa ons le Basic ne leur donne pas la main en dehors de la fen tre DESK et sauf par programmation Le fonctionnement de la fen tre DESK est analogue la partie du programme B_USER de la biblioth que STND qui affiche le menu L tude de ce pro gramme vous montrera que le Basic ouvre une fen tre GEM ce qui fait que les acces soires ouverts et non referm s se trouvent d sactiv s sous cette fen tre lors du retour dans la fen tre DESK Si un accessoire est bien programm un click sur son nom dans le menu r activera alors l accessoire 12 Chapitre 2 Visite rapide du Basic 10004 Les autres fen tres du Basic 1000d se pr sentent sous forme de damiers et non sous forme de menus d roulants Les programmes en Basic peuvent appeler pour leur propre usage les menus d roulants qui donnent acc s aux accessoires ou les damiers qui se s lectionnent la souris ou par les touches de fonctions La fen tre Basic La fen tre Basic nous abr geons ainsi le titre Basic 10004 qui s ouvre au lancement du programme est celle du mode direct ex cution directe des commandes du Basic A l aide des touches mouvements on peut se d placer et crire facilement sur tout l cran sauf le damier En attendant la liste compl te des mouvements nous vous laissons d couvrir l utilisation des fl ches T et de Home Clr c est dire s Home Delete et s Cette criture ne modifie que
272. e m me calcul est tout aussi facile avec 1000 chiffres mais avec cette pr cision le programme dure 4 secondes Voici un exemple de calcul en nombres complexes avec 25 chiffres exacts precision 25 complex i print exp i Sortie 500 ms 0 5403023058681397174009366 ix0 8414709848078965066525023 Calculs exacts en entiers et rationnels Comptons exactement les grains de l chiquier 1 2 4 263 print sum i 1 64 of 27 i 1 Sortie 285 ms 18446744073709551615 Le programme suivant utilise le processeur rationnel du Basic 1000d print 2730000 1 3 2 30000 Sortie 135 ms 1 3 Les nombres rationnels m n avec m et n entiers sont repr sent s ex actement et les op rations sont effectu es sans aucune approximation Dans Chapitre 1 Pr sentation du Basic 10004 3 l exemple le nombre 230000 1 3 est d abord calcul il occupe 2762 octets en m moire puis le nombre 230000 est calcul et retranch au nombre pr c dent Les proc d s modernes de communication tant pour la v rification des donn es que pour la transmission d informations confidentielles font en g n ral appel des m thodes arithm tiques de codage De telles m thodes utilisent des grands nombres des nombres premiers et des calculs modulaires En Basic 10004 ces calculs sont aussi simples que le calcul de 2 2 Voici trois exemples dans ce domaine Calcul d un nombre premier al atoire de 25 chiffres print prime 10 24 random 9 x10 24 Sortie
273. e nombre d arguments donn par 0 n est pas nul la fonction stoppe le programme print abc spc3 def print spc3 1 stop spc3 function if 0 print Arguments interdits stop endif value return Sortie 20 ms abc def Arguments interdits STOP A lentr e de la fonction une variable locale de nom value est cr e et initialis e 0 exact pour les V_fonctions et la cha ne vide pour les C_fonctions Dans le corps de la fonction value se comporte comme une vari able locale que l on peut lire et modifier Sa valeur est transmise l expression appelante apr s l ex cution de return et le programme continue ensuite le calcul de l expression qui contient la fonction Si la fonction F appelle une proc dure la proc dure a aussi acc s cette m me variable value Par contre si la fonction F appelle la fonction G la variable value de F n est plus accessible dans G On peut donc crire dans F PPP value qui transmet value la proc dure PPP mais il est incorrect d crire w G value 5 car value dans l argument sera dans G la variable value de la fonction G pas celle de F Ce comportement correspond au fait que les arguments ne sont pas calcul s au moment de l appel mais seulement sur demande dans le sous programme Il faudra donc utiliser une autre variable value_f value w G value_f 5 Ces explications sont r sum es par la r gle suivante R gle NE PAS UTILISER value DANS LES
274. e premier appel est plus long par suite des initialisations dans la fonc tion gamma print erf 1 mtimer clear timer print erf 1 mtimer Sortie 3060 ms 0 8427007929 2220 0 8427007929 835 Int gration num rique romberg a b f e V_fonction Int grale I f x dx a b e r els Si e gt 0 l int grale est calcul e e pr s Si e lt 0 l int grale T est calcul e e I pr s Par d faut e 27Precisionz f nom d une fonction Le nom f est tel que f x renvoie la valeur au point x a b La fonction romberg calcule l int grale d finie 1 sad par la m thode de Romberg Tous les index et variables utilis s sont locaux La fonction int grer f ne doit pas modifier les variables et index de romberg Il est donc prudent de n utiliser dans f que des l ments locaux Exemple Calcul de la constante d Euler par l ot i t 1 1 f er Ne 0 t print romberg 0 1 f1 10 9 384 Chapitre 16 Biblioth que Math matique stop fi function tf fonction int gr e en exemple tf float tf if tf lt 10 5 value 1 tf 2 return else value 1 exp tf exp 1 tf tf return endif Sortie 24 s 0 5772156649 Exemple Calcul de z 1 li x i x l D de La fonction li x est une estimation du nombre de nombres premiers inf rieurs x Le calcul est effectu en donnant l argument 1 1og dans romberg ce qui est autoris format 1 li 0 b 2 for i 1 17 a b read b data 10 10
275. e sur la suite Sp Sn 24 Sn 55 modulo 215 Apr s initialisation des 55 nombres S1 S2 S55 par des Chapitre 13 Calculs exacts 325 nombres non tous pairs la suite Sn qui a une p riode plus grande que 255 1 36028797018963967 peut tre consid r e comme al atoire La commande randomize r avec r 0 initialise S1 S2 S55 de mani re reproductible On obtiendra alors dans un programme donn les m mes valeurs dans rnd et random Noter cependant que ces fonctions sont utilis es implicitement par certaines fonctions du Basic comme par exemple formf Exemple Ce programme produit les m mes r sultats chaque fois qu il est ex cut Cependant les 2 valeurs de random 1000 diff rent parce que le g n rateur de nombre al atoire est appel par formf randomize 1 w formf 1 x 2 print random 1000 randomize 1 print random 1000 print rnd Sortie 235 ms 502 184 0 6058745258 Les commandes randomize sans argument et randomize r avec r 0 initialisent la suite S avec le compteur 200 Hz en 4BA Les programmes ne sont alors plus reproductibles Exemple Tests du y Ce programme montre que les suites al atoires obtenues par random se compor tent tr s bien dans les tests du y print Tests KHI 2 O mauvais 0 14 o douteux 1 54 bon print Par ligne moins d un 0 et cinq o correspondent un test tr s r ussi var T 9 FORMAT 3 for R 1 15 RANDOMIZE R print R justl R 2 N
276. e texte gra phique avec justification 19 Appels syst me 422 Chapitre 19 Appels syst me Basic 1000d permet tous les appels syst mes Ce chapitre n est pas une description du syst me mais seulement une description de la fa on de l appeler avec quelques exemples pratiques Pour plus de d tails et des explications sur le syst me nous vous renvoyons au livre de Laurent Besle 1986 GEMDOS GEMDOS k wli V_fonction Appel de la fonction k du TRAP 1 k entier wli entier 16 ou 32 La fonction gemdos renvoie le contenu du registre DO mot long sign La liste d arguments wli d pend du num ro k de la fonction Le nombre et la taille 16 ou 32 des arguments est v rifi suivant le num ro de fonction L ordre des arguments est l ordre inverse d criture en assembleur et le m me ordre qu en C Exemple La fonction 36 du TRAP 1 demande des informations sur le disque L appel de cette fonction en assembleur se fait par un programme ressemblant celui ci dessous Le nombre drive d signe le lecteur de disques 0 le lecteur de disques par d faut 1 pour le lecteur A Le nombre tampon est l adresse d un tableau de 16 octets o la fonction crit les informations MOVE drive SP MOVE L tampon SP MOVE 36 SP num ro de fonction TRAP 1 appel de la fonction ADDQ 8 SP correction de pile Cet appel peut tre effectu en Basic 10004 comme suit index tp 3 tampon p
277. efficient num rique P poly q expr Le codage de la forme polynomiale de p s crit ean m p c i 0 j n Qi j Tj de 1 La fonction polyn renvoie le coefficient co du premier mon me de ce codage C est aussi le premier nombre qui s affiche par print formd p La fonction norm q d pend du codage m moire de q Si ce codage est la forme factoris e S q j P JI P i 2 norm renvoie le nombre P factorp q Si le codage de q p est la forme polynomiale ci dessus norm q renvoie le nombre co polyn q Si p est un mon me norm p polyn p que la forme soit factoris e ou non Exemple Si p est sous forme polyn me on a norm p polyn p par contre si p est sous forme factoris e en g n ral norm p polyn p factor p 17 19 2 x 5 y 1 print formd p print polyn p print norm p print norm formd p Sortie 100 ms 34 19 x 5 y 17 19 34 19 17 19 34 19 POLYLN p POLYL p k V_fonctions Litt raux P poly 312 Chapitre 13 Calculs exacts k entier par d faut k 1 La fonction polyln p renvoie le nombre de litt raux n de p Ces n litt raux sont ordonn s suivant l ordre de cr ation voir lit Si k 1 n la fonction polyl p k renvoie le k i me litt ral de p Si k 1 n elle renvoie 0 Exemple Les litt raux sont ici ordonn s X lt Y lt Z suivant l ordre de d codage de l expression W mais si on fait pr c der le programme de lit Z Y cet ordre
278. elconque des commandes suivantes Noter que la derni re forme ne change pas le r pertoire chdrive 2 chdrive B chdrive b AA DFREE lec V_fonction Nombre d octets libres sur le disque lec lec Indique le lecteur C est soit un entier 0 16 soit une exprcha ne commen ant par une lettre de A P A la diff rence de ci dessus dans chdrive lec 0 est possible pour d signer le lecteur courant Pour le lecteur courant on peut crire dfree au lieu de dfree 0 Le nombre d octets libres des disques A et B s obtient aussi par la commande Dir du menu FILES Exemple print dfree octets sur le disque chr chdrive 64 Sortie 2170 ms 159744 octets sur le disque A DIRS lec C_fonction Nom du r pertoire du lecteur lec lec Comme ci dessus dans dfree La forme dir quivaut dir 0 Exemple La sortie a t obtenue apr s chdir auto print dir 0 Sortie 20 ms AUTO MKDIR ch RMDIR ch Chapitre 10 Entr e Sortie 163 CHDIR ch Commandes Cr er effacer ou fixer le r pertoire ch fcha ne La commande mkdir respectivement rmdir chdir cr e MaKe respective ment efface ReMove d finit CHange le r pertoire DIRectory de nom con tenu dans l exprcha ne ch La commande rmdir exige que le r pertoire soit vide Exemple La commande mkdir cr e le r pertoire SEST ce qui est v rifi en af fichant le contenu du disque par files Le r pertoire par d faut est modifi par chdir et
279. els sont faits sans approximation et donnent donc des r sultats exacts Exemple Les deux nombres rationnels a et b sont trait s exactement ce qui donne la valeur exacte a b 1 Ces deux nombres sont de l ordre de 102 7 La fonction mlen permet de voir que a occupe 198 octets en m moire L criture de la valeur exacte de a prendrait 6 lignes de 80 caract res Chapitre 9 Notions de base 79 a 1 12 345 7 89 b 4 345 3 345 7 89 print mlen a print float a print a b Sortie 615 ms 198 0 1270001767 E 298 1 Exercice Grand Ecrire exactement le plus grand entier accept par Basic 1000d C est 265520 _ 1 mais attention l exponentiation exacte a est limit e b lt 215 Temps des calculs en exacts Voici les temps en s de quelques multiplications et divisions exactes p q p q p q 10100 104 001 006 10100 105 003 017 10100 1050 006 02 101000 104 005 02 101900 105 01 11 101000 1050 02 17 101000 10500 14 46 105000 1050 09 8 puis les temps du calcul de 10 et de sa racine carr e exacte par intsqr k 10 intsqr 100 010 025 500 045 175 1000 13 56 2000 A9 1 96 5000 2 15 10000 10 59 19000 37 148 Les temps de calculs de nombres termin s par beaucoup de 0 en binaire sont plus courts 0 01 s pour calculer 2 16000 2 16000 ou 4 16000 80 Chapitre 9 Notions de base Les nombres flottants r els Basic 1000d accepte des nombres approch s avec une pr cision limit e ce sont
280. emier est accept Exemple Le programme montre que a 310 16 mod 19 et b 3 3 10 7 mod 19 On v rifie la relation a b 1 mod 19 l aide de la fonction modr m 3 p 1i9 a mdpwre m 10 100 p b mdpwre m 3 10 100 p print a b modr a 3 b p Sortie 690 ms 16 7 1 PRINV m p V_fonction Inverse modulaire m p entiers La fonction prinv calcule l inverse de l entier m modulo p si m et p sont premiers entre eux Elle renvoie le nombre n dans 1 p tel que mn 1 modulo p La forme prinv m p est alors quivalente mdpwre m 1 p Si par contre pgcd m p 1 l inverse n existe pas prinv m p renvoie 0 mais mdpwre m 1 p sort en erreur Exemple Le programme demande deux entiers et crit avec eux l identit de Bezout print c Identit de Bezout print Entrer deux entiers input a b a abs a b abs b 322 Chapitre 13 Calculs exacts ift a gt b exg a b p gcdr a b if a p print a a else ap prinv a p b p bp p a ap b print ap a endif Exemple de dialogue Entrer deux entiers bp b p INPUT gt 41 INPUT gt 127 31 41 10 127 1 MDFF A p V_fonction Factorisation La fonction mdff factorise compl tement lunip dans Z x Elle renvoie une forme produit d unip irr ductibles modulo p gale A modulo p Pour p 2 et seulement pour p 2 il y a des polyn mes que la fonction ne sait pas compl tement factoriser Dans ce c
281. ent et le pas Les tableaux x et y peuvent tre multidimensionn s Des tableaux de types var ou index sont possibles mais les valeurs non enti res ne sont pas admises Exemple La commande polyline trace une ligne bris e la commande polyfill remplit un polygone et la commande polymark affiche des marques Les argu ments x 0 8 1 indiquent que les coordonn es x des points sont donn es par x 0 x 1 x 7 index x 7 y 7 for i 0 7 x i cint 10 i 4 5 xcos i y i cint 10 i 4 5xsin i next i f_type 2 f_style 21 origin 80 200 polyline x 0 8 1 y 0 1 origin 240 200 418 Chapitre 18 Graphismes polyfill x 0 8 1 y 0 1 m_type 3 m_height 11 polymark x 0 8 1 y 0 1 Sortie 1835 ms Exemple Les arguments X 0 N 2 Y 0 2 indiquent que la commande concerne les N points X 0 Y 0 X 2 Y 2 X 2N 2 Y 2N 2 var X 126 Y 126 for N 5 11 2 for I 0 N X I cint 100 xcos 2 pixI N Y I cint 100 xsin 2 pixI N XCI N X I YCI N Y T next I origin 320 200 cls polyline X 0 N 1 1 Y 0 1 polyfill X 0 N 2 Y 0 2 origin 110 200 polyfill X 0 N 2 Y 0 2 origin 530 200 m_type 4 polymark X 0 N 1 Y 0 1 polyline X 0 N 1 1 Y 0 1 next N Sortie 7725 ms Textes graphiques T_ COLOR i T_TYPE t T_ANGLE a T_HEIGHT h Chapitre 18 Graphismes 419 T_FONT f Variables d tat Attributs de textes graphiques entier 0 15 index de couleur entier 16 Le bit de
282. er k intlg p v rifie donc toujours les in galit s 2F lt p lt 2H Exemple Le calcul par int log w 2 ne donne pas intlg w par suite des erreurs d arrondi w 27100 print intlg w int log w 2 Sortie 50 ms 100 99 DIVR p q 282 Chapitre 13 Calculs exacts MODR p q MODS p q DIV P Q MOD P Q V_fonctions Division enti re P q r els q 0 P Q r els exacts Q 0 Lorsque p et q sont des nombres r els positifs la division enti re de p par q s crit p sq r o s est un entier et o r 0 q Dans ce cas s peut tre obtenu par Pune quelconque des instructions s int p q s div p q s divr p q s p q s p div q et r par r mod p q r modr p q r p mod q Exemple Lorsque p et q ne sont pas positifs les relations ci dessus ne sont plus toutes quivalentes comme l illustre le programme suivant Noter comment le caract re f qui s obtient par a S est utilis dans le print pour crire des espaces print p q divr modr div mod mods forv q in 3 3 forv p in 10 10 print p qff divr p q modr p q ff div p q f mod p q ff mods p q nextv nextv Sortie 335 ms p q divr modr div mod mods 10 3 3 1 3 1 1 10 3 3 2 4 2 1 10 3 3 1 3 1 1 10 3 3 2 4 2 1 Nous donnons maintenant les d finitions pr cises des diverses fonctions Les nombres r et r2 quivalents p modulo q tels que r 0 gl et r2 Chapitre 13 Calculs exacts 283 lq 2 q 2
283. era s lectionn e il faudra appeler la proc dure Sp1 Les autres v nements surveill s par le programme sont ici l appui d une touche du clavier on menu key un d lai de 1000 ms on menu timer l entr e de la souris dans un rectangle on menu mouse et l appui d un bouton on menu button Les informations sur l v nement s obtiennent par la fonction menu n Par exemple dans la proc dure Spb la position de la souris au moment du cliquage est donn e par menu 10 et menu 11 char Ms 50 hidec For I 0 50 Read Ms I spi Sp12 Sp2 Sp3 Sp4 Chapitre 10 Entr e Sortie 139 ift Ms I x exit Next I Data DESK En route tout le monde 1 2 3 4 5 6 Data Transprt Train Bateau Diligence Chameau Data EXECUTE D part Fin Data CURSH 0 cls CURSH 4 Menu Ms 0 On Menu Spi On Menu Key Sp2 On Menu Timer 1000 Sp6 On Menu Mouse 0 0 0 100 100 100 Sp3 Sp3 Sp4 On Menu Button 2 1 1 Spb Do On Menu Loop menu off ift menu 0 lt 1i return ift menu 0 gt 14 goto Sp12 for I 11 14 menu 1 3 next I menu menu 0 2 return ift Ms menu 0 lt gt Fin return menu kill stop locate 10 35 print chr menu 14 and ff return f_type 2 random 2 f_style 1 random 12 pbox 0 100 100 200 return f_type 2 random 2 f_style 1 random 12 pbox 150 100 250 200 On Menu Mouse 1 1 150 100 100 100 Gosub Sp5 return 140 Chapitre 10 Entr e Sortie Sp5 On Menu Mouse 1 0 150 100 100 100 Gosub Sp
284. es Les espaces sont interdits dans les noms et devant dans les nomi et fonctions Ainsi w sin 1 qui provoque une erreur Arguments De Fonction doit tre r crit sans espace Parfois des espaces sont n cessaires comme apr s x dans ift x print 1 Ils sont tr s souvent ignor s comme dans x intlg 1 4 5 Chapitre 9 Notions de base 73 Type chaque nom est associ un type Le type d un nom peut tre obtenu par la commande suivante TYPE nom nom Commande Ecrit le type des noms La commande type donne aussi des indications sur les arguments dans le cas d une fonction Elle est utile pour la mise au point des programmes car beaucoup d erreurs de syntaxe sont dues l utilisation de mauvais types Exemple type print int chr Sortie 145 ms print est de type commande int est de type V_fonction r el chr est de type C_fonction Table des types type exemple Commande print V_fonction int Fonction valeur exacte sin Fonction valeur flottante C_fonction chr Fonction cha ne de caract res Constante ten Valeur num rique non modifiable Variable d tat base Lit litt ral Var Index Char Label proc Label de V_fonction Label de C_fonction Les types sans exemples sont des types utilisateurs les autres sont les types des mots clefs internes Mots clefs Certains noms sont les mots clefs du Basic 1000d par exemple print Nous venons de voir le mot clef type ain
285. es le d terminant est calcul exactement La fonction det utilise la m thode de Bareiss et a un temps de calcul polynomial en n Pour des D polynomiaux det est plus rapide avec l option develop 302 Chapitre 13 Calculs exacts Exemple Le d terminant circulation ee amp Q 8 oO est calcul par det On v rifie que sa valeur est gale a b c a bj cj a b cj o j est une racine de j j 1 0 l aide d un calcul qui impose cette relation en j par cond var D 3 3 for m 1 3 for n 1 3 read D m n next n m data a b c c a b b c a w det D 3 print w cond j 2 j 1 W a b c x a bxj cxj 2 a b j72 cx j print W Sortie 320 ms a 3 3 a xb xc b 3 c 3 a 3 3 axb c b 3 c 3 Exemple Le calcul de l exemple pr c dent est effectu l aide de la fonction D au lieu d un tableau D var d 2 read d 0 4 1 d 2 data a b c w det D 3 print w stop D function i j value d modr j i 3 return Sortie 220 ms a 3 3 axb c b 3 c 3 Chapitre 13 Calculs exacts 303 ELIM p q x V_fonction Elimination de x entre p et q P q poly x litt ral par d faut x poly1 q Si p Aoz Art An q Boz Biz Bm o et B sont ind pendants de x la fonction elim calcule la r sultante de p et q donn e par le d terminant d ordre m n A Ai Age aiia An 0 TR 0 DA An ass Apur Aa a 0 0 O0
286. es donn es calcul es auparavant et conserv es dans des variables integre Proc dure Int gration La proc dure integre demande une expression puis crit son int grale Elle utilise la proc dure intgi qui int gre toute fraction rationnelle systeme Proc dure R solution exacte d un syst me d quations La proc dure systeme demande l entr e d un syst me d quations qui peut tre non lin aire et le r sout Elle utilise la fonction sgeq racines Proc dure Racines r elles La proc dure racines demande l entr e d un polyn me unilitt ral et sort ses racines r elles Elle utilise la proc dure zerop Si les racines sont rationnelles elles sont sorties exactement Sinon elles sont sorties avec la pr cision en cours Ainsi pour obtenir 100 chiffres exacts il faut avant l appel de racines ou de B_USER effectuer la commande precision 100 Chapitre 16 Biblioth que Math matique 349 libraryp Proc dure Affiche le nom de la biblioth que La proc dure libraryp affiche la valeur des deux fonctions suivantes library et libraryv library C_fonction Nom de la biblioth que libraryv V_fonction Num ro de version de la biblioth que Exemple Les instructions suivantes peuvent s utiliser au d but d un programme d application pour v rifier que la biblioth que Math a t charg e on error notloaded if library lt gt MATH notloaded message Veuillez charger lal biblioth que MATH stop endi
287. es fonctions pop et pop et les acc s stack et stack e Variables utilisateur Ce sont les variables d finies par le programme Description des variables Cette zone s tend jusqu limit Elle est g r e suivant la valeur de pack Le contenu d une variable V est pr c d d un mot en ptr V 6 indiquant 492 Chapitre 21 C ur du Basic 1000d le num ro de la variable et d un mot long en ptr V 4 indiquant la longueur du contenu Lors d un changement de valeur de V l ancienne description est marqu e effac e sur le num ro de V mais n est pas physiquement effac e et l adresse du contenu de V dans la zone pr c dente est plac e sur la nouvelle description de V Cependant lorsque apr s cette nouvelle description qui a t plac e en haut de la zone des descriptions l espace restant est inf rieur pack le programme effectue un nettoyage en supprimant les anciennes descriptions Ce nettoyage appel ramassage des poubelles est galement effectu lors de l appel de certaines fonctions ou commandes comme pack ptr fre Le haut de cette zone est utilis comme pile du processeur 68000 R serve Cette zone qui part de l adresse limit n est pas utilis e directement par le Basic et est donc la disposition du programmeur Au chargement du Basic cette zone est de longueur nulle Himem Cette zone de longueur modifiable par la commande himem n appartient pas au Basi
288. es parfaits correspondants Comme ces nombres sont plus grands que 265520 il faut effectuer des calculs en multipr cision En Basic 10004 il existe une m thode tr s simple dans laquelle les grands nombres sont cod s par des polyn mes 14 Calculs conditionnels Nombres complexes 328 Chapitre 14 Calculs conditionnels Nombres complexes Basic 1000d permet de calculer modulo un nombre r el ou modulo un ensemble de polyn mes Ce type de calcul s obtient en d clarant des conditions l aide de la commande cond La commande complex i permettant de calculer en nombres complexes est apparent e aux calculs conditionnels Elle impose en effet la condition i 1 au litt ral i COND p x COND e Commande Sp cification des conditions P poly x litt ral par d faut x polyl p e nombre exact On peut imposer s_cond variable d tat modifiable conditions Le Basic 1000d r duit les expressions suivant les conditions en vigueur seulement aux moments suivants e Avant toute assignation d une expression Noter que les commandes read et input qui effectuent aussi des assignations implicites sont concern es par les conditions e Dans une exprc des formes suivantes expra expra expra lt gt expra expra IN v_ensemble expra NOT IN v_ensemble les conditions sont utilis es pour d terminer l galit ou la non galit Cela concerne aussi les comparaisons en deux morceaux effectu es dans la structure
289. et intin avant l appel brut VDI Chapitre 19 Appels syst me 443 A Les tableaux contrl intin etc sont galement utilis s par le Basic Le bloc de param tres en systab 2 qui contient les adresses de ces tableaux peut tre modifi Dans ce cas le Basic utilisera galement pour les appels internes ces nouveaux tableaux de param tres Noter cependant que le retour l diteur remet les tableaux d origine du Basic La modification du bloc de param tres est donc impossible en mode direct Les mots clefs contrl intin etc se rapportent toujours aux tableaux d origine du Basic et non aux tableaux implant s dans le bloc de param tres Si le num ro k de la commande vdi est donn Basic 1000d se charge de remplir contrl ptsin et intin suivant la liste d arguments qui d pend de la valeur de k Cette liste peut tre donn e de fa on incompl te les variables non rentr es n tant pas initialis es Basic 1000d remplit les 6 valeurs contr1 0 contr1 5 selon le num ro de fonction k sauf pour les fonctions k o contr1l 1 ou contr1 3 peut tre variable Dans ce cas la valeur variable mise est l argument suivant n La valeur contr1 6 est initialis e avec la variable d tat v_h C est l identificateur de la station de travail Pour l utilisation de GDOS on peut soit modifier la valeur de v_h soit indiquer par id avant les autres arguments un autre identificateur Ensuite les arguments ptsl pts2 son
290. et met M apr s la copie Le bloc d origine reste d fini et inchang 26 Chapitre 3 La fen tre Edit Source A Cela n est plus vrai si M B 1 le bloc doublant de volume en accord avec la r gle que toute ligne ins r e entre A et B 1 est absorb e par le bloc La raison est que le pointeur de fin de bloc est en r alit le d but de la ligne B 1 et que l insertion augmente ce pointeur Imprimer le bloc L impression Print b est tudi e avec le menu PRINTER Sauvegarder le bloc La sauvegarde Save b est tudi e avec le menu FILES Cacher le bloc Si vous ne pouvez plus supporter la pr sence d un bloc vous pouvez le cacher en red finissant la ligne en dessous de B On dispose d une pile permettant de m moriser 4 positions marques dans la source C est la ligne M qui est m moris e Lors du rappel la ligne m moris e est plac e en haut de l cran En plus de ces quatre marques la derni re ligne modifi e de la source est automatiquement gard e en m moire Les commandes relatives aux marques sont obtenues au clavier par appui simultan sur Control Shift et une autre touche Push pg du menu BLOCK ou cs Met sur la pile la ligne M La pile s enfonce et la marque du bas de la pile est alors perdue Pop pg du menu BLOCK ou cs Met le curseur sur la ligne m moris e en haut de la pile La pile est alors permut e de fa on cyclique le haut de la pile se retrouvant en bas de la pile Swa
291. etour dans la fen tre Edit Source Ecran L cran de la fen tre Basic diff re de celui de la fen tre Edit Source Il n y a pas de d filement ni horizontal ni vertical et les commandes peuvent s crire sur plusieurs lignes L cran de toute fen tre qui attend une entr e clavier par exemple dans l instruction input du Basic est similaire cet cran sauf pour les fen tres Edit Source et Help Ligne texte Les caract res s crivent sur l cran suivant 25 ou 50 si resolution 3 lignes horizontales que nous appelons lignes cran L criture d une commande ou d une instruction peut demander plus de caract res qu il n y en a dans une ligne cran 80 ou 40 si resolution 0 Un tel long texte est enti rement crit sur l cran mais sur plusieurs lignes cran qui forment ce que nous appelons une ligne texte Apr s l appui sur Clr il y a autant de lignes textes que de lignes cran Lorsqu on crit en passant la ligne suivante on cr e une ligne texte form e de 2 lignes cran Il faut vraiment crire passer avec le curseur ne suffit pas En Chapitre 4 La fen tre Basic 10004 29 appuyant sur s ou s qui d placent le curseur sur le premier ou dernier caract re de la ligne texte on peut v rifier la longueur de la ligne texte La ligne texte peut occuper tout l cran Examiner aussi comment se rallonge la ligne texte en mode Insert lorsqu on rajoute des caract res en son mili
292. ette fois pour sauvegarder le bureau Pour lancer l application ouvrir la disquette et faire un double cliquage sur le nom du source Basic Le programme 10004 se charge Ensuite selon le nom de l application une des actions suivantes est effectu e e Si le nom contient la suite de 4 lettres HELP comme par exemple thelpi z le fichier est charg dans la zone Help et la fen tre Help est ouverte Pour les versions du TOS gt 1 4 le nom de l application comprend le chemin des r pertoires par exemple c help 1990 f12 z e Si le nom contient MATH ou STND le fichier est charg dans la zone biblio th que exemples math z stndx z e Sinon le fichier est charg dans la source et ex cut Visite rapide du Basic 1000d 10 Chapitre 2 Visite rapide du Basic 10004 Ce chapitre qui a pour but de vous permettre d diter vos premiers programmes en Basic 1000d pr sente les points les plus importants de l diteur Vous pouvez lancer le programme 1000D PRG sous n importe quelle r solution Cependant pour vos premiers essais il vaut mieux utiliser la haute ou moyenne r solution car les titres se trouvent crits en abr g en basse r solution Dans les descriptions de syntaxe les l ments plac s entre crochets sont optionnels et les l ments plac s entre accolades peuvent tre r p t s un nombre quelconque de fois Bouton D signe le bouton gauche ou droit de la souris Touche F D signe les to
293. eu Noter que les effacements agissent sur la ligne texte du curseur Apr s appui sur Return ou Enter c est la ligne texte du curseur qui est valid e Si cette ligne tait la derni re de la page la premi re ligne texte de la page dispara t jamais et l cran remonte laissant de la place pour une nouvelle ligne La longueur de la ligne texte lors de la validation par Return est limit e 1790 caract res R utilisation de l cran C est une propri t importante de l cran qui est d crite dans le chapitre d introduction Heure et Date On peut modifier leur valeur en s lectionnant une des cases F38 F40 Ces cases sont galement actives dans la fen tre Edit Source mais inactives dans les autres fen tres Il est possible d effacer et remettre la date et l heure par des commandes du Basic Exemple Pour les effacer ex cuter les commandes nodate noclock puis pour remettre l heure clock Ouverture de la fen tre Edit Source En outre de la case EDIT F10 qui ouvre sur la ligne M on dispose d autres facilit s 30 Chapitre 4 La fen tre Basic 1000d Bouton droit Cliquer le bouton droit sur une ligne num rot e pour ouvrir la fen tre Edit Source sur la ligne cliqu e Des lignes num rot es sont crites dans la fen tre Basic par de nombreuses commandes Nous avons d j vu l exemple d erreurs de programme Comme autres exemples citons les commandes de recherche et le listi
294. examiner la cha ne renvoy e par inkey Arr t par appui sur S ou s DO c INKEY IFT LEN c 1 print ASC ASC c TOUCHE chrp asc c IFT LEN c 2 print CLAVIER ASC RIGHTS c 1 IFT c in S s stop LOOP Sortie Touche A ASC 65 TOUCHE A Sortie de sons MUSIC vircha ne Commande Musique bruits sons La commande music permet de programmer facilement la fonction xbios 20 L argument vircha ne doit tre compos de lettres ventuellement suivies d un nombre k et des parenth ses et Chaque lettre et produit une commande l mentaire param tr e par le nombre k Si le nombre k est omis sa valeur est prise gale 0 154 Chapitre 10 Entr e Sortie Exemples A met une note w100 attend 101 x 20 ms v10 met le volume sur 10 pour les canaux ouverts Dans la commande music la base est localement dix ainsi base 16 music o20A met octave 20 et joue la note 20 On peut cependant donner k en hexad cimal par exemple la commande music ci dessus quivaut music o 14 A Exemple Avant de donner la description compl te des sous commandes voici deux exemples de music Nous d composons la vircha ne pour la commenter music 0o35 t5 M4J4F4 ACEFC2FA5 w14 H4M4J4F4C EFH2JH5 w14 035 fixe la valeur attribu e la note repr sent e par A t5 la dur e des notes est un multiple de 5 x 20 100 ms A joue la note 35 pendant 100 ms Chaque
295. f on error stop suite Arithm tique euler_phi n V_fonction Indicateur d Euler de n entier n gt 0 La fonction euler_phi renvoie le nombre d entiers a 0 n 1 qui sont premiers avec n Exemple On calcule a et w b pour deux nombres a et b premiers entre eux puis on v rifie les relations plab a b et a 1 mod b b a 1 mod a 350 Chapitre 16 Biblioth que Math matique a random 2 16 1 do b random 2 16 1 ift gcdr a b 1 exit loop ea euler_phi a eb euler_phi b print a ea print b eb print euler_phi a b eaxeb print modr mdpwre a eb b 1 b modr mdpure b ea a 1 a Sortie 325 ms 38184 12096 2801 2800 0 0 0 chinoiseq c1 al m1 ci ai mi V_fonction R solution modulaire cl al ml ci ai mi entiers La fonction r sout en x le syst me d quations modulaires cx a mod m C2 a2 mod m Cr ar mod Mr Les modules m doivent tre premiers deux deux gcdr m m 1 pour i j et le coefficient c de x doit tre inversible modulo m gcdr c m 1 D apr s le th or me chinois il existe alors une solution unique du syst me modulo P M X M2 X Mr La fonction chinoiseq renvoie la solution x 0 P Exemple On d termine une solution des congruences 19x 12 mod 47 et 12x 21 mod 121 print chinoiseq 19 12 47 12 21 121 Sortie 180 ms 1000 M thode La solution x du syst me d quations lorsque tous les c sont
296. fa on quivalente 8 x y S Affiche la cha ne S en x y g94 b172 Identique text x y S 9 n x1 yl Xn yn Remplit le polygone n sommets g96 b164 On peut utiliser polyfill de fa on quivalente Exemple for x 0 500 100 origin x 150 vdir 9 3 50 50 0 90 100 90 next x Sortie 275 ms 10 n al a2 an voir g98 11 Doit tre appel par les fonctions 10 1 12 0 dy Hauteur des caract res g150 b170 Identique t_height dy La hauteur dy est donn e en pixels comparer vdi 107 448 Chapitre 19 Appels syst me 13 a Angle du texte g154 b171 Identique t_angle a 14 c r v b Met la couleur g132 b167 La couleur a pour index c 0 15 Les intensit s du rouge r du vert v et bleu b vont de 0 1000 15 t Type de ligne g136 b155 Identique 1_type t 16 e O Epaisseur des lignes g140 b156 Identique 1_width e D argument 0 est obligatoire 17 c Couleur des lignes g134 b167 Identique 1_color c 18 t Type de marqueur g144 b165 Identique m_type t 19 0 h Hauteur du marqueur g146 b166 Identique m_height h 20 i Couleur du marqueur g148 b167 Identique m_color i 21 f S lectionne une fonte g156 b186 Analogue t_font f Voir aussi vst_font de la biblioth que STND 22 i Couleur du texte g158 b167 Identique t_color i 23 t Type de remplissage g165 b161 Identique f_type t 24 s Style de remplissage g167 b161 Identique f_style s
297. facteurs droite le deuxi me pour l exemple choisi Ce deuxi me facteur s crivant w 1 iw w 1 iw on obtient g u iv par le programme suivant complex i p 4562284561 w 1024 g cxgcd p w 2 1 ix w print using _72 _ _ 2 abs re g abs im g p Sortie 480 ms 65281 2 17340 2 4562284561 Calculs approch s 338 Chapitre 15 Calculs approch s Les fonctions d crites dans ce chapitre renvoient un nombre r el ou com plexe flottant L erreur relative sur le r sultat correspond la pr cision demand e par la commande precision ou precision2 En flottant aussi Nous rappelons ici sans d tails mais en donnant des exemples des fonc tions qui ont t tudi es pr c demment comme fonctions exactes et qui peuvent aussi s utiliser avec des nombres flottants ABS p Valeur absolue du r el p Exemple print abs 17 2 Sortie 35 ms 0 8500000000 E 1 MIN P q r Minimum des r els p q Exemple Il suffit que lun des arguments soit flottant pour que le r sultat soit flottant m me si la valeur minimum a t donn e en exact print min 2000 1000 Sortie 45 ms 0 1000000000 E 4 MAX p q r Maximum des r els p q Exemple D termine le maximum de 100 nombres tir s au hasard randomize 7 m 0 for i 1 100 m max m rnd next i print m Sortie 8625 ms 0 9985580577 Chapitre 15 Calculs approch s 339 MODR p q MODS p q
298. fface la biblioth que S gt H F11 Transf re la source dans Help la suite de l ancien M gt H F12 Transf re les lignes 1 M 1 de la source dans Help la suite de l ancien H gt S F13 Transf re tout Help en t te de la source Nohelp F14 Efface Help 38 Chapitre 5 La fen tre Help Edition de textes ASCII On peut diter des textes ASCII dans la fen tre Edit Source de pr f rence avec l option Noindent Il faudra tenir compte du fait que devant et les espaces sont supprim s par l diteur Edition de ce manuel La m thode suivante a t utilis e pour diter le manuel que vous tes en train de lire Un exemple de programme est test en l crivant en t te de source suivi des instructions print d Sortie just1 mtimer ms end pour mesurer le temps d ex cution La commande end s pare le programme test du manuel en cours de r daction Les sorties du programme sont int gr es dans la source par saisie avec le bouton gauche de la souris Les marques commandes avec cs permettent de retrouver la page en cours Il tait n cessaire de consulter d autres textes comme les fichiers des messages d erreur du programme de publication TEX Ces fichiers taient plac s dans la zone Help du Basic permettant leur lecture en m me temps que la r daction du manuel Edition de modes d emploi Help Les instructions pour Help sont donn es en t te de ligne par
299. fie la relation ppwr p k p ppwr p 1 k 1 Noter que l argument p n est pas limit aux seuls r els mais peut tre une expression quelconque Exemple Le calcul suivant montre que le produit de 4 entiers cons cutifs a repr sente un entier plus 1 est le carr d un entier print formf ppwr a 4 1 formf ppwr a 4 1 Sortie 490 ms al x a 3 x a 2 x a 1 1 a 2 3 a 1 2 Degr Ordre et Coefficients DEG p xi Chapitre 13 Calculs exacts 287 ORD p xi V_fonctions Degr et ordre valuation P poly xi litt ral Si aucun litt ral n est donn les fonctions deg p et ord p donnent le degr et l ordre total de p suivant tous ses litt raux Le degr d un mon me YX XTT An n suivant les litt raux z1 n est a1 an La fonction ord p 1 Tn resp deg p x1 n renvoie le minimum resp le maximum des degr s suivant les litt raux z1 n des mon mes de p Toutefois si p ne contient aucun des litt raux z1 n alors ord p 1 n renvoie 1 au lieu de 0 Ainsi ord p y vaut 1 si et seulement si p est un polyn me ind pendant de y Le polyn me p suppos non constant est homog ne si et seulement si deg p ord p p est un polyn me homog ne en X Y de degr 0 en X Y si et seulement si deg p X Y ord p X Y Exemple Le polyn me p est homog ne en t x p x 2 a x a 4xt print Pour p p printi a p
300. for forv forc do repeat while La commande exit fait sortir de la derni re boucle seulement L ex cution se poursuit alors apr s le next nextv nextc loop until ou wend correspondant Exemple La commande exit termine la boucle forv interne lorsque u v forv v in 1 2 1 forv u in 7 2 1 2 ift u v exit print v u nextv nextv Sortie 105 ms Chapitre 11 Programmation 197 1 7 2 2 7 2 22 Pour que la commande fonctionne bien il faut que exit soit dans le bloc de la boucle Ainsi do P loop stop P exit n est pas correct De plus les fins de boucles doivent tre apparentes Ainsi for i 1 10 exit ift 1 next i est incorrect next i cach de m me que for i 1 10 exit for j 1 10 next j i ne pas utiliser de next plusieurs index avec exit La commande exit peut se trouver dans des structures if et select inclues dans une boucle Elle provoque bien la sortie de la boucle les structures if et select tant invisibles pour la commande exit Exemple La commande exit fait continuer l ex cution apr s nextv forv i in 1 4 6 10 if i 4 exit endif print i nextv Sortie 30 ms 1 Exemple Le programme fait deviner un entier La commande exit situ e dans une structure select case termine la boucle do print Devinez l entier x x random 100 1 do input y select y case x exit 198 Chapitre 11 Programmation case lt x print y lt x case gt X print y gt x endselect loop
301. gatif nombre codage 0 4000 1 2 6001 4002 215 8002 8000 Codage des nombres flottants Un nombre flottant r el est cod par un mot k 2 5 215 suivi d un entier exact A La valeur du nombre est 2 A La longueur de l entier A cor respond la pr cision choisie Un nombre complexe flottant est cod par deux nombres flottants r els juxtapos s la partie r elle suivie de la partie imaginaire Dans une variable contenant un nombre flottant le nombre est pr c d d un mot s 1 r el ou s 2 complexe qui caract rise le type de valeur de la variable Codage d un polyn me Nous examinons le codage du polyn me m 1 5 GLIT PUR UE x gtin i 0 Les litt raux sont ordonn s suivant leurs num ros par X lt X lt lt Xn et les mon mes sont ordonn s dans l ordre lexicographique d croissant des exposants Le codage et l impression des polyn mes pour un ordre de d finition donn des litt raux se fait toujours de la m me fa on Notons enfin que dans une variable Chapitre 21 C ur du Basic 10004 485 contenant un polyn me le codage du polyn me est pr c d d un mot nul s 0 pour le distinguer des formes produit de polyn mes et nombre flottant longueur 1 mot n nombre des litt raux x j de 1 n n mots X pour j de 1 n num ro interne du litt ral x 1 mot m 1 nombre de mon mes diminu de 1 pour chaque mon me i de 0 m 1 n mots aij pou
302. ge cm dans une bo te d alerte avec symbole et deux boutons OUI et ANNULER Elle renvoie 1 vrai si le bouton OUI est s lectionn et 0 faux si le bouton ANNULER est choisi Exemple Noter comment l utilisation de guillemets r p t s permet la cr ation d une cha ne contenant des guillemets print sure Exemple appel Sure Exemple Entr e clavier INPUT texte N1 Ni Commande Entr e d expr et exprcha nes au clavier LINE INPUT texte NC1 NCi Commande Entr e d exprcha nes par ligne au clavier S parateurs 4 9 Les peuvent tre remplac es par et la virgule apr s texte peut tre omise sans modification de l effet des commandes N1 Ni nomi de type var char ou index NC1 NCi nomi de type char Les commandes input et line input affichent d abord texte qui ne doit pas d passer 98 caract res ou input gt par d faut puis attendent une entr e clavier suivie de CR Dans la section sur la gestion des fichiers nous verrons que le p riph rique d entr e peut tre red fini par exemple au lieu d attendre Chapitre 10 Entr e Sortie 151 une entr e clavier les donn es peuvent tre lues sur l entr e s rie ou sur un fichier disque Dans le texte entr les 3 caract res et les guillemets ont un r le particulier comme illustr dans l exemple suivant Si l entr e est 4 min
303. ges d erreur Sautez cette section en premi re lecture revenez y quand vous voudrez des indications suppl mentaires sur les messages d erreurs Nous donnons la liste compl te des messages d erreur et des indications sur les corrections apporter au programme dans les cas les plus difficiles DANS MAIN k ne peut tre utilis que dans un sous programme ADRESSE IMPAIRE L argument attendu doit tre un entier 32 pair Par exemple l adresse de pokew est impaire dans pokew 1 0 AES VDI Erreur d arguments mauvais num ro de fonction trop d arguments etc lors des commandes vdi et aes Par exemple il y a trop d arguments dans vdi 32 1 1 APPEL AES AVEC UNE RESOLUTION AUTRE QUE CELLE DU BUREAU Pour viter de nombreuses anomalies comme par exemple une souris confin e dans la moiti de l cran les appels AES doivent tre effectu s en r solution resolution APPELER PRFACT EN MODE DEVELOP On ne peut pas utiliser le mode factor avec prfact ARGUMENTS DE FONCTION Mauvais nombre d arguments d une fonction du Basic par exemple print xbios 4 1 BLOC Erreur diteur Bloc non d fini ou essai de d placer le bloc devant une de ses lignes internes CANAL DEJA OUVERT Il faut d abord fermer un canal ouvert avant de pouvoir le rouvrir Par exemple essai d ouvrir deux fois le canal 1 par open 60 Chapitre 8 Mise au point des programmes open i 1 nul open i 1 x x CANAL NON DE TYPE R Essai d ut
304. i 0 12 of 1 ffact i stop ffact function n value float ppwr n return Sortie 315 ms 0 2718281828 E 1 GOSUB label GOSUB label listearg GOSUB label listearg Commande Appel des proc dures La liste des arguments listearg m me vide peut tre mise entre parenth ses la parenth se gauche devant alors suivre label sans espace Ces parenth ses sont facultatives Le mot clef gosub peut tre omis si label est du type label proc A Vous pouvez d duire de cette r gle qu il est possible d appeler par gosub non omis des labels de fonction Dans ce cas il n y a pas cr ation de la variable locale value qui reste donc d finie son niveau lors de l appel La forme sans gosub et sans parenth ses autour de listearg est semblable l appel des commandes du Basic L appel doit obligatoirement se faire par un label et est impossible par un num ro de ligne Le nombre de niveaux de sous programmes est limit par la variable d tat s_pro qui peut tre modifi e si n cessaire La longueur des listes d arguments des divers niveaux d appel est limit e par la variable d tat s_xqt galement modifiable RETURN label Commande Retour de sous programme Pour les proc dures le retour se fait sur la ligne apr s l appel ou sur la ligne label si celui ci est donn Le retour de fonction se fait dans l expression appelante pour poursuivre le calcul de l expression La forme return label est
305. ichier Exemple La proc dure rename suivante est identique la commande name as du Basic rename old old new new stop rename local datac i amp chr 0 2 amp chr 0 char a b ift gemdos 56 0 ptr a ptr b 0 return print Erreur rename Ancien nom amp a amp Nouveau nom amp b stop 57 l w w Date de cr ation d un fichier BIOS BIOS k wli V_fonction Appel de la fonction k du TRAP 13 Les remarques sur la liste des arguments vues dans gemdos s appliquent la fonction bios Table des fonctions 0 I Informations sur la m moire Chapitre 19 Appels syst me 431 Analogue inp w tat du p riph rique w entr e p riph rique imprimante port parall le RS 232 s rie clavier et console MIDI processeur clavier inutilisable cran a amp ND lE Exemple Les fonctions inp_ et out_ qui simulent inp et out du Basic demandent l tat du p riph rique w en entr e ou sortie et renvoient 1 si le p riph rique est pr t et 0 sinon La fonction inp_bis qui attend un octet sur le p riph rique w lattente est infinie simule la fonction inp La proc dure out_bis qui envoie des octets au p riph rique w simule la commande out Le programme suivant crit la table des codes ASCII puis les codes des touches appuy es jusqu l appui sur Escape print c for i 0 255 out_bis 5 32 i ift modr i 16 15 print next i do i inp_bis 2 ift i ib stop print h
306. ici quelques exemples noter que la base 16 est commode rvb couleur rvb couleur rvb couleur 000 noir 777 blanc 333 gris 700 rouge 077 cyan 733 rose 070 vert 707 magenta 373 vert clair 007 bleu 770 jaune 407 violet Le num ro n de la couleur va de 0 1 monochrome 3 r solution moyenne ou 15 basse r solution La fonction color n renvoie le code rvb de de la couleur num ro n Elle est quivalente peekw FF8240 2 n and 777 En r alit color utilise la fonction xbios 7 La commande color n rvb modifie la couleur de num ro n En haute r solution seulement la couleur num ro 0 et la parit de rub sont actifs On ne dispose donc que des possi bilit s color 0 0 Chapitre 18 Graphismes 403 color 0 1 Exemple monochrome Inverse le noir et le blanc revient en normal apr s appui sur une touche locate 10 10 print Taper une touche color 0 0 i keyget color 0 1 Les instructions graphiques du Basic 1000d ainsi que le VDI utilisent pour fixer une couleur non pas son num ro n mais son index i qui prend galement les valeurs de 0 15 La variable d tat vcolor i analogue color n utilise l index et non le num ro n de la couleur Voici la table des correspondances entre num ro et index basse r solution num ro 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 index 0 2 3 6 4 7 5 8 9 10 11 14 12 15 13 1 r solution moyenne haute r solution num ro 0 1 2 3 0 1 index 0 2 3 1
307. il manque des espaces dans la ligne r crite Ensuite on peut recopier le texte du tampon d effacement autant de fois que n cessaire n importe quel point de la source et m me dans d autres fen tres s Undo Ignore les derni res modifications effectu es dans la ligne M Il s agit de toutes les modifications depuis que M a pris sa valeur pr sente Edit Source est un diteur ligne qui enregistre dans la source les modifications de la ligne M lorsqu une commande lui fait quitter cette ligne s Undo lui fait retracer la fen tre sans modifier la source Un Break effectu dans la fen tre Edit Source se comporte de fa on analogue provoquant un retour dans la fen tre Basic sans enregistrer les derni res modifications CR D place le curseur sur la ligne suivante Lorsqu on tape CR sur une ligne vide de la source cette ligne est effac e de la source Ins Ins re une ligne vide devant la ligne M On peut alors taper le texte d une ligne puis CR Une nouvelle ligne vide appara t ce qui permet de continuer l insertion de lignes On peut ins rer des lignes vides en tapant CR La ligne vide d insertion n est pas conserv e dans la source si on en sort autrement que par CR Help Ouvre la fen tre Help Chapitre 3 La fen tre Edit Source 25 Esc ou case BASIC F10 Ouvre la fen tre Basic s Esc Ouvre la fen tre Basic et y crit le texte de la ligne M Cela peut per mettre d ex cuter en mode direct
308. il n y a pas de solution corre spondant ce cas Cas 256s 2880s 1008054 1260057 4725 0 Dans ce cas comme l quation ne se factorise pas de fa on rationnelle nous poursuivons l tude de fa on num rique La proc dure zero de la bib lioth que MATH nous permet de d terminer les racines de l quation Ensuite en reportant ces valeurs dans e5 puis e3 on obtient les valeurs num riques des solutions en s1 S2 et s3 Noter que les calculs n cessitent la conversion des valeurs flottantes renvoy es par zero en valeurs exactes on a utilis appr La r solution se poursuit en appelant de nouveau zero avec pour entr e l quation de degr 3 en u ce qui donne les solutions en 1 2 et 3 une permutation pr s Nous donnons seulement les solutions correspondant s gt 0 Les solutions s lt 0 s obtiennent en changeant les signes des x A chaque valeur de s il correspond des valeurs r elles des inconnues x y z du syst me de d part dont nous donnons un seul exemple Si x y z est une solution correspondant aux on obtient toutes les solutions en rempla ant x par kr x ou par x kr k entier et des remplacements analogues pour y et z lit s 3 e3 12 s 3 12 xs 2 xs 1 4xs 1 73 3xs 1 e5 40 s 2 s 1 2 30xs 2 16 s 1 74 30 s 1 2 15 e7 256 s 1 8 2880 s 1 6 10080 s 1 4 12600 s 1 2 4725 Chapitre 17 Exemples d application 397 var T7 8 TU 3 M 8 nb
309. ilisation d un canal comme fichier acc s s lectif sans ouver ture par open R par exemple open i 1 nul field 1 8 as c CANAL NON OUVERT Avant d tre utilisable un canal doit tre ouvert Par exemple s il manque open o 1 print 1 x CANAL NON OUVERT EN ECRITURE Essai d criture sur un canal d entr e Par exemple essai d criture sur un canal d entr e celui d input print 101 1 CANAL NON OUVERT EN LECTURE OU NUL Essai de lecture sur un canal de sortie ou de type NUL Par exemple essai de lecture sur un canal d criture celui du print input 102 x CANAL SANS POINTEUR Essai d utilisation d un pointeur dans un canal de type LST VID etc Par exemple pour le canal 101 VBS o on demande la position du pointeur print lof 101 CHAINE PRISE POUR VARIABLE La v rification qu une zone m moire repr sente une expression math matique choue Dans l exemple push a W pop pop ne trouve pas une expression acceptable sur la pile CHECK SUM Le rappel de l cran par rscreen doit utiliser une cha ne cr e par screen Par exemple la v rification choue dans l appel avec une cha ne vide char c rscreen c COMPARAISON Par exemple si A n est pas un r el ift A gt 2 stop COND La forme de la condition est ill gale par exemple le polyn me 1 x ne contient pas le litt ral y dans cond 1 x 2 y DEBUG Chapitre 8 Mise au point des
310. imer Sortie 1493445 mtimer 355 x 2779498 x x x 1493445 mtimer 625 pollard w brison w lenstra w p a Proc dures Factorisation de l entier w en facteurs premiers w entier w gt 1 P r el par d faut p yw a entier 31 par d faut a 1 La fonction interne prfact w convient lorsque le nombre entier w est compos de facteurs premiers lt 106 Les proc dures de factorisation introduites ici sont plus rapides que prfact pour les grands nombres La proc dure pollard con vient pour des nombres jusqu 25 chiffres et les proc dures brison et lenstra pour des nombres jusqu 30 chiffres Pour une description g n rale des m thodes de factorisation voir D E Knuth 1981 vol 2 chapitre 4 5 4 et N Koblitz 1987 chapitres 5 et 6 Comparaison des m thodes N prfact pollard brison lenstra 15 16 34 73 94 17 285 111 93 404 19 2909 456 209 6206 21 35000 1383 296 9953 21 60877 695 411 8071 23 3606 432 1580 25 18142 1457 27 62037 24 4318 29 5031 T La table ci dessus donne les temps de factorisations en s de quelques entiers w N indique le nombre de chiffres de w Les nombres w ont t choisis difficiles factoriser produit de 2 grands nombres premiers Le nombre N 2k 5 chiffres est w prime 10 xprime 10 4 L exemple not 21 concerne 267 1 147573952589676412927 Le temps 24 s pour le nombre de 27 chiffres n est Chapitre 16 Biblioth que Math matique 353 videmme
311. imprime le bloc L instruction page ins r e dans la source permet de mettre un titre en haut de chaque page du listing La sortie imprimante de la source se fait avec les conversions suivantes code dans la source envoi 0 13 10 n 1 127 n n gt 127 peekb systab 90 n 128 La table de 128 octets en systab 90 est la table de conversion des caract res gt 128 Cette table convient aux imprimantes Epson les symboles Alternate Lettre tant rendus par la lettre majuscule en italique En outre pour un fonctionnement correct il faut d finir les variables d tat page_width et page_length avec les valeurs de l imprimante Exemple Pour imprimer sur 132 colonnes et 50 lignes ex cuter d abord page_width 132 page_length 50 Chercher et changer menu FND CHG Modifier si n cessaire les param tres F1 F7 puis effectuer la recherche ou le changement F8 F10 Noter que les touches de fonctions avec et sans Shift sont quivalentes dans ce menu DEFINE S F1 Permet de d finir la cha ne S Elle est form e d au plus 48 caract res Les caract res de codes 1 10 ne peuvent tre recherch s Les caract res suivants Chapitre 6 Autres menus de l diteur 47 ont un sens particulier f a S s parateur fa Z z ro a F filler cha ne de remplissage Le symbole f a S d signe un caract re autre que les lettres non accentu es les chiffres et les symboles _
312. in normale cond v 2 v 1 v cond u 2 vxu 3 u y u 2 v print y y y print y cond a b 2 a cond b a 2 b y a print y Y Y print y Sortie 280 ms v 2 u 3 v v u 3 v u a 4 a 16 CLEAR COND Commande Efface les conditions La commande clear cond efface toutes les conditions d finies par cond Exemple La commande complex n est pas concern e par clear cond complex i cond t 2 1 Chapitre 14 Calculs conditionnels Nombres complexes 331 clear cond w i 2 t 2 print w Sortie 45 ms t72 1 COMPLEX i COMPLEX r Variable d tat Mode complexe ou r el litt ral expression gale z ro La forme complex i permet les calculs en nombre complexes Le litt ral i qui repr sente y I est d sign sous le nom de litt ral complexe La deuxi me forme ou clear permet de revenir en mode r el En tant que variable d tat complex renvoie 0 en mode r el et le litt ral complexe en mode complexe Les expressions complexes exactes sont trait es presque toujours comme des expres sions alg briques r elles le litt ral complexe tant sur le m me plan que les autres litt raux Toutefois les particularit s des nombres complexes sont prises en compte dans les cas suivants e Lors du calcul des conditions en particulier lors d une assignation la r duction i 1 est effectu e De plus dans les expressions m me factoris es les facteurs num riques complexes sont r duits un seul facteur complexe d expos
313. ion est donn e exactement par VDI 124 Par contre MOUSEX MOUSEY ou AES 79 donnent la position avant d place ment VDI 124 gt 416 332 MOUSEX Y gt 391 307 AES 79 gt 391 307 Maintenant d placer la souris puis appuyer sur une touche Les diverses indications coincident VDI 124 gt 215 278 MOUSEX Y gt 215 278 AES 79 gt 215 278 MOUSEX MOUSEY Variables d tat Position de la souris Les commandes mousex x 160 Chapitre 10 Entr e Sortie mousey y d placent la souris comme setmouse x y En tant que fonctions mousex et mousey renvoient la position de la souris MOUSEK V_fonction Etat des boutons Le k de mousek est d origine germanique Knopf La valeur renvoy e est identique celle obtenue par la commande mouse Exemple Le programme suivant est une am lioration de l exemple de mouse L tat de la souris n est crit que s il est modifi ce qui supprime le clignotement hidec index x y k do if mousex lt gt x or mousey lt gt y or mousek lt gt k mouse x y k print chr 5 x y k chr 8 ift mousek 2 stop endif loop Dans le programme ci dessus on peut remplacer mouse X y k par x mousex y mousey k mousek DEFMOUSE t DEFMOUSE ch Variable d tat Forme de la souris entier 16 Forme fl che barre abeille index main BB NDR OI Chapitre 10 Entr e Sortie 161 ch exprcha ne de 74 octets contenant une forme personnelle La cha ne ch est utilis e p
314. ire et r initialise les variables d tat graphiques except e la variable t_height Elle met de plus base ten develop Chapitre 11 Programmation 243 precision 10 formatx 0 format 11 formatl 0 formatm 1 tilde clear timer clear cond distingo on error stop on break stop close randomize 0 origin 0 0 Les seuls types implicites sont implicit char implicit index 4 La commande clear n est pas utilisable au milieu d un programme en g n ral Comme chaque RUN F8 ou DEBUG F9 commence implicitement par clear la commande est essentiellement utilis e en mode direct Exemple Si x a t utilis comme variable x exp 1 3 avant de pouvoir utiliser x comme symbole clear est n cessaire clear print x 3 73 STOP Commande Arr t du programme END Commande Marque de fin du programme La commande stop provoque le retour la fen tre Basic mais les piles des proc dures fonctions boucles restent en l tat L cran avant la commande stop est sauvegard Il sera r tabli par la commande diteur Debug Toutes les lignes apr s la commande end sont ignor es L ex cution de la commande end est quivalente stop La commande end est active s par ment dans la source et la biblioth que Exemple Le programme est correct Il n y a pas de label r p t par suite de la commande end goto L print 1 L print 2 244 Chapitre 11 Programmation END L etc Par contre goto L
315. iste l erreur Trop De Donn es est g n r e Exemple La commande local d finit les index locaux i et j et les initialise avec les donn es sauf j 1 1 qui est initialis 0 Noter que les trois elocaux ne sont pas s par s par des virgules local datai 1 2 3 4 index i index 4 j 1 1 print i i print j j 0 0 j 1 0 j 0 1 j 1 1 Sortie 70 ms i 1 j0 2 3 4 0 Les variables des types var et char sont trait es simultan ment Atten tion l ordre inverse des tableaux voir var char Exemple L ordre d initialisation des tableaux de variables est l oppos de celui des tableaux d index local datav 1 2 3 4 var a b 1 1 print a a print b b 1 1 b 0 1 b 1 0 b 0 0 Sortie 70 ms a 1 b 2 3 4 0 On peut assigner une variable de type char le contenu d une expr mais l assignation d une cha ne une variable de type var n est en g n ral pas possible Exemple L exemple revient initialiser c avec mkx 1 La conversion de c en expr est ensuite r alis e avec push et pop local datav 1 char c push c print pop Sortie 15 ms 1 On peut m langer donn es et d clarations Exemple local datai 1 2 index i datai 3 index j k print i j k Sortie 40 ms 1 2 3 On peut aussi m langer var char et index 268 Chapitre 12 Labels Sous programmes Exemple local datai 1 2 3 datav 4 5 datac a index i j k var p q char c print c i j k p q Sortie 50 ms a 1 2 3 4 5
316. it en un point de la colonne x 0 79 ou x 0 39 si resolution 0 et de la ligne y h 24 ou y h 49 si resolution 3 o cursh renvoie le code 216p r y 50001 5FF1A L appui sur c lettre renvoie le code 5x 28 428s p o p 1 26 d pend de la premi re lettre 1 pour A 26 pour Z et o s 0 255 est la somme modulo 256 de d lettre pour les lettres suivantes avec d A 1 d B 2 d Z 26 Exemple Le programme crit le code renvoy par keyget en hexad cimal et le caract re ASCII correspondant s il existe Lorsque la case Stop du damier est s lectionn e keyget renvoie 200 Chapitre 10 Entr e Sortie 153 checker STOP string 19 a amp Exemple KEYGET do x keyget print h x ift x in 1 2 8 print using amp chrp x ift x 200 stop loop INKEY C_Fonction Lecture du clavier sans attendre La fonction inkey teste le clavier sans attente comme keytest et renvoie une cha ne de 0 1 ou 2 caract res Si la touche appuy e a un code ASCII la fonction renvoie le caract re correspondant Si la touche appuy e n a pas de code ASCII la fonction renvoie la cha ne de deux caract res chr 0 amp chr k o k est le code clavier de la touche Si aucune touche n est appuy e ou si seulement les touches Control Shift Alternate ou Caps Lock sont appuy es elle renvoie la cha ne vide Exemple Le programme suivant permet d
317. itblt d copy bb 0 38 1 dd 0 1 bitblt d loop G_GET x0 y0 x1 y1 c G_PUT x2 y2 c SGET c SPUT c Proc dures Transferts entre cran et c x0 y0 x1 y1 r els coordonn es relatives d un rectangle en pixels c nomi de type char x2 y2 r els coordonn es relatives d un point en pixels La proc dure g_get copie le rectangle dans la variable c Inversement g_put affiche ce rectangle sur l cran pas n cessairement au m me endroit Chapitre 20 Biblioth que STND 467 Exemple D place horizontalement plusieurs copies d un dessin for i 1 3 ellipse 60 50 i 19 i 15 next i f_type 2 f_style 9 fill 60 50 char c g get 0 0 120 100 c i 0 do i modr i 8 160 G_put i 0 c G_put i 160 0 c G_put i 320 0 c G_put i 480 0 c G_put i 160 0 c ift keytest exit loop Les proc dures sget et sput inverses l une de l autre concernent les 32000 octets de l cran logique Exemple Affichage de A stockage de l cran dans c et effacement Apr s appui sur une touche les A sont remis char c print chr 41 900 sget c cls i keyget sput c i keyget SPRITE ch x y Proc dure Affiche d place ou efface un lutin ch nomi de type char X y r els coordonn es relatives Si les coordonn es x y sont pr cis es la proc dure sprite y affiche le lutin d fini par le contenu de ch Si le lutin tait d j affich il est effac de l ancienne position avant cet affichage Si x et
318. ivante donne les temps d inversion en s pour divers n n 5 10 20 30 40 temps 2 20 271 1413 5362 D 4 Chapitre 16 Biblioth que Math matique 357 print Inversion de la matrice de Hilbert D 1 X D gite En var M D D N D D for i 0 D for j 0 D MG j 1 G j 1 NC i j M i j print justr M i j 8 next j print next i clear timer invm M M D print Inverse calcul en mtimer ms MX 0 for i 0 D for j 0 D MX max MX abs M i j print justr M i j 8 next j print next i print El ment max MX print R inversion et v rification clear timer invm M M D print timer for i 0 D for j 0 D ift N i j lt gt M i j print erreur i next j i Sortie Inverse calcul en 2560 ms 25 300 1050 1400 630 300 4800 18900 26880 12600 1050 18900 79380 117600 56700 1400 26880 117600 179200 88200 630 12600 56700 88200 44100 polyappr f D x R V_fonction Approximation polynomiale litt ral 358 Chapitre 16 Biblioth que Math matique D entier D gt 0 nom de fonction La fonction f x sera appel e par polyappr en D 2 points de l intervalle 0 1 avec un argument flottant R nomi de type var La fonction polyappr renvoie un polyn me w x de degr D approchant la fonction f x sur 0 1 La variable R contient en sortie une estimation de l erreur sur 0 1 en flottant M thode La m thode est bas e sur le th or me d alternance de Tchebycheff Il existe D 2
319. k ift P 2 0 gt P 2 1 goto nk ift P 0 2 lt P 2 0 goto nk x abs det P 2 0 ift x lt sup goto nk if prtst x sup x for i 0 2 for j 0 2 S i j P i j next j i print sup conc i 0 2 for j 0 2 of S i j endif nk k nextperm 8 P 0 0 wend print timer timer print matrice print conc i 0 2 of conc j 0 2 of S i j a D terminant La solution suivante est beaucoup plus simple que la fonction dete mais n cessite un s_var plus grand print detp A B C D stop detp function A root 0 2 1 ro0t 0 2 1 value det A root 0 2 1 0 return 498 Solution des exercices Boulanger Le probl me peut se r soudre l aide de la fonction g n ratrice 1 1 x 1 x5 1 z1 o Dn est le nombre de fa ons de former n francs W taylor 1 1 x 1 x 5 1 x 10 50 print Le nombre de fa ons de former N francs avec des pi ces de 1 5 et 10 francs est le coefficient de x N 1 1 r Drr dans print W Fibo Le r sultat s obtient en 3 s par de simples additions W1 0 W2 1 for I 1 999 vadd W1i W2 exg W1 W2 next I Wi timer print Le milli me nombre de la suite de Fibonacci s c rit avec amp len just1 W2 amp chiffres print C est W2 print Ce calcul a pris W1 secondes Grandissime Les entiers positifs sont cod s par un polyn me en z o z repr sente un grand entier de valeur v on a choisi v 101000 Le plus grand nom bre possible dans cette repr sentation n est plu
320. l ments a random 4 b random 5 c random 8 print using Z _ _ peut s crire Z min _ a b c dvarnum Z a b c Sortie 125 ms Le tableau Z a 160 l ments Z 3 1 1 peut s crire Z min 27 Formes exactes Chapitre 9 Notions de base 95 Polyn mes Exemple On crit des polyn mes A B X Z sont des litt raux print A B print 3 xZ 1 27 A 25 X Sortie 60 ms A B A 25 X 3 Z 1 27 On peut utiliser jusqu 216 mon mes et 215 litt raux par polyn me Les coefficients d un polyn me peuvent tre des nombres rationnels quelconque les flottants ne sont pas admis Les exposants doivent tre dans 0 215 Produit de polyn mes C est un produit de la forme P i P i 2 o s 0 lt s lt 65534 est le nombre de facteurs P est un nombre rationnel et pour chaque de 2 s si s 1 P est un polyn me et k un entier dans 215 215 Les polyn mes P sont normalis s Polyn me normalis d finition Tous ses coefficients sont entiers de pgcd 1 et le premier coefficient crit est positif A Cette d finition d pend pour le signe de l ordre de d finition des litt raux De plus le pgcd de 2 polyn mes P et P i j est 1 les facteurs x o x est un litt ral sont tous apparents Exemple C est le Basic qui se charge de donner une forme standard un produit Ici le facteur commun a b est d voil print a 2 2 xa b b 2 1 2 xa 3 c 2 b 3 c 1
321. l ments locaux du niveau courant de sous programme Niveau de sous programme Dans le programme principal ou apr s clear c est 0 Apr s un appel de fonction ou de proc dure le niveau augmente de 1 apr s return il diminue de 1 L erreur Return Sans Appel se produit si le niveau devient n gatif Noter qu apr s retour l diteur par exemple pendant le d bogage le niveau n est pas modifi les retours de proc dures sont possibles apr s reprise du programme Il est possible d utiliser les commandes local et nolocal au niveau z ro de sous programme Propri t s des l ments locaux Le nombre de variables locales utilisables est limit par la variable d tat s_var qui est modifiable Le nombre d index locaux est lui limit par la variable d tat s_pro Les index locaux comme les index globaux occupent une place fixe en m moire Exemple Cet exemple montre ce qui se passe lorsqu on cr e un l ment local ayant un nom d j utilis par le programme L ancien objet n est plus accessible par le programme On retrouve cependant l ancien objet apr s les commandes nolocal ou return char W W abcd local index W type W print W W nolocal type W print W W Sortie 110 ms W est de type index Chapitre 12 Labels Sous programmes 265 w 0 W est de type char W abcd Attention il n existe pas de labels locaux en Basic 1000d Il n est pas possible d utiliser des noms de labels ou des m
322. l n de Il y a envoi en fin de write des octets 13 puis 10 La commande write est utile pour pr parer un fichier qui sera relu par input Les p riph riques con et vid ne sont pas trait s comme vbs mais envoient des donn es brutes vers le syst me Gemdos Les donn es ainsi crites ne peuvent tre r utilis es la diff rence de vbs Le p riph rique lst envoie les donn es vers l imprimante sans aucune conversion la diff rence de lbs Exemple Une autre fa on d crire sur l cran en ouvrant un canal VBS open o 1 vbs Chapitre 10 Entr e Sortie 177 write 1 hexa write 1 h 81000 Sortie 30 ms hexa 3E8 On ne peut pas crire dans le programme ci dessus write 1 hexa write 1 h 1000 Nous avons d j indiqu que comme est autoris dans les noms il est n cessaire de s parer 1 du nom qui pr c de out print etc L autre incorrection vient de ce que le Basic essaiera de prendre l expression 1 h 81000 pour num ro de canal INPUT i n C_fonction Lecture d octets entier 32 i gt 0 entier n 0 101 d faut n 101 canal d entr e La fonction input lit octets sur le canal n Si le p riph rique est vbs la lecture est faite sur le p riph rique con Les octets lus sont renvoy s sous forme de cha ne Exemple Lecture et affichage de deux octets sur le canal 1 c abcd open i
323. lculs avec diverses valeurs de la pr cision et comparer les temps n cessaires Ici aussi on observera le changement au passage de pr cision 10 11 Lorsqu on compare d autres langages il appara t que quand les flot tants sont cod s sur 8 octets la pr cision de ces langages pour les tests effectu s ici correspond une pr cision entre 10 et 12 du Basic 1000d En ce qui con cerne la vitesse exactitude gale et toujours pour ces tests le Basic 1000d est environ 2 20 fois plus lent que les meilleurs La lenteur relative du Basic 1000d vient principalement du fait que le Basic 1000d permet une pr cision variable ce qui n cessite une allocation dynamique de la m moire Le test 1 consiste it rer 100 fois partir de z 1 la relation x 41 f x o f x qui est calcul par un produit de fonctions trigonom triques est en th orie gal zx Le test 2 test de Savage consiste it rer 2499 fois partir de z 1 la relation 2 41 f x 1 o f x est aussi une expression th oriquement gale T Le test 3 d exactitude consiste it rer 20 racines carr es puis 20 carr s en partant de 2 88 Chapitre 9 Notions de base Dans les tests l erreur indiqu e err est la diff rence entre le r sultat num rique et la valeur th orique exacte et les temps t sont en secondes Voici le programme effectuant les tests Sortie precision 1 9 10 11 12 13 14 15 20 30 notild
324. le La forme QUA q 2 75 repr sente 1 2 z 0 1632993162 print quac 2 75 quaf 2 75 Sortie 800 ms 27 1 2 x 37 1 2 57 1 0 1632993162 quasum ai V_fonction Somme de formes QUA qi r el exact forme QUA Si q1 qn sont les formes QUA des nombres w1 Wn alors la fonction quasum renvoie la forme QUA de wi w Si cette somme n est pas de carr rationnel sortie erreur Avec cette fonction on peut calculer des expressions contenant les op rations x et partir des formes QUA Par exemple la forme QUA de w X w2 w3 wa Tws s obtient par quasum q1 X q2 q3 qa T q5 Exemple L instruction montre que V2 1 V2 1 V2 print La somme de quac 2 et de quac 1 2 est quac quasum 2 1 2 Sortie 925 ms La somme de 2 1 2 et de 27 1 2 est 2 1 2 quacg j1 m1 j2 m2 j m qua3j j1 j2 j3 ml m2 m3 qua6j j1 j2 j3 j4 j5 j6 qua9j j1 j2 j3 j4 j5 j6 j7 j8 j9 V_fonctions Coefficients Clebsch Gordan 3j 6j et 9j qua3jp j1 j2 j3 ml m2 m3 qua6jp j1 j2 j3 j4 j5 j6 Chapitre 16 Biblioth que Math matique 369 qua9jp jl j2 j3 j4 j5 j6 j7 j8 j9 Proc dures Coefficients 3j 6j et 9j j1 m1 j2 m2 entier ou demi entier Les fonctions quacg qua3j qua6j et qua9j renvoient les valeurs sous la forme QUA des coefficients suivants quacg j1 M j2 M2 j m Pe j1 M1 j2 M2lj m qua3j j1 j2 j3 M1 M2 M3
325. le logarithme en base 10 de p En r el p et a doivent tre dans En complexe c est cxnorm p qui doit tre dans cet intervalle La fonction log p renvoie alors la d termination x du logarithme telle que Im x x 7 Au voisinage de 1 log p devient tr s impr cis en valeur relative m me lorsque p est donn en exact Cette erreur provient de la conversion de p en flottant Pour p 1 ou p gt 1 la pr cision relative du r sultat correspond la pr cision en cours Pour p r el quelconque l erreur absolue Ax sur x log p v rifie la relation 1079000 109000 Ar lt precision2 1 z Exemple Le programme v rifie lin galit ci dessus pour des nombres p exp w al atoires dont la moiti sont voisins de 1 for i 19000 22000 10 forv w in i rnd 1 i rnd Chapitre 15 Calculs approch s 343 e abs 1og exp w w y max e 1 abs w y nextv next i print y 2 precision2 Sortie 1342 s 0 1547846325 E 13 0 1136868377 E 12 EXP1 r LOG1 r V_fonctions Logarithme et exponentielle r el Les fonctions expi et logi inverses l une de l autre sont d finies par logi r log 1 r et expi r exp r 1 La fonction 1og1 r au contraire de log 1 r a une erreur relative correspondant la pr cision en cours m me pour r petit devant 1 Le calcul de exp r 1 est beaucoup plus pr cis en utilisant exp1 r lorsque r est tr s petit devant 1 Exemple Le calcul de 1 4 pour x
326. le symbole suivi d une lettre A E P T ou Z crite en majuscule Les titres doivent tre crits sur une seule ligne et pr c d s de A ou B ou C ou D ou E suivant le niveau voulu Le texte ordinaire se rentre sur des lignes de longueur quelconque La fin d une ligne s affiche comme un espace Un nouveau paragraphe s indique par une ligne vide Apr s T un nouveau paragraphe commence sans indentation Les espaces sont actifs apr s T pour permettre l criture de tables Les programmes doivent tre crits comme en Basic et pr c d s de P La fin du programme est indiqu e par une ligne vide ou une ligne commen ant par T ou une autre commande de Help Les paragraphes marqu s Z commencent par Z Le fichier HELP Z doit commencer par au moins une ligne arbitraire qui sera ignor e Tout ce qui pr c de le premier titre A n est pas sorti par Help On peut passer de la Source dans Help et inversement sans op rations disque Voir menu LBR HLP 6 Autres menus de l diteur 40 Chapitre 6 Autres menus de l diteur Organisation des disques Un nom de fichier complet par exemple A REP EXX BLEU EYY COL Z se d compose de la fa on suivante A Lecteur de disques REP EXX R pertoire BLEU EYY R pertoire COL Z Fichier Les noms des r pertoires et fichiers y sont s par s par le symbole Le chemin d acc s par d faut compos d une unit de disque lisible et modifiable p
327. les l ments d un tableau en faisant d abord cro tre le premier indice puis le deuxi me Par exemple le tableau var T 2 5 correspond l ordre T 0 0 T 1 0 T 2 0 T 0 1 T 2 5 A Le fait que cet ordre soit d croissant pour les num ros des variables et litt raux et croissant pour les adresses des index est ici sans importance 94 Chapitre 9 Notions de base Il est possible d acc der ces l ments l aide des mots clefs min et max par les critures suivantes nom MIN sk nom MAX sk nom nom de tableau de type var char index ou lit sk expr commen ant par un signe ou et valeur enti re La d finition de expr est report e plus tard Les 3 x 6 18 l ments du tableau T donn en exemple peuvent s crire T min T min 1 T min 2 T min 17 ou encore T max 17 T max 16 T max dans le m me ordre que plus haut L criture T 1 min est incorrecte DVARNUM nomi V_fonction Num ro d ordre d un l ment de tableau Renvoie un entier dans 0 N o N est le nombre d l ments du tableau L l ment T a b du tableau T de num ro d ordre k dvarnum T a b peut tre r f renc par T min k Exemple A l aide de dvarnum on calcule le nombre d l ments d un tableau puis on montre comment l acc s unidimensionnel d un des l ments du tableau peut tre effectu var Z 3 4 7 print Le tableau Z a dvarnum Z max 1
328. les commandes graphiques correspond au point de coordonn es absolues a x b y Toutes les instructions graphiques except es origin originx et originy et les ap pels syst mes vdir et vdirf mais pas vdi ou vdif utilisent ces coordonn es relatives Les coordonn es relatives peuvent tre des r els non entiers qui sont alors arrondis aux plus proches entiers Exemple Le programme suivant utilise les variables d tat originx et originy d abord en tant que commandes pour fixer l origine au milieu de l cran en monochrome et ensuite en tant que fonctions pour afficher en mode graphique les coordonn es absolues de l origine Ensuite un disque de rayon 5 est trac autour de l origine Nota Les sorties graphiques des exemples ne sont pas reproduites dans ce manuel originx 320 originy 200 text 35 25 amp just1 originx amp amp justl1 originy Chapitre 18 Graphismes 401 amp pcircle 0 0 5 Sortie 555 ms On aurait pu utiliser la commande origin 320 200 au lieu des deux premi res lignes du programme ci dessus CLIP x y xp yp p f Commande Restriction de l affichage X y XP yp r els coordonn es relatives de 2 sommets oppos s d un rectangle entier d faut f 1 Si f 0 la commande clip limite les sorties graphiques au rectangle Si clip est appel avec f 0 ou apr s clear on revient l affichage normal Exemple Une fen tre est cr e aes 100 ouver
329. les couleurs TW W Fixe une couleur analogue color 8 1 1 w w w w w Lecture de secteurs sur disque 9 1 1 w w w w W Ecriture de secteurs sur disque A 1 1 w w w w w l w Formatage d une piste C w l Envoi d une cha ne vers l interface MIDI D w 1 Interruption du MFP E w Param tres d un tampon d entr e 434 Chapitre 19 Appels syst me F w w w w W W Configuration du RS 232 10 1 1 1 Tables de d codage du clavier 11 Analogue random 2 5 12 1 1 w w Tampon bootsector 13 1 l w w w w w V rification de secteurs disque 14 Copie cran sur imprimante Exemple La proc dure copieecran est quivalente hardcopy copieecran stop copieecran ift xbios 14 return 15 w w Attributs du curseur 16 1 Fixe date et heure 17 Date et heure 18 Clavier syst me 19 w 1 Commandes du 6301 1A w D sactive une interruption du 68901 1B w Active une interruption du 68901 1C w w Lit crit un registre son 1D w Positionne le bitu du port A 0 Chapitre 19 Appels syst me 435 1E w Positionne le bitw du port A 1 1F w w w 1l Initialise un timer du 68901 20 1 Voir music 21 w Fixe renvoie la configuration imprimante 22 Renvoie le descripteur de vecteurs clavier 23 w w Lit crit les d lais d autor p tition des touches w est le premier d lai et w le d lai suivant en 20 ms 1 pour lire 24 1 Copie d cran 25 Attend une interruption ve
330. les et minuscules Les caract res suivants peuvent tre aussi un chiffre ou _ soit N 52 10 7 possibilit s Il y a 52NF 1 noms de k caract res et k peut aller de 1 32 La solution ci dessous ne tient pas compte des mots clefs du Basic print Le nombre de noms diff rents possibles en Basic 10004 est a sum k 1 32 of 52 x697 k 1 print Mais avec nodistingo ce nombre n est plus que a 26 43732 1 42 Grand Le calcul du nombre est imm diat 0 4 s mais l impression prend 4 minutes environ c est le temps de conversion de la repr sentation binaire en d cimal print c Calcul du plus grand entier de Basic 1000q W 4 32759 2 W W 1 W 2765520 1 print Temps du calcul ms mtimer print Ce nombre est cod sur mlen W octets par print h conc i 0 10 2 of peekw ptr W i amp char C print Impression du nombre clear timer C just1 W print Temps d criture timer Solution des exercices 497 chiffres print Ce nombre s crit avec len C print Appuyez sur une touche i keyget print a C Max Detprm Par suite des propri t s des d terminants il suffit de consid rer les ma trices a 4 CU c d 9 o a lt b c lt det a lt c On effectue une boucle sur les permutations de 1 8 en laissant 9 en place et en ne calculant que les d terminants du type ci dessus index P 2 2 S 2 2 sup i k nextperm 9 P 0 0 0 while k ift P 0 2 gt P 1 2 goto n
331. les nombres flottants Cette forme est avantageuse du point de vue temps et place m moire dans les calculs num riques Par contre les calculs alg briques qui doivent tre faits de fa on exacte n acceptent pas l utilisation directe de nombres flottants Entr e Il suffit de rajouter un tilde apr s le nombre pour indiquer qu il doit tre consid r comme nombre flottant par exemple 7 345 7 345 E 5 7 345 E 5 7 345 E 5 Les valeurs permises pour un nombre flottant r el outre z ro vont en valeur absolue environ de 1 N N o N 10 0 N d pend de la pr cision Si une op ration a un r sultat inf rieur 1 N en module le r sultat est mis Z ro print 10 10000 print 10 9000 print 10 9000 print 10 10000 Sortie 405 ms 0 1 0000000000 E 9000 1 0000000000 E 9000 ERREUR DOMAINE DE DEFINITION print 10 10000 Remarquer que Basic 10004 accepte 1010000 en exact mais pas en flottant Les nombres complexes Basic 1000d peut calculer en nombres complexes une fois que le lit t ral complexe repr sentant T ait t d fini par la commande complex Cette commande et les particularit s des calculs en expressions complexes seront tudi es dans un chapitre ult rieur Chapitre 9 Notions de base 81 Exemple Nous donnons ici seulement quelques exemples de nombres complexes Une expression complexe sera exacte sauf si elle contient un nombre flottant r el Ainsi w est initialis
332. lettre A Z produit l mission d une note pendant une dur e d pendant du nombre suivant la lettre M4 joue la note 47 pendant 500 ms w14 pause de 300 ms music Aq1u2Dv8m11p500s10y9r2 A met la p riode de la note 36 A Apr s A n met pas une note mais fixe la p riode qi met l enveloppe 1 u2 ferme le canal A les commandes pr c dentes concernaient le canal A et ouvre le canal B D fixe la p riode celle de la note D du canal B v8 met le volume du canal B 8 m11 valide le canal A bruit et le canal B p500 fixe la p riode de l enveloppe s10 fixe la forme de l enveloppe y9 fixe le pas y de la boucle qui suit r2 effectue une boucle qui envoie la suite des valeurs 1 1 y 1 2y 251 calcul es modulo 256 dans le registre 2 ce qui fait varier la fr quence du canal B Les sous commandes de MUSIC Les sous commandes de music crivent dans les registres 0 13 du g n rateur de son YM2149 par l interm diaire de la fonction xbios 20 Cela est indiqu par lt r k gt envoie k dans le registre r D autre part lt FF k gt Chapitre 10 Entr e Sortie 155 lt 80 k gt et lt 81 gt indiquent des commandes de xbios 20 Les canaux A B C sont d sign s par l entier 0 2 Variables internes La commande music utilise des variables internes dont voici la liste avec les valeurs initiales au d but de chaque commande music par
333. lex i varn 7FFD 7 varn 7FFB log 2 varn 7FF9 premi re condition commande cond varn 7FF8 deuxi me condition ORANE Exemple La deuxi me instruction quivaut C mkx 1458 Elle assigne une expr la variable de type char C Cette valeur est ensuite relue par un push suivi de pop char C varn 7FFF varnum C 1458 push C print pop Sortie 20 ms 1458 Attention l utilisation de k correspondant des variables non cr es est accept dans varn k et charn k et conduira probablement un plantage TYPCHR V_fonction Adresse de la table du type des caract res L octet l adresse typchr k o k 0 255 donne des indications sur le caract re chr k suivant les bits 1 7 de cet octet bit propri t s du caract re accept pour CLEF dans Help n est pas un s parateur implicit char implicit index autre que chr 0 et fin d instruction lettre alphanum rique pour les noms NINOR ND En modifiant cette table on modifiera le r le du caract re La table typchr usuelle est r initialis e par clear Exemple La modification de la table typchr modifie les propri t s du caract re 490 Chapitre 21 C ur du Basic 1000d pokeb typchr 23 32 open o 1 vbs print 1 n est plus alphanum rique Sortie 40 ms n est plus alphanum rique Allocation de la m moire Carte de la m moire La position en m moire des divers segments d crits ici s obtie
334. liquant sur la ligne 1 avec le bouton droit RUN F9 ou touche I ou J Continue le programme sans s occuper de l arr ter On revient la fen tre Basic lorsque le programme trouve l instruction stop end ou sur erreur ou apr s Break On revient dans le d bogueur sur l instruction breakpoint ins r e dans la source NOP F10 ou touche K R crit seulement la page de d bogage Utile lorsqu on a cliqu avec le bouton gauche sur un grand nombre de noms ou pour revenir de l cran du programme apr s SCRN F6 ou touche E Lg2 F12 Lg9 F19 ou touches 2 9 Lance le programme et retourne au d bogueur avant l ex cution de la ligne 2 ou 3 9 du listing du d bogueur Cela revient donc effectuer la commande Break F3 pour une des lignes list es Cette commande peut aussi s effectuer en cliquant le bouton droit sur la ligne voulue LOOP XIT F20 ou touche L Si la ligne ex cuter se trouve dans une boucle for next forv nextv forc nextc do loop ou repeat until lance le programme et s arr te apr s la sortie de la boucle Dans le cas d une boucle while wend la commande fait revenir sur while Pour arr t apr s sortie de la boucle mettre un breakpoint apr s le wend Chapitre 8 Mise au point des programmes 57 ARG F22 ou touche Si on se trouve dans un sous programme on obtient le k i me argument en entrant k et le nombre d arguments en entrant 0 Exemple d
335. lp lorsqu on demande le transfert d un programme vers la source F20 par exemple alors qu il n y a pas de programme sur la page PERMUTATION Une permutation des N premiers entiers tait attendue par exemple dans index p 10 ift nextperm 10 p 1 PILE PROC DETRUITE Lors d un retour de proc dure une anomalie de la pile est d tect e C est une erreur de logique interne du Basic qui n appara t pas normalement PILE VIDE Lorsque plus de pop et pop que de push et push sont effectu s par exemple x pop Peut se produire avec en prime des mauvais d pilages si on clique sur pop dans le d bogueur PLANTAGE EN VUE REINITIALISER Erreur syst me lors des r allocations m moire par himem POINTEUR MEM Cette erreur peut se produire si un fichier virtuel MEM est mal ma nipul en tant que variable comme dans l exemple c space 100 open a 1 mem c c print 1 a Chapitre 8 Mise au point des programmes 69 o l criture qui devrait se faire en 100 canal de type a n est plus possible apr s vidage de c POLYNOME Un polyn me tait attendu Une autre cause est le calcul d expressions non polynomiales en pr sence d une condition enti re comme dans cond 17 w 1 y x 717 RACINE Le degr de la racine doit tre en entier positif Erreur dans print root x 1 READ DATA Il n y a pas assez de data pour les commandes read REMEMBER INTERDIT OU REPETE La commande remember ne peu
336. mais ne calcule pas l argument D autre part Basic 1000d est un langage interpr t dans lequel le nom d une variable ou index n est enregistr que lorsqu il appara t lors de l ex cution C est la valeur de la variable d tat no distingo ce moment l qui est utilis e La commande xqt nodistingo 76 Chapitre 9 Notions de base n agit pas sur les labels En effet elle est cach e et non vue lors de l enregistre ment des labels La commande nodistingo distingo au contraire de la pr c dente agit sur les labels mais pas sur les noms de vari ables En effet elle assigne la variable d tat no distingo sa propre valeur ce qui ne la modifie pas Exemple Le nom WAB est d fini alors que nodistingo est actif Tous les noms WAB WAb WaB etc d signent le m me objet Par contre les noms uab et Uab et definir ont t d finis avec distingo actif Ce sont donc des objets diff rents et les noms UAB et Definir sont inconnus du Basic Remarquer que les deux noms de la m me ligne definir et WAB sont trait s de fa on diff rente Le label definir est trouv avec distingo actif lors de la lecture des labels La variable WAB est trouv e avec nodistingo actif lors de l appel de la proc dure definir nodistingo print distingo nodistingo definir distingo print distingo nodistingo uab x 9 Uab y 3 print WAB wab uab Uab type UAB Definir stop definir WAB 1 8 return Sortie 250 ms 1 1 0 o0 1 8 1
337. me du crochet indique si a et ou b font partie du csegment Les csegments a b et b a sont identiques la diff rence des segments r els VSETS velsg velsg CSETS celsg celsg C_fonctions Construction d un v_ ou c_ensemble Les fonctions vset et cset permettent de construire des v_ et c_ensembles par exemple pour conserver de tels ensembles dans des variables de type char Les d finitions donn es plus haut des v_ et c_ensembles ne sont possibles qu apr s le mot clef in Les cha nes repr sentant des ensembles peuvent tre concat n es pour repr senter la r union des ensembles Ainsi les v_ensembles c et cp suivants sont identiques char c cp c vset 1 amp vset 3 5 cp vset 1 3 5 Exemple En mettant l ensemble dans une variable on vite d avoir le r crire chaque test d inclusion par in char c c cset bleu rouge distingo print bleu in c print Bleu in c nodistingo print Bleu in c print Bleu in avant centre c vset 0 1 20 50 print 7 pi in c and O in c and 50 not in c print 3 in c amp vset 2 4 1 2 Sortie 120 ms Les t ensembles 112 Chapitre 9 Notions de base Cette section qui d crit la structure des v_ et c_ensembles ainsi que des fonctions permettant leur utilisation peut tre saut e en premi re lecture Un t_ensemble est une cha ne form e par la concat nation de N N gt 0 t_ l ments Un t_ l ment est un
338. me toute expr un litt ral au sens g n ralis parce que sa valeur est r duite un nom de type lit et un nomi de type var L espace apr s test dans c est consid r comme faisant partie de l expr mais pas du nomi de var char c cp c test test lis print decodex c 1 w w print decodexi c print decodexc c i cp cp print decodelbl c print decodelit c 1 j j print decodev c 1 j j ptrptr test print decodei c Sortie 150 ms 6 lis Chapitre 11 Programmation 235 0 6 lis 0 6 1 5 388438 388434 0 Exemple La fonction decodex d code la cha ne la plus longue qui peut tre in terpr t e comme expr C est v 3 8 et pas seulement v 3 char c cp index v 7 c a v 3 8 a v 3 8 print decodex c 3 w w print decodelbl a 1 i f peekz peekl i 1 print decodei c 3 Sortie 75 ms JT 2 v 3 8 7 Informations M moire FRE FRE vircha ne V_fonction Nombre d octets disponibles pour le programme La fonction fre effectue pr alablement un ramassage des poubelles pack Les deux formes renvoient le m me r sultat mais vircha ne est effectivement calcul dans la deuxi me forme Exemple Affiche l espace libre avant et apr s cr ation d une cha ne de 50000 octets print fre c space 50000 print fre Sortie 255 ms 158082 108076 236 Chapitre 11 Programmation MLEN p V_fonction Longueur en octets du codage m moire de p P expr Si W est une variable de type var
339. me zone Help permet la cr ation de modes d emploi ou d aide m moire Appuyer sur la touche Help puis sur CR Cela charge le fichier Help z de d monstration et ouvre la fen tre Help Appuyer de nouveau sur Help pour commencer la lecture du mode d emploi puis sur la touche pour la continuer Ce fichier contient des programmes en exemples qu il est possible de faire passer dans la source par appui sur s F10 Avant d effectuer de tels transferts revenez au menu Basic case F10 et videz la source New case F13 La touche Help rouvre maintenant la fen tre Help au m me point La fen tre Edit Source 20 Chapitre 3 La fen tre Edit Source La fen tre Edit Source permet de cr er et de modifier la source les programmes en Basic Source et options d affichage Source C est un ensemble de lignes en m moire repr sentant un programme A La source est un fichier Z c est dire un fichier ASCII o la s paration des lignes est cod e par chr 0 et non par chr 13 et chr 10 De plus il y a quelques restrictions sur le texte des lignes ditables Les caract res chr 13 chr 25 et chr 26 ne peuvent tre dit s Les espaces sont supprim s en d but et fin de ligne devant et Mis part quelques restrictions il est possible d ins rer un texte quel conque Cela pr sente l avantage de pouvoir utiliser l diteur pour des textes autres que du Basic comme par exemple des modes d em
340. ment du fichier f en entier dans la variable C Si la m moire disponible est insuffisante seul le d but du fichier f est charg Si l est donn load charge les l premiers octets du fichier f Les deux instructions save f C C l1oad f sont inverses l une de l autre Si on utilise save f S1 save f S2 avec le m me nom de fichier le fichier cr avec S1 est recouvert par la deuxi me instruction et on ne peut plus relire S1 Si on veut sauvegarder S1 et S2 il faut soit cr er deux fichiers save f1 S1 save f2 S2 soit cr er un fichier contenant les deux cha nes save f S1 S2 Voir aussi l exemple dans la section t_ensemble Avec load et save il n y a pas besoin des commandes open et close Cependant les fichiers tendus comme LST voir open ne sont pas accept s Exemple La proc dure fcopy u v copie le fichier u sous le nom v fcopy a x a b y a stop fcopy save 2 load 1 return BLOAD f a Commande Charge le fichier f l adresse a BSAVE f a l Commande Sauvegarde le fichier f avec les l octets en a fcha ne contient le nom du fichier adresse par d faut la derni re valeur utilis e par bsave 170 Chapitre 10 Entr e Sortie longueur en octets Les cases Load img et Save img du menu FILES permettent d ex cuter les commandes bload et bsave partir de l diteur Exemple Sauvegarde puis charge l cran L cran occupe 32000 octets par
341. ment se produit lorsque le bouton gauche si a 1 droit si a 2 ou les deux ensemble si a 3 est appuy Exemple L appui sur le bouton gauche dessine une bo te en mode graphique in verse pbox apr s graphmode 3 une touche quelconque arr te le programme on menu button 0 1 1 gosub p on menu key stop do on menu loop Chapitre 10 Entr e Sortie 145 p graphmode 3 origin menu 10 menu 11 pbox 0 0 60 40 return ON MENU MOUSE m drap x y dx dy instr_ mouse Commande Surveillance de la souris 0 ou 1 Il est possible de d finir deux v nements souris ind pendants par deux com mandes diff rant par la valeur de m drap 0 ou 1 0 souris dans la bo te 1 souris hors de la bo te X y entier 16 coordonn es absolues du coin sup rieur gauche de la bo te dx dy entier 16 largeur et profondeur de la bo te en pixels instr_mouse instruction en Basic 1000d La commande on menu mouse sp cifie l instruction qui sera effectu e si la souris est dans la bo te si drap 0 ou au contraire en dehors de la bo te si drap 1 Exemple On surveille si la souris est l int rieur ou l ext rieur de la bo te 100 x 100 dont le sommet sup rieur gauche est le point 0 100 L un des deux v nements est toujours vrai et un carr ou un disque est trac suivant le cas Une touche quelconque arr te le programme graphmode 3 hidec on menu mouse 0 0 0 100 100 100 dans on menu mouse 1 1 0 100 100 100 h
342. mer 2955 absence de du Et et grands 1 les l s neiges premi res puis r el songe sur tiss s vinrent Tri en fr quence absence 1 eiges 2 Une autre application des fichiers virtuels consiste en leur utilisation de 1 Et 1 et 1 grands 1 1 1 l s 1 premi res 1 r el 1 songe 1 sur 1 tiss s 1 vinrent 1 du 2 n les 3 comme tampon d entr e ou de sortie de fichiers disques ce qui permet d acc l rer les op rations disques L exemple suivant qui d termine la liste des caract res du fichier help z est bas sur ce principe Il utilise les commandes et fonctions open close lof loc seek inp et input index CAR 255 char C OPEN I 0 HELP Z OPEN I 1 MEM C DO L LOF 0 LOC 0 IFT L lt 0 EXIT C INPUT MIN L 10240 0 SEEK 1 0 FOR I 1 LEN C CAR INP 1 1 next I PRT LOOP CLOSE stop PRT print CH CONC J 0 FF 10 OF justr RIGHT J 2 3 FOR I 0 15 print H just1 1 3 CONC J 0 FF 10 OF justr CAR I J 3 next I print L LOC O timer timer return Chapitre 10 Entr e Sortie 181 FIELD n fid Commande D finition des champs fld de lenregistrement GET n r Commande Lecture de l enregistrement r PUT n r Commande Ecriture de l enregistrement r entier n 0 100 num ro de canal de type R entier 32 gt 0 Par d faut r 1 pour la premi re commande put ou get et la valeur par d faut de r est ensuite incr ment e de 1
343. mf W 1 print FORMF W 0 formf W 0 print FORMF W formf W Sortie 1195 ms FORMF W 1 X 3 3 X 2 B 3 X B 2 B 3 X 3 4 X 2 A 19 XxA 2 14 xA73 FORMF W 0 X B 3 X73 4 X 2 A 19xX A 2 14 A73 FORMF W X B 3 X 2 A x X A x X 7 A Exemple Dans l assignation W W en mode factor seulement les mon mes et un nombre rationnel sont mis en facteur La multiplication par 2a x permet de d couvrir le facteur 2a x de W En effet dans une forme factoris e les facteurs sont toujours premiers deux deux W 17 5 x 6 68 5 x 5 a 68 5 x 4 a 2 factor W W print W print formf W Chapitre 9 Notions de base 99 print Wx 2 xa x Sortie 280 ms 17 5 x 4 x 2 4xx xa 4 a 2 17 5 x 4 x 2 a 2 17 5 x 4 x 2 a 3 Attention si vous crivez en mode d velopp W formf W lassignation red veloppe la forme factoris e Il faut donc utiliser le mode factoris factor W formf W Temps de calculs alg briques Pour w 1 7 wz 1 x 256 w3 1 x wg r et w5 20200 x g x 1 x 2 x x x n 1 est le symbole de Pochhammer sous forme d velopp e nous indiquons la longueur du codage m moire pour l criture il faut environ 2 5 fois plus de caract res et les temps de calculs en s de w de la d riv e de l int grale et de factorisation compl te Le indique une erreur m moire 1040ST wi w2 w3 w4 W5 mlen 2060 706
344. mlen W peekl1s ptr W 4 On a aussi mlen p 1en mkx p Exemple La longueur occup e en m moire par p mlen p diff re de la longueur de la repr sentation en caract res de p len p Noter que dans len p l argument p est consid r comme une exprcha ne p 3 x 100 print mlen p len p Sortie 3875 ms 2380 5328 PTR x V_fonction Adresse m moire du contenu de x nomi de type char var ou index Pour tudier le codage de x vous pouvez effectuer la commande Query du menu TOOLS avec pour entr e ptr x Exemple Le codage m moire de c est examin par peek1l et peekb Le mot long en ptr c 4 est la longueur de la cha ne Le contenu de c est form des 8 octets en ptr c c ABCD amp abc index i i ptr c print h L peekl i 4 c conc i i i 7 of peekb i Sortie 80 ms L 8 c 41 42 43 44 0 61 62 63 Pour les variables ptr x n est pas fixe Exemple Le changement de la valeur de U modifie l adresse de W U 27 1000 W 37333 V ptr W U 0 print V ptr W Chapitre 11 Programmation 237 Sortie 40 ms 391978 391838 Exemple Cr ation d un tampon de 100000 octets accessible par PEEK et POKE Le tampon est une variable de type char de longueur 100000 Comme son adresse n est pas fixe il ne faut pas d finir une variable J ptr TAMPON et l utiliser dans pokeb J 7 28 qui peut poker en dehors de TAMPON et conduire un plantage char TAMPON TAMPON chr 0 100
345. modulaires Exemple Les repr sentations sign es modulo 29 des polyn mes 2A et 1 x A sont affich es A 27 x 2 15 x 13 print mds 4 29 print mds 2 A 29 print mds Ax 1 x 29 Sortie 125 ms 2 x 2 14 x 13 4 x 2 x 3 2 x 3 13 x 2 x 13 MDDIV A B p MDMOD A B p V_fonctions Division modulaire Ces fonctions effectuent la division modulo p de l unip A par l unip B Soient Q et R les unip tels que A B x Q R modulo p avec deg R lt deg B et tels que les coefficients de Q et R soient dans 0 p Les fonctions mddiv et mdmod renvoient Q et R respectivement Exemple La relation A B x Q R mod 13 est v rifi e A 7 x 4 5 x 1 B 9 x 2 12 Q mddiv A B 13 R mdmod A B 13 print Q print R print mod A B Q R 13 Sortie 110 ms 8 x 2 11 5xx 12 0 320 Chapitre 13 Calculs exacts MDGCD A B p V_fonctions Pgcd La fonction mdgcd calcule le pgcd modulaire normalis des unips A et B Elle renvoie l unip W de degr maximum qui divise la fois et B et tel que polyn W 1 Autrement dit si le degr de W est n W est de la forme W Cn_12 co Un des unip entr peut tre nul ainsi mdgcd A 0 p renvoie l unip normalis proportionnel A Cela correspond la convention que tout polyn me divise 0 Exemple On v rifie que le pgcd modulaire P de A et B divise A et B dans Z7 x La derni re instruction normalise 3P A 3 x 4 x 3 4 x 2 4 x 3 B 3 x 4 3 x 3 x 3 P m
346. mot 271 clef 22 3 73 4 r serv mot clef mouse 157 158 160 452 mousek 160 mousex 159 mousey 159 mouvement 23 6 mtimer 238 mul 477 multiplication 103 223 multipr cision 326 music 153 musique 153 7 479 81 m_color 415 m_heigth 415 m_type 415 440 n texte 15 32 name 167 430 NDC 471 new 241 NEW 30 44 NEW L 37 next for on break next nextc forc nextcode 51 237 nextline 51 237 nextperm 220 221 nextv forv niveau de sous programme 65 264 no menu 21 noboundary 412 414 440 noclock 29 241 nodate 29 241 nodistingo distingo NOHELP 37 45 noindent 21 nolocal 264 266 269 nom 72 6 indic 72 nombre al atoire 324 6 alg brique 310 330 372 complexe complexe d arguments 7 255 257 d l ments 476 d indices 72 de Bernoulli 380 de caract res 206 de caract res par ligne 124 de couleurs 400 de lignes 120 de lignes par page 124 de litt raux 91 311 2 de mon mes 313 de variables 91 515 entier entier exact 76 106 452 flottant flottant parfait 326 398 premier premier r el r el nomi 72 nonext 191 norm 284 5 311 norme 333 not 100 461 not in 102 107 109 111 notations 10 d finition notilde 82 83 nul 171 num 313 num rateur 280 313 4 num ro ligne 21 litt ral 90 1 variable 488 numf 313 numr 280 ob_id 141 oct 209 odd 280 OLD 45 on 187 246 on break 246 on break goto 246 on break next 246 on break stop 246 on error 244 on er
347. mp C amp chr 27 amp K Sortie 70 ms a a Codes d impression 0 1F La table des codes d impression suivante s obtient par la commande Printing du menu HELPS F3 La commande du Basic print chr n pour n lt 32 effectue le mouvement d crit ici si n est dans la table et sinon pour les codes 11 12 16 18 1A et 1C 1F n a aucun effet sur l cran La touche du clavier qui provoque le m me mouvement dans la fen tre Basic est aussi indiqu e n touche 0 CR Curseur au d but de la ligne texte suivante 1 T Curseur vers le haut 2 Curseur vers le bas 3 Curseur vers la droite 4 Curseur vers la gauche 5 Home Curseur au d but de la ligne cursh 6 Delete Efface sous le curseur T Sonnette 8 s Delete Efface la fin de la ligne texte 9 Tab Curseur sur la position de tabulation suivante A fs Curseur en d but de ligne texte B s Curseur en bas gauche de l cran C Clr Efface l cran en dessous de la ligne cursh D CR Curseur au d but de la ligne texte suivante E s Curseur en fin de ligne texte F s Tab Change la r solution 10 Ins Ins re une ligne vide 13 Backspace Efface devant le curseur 14 s Backspace Efface le d but de la ligne texte 15 Vid o inverse 16 Fin d exposant pour l imprimante 17 Vid o normale 19 Caract re suivant sans mouvement 1B D but des s quences Escape appel VT52 Sur le canal VBS la sortie d un symbole Atari de code k lt 32 est
348. mple Les instructions suivantes peuvent se placer en t te d un programme utilisant GDOS if not gdos message Programme GDOS non r sident stop endif V_HO V_fonction Identificateur de la station VDI du Basic V_H Variable d tat Identificateur de la station VDI La fonction v_h0 renvoie l identificateur de la station virtuelle cran ouverte par le Basic Initialement v_h vaut galement v_h0 Lorsque GDOS est r sident il est possible d ouvrir d autres stations VDI voir les commandes vdi 1 et vdi 100 ci dessous et v_opnwk et v_opnvwk de la biblioth que STND En donnant v_h l identificateur d une telle station on d route tous les appels VDI vers cette station Ce d routage est aussi effectu e dans toutes les commandes qui utilisent le VDI par exemple circle et graphmode Les variables d tat graphiques comme par exemple 1_color utilis es en tant que commandes agissent galement sur la station v_h Lorsque elles sont utilis es en tant que fonction elles demandent leurs valeurs si possible au VDI et renvoient donc la valeur effectivement retenue pour la station v_h Cependant il n existe pas d appel VDI fournissant la valeur des variables d tat suivantes boundary noboundary t_type l_begin l_end et m_type Dans ce cas le Basic a m moris la derni re valeur assign e la variable d tat et c est cette valeur qu il renvoie Elle ne correspond donc pas n cessairement la valeur
349. mple fulldir A renvoie la liste compl te des r pertoires Chapitre 10 Entr e Sortie 165 Z 721920 octets libres 3207 04 24 1986 03 51 08 et fichiers du disque A fulldir Sortie A x x DEGELITE AUTO BLOCKS c fulldir A print a c stop function char p local index n char d f value files p 3 for n 0 100 ift devty n 0 exit next n open i n mem value line input n c while not eof n c input 12 n f input 3 n ift left c lt gt and f 10 cadd d fulldir p amp just1 c amp line input n c wend close n cadd value chr 13 amp chr 10 amp d return O octets libres 100 08 0 10 0 10 0 TRYSD16 FNT 00 4442 A AUTO 0 octets libres 10 0 166 Chapitre 10 Entr e Sortie se 10 0 GDOS PRG 00 8064 DIR c1 Commande Liste le r pertoire c1 cl fcha ne d faut vide La commande dir c1 est idendique print a files c1 stop Elle liste des fichiers comme la commande Dir de l diteur et provoque un arr t du programme Exemple dir a Sortie 2 s A a x x 721920 octets libres 3207 X Z EXIST f V_fonction Teste l existence du fichier f fcha ne contenant le nom d un fichier Si le fichier existe la fonction exist renvoie 1 sinon 0 Exemple La fonction lirenom s lectionne le nom d un fichier par fsel v rifie qu il existe et renvoie ce nom Dans la commande checker les caract res exo tiq
350. n 256 est pris en compte Sauf si liste se termine par ue 4 od ou il y a passage la ligne suivante apr s la commande Les octets 13 puis 10 sont alors envoy s au terminal de sortie la fin de la commande Exemple La sortie est effectu e dans un fichier virtuel mem identifi avec la variable c Le tab est quivalent tab 44 La cha ne c est form e de 1000 espaces mis par spc des octets 13 et 10 mis par tab le compteur de tabulation Chapitre 10 Entr e Sortie 129 est remis z ro de 44 espaces galement mis par tab des 3 octets du mot end et de deux octets 13 et 10 de fin de print open O 1 mem c print 1 spc 1000 tab 300 end print len c Sortie 120 ms 1051 Sortie sur l cran p riph rique vbs Les caract res sont sortis sur la page de fa on tr s semblable ce que l on obtient en tapant au clavier dans la fen tre Basic Ainsi lorsque l impression arrive en bout de ligne cran elle continue ensuite sur la ligne cran suivante et la ligne texte est rallong e Par exemple ex cutez print c A amp conc i 33 255 of chr i On obtient une ligne texte form e de plusieurs lignes cran Cette ligne est maintenant modifiable dans la fen tre Basic Par exemple d placez le curseur sur la ligne et tapez sur c Delete Vous avez ainsi fait passer la ligne dans le tampon d effacement comme vous pouvez le v rifier en tapant Undo Les caract
351. n 44 octets disque Voir gemdos 4F 30 Renvoie le num ro de version du gemdos 31 1 w Lib re m moire ne pas utiliser 36 l w Information sur disque voir exemple en d but de la section gemdos 391 Cr ation d un r pertoire Exemple Les proc dures mkdir_bis et rmdir_bis suivantes sont identiques aux commandes mkdir et rmdir du Basic mkdir_bis A REP print files A rmdir_bis A REP stop mkdir_bis local datac 1l amp chr 0 char c ift gemdos 39 ptr c 0 return print R pertoire non cr stop rmdir_bis local datac i amp chr 0 char c ift gemdos 34A ptr c 0 return ift gemdos 3A ptr c 0 return Chapitre 19 Appels syst me 427 print R pertoire non effac stop Sortie 6845 ms A A x x 716800 octets libres 325 MATH1 Z 130 HELPEX Z O BAS1 PRG 206 T Z O REP 3A 1 Efface un r pertoire Voir exemple gemdos 39 3B 1 Fixe le r pertoire courant Exemple La commande chdir du Basic a le m me effet les messages mis part et la m me syntaxe que la proc dure chdir_bis suivante Noter que la cha ne doit tre suivie de chr 0 chdir_bis A chdir_bis C pagaille stop chdir_bis procedure char c c c amp chr 0 select gemdos 3B ptr c case 0 n print R pertoire s lectionn c case others print R pertoire inconnu C endselect return Sortie 100 ms R pertoire s lectionn A R pertoire inconnu C pagaille 3C l w Cr ation d un fichier dis
352. n Recherche une valeur dans un tableau tri Un des avantages d un tableau tri est de permettre de retrouver rapidement une valeur donn e dans ce tableau La fonction search permet d effectuer cette recherche en un temps proportionnel int1g N Les arguments de search sont les m mes que ceux qui ont permis de trier le tableau de N 1 l ments S k mis part que le nombre d l ments tait N 1 au lieu de N maintenant et que le tableau S contient un l ment de plus la valeur rechercher Cet l ment est le N i me l ment dans la suite S k de pas p Par exemple dans k SEARCH S 1 100 1 P 1 S 100 est recherch dans la table des 99 l ments S 1 S 99 Le tableau P d crivant l ordre de la table a pu tre rempli par SORT S 1 99 1 P 1 Pour utiliser search il faut donc pr voir un l ment suppl mentaire dans le tableau S La fonction search renvoie l entier k 0 N qui indique la position o s ins re l l ment Exemple Les 99 mots S 1 S 99 sont tri s puis on d termine o s ins re le mot S 100 qui est al atoire la premi re fois entr au clavier ensuite La valeur k renvoy e par search est telle que S P k lt S 100 lt S P k 1 si on fait la convention que S P 0 d signe et S P 100 d signe 00 On remarquera galement qu il faut appeler sort mais pas permute avant search char S 100 index P 100 for i 1 100 S i conc j 0 random 7 of
353. n autre que Z Un fichier Z est un fichier ASCII mis part que les lignes sont s par es par chr 0 Les Chapitre 6 Autres menus de l diteur 41 fichiers lus dans la source peuvent tre de type ASCII ou Z sans que l extension suive n cessairement les r gles d criture ci dessus Basic 10004 se charge de la conversion au type Z qui est la repr sentation interne utilis e En plus de cette conversion les espaces en d but et fin de ligne sont supprim s Les fichiers lus dans la biblioth que ou help doivent tre du type Z Exemple disque virtuel Supposons que nous ayons install un disque virtuel D dans le bureau Pour pouvoir lire ou crire des fichiers sur ce disque D nous s lectionnons le disque D avec la commande Basic CHDRIVE D ou CHDRIVE 4 Apr s cela nous fixons le r pertoire courant avec la commande Basic CHDIR REP EXX o on notera que l on crit le chemin entre guillemets la diff rence de la commande DIR de l diteur qui est d crite plus bas Les op rations de sauvegarde ou lecture auront alors lieu dans le disque virtuel Pour utiliser de nouveau le lecteur ex cuter CHDRIVE A Commandes disques menu FILES Les commandes d crites ici se trouvent dans le menu FILES sauf Save et Merge qui sont directement accessibles partir des menus Basic et Edit Source Seules les commandes diteur sont tudi es ici les commandes Basic comme chdrive pour changer de disque sero
354. n donnant la relation d ordre La commande sort peut trier des r els ou des cha nes Elle ne modifie pas le tableau S mais renvoie dans le tableau d index 32 P dans les N l ments partir de P j une permutation des entiers de 1 N qui indique l ordre croissant des l ments trier Le r arrangement du tableau souvent inutile car P suffit a t dissoci du tri et est possible par la commande permute d crite plus bas La combinaison de sort et permute permet galement de r arranger plusieurs tableaux suivant l ordre d un des tableaux Pour rajouter quelques l ments dans une table d j ordonn e la donn e de D le nombre d l ments d j ordonn s doit tre accompagn e du tableau 216 Chapitre 11 Programmation P j contenant la permutation des entiers de 1 D indiquant l ordre des D premiers l ments du tableau Le tri est alors plus rapide qu un tri total avec D 0 Exemple Tri d un tableau S de 100 entiers al atoires Les nombres sont affich s dans l ordre croissant var S 100 index P 100 for i 1 100 S i random 2 100 next i sort S 1 100 1 P 1 for i 1 100 print S P i next i Sortie 7 s 1232854174249763393673334520433 1257783496757281630891887857197 Dans le cas d galit P pr serve l ordre initial Pour l exemple ci dessus si S P i S P i 1 alors P i lt P i 1 On peut dans le cas o S est un tableau de variables S index est exclu et p
355. n t te de ligne suivi de Par exemple on peut crire GammA ou gamma pour d signer la ligne gamma function x Les majuscules sont ici quivalentes aux minuscules r gle diff rente de celle des labels lors de l ex cution Chapitre 4 La fen tre Basic 10004 31 d signe un entier d cimal sligne d signe les fa ons suivantes de d finir une ligne Ligne du pointeur d insertion Derni re ligne de la source Pointeur A 1 re ligne du bloc Pointeur B derni re ligne du bloc label La ligne du label weuz ligne d signe les fa ons suivantes de d finir une ligne vide Ligne 1 n Ligne n sligne sligne n sligne d cal de n sligne n Les diverses touches agissent de fa on similaire dans les crans Edit Source et Basic Nous nous contentons ici de noter les diff rences entre les deux Les caract res 13 25 et 26 peuvent tre crits mais 0 reste interdit Les touches s T c et c Home sont identiques Home Les touches s et c sont identiques s CR curseur en bas de page Clr efface tout l cran pas seulement une ligne CR valide la ligne texte Les touches suivantes n ont aucun effet s Undo Esc s Esc et les commandes de marque et de bloc Le tampon d effacement est commun toutes les fen tres Basic Edit Source Help Il se remplit lors des effacements et se recopie par Undo dans toutes les fen tres ce qui permet facilement le passage
356. nctions rinstr et rinstrk sont analogues instr et instrk mais cherchent la cha ne sp partir du a i me caract re de s par d faut a len s en sens inverse en allant vers la gauche S il y a une ou plusieurs occurrences de sp dans s rinstr renvoie la position p de l occurrence de p maximum 0 lt p lt a p est la position du premier caract re de sp dans s comme pour instr En cas d absence ces fonctions renvoient 0 Exemple Apr s nodistingo les minuscules et majuscules sont quivalentes c from afrom to ato nodistingo print instr c FROM instrk c FROM print instr c FROM 2 instrk c FROM 2 print rinstr c TO rinstrk c TO Sortie 65 ms 1 1 7 0 16 12 Chapitre 11 Programmation 233 DECODE s sp al V_fonction D code la cha ne sp S Sp exprcha ne entier a gt 0 d faut a 1 Si partir du a i me caract re de la cha ne s on trouve la cha ne sp ven tuellement pr c d e d espaces mais de rien d autre et que la cha ne sp soit suivie d un ou termin e par un s parateur la fonction decode renvoie la po sition p p gt a du premier caract re situ apr s sp Sinon decode renvoie 0 Les majuscules minuscules sont trait es suivant la variable d tat distingo ou nodistingo Exemple c clef x print decode c clef decode c x Sortie 20 ms 5 0 DECODEX s a V DECODEXI s a I DECODEXC s a C DECODELBL s a 1
357. ndentation de la source FLOTTANT INTERDIT L argument doit tre exact par exemple dans w num exp 1 FONCT PROC QUI TERMINE DES BOUCLES Cette erreur est d tect e lors du retour de sous programme par exemple dans Chapitre 8 Mise au point des programmes 63 for i 1 10 P p next i return L exemple ci dessus n est pas si simple qu il para t et il est instructif de lex cuter avec le d bogueur pour comprendre ce que fait Basic 1000d FOR NEXT Mauvaise structure d tect e next sans for etc Par exemple le pas est nul dans for i 1 to 3 step 0 FORME SOURIS Dans l appel de defmouse la cha ne doit avoir une longueur de 74 octets ce qui n est pas le cas dans char c defmouse c GEMDOS nn Erreur syst me HORS DU TABLEAU La v rification des limites d un tableau choue Dans l exemple suivant la taille du tableau g ne peut d border celle de f var f 10 local dataa f 0 access g 15 IMBRICATION DES BOUCLES Comme par exemple dans forv v in 1 forc c in a nextv nextc INCOMPATIBLE AVEC EXIT La commande exit ne doit pas provoquer le survol d une instruction next regroupant plusieurs boucles comme dans for k 1 1 exit for i 1 2 for j 1 2 next j i next k INCREMENT DE BOUCLE L incr ment d un ensemble discret ne peut tre nul comme par exemple dans forv v in 1 2 3 2 0 nextv INDEX ADRESSE 64 Chapitre 8 Mise au point des programmes L argument attendu doit tre un entier 16 o
358. ne la fonte f entier 16 identificateur de fonte La fonction vst_font est l analogue de la variable d tat t_font En retour on obtient l identificateur de la fonte effectivement retenue qui est 1 fonte syst me si la fonte f est absente VST_POINT n V_fonction Sp cifie la hauteur de la fonte entier 16 La fonction vst_point quivaut vdi 107 La valeur n est donn e en points 1 in 2 54 cm 72 27 pt la diff rence de la commande vdi 12 ou de Chapitre 20 Biblioth que STND 473 t_height o la hauteur est donn e en pixels En retour la fonction renvoie la valeur effectivement retenue en pt VQT_NAME n V_fonction Identificateur VQT_NAMES n C_fonction Nom entier 16 num ro de fonte Ces fonctions qui appellent vdi 130 renvoient des informations sur la fonte num ro n Le num ro n 1 2 de la fonte est le num ro d ordre dans la liste des fontes associ es au p riph rique courant dans le fichier ASSIGN SYS La fonction vqt_name renvoie l identificateur de la fonte qui est un entier 16 arbitraire choisi par le dessinateur de la fonte La fonction vqt_name renvoie le nom de la fonte VQT_EXTENT S x1 yl x2 y2 x3 y3 x4 y4 Proc dure Extension du texte S exprcha ne xl y4 nomi de variables ou index La proc dure vqt_extent analogue vdi 116 met dans les variables ou index xl y4 les coordonn es une translation pr s d un rectangle qui encadre S VQT_FO
359. ng du d bogueur A Cette commande utilise seulement le num ro de la ligne Cela permet par exemple d ouvrir sur la ligne 107 en crivant en d but de ligne 107 puis en cliquant le bouton droit sur cette ligne Mais attention de ne pas appuyer sur CR apr s avoir tap 107 Cela viderait la ligne 107 La commande est valide avec les num ros relatifs 1 du d bogueur apr s retour dans la fen tre Basic Bouton gauche D placer la souris bouton gauche appuy Cela remplit le tampon d effacement avec le texte des lignes s lectionn es et ouvre la fen tre Edit Source sur la ligne M Cette commande permet d crire dans la source des donn es sor ties par un programme On les recopie ensuite par appui sur Undo n importe o dans la source New La commande New case F13 vide l ancienne source avant d ouvrir la fen tre Edit Source Commande ligne Cette commande ouvre la fen tre Edit Source sur la ligne sp cifi e On peut aussi l appeler par la case EDIT F20 du menu Basic et aussi dans la fen tre Edit Source en cliquant sur M cases F27 et F28 Il faut alors rentrer ligne sans le symbole Voici quelques exemples ligne Ouvre en t te de la source D en fin de la source 12 sur la ligne 12 gamma sur la ligne gamma Les d finitions suivantes permettent de d finir la syntaxe de ligne dans la commande ligne label d signe un nom alphanum rique apparaissant une fois e
360. ng p x 1 y print str q y print formd p subs q y x 1 Sortie 385 ms C 1 y 1 1 y 2 1 y 3 x 2 x D veloppements limit s TAYLOR p k x V_fonction D veloppement limit P expr k entier k gt 0 x litt ral La fonction taylor p k x renvoie Q F x x x Co Ciz Cox Okr Chapitre 13 Calculs exacts 299 o F est une forme factoris e ind pendante de x Ci pour 0 k est un polyn me ind pendant de x et a est un entier Cette expression Q est le d veloppement limit de p l ordre a k en x au voisinage de x 0 Si a gt 0 Q est le d veloppement de Mac Laurin l ordre a k Lorsque x est omis la fonction utilise par d faut x polyl p ou x polyl factorp p 2 si p est factoris Exemple print taylor x 2 1 x 5 Sortie 110 ms x 2 x 5 x 4 x78 x72 x 1 Exercice Boulanger On dispose de pi ces de 1 5 et 10 francs De combien de fa ons diff rentes peut on r gler la note N francs de son boulanger Par exemple si la note est de 50 francs une fa on possible est avec 10 pi ces de 5 F une autre fa on est avec 4 pi ces de 10 F et 2 de 5 F etc Donner la r ponse pour tous les N de 1 50 SATN p k x SSIN p k x SCOS p k x SEXP p k x SLOG1 p k x SHYG p k x qi mi P poly ord p x gt 0 k entier k gt 0 x litt ral par d faut x polyl p qi expr mi entier 16
361. nombre Les jouent le m me r le que les mis part que des sont sortis devant le nombre affich Le signe plac en fin du format r serve une place pour le signe du nombre Une autre option permise est de placer en t te du format ce qui sort le signe m me s il est positif print using F xX xxx kkk xx 1076 Sortie 30 ms x x xF1 000 000 Exemple Le premier _ indique que ne sp cifie pas le format mais doit tre sorti tel quel La partie a b est galement recopi e Noter que n est pas un d but de format Le format r duit n est pas suffisant pour contenir le nombre 70 Un nombre est cependant toujours sorti en entier donc parfois avec d bordement du format Les symboles apr s le format affichent b print using _ a b b_ 70 Sortie 20 ms a b 70b Exemple Les expressions symboliques voient leurs nombres format s Le nombre en t te s il y en a subit enti rement l action du format les autres seulement l effet du changement de la valeur de formatx print using 1 2x x 73 Sortie 70 ms 8 00 00 x 3 12 0000 x 2 6 0000 xx 1 0000 136 Chapitre 10 Entr e Sortie Exemple L exemple suivant examine des cas o plusieurs formats sont donn s dans la cha ne c D abord il y a trois formats num riques les symboles amp P et sont inactifs apr s _ Si on essaie de fai
362. ns les valeurs m_color m_type et m_heigth sont demand es au syst me par vdi 36 et donnent la valeur retenue pour la station de travail courante Cependant vdi 36 renvoie bogue le type de marqueur diminu de 1 et Basic 1000d ajoute 1 cette valeur MARK x y xi yi Commande Trace un ou plusieurs marqueurs XVe 25 r el coordonn es relatives Exemple La commande mark trace les 6 types de marqueurs possibles Remarquer que la taille du point type 1 est toujours 1 x 1 t_height 6 for i 1 6 for j 1 6 m_type i m_height j 11 origin 90 i 4 88 j j 1 9 mark 0 0 text 5 j 2 just1 m_height text 5 j 6 just1 m_type next j next i Sortie 2565 ms Chapitre 18 Graphismes 417 Polyline Polyfill et Polymark Ces commandes transmettent les coordonn es des points sous la forme de tableaux A la diff rence des autres commandes graphiques seulement des coordonn es enti res sont accept es POLYLINE x k N p y j q Commande Ligne bris e POLYFILL x k N p y j q Commande Polygone plein POLYMARK x k N p y j q Commande Marqueurs N entier N gt 0 nombre de sommets x k y j nomi coordonn es relatives du premier sommet P q pas entre les l ments x et y respectivement La donn e des coordonn es x des sommets est effectu e par la m me m thode que pour les commandes copy ou sort Pour la donn e des coordonn es y on indique seulement le premier l m
363. ns Z U n est pas une variable locale mais un nom local cr par access qui se comporte comme une variable indic e et permet d acc der au tableau T du programme appelant On a les correspondances appel proc dure T 1 U 0 T 2 U 1 T 100 U 99 Apr s le retour de la proc dure les noms T et U reprennent leurs anciens r les Le tableau T pass par adresse est modifi mais U qui a t pass par valeur reste inchang var T 100 U 1200 Z T 1 U print U conc i 1 100 of T i 250 Chapitre 12 Labels Sous programmes stop Z procedure access U 99 index T local index i for i 0 99 U i T T T 1 next i return Sortie 1355 ms 1200 1200 1199 1198 1197 1196 Passage d arguments par nom Voici maintenant un exemple o l argument n a pas une valeur mais est un simple symbole Dans la proc dure les 1 sont remplac s par le symbole C est le passage d arguments par nom Sy sin Sy cos Sy exp stop Sy print 1 1 G 1 1 return Sortie 200 ms sin 1 0 8414709848 cos 1 0 5403023059 exp 1 0 2718281828 E 1 Le passage d arguments est en r alit toujours par nom ce sont les ins tructions donn es dans le sous programme qui permettent l utilisation du passage d arguments par nom comme un passage par valeur ou par adresse Structure des sous programmes Points d entr e des sous programmes Les points d entr e des fonctions et proc dures sont les lignes comportant
364. nsemble est repr sent par un deux ou trois t_ l ments La table suivante donne les types des t_ l ments Elle indique par exemple que le velsg a b est cod par la concat nation de 2 t_ l ments eset 2 mkx a amp eset 103 mkx b velsg a b c a 1 a b 2 3 Ja b 102 3 a b 2 103 Ja b 102 103 a b c sic gt 0 4 5 6 a b c sic lt 0 104 105 6 Codage d un c_ensemble Chaque celsg d un c_ensemble est repr sent par un ou deux t_ l ments Voici les codages utilis s celsg a b a 8001 a b 8002 8003 Ja b 8102 8003 a b 8002 8103 a b 8102 8103 ELEMENTN E V_fonction Nombre de t_ l ments du t_ensemble E ELEMENTY E k V_fonction Type du k i me t_ l ment du t_ensemble E ELEMENT E k C_fonction Exprcha ne du k i me t_ l ment du t_ensemble E ELEMENTV E k V_fonction Expr du k i me t_ l ment du t_ensemble E CDR E C_fonction Renvoie le t_ensemble obtenu en tant le premier t_ l ment du t_ensemble E E ne doit pas tre vide 114 Chapitre 9 Notions de base E exprcha ne ayant la structure d un t_ensemble k entier k gt 1 Les fonctions elementn elementy et element permettent de d composer com pl tement un t_ ou c_ensemble Exemple Lorsque les l ments d un c_ensemble sont des textes imprimables la proc dure printc permet d crire sa d composition c cset seul un six printc c stop printc procedure cha
365. nstante 77 8 104 d Euler 383 cont 291 462 contenu 291 contf 292 contrl 441 control 10 152 22 3 lettre 12 22 3 convergents de x 277 conversion 208 13 de base 77 126 8 209 en complexe 340 en flottant 340 en forme exacte 276 8 convivialit 8 coordonn es 375 curseur 121 graphiques 400 coorpoly 376 copie 213 5 bloc 463 6 cran 125 136 466 7 fichier 169 tableaux copy COPY 43 copy 69 214 cos 343 364 cosh 345 couleur 120 402 4 507 courbe 378 80 408 CR 12 23 4 crochets croix 160 crscol 462 crslin 462 cryptographie 3 201 211 csegment 110 194 cset 109 111 csrlin 121 462 cubique 378 cursc 121 128 441 462 curseur 121 123 4 462 cursh 122 125 6 130 1 137 8 152 241 441 cursl 121 441 462 cvd 212 cvi 211 cvl 211 cvs 212 cvx 114 209 cvz 210 cxabs 334 cxdiv 335 cxgcd 336 cxint 335 cxinv 336 cxmod 335 cxnorm 333 c_ensemble 102 109 11 113 194 c_fonction 73 107 D 21 31 damier 11 122 137 8 data 69 117 151 dataa 263 266 269 72 datac 263 266 9 datai 263 266 9 datav 263 266 9 date 29 238 41 date 74 241 date 74 238 425 dcom 304 d bogage 14 7 54 8 73 178 244 463 DEBUG 16 7 54 60 508 debug 242 DEBUG 16 54 5 DEBUG 54 dec 477 d claration char index lit var d codage cha ne 232 5 decode 75 233 decodec 233 decodei 233 decodelbl 233 decodelit 233 decodev 233 decodex 233 decodexc 233 deco
366. nt tudi es ult rieurement DIR F1 Liste les fichiers d un r pertoire La commande demande le chemin path de la fa on suivante ENTRER LE CHEMIN OU LIGNE VIDE EXEMPLE A DOC gt Ecrire alors path sans guillemets Si path est vide on prend le r pertoire par d faut Si path se termine par ou le Basic rajoute apr s path ce qui demande la liste de tous les fichiers du r pertoire Exemple Apr s avoir s lectionn Dir et entr b z pour path on obtient A REP EXX BLEU EYY b x z 458752 octets libres 42 Chapitre 6 Autres menus de l diteur 3360 PUBLIC Z La commande a donn d abord entre crochets le disque et chemin de r pertoire par d faut puis path Elle a crit ensuite la taille disponible sur le disque B La taille disponible n est crite que dans le cas des disques ou B et il s agit du disque dans path s il est pr cis Ensuite la commande a list tous les fichiers qui v rifient le nom path y compris les fichiers cach s avec leur taille Ici il n y en avait qu un Si on avait donn b au lieu de b z b aurait t transform en b qui liste tous les fichiers du disque B KILL F2 Efface un fichier Donner le nom avec l extension MERGE F11 Cette commande des menus Basic ou Edit Source rajoute un fichier la fin de la source MERGE M F6 Ins re le fichier devant la ligne M de la source qui doit tre choisie avant l appel de la
367. nt A stop P local datav 2f var A push A nolocal 1 pop return Sortie 20 ms 45 La valeur renvoyer est calcul e de fa on locale puis pouss e dans la pile en fin de proc dure La commande nolocal est effectu e ce qui permet de retrouver les variables globales L assignation 1 pop en clair A pop a lieu avec la variable A du niveau pr c dent Noter que dans le cas pr sent on pouvait utiliser pour P P 01 02 return DATAA ACCESS Nous examinons maintenant les elocaux dataa et access Ils permet tent de d finir des noms locaux acc dant des variables et index des niveaux pr c dents Exemple La commande local permet de d finir un nom local cl qui sert de pseudonyme de la variable globale c Nous dirons que c1 est un acc s de type char Apr s l assignation cl alpha la variable globale c contient alpha char c local dataa c access cl cl alpha nolocal print c Sortie 30 ms alpha 270 Chapitre 12 Labels Sous programmes Les nomi des listes dataa et access se correspondent et le nom local cr est du m me type que le nom global auquel il acc de Dans l exemple ci dessus il est n cessaire de sp cifier le type de c avant l appel de local et cl est du type char comme c Cependant les noms peuvent tre indic s de fa ons diff rentes Exemple var v 100 index j 2 5 local dataa v j 0 5 v 8 access vl 5 5 j1 2 vp La variable locale vl poss de 2 indices et correspon
368. nt en partie par la commande diteur ou Mem map du menu TOOLS La zone m moire allou e par le GEM au Basic allocation va de basepage himem Basepage Cette adresse est renvoy e par la fonction basepage Les 256 octets de la page de base sont suivis du programme Basic 1000d 120 koctets de code 68000 puis des tables fixes du Basic 50 koctets Help Fichier du programme d aide Biblioth que Codes en Basic Source Codes en Basic Tampon source Tampon de s_src octets permet de modifier la source sans d truire les zones m moires plus hautes La reprise de l ex cution d un programme reste alors possible Pile des proc dures boucles Zone de s_pro octets servant partir du bas stocker les appels de proc dures et partir du haut les indications de boucle Cette pile contient galement les descriptions des l ments locaux ainsi que les valeurs des index locaux Pile des ex cutions Zone de s_xqt octets servant empiler les textes d velopp s d instruc tions contenant des ou des commandes xqt Chapitre 21 C ur du Basic 10004 491 Pile des fichiers MEM Zone pour mem_files fichiers virtuels Tampon des menus Zone de s_menu octets pour la gestion des menus Table remember Elle comporte s_rem l ments Chaque lecture d un ancien l ment augmente sa priorit et une nouvelle entr e se fait avec la priorit maximum au d triment de l l ment le moins prioritaire qui est eff
369. nt pas typique Les indiquent que la factorisation n a pas t trouv e en 24 heures pollard Le r sultat de la factorisation est crit par la proc dure Les facteurs affich s entre parenth ses sont non premiers et non factorisables par la m thode Les autres facteurs sont probablement premiers M thode J M Pollard 1975 La m thode est probabiliste elle peut chouer tr s rarement Pour trouver un facteur premier a il faut en g n ral moins de a 5 secondes Cela donne un temps acceptable pour les facteurs premiers lt 101 Le nombre d it rations est renvoy dans pollard_iter Les variables index sauf pol lard_iter utilis s par la proc dure sont locaux Exemple Voici la factorisation de 267 1 et le nombre d it rations pollard 2 767 1 print timer timer s pollard_iter it rations Sortie 147573952589676412927 193707721 x 761838257287 timer 695 s 13719 it rations brison La proc dure brison factorise les grands nombres plus rapidement que pollard Beaucoup de place m moire est n cessaire les variables index utilis s ne sont pas locaux M thode J Brillhart amp M A Morrison 1975 Exemple Voici la factorisation de 267 1 et le nombre d it rations Dans ce cas la factorisation est plus rapide que par pollard brison 2 767 1 print timer timer nb d it rations iter Sortie 147573952589676412927 193707721 761838257287 timer 411 nb d it rations 6286
370. nte La fonction v_updwk effectue vraiment la sortie imprimante En fin de programme les fontes sont effac es de la m moire et la station de travail est ferm e if gdos 0 message GDOS non r sident stop endif himem max himem himem 30000 h V_OPNWK 21 x intout 0 y intout 1 print xmax x ymax y v_h h ift VST_LOAD_FONTS 0 i VQT_NAME 2 t_font i c VQT_NAME 2 print if c p 20 q VST_POINT p print Hauteur q pt t_height pixels c c VQT_EXTENT c x1 y1 x2 y2 x3 y3 x4 y4 x0 0 origin x0 100 text 0 0 c box x1 y1 x3 y3 c Aboj origin x0 x3 20 100 text 0 0 c VQT_FONTINFOY y1 y2 y3 y4 y5 x3 x3 100 line 0 y2 x3 y2 line 0 0 x3 0 line 0 y3 x3 y3 line 0 y4 x3 y4 t_font 1 Chapitre 20 Biblioth que STND 475 t_height 10 x3 x3 5 text x3 y2 5 ligne descendante text x3 0 ligne de base text x3 y3 4 demi ligne text x3 y4 ligne ascendante ift V_UPDWK ift VST_UNLOAD_FONTS 0 ift V_CLSWK stop Sortie xmax 959 ymax 1487 2 Swiss Hauteur 20 pt 41 pixels Fen tres OPENVW n x y Proc dure Ouvre une fen tre CLEARW n Proc dure Vide la fen tre n CLOSEW n Proc dure Ferme la fen tre n FULLW n Proc dure Ouvre enti rement la fen tre n INFOW n ch Proc dure Fixe la ligne d information TITLEW n ch Proc dure Fixe le titre WINDTAB V_fonction Adresse d une table entiers coordonn es absolues du point de contact ch exprcha ne 476 Chapitr
371. nte des inconv nients graves lors de l utilisation de la souris ou de PAES Pour vous viter ces d sagr ments Basic 1000d se remettra parfois en r solution resolution0 Exemple Un programme crit pour la basse r solution peut commencer par les instructions de cet exemple La r solution de lancement est remise puis si la r solution n est pas conforme le programme s arr te apr s avertissement resolution resolution0 if resolution message Basse R solutionlexig e Chapitre 10 Entr e Sortie 121 stop endif suite du programme A Le changement de r solution effectu par le Basic se situe au niveau du xbios Comme la station de travail VDI a t ouverte avec la r solution de lancement l utilisation des couleurs avec l autre r solution conduit de nombreuses bizarreries En voici un exemple apr s lancement en basse r solution Remplir une surface avec l index de couleur 1 puis lire l index de couleur d un des points de la surface avec vpoint qui quivaut un appel de la fonction 105 du VDI En basse r solution le r sultat est 1 comme il se doit mais en r solution moyenne on obtient 6 qui n est m me pas un index valable LOCATE c Commande Fixe la position du curseur sur l cran CURSC c Variable d tat Colonne du curseur CURSL 1 Variable d tat Ligne du curseur POS vircha ne CSRLIN vircha ne V_fonctions Position du curseur c entier 0 79 ou 0 39 si resolution
372. odr i 16 15 print next i stop INP k 176 Chapitre 10 Entr e Sortie OUT k V_fonctions Etat du p riph rique k entier num ro du p riph rique La fonction inp donne l tat du p riph rique k 0 3 en entr e La fonction out donne l tat du p riph rique k 0 4 en sortie Ces fonctions renvoient 1 si le p riph rique est pr t et 0 sinon Exemple Le programme demande le branchement de l imprimante p riph rique 0 et attend jusqu ce qu elle soit pr te if out 0 0 print Brancher l imprimante do ift out 0 exit loop endif PRINT n opt liste WRITE n opt liste LPRINT n opt liste Commandes Ecriture sur le canal n entier n 0 103 num ro de canal de sortie Nous avons d j vu les commandes print et lprint sans n qui crivent sur les p riph riques VBS et LBS En fait la commande print resp lprint sans n utilise le canal 102 resp 103 c est dire le p riph rique vbs resp lbs moins que ce p riph rique n ait t red fini par print_dev resp lprint_dev Ces commandes crivent sur le canal n lorsque n est indiqu On peut ajouter ou sans signification particuli re apr s n La commande write diff re de print par les points suivants Les s parateur et de la liste sont quivalents Entre les expressions crites il y a sortie 66 7 sur le cana
373. ogrammes des programmes En effet on peut r server procedure aux d buts de proc dures La commande procedure nue inactive sans liste ni est galement accept e De m me on utilisera function et function seulement en d but de V_ ou C_fonction o une telle commande ventuellement nue est de toutes fa ons obligatoire argument sera utilis dans le corps des proc dures ou fonctions Consid rons maintenant la commande function liste dans la proc dure T de l exemple ci dessus On remarque qu il est possible d utiliser des arguments ici 1 dans cette commande Cette commande pr pare son local implicite en d codant d abord dans liste les indices des tableaux s il y en a Autrement dit l instruction compte d abord le nombre d arguments repr sent s par liste Dans l exemple l indice 1 01 va donc tre calcul 2 Par contre il aurait t incorrect d crire function index E F 1 E car au moment du calcul de 1 E le programme ne conna t pas encore E Exemple Reprenons l exemple de la proc dure P qui assigne le deuxi me argument au premier Il est maintenant on ne peut plus simple var P A 45 print A stop P procedure access Y var A Y A return Sortie 15 ms 45 Exercice D terminant Nous avons d j donn une fonction dete qui calcule un d terminant partir de la liste de tous ses l ments Ecrire une autre solution en utilisant la commande function pour initiali
374. oire a b Le d codage de a TO b est effectu avec l aide de la pile du Basic pour viter toutes interf rences avec le programme appelant Cette m thode est pr f rable un programme de d codage comme hunt function local index x b e nodistingo x instrk arg 1 to b val left arg 1 x 1 D une part l utilisation de nodistingo au lieu de transformer arg 1 par lower peut modifier l option du programme principal D autre part si par malheur l appel de la fonction est quelque chose comme avec une variable b hunt b TO c xx le d codage prend b pour lindex local 0 et non pour le b du programme appelant Le programme machine est install dans le tableau d index hunt prg seulement lors du premier appel de la fonction hunt Le premier argument de la liste du call sera le plus profond dans la pile SP CALLA k CALLF k Commandes Appel lignes A et F k entier k 0 2 La commande calla k ex cute l instruction de code A000 k Les seize valeurs k 0 15 correspondent des fonctions graphiques La commande callf k ex cute linstruction de code F000 k Exemple calla 0 DO register 0 Ai register 9 print adresse des pointeurs fontes A1 print h adresse du bloc des variables de la ligne A DO VDI et GDOS 440 Chapitre 19 Appels syst me GDOS V_fonction Teste si le programme GDOS est r sident La fonction gdos renvoie 1 vrai si oui et 0 faux sinon Exe
375. olyn mes p1 p2 pk poly La fonction gcd p1 p renvoie le pgcd des polyn mes p1 Pn Le pgcd est d termin dans l anneau Z x y x y tant les litt raux des polyn mes ou Q x y suivant les coefficients des polyn mes Le calcul du pgcd est plus rapide dans le premier cas ainsi gcd red p1 red p2 calculs en entiers est en g n ral plus rapide que gcd p1 p2 s il est calcul en fractions Cette fonction est tr s optimis e dans le premier cas m thode des subr sultantes l g rement modifi e car elle est appel e implicitement dans les calculs sous forme factoris e pour r duire des facteurs premiers deux deux La forme gcd p 0 est admise et vaut p Exemple Comme les coefficients des polyn mes p et q ont de grands d nomi nateurs le calcul de gcd p q demande 25 fois plus de temps que celui de gcd red p red 4 r 2 51 1 2743 1 x 5 y x p r x x 7 715 2 51 1 2 43 1 Chapitre 13 Calculs exacts 309 q rx x 6 11 3 51 1 3 43 1 clear timer r gcd p q print mtimer clear timer r gcd red p red q print mtimer print r Sortie 44 s 39675 1540 x 2 x y 5 x 5 y INV A B x V_fonction Inverse de A modulo B A B poly litt ral par d faut x poly1 B Soit P le pgcd de A et B calcul par gcd A B La fonction inv renvoie le polyn me g n ralis en x U tel que U x A P modulo B et degf U x lt deg B x En g n ral U n
376. ombre flottant r el si possible approchant p Exemple complex i w float 2 i print w print float w Sortie 80 ms 0 1000000000 E 1 i 0 0 1000000000 E 1 FSUBS p xi fi V_fonction Substitution flottante Pp expr exacte xi litt ral fi nombre r el ou complexe La fonction fsubs p 1 f1 2 f2 An fn renvoie la valeur flottante de lexpression p dans laquelle on a substitu le litt ral z par f le litt ral z2 par f2 Tous les n litt raux de p sauf le litt ral complexe doivent tre sp cifi s dans l appel de la fonction Exemple La substitution flottante de la racine x 1 7 ne donne pas z ro par suite des approximations la diff rence de la substitution exacte effectu e par subs Si plusieurs substitutions dans une m me expression w doivent tre effectu es les calculs seront plus rapides si w est fournie fsubs sous forme produit de polyn mes comme ici En effet la forme produit est plus rapide pour la con version flottante parce que tous les nombres sont entiers mis part un facteur rationnel factor w 91 x 2 20 x 1 print fsubs w x 1 7 Chapitre 15 Calculs approch s 341 print subs w x 1 7 Sortie 100 ms 0 1776356839 E 14 0 SQR p V_fonction Racine carr e P nombre complexe La fonction sqr p renvoie p Exemple Calcul de 4 La valeur de la racine est obtenue par V 4 complex i print sgr sqr 4 Sortie 325 ms 1 0000
377. ommande gosub label provoque alors l ex cution du programme commen ant par le label Apr s l instruction return l ex cution reprend sur l instruction suivant la commande d appel mais on dispose aussi de return label pour revenir ailleurs Nous tudierons les deux sortes de SOUS PROGRAMMES proc dures et fonctions en m me temps par suite de leurs nombreuses ressemblances 66 99 Appel des sous programmes Voici maintenant la syntaxe des appels de fonctions et proc dures avec ou sans arguments L appel des fonctions est analogue l appel des fonctions internes du Basic nomfonc nomfonc listearg Appel des fonctions nomfonc label de C_ ou V_fonction listearg d signe la liste des arguments Le label nomfonc peut tre utilis dans les expressions Il provoque l ex cution du code Basic partant de la ligne du label Nous verrons comment crire ce code de 252 Chapitre 12 Labels Sous programmes sorte qu il calcule une valeur qui est utilis e dans l expression la place du nom nomfonc L appel peut transmettre listearg qui est un texte quelconque tel que les parenth ses ouvertes soient toutes referm es par sans tenir compte des parenth ses entre guillemets comme La s paration en arguments de listearg est tudi e plus bas Exemple Le nom ffact dans la premi re instruction appelle la fonction ffact qui calcule une valeur d pendant de l argument i print sum
378. oms nom Les noms repr sentent des objets manipul s par le Basic 1000d Ils doivent s crire sans espaces avec les lettres A Z a z les chiffres 0 9 et les 7 symboles _ Le premier caract re doit tre une lettre Apr s le nom on doit trouver soit un espace soit un caract re autre que A Z a z 0 9 ou 1 _ La longueur des noms doit tre au plus 32 caract res Chaque nom ne peut d crire qu un objet en Basic 1000d Ainsi vous ne pouvez pas utiliser une variable loop loop 28 parce que loop est une commande du Basic 1000d Les noms peuvent tre indic s sans que le nombre d indices d passe 15 Les indices doivent avoir une valeur enti re gt 0 D finitions du manuel Nous introduisons ci dessous la d finition de nomi pour d crire les noms indic s de fa on formelle Nous utilisons partout la m me pr sentation Les divers cas possibles sont s par s par Les gt signalent des commentaires Des exemples suivent la d finition Souvent la d finition fait appel d autres d finitions ici nom et ind auxquelles on se r f rera ais ment gr ce l index nomi nom ind ind nom La premi re forme est utilis e pour les tableaux de types char var index lit La d finition pr cise de ind est report e plus tard Exemple de nomi Les formes c et Mois i 3 sont aussi des nomi dim Mois 12 Semaine 7 Tablette 4 4 70 c Mois i 3 Espac
379. on d finie Si le nom est droite d une assignation il est toujours pris de type litt ral Apr s clear on a seulement les types implicites implicit char implicit index 4 Chapitre 9 Notions de base 93 Certaines commandes forcent le type d un nom et ce type peut diff rer du type implicite du nom Exemple Des types inhabituels sont attribu s I et C var I for C 1 8 next type I C Sortie 80 ms I est de type var C est de type index DIM sn sn Commande D claration de tableaux d index char et var sn nomi xsize nomi Le type donn nomi par la commande dim correspond son type implicite ou au type index si size voir index est donn D effet de la commande dim sur ce nom est identique la commande var char ou index correspondant au type Exemple dim z 2 y 9 16 j 7 type z y j Sortie 145 ms z est de type char 2 y est de type var 9 j est de type index 7 Initialisation Red claration Il est possible de d clarer plusieurs fois le m me nom de type var char index ou lit condition que ce soit toujours le m me type et les m mes di mensions Lors de la premi re d claration les index et les variables de type var sont mis z ro et les variables de type char sont vid es Lors des d clarations suivantes le Basic v rifie seulement le type et les dimensions mais les valeurs ne sont pas r initialis es Acc s unidimensionnel des tableaux Rangeons
380. on ne peut m me pas commencer Par contre certaines commandes comme print seront accept es en mode direct LABEL REPETE On ne peut pas r p ter un label par exemple phase procedure phase function index x LIGNE Erreur diteur Par exemple si k1 est un label Chapitre 8 Mise au point des programmes 65 run 1 kl au lieu de run kl 1 LIGNE DE DEPART Donn e de ligne incorrecte dans le d bogueur LIGNE TROP LONGUE Une ligne source ne peut d passer 3600 caract res environ LIMIT HIMEM L adresse fournie ne convient pas Une autre cause est que limit doit tre dans le programme principal pas dans une fonction comme dans ift init stop init function limit max return LIT VAR DIMENSION NON DEFINIE Se produit avec un tableau ou fonction non d clar par exemple s 3 1 LITTERAL COMPLEXE NON DEFINI Dans une fonction n cessitant les nombres complexes comme print log 1 l erreur se produit si le litt ral complexe n est pas d fini Pour corriger rajouter par exemple complex i LOCAL Il n est pas possible de d clarer comme local au m me niveau de sous programme deux fois le m me nom local index a local index a LONGUEUR D ENREGISTREMENT La longueur d enregistrement d un fichier acc s s lectif sp cifi e par la commande open n est pas gale la longueur totale des champs d finis par les commandes field L erreur est d tect e soit dans la commande field si les champs sont trop longs
381. onction div p q x renvoie p mod p q q Exemple Le premier calcul est effectu avec W factoris et le deuxi me avec une forme polynomiale factor W X 1 X 1 print mod W X 2 1 X print mod formd W X 2 1 print mod formd W A X 2 1 Sortie 170 ms X 1 X 1 2 A 1 A 1 DIVD p q x DIVN p q x MODD p q x MODN p q x V_fonctions Pseudo division p q poly q 0 litt ral par d faut x poly1 q La pseudo division euclidienne de p par q Bxr o m deg q x et B coef q x m s crit B xp Sxq R o l entier a est donn par a max deg p x m 1 0 S et R sont des polyn mes et deg R x lt m Le polyn me est renvoy par divn le polyn me R est renvoy par modn et le polyn me B est renvoy par divd et modd qui sont identiques Pour des polyn mes p et q compliqu s il est conseill d utiliser ces fonc tions plut t que div et mod qui n cessitent beaucoup plus de m moire et de temps Exemple La pseudo division de p par q est ici plus rapide que la division par un facteur 24 Le r sultat 0 correspond la v rification de Bp Sq R p 27 xx 3 3 Chapitre 13 Calculs exacts 307 q a 1 x 5 clear timer S divn p q x Ba divd p q x R modn p q x print pseudo division mtimer print S print Ba print R print Baxp S xq R clear timer R mod p q x S div p q x print division mtimer print S p
382. one m moire sur disque L extension est IMG par d faut La commande demande les adresses de d but et de fin c est dire le premier octet ne pas crire VERIFY F5 Cette commande relit le dernier fichier lu ou crit et v rifie que rien n a chang La v rification est impossible pour les fichiers source de type autre que Z Utilitaires menu TOOLS POKE F1 Lit et modifie la m moire Il faut d abord entrer au clavier s a S indique la taille et vaut B octet W mot ou L long La valeur par d faut est B Ces valeurs peuvent s crire en appuyant sur Control et une des touches B W ou L a adresse de d part par d faut la derni re adresse utilis e par TOOLS La commande indique la valeur qui va tre recouverte par le poke et attend l entr e de la premi re valeur poker valid e par CR puis des valeurs suivantes Sortir de la commande par Break ou en cliquant un bouton ou en entrant une expression ill gale par exemple une ligne vide QUERY F2 Examine la m moire La commande attend une entr e sous la m me forme que pour poke Elle donne le contenu du bloc de 128 octets commen ant l adresse a COPY F3 Copie d un bloc m moire La commande demande les valeurs de DE BUT FIN et DEST puis recopie les octets de DEBUT FIN 1 en DEST 44 Chapitre 6 Autres menus de l diteur FILL F4 Remplissage m moire La commande demande la taille voir s ci
383. onn es X Y dans un rep re orthonorm repr sentent un point du plan euclidien Les diverses fonctions et proc dures utilisent pour minimiser les temps de calcul les coorpoly av ay a de A o az ay et az sont des polyn mes tels que X a a et Y ay az Par exemple les coorpoly ab 1 b ou 2ab 2 2b repr sentent le m me point a 1 b Les coorpoly x y z sont dites r duites lorsque gcd x y z 1 Les coorpoly qui sont des coordonn es projectives limit es des polyn mes permettent de traiter les points linfini u v 0 Les droites sont d finies par la donn e de 2 points Par exemple la donn e de a b 1 et 1 p 0 d finit la droite passant par a b et de pente p Une droite peut tre galement d finie par dualit par le point M de coorpoly x y z Le point A az ay az est un point de cette droite si et seulement si Tag Yay Zaz 0 Notations Les notations suivantes sont communes tous les sous programmes ax ay az bx by bz expr Les points A az ay az B bx by bz d signent les entr es des diverses proc dures Les diverses grandeurs a sont crites sans indices ax dans les descriptions de programmes X y Z X1 yl y2 nomi de type var sortie Les points M x y z M z1 Y1 Z1 sont les sorties des proc dures Les noms x y sont utilis s en acc s et doivent tre d clar s de type var avant l
384. onne le type char ou index s il se termine par un symbole d clar par implicit Sinon le nom prend le type var Ensuite l assignation est effectu e selon le type du nom Exemple Les symboles et sont respectivement de types implicites char et index i 2 31 1 c zyx v 2 31 5 print c i v type c i4 v Sortie 200 ms zyx 2147483647 0 3037000500 E 10 c est de type char i est de type index v est de type var Assignation par Read et Data READ nomi nomi DATA El Ei RESTORE label Commandes Initialisation de variables et index La commande read initialise les variables et index avec les expr ou exprcha nes Ei des lignes data Le pointeur de lecture des data est mis sur le premier data qui suit label par restore label ou en d but de source par d faut Exemple char Z read Z read W I restore dat read J data un texte sans virgules der 1 X X 2 3 X dat Ce label ne pointe pas forc ment un data data 1000 118 Chapitre 9 Notions de base print Z print W print I J Sortie 140 ms un texte sans virgules 6 X 5 15 X 4 24 X 3 21 X 2 12 X 3 1000 1000 Les assignations effectu es dans cet exemple quivalent Z un texte sans virgules W der 1 X X 2 3 X I 1000 J 1000 Exemple Comme les expr donn es dans data sont calcul es on peut initialiser la variable a avec un polyn me Par contre les exprcha nes ne sont pas calcul es et linitialisation par data diff re de l
385. ont le m me effet lset c s c just1 left s len c len c La commande mid place s dans c partir du d i me caract re Le nombre de caract res ins r s est limit a caract res a lt 0 correspond une valeur infinie Les autres caract res de c avant le d i me et apr s le dernier caract re ins r ne sont pas modifi s Exemple A l aide de la proc dure ra on crit l instruction d insertion et la cha ne avant et apr s l insertion L ex cution des commandes 1set rset et mid lieu sur la premi re ligne de la proc dure ra u 123456789 c u ra lset c abc ra rset c efg ra rset c abcdefghijklm ra mid c 4 2 abc stop ra 1 print a arg 1 print gt u print gt c lt c u return Sortie 245 ms lset c abc gt 123456789 gt abc lt rset c efg gt 123456789 gt efg lt rset c abcdefghijklm gt 123456789 gt abcdefghi lt Chapitre 11 Programmation 205 mid c 4 2 abc gt 123456789 gt 123ab6789 lt MIRRORS s C_fonction Cha ne lue l envers exprcha ne La fonction mirror renverse la cha ne s Exemple Il faudrait retourner les caract res pour plus d exactitude print mirror Le boustroph don est print une fa on d crire print mirror alternativement de print gauche droite et print mirror de droite gauche Sortie 125 ms tse nod hportsuob eL une fa on d crire ed
386. ors on menu key stop do on menu pause 500 loop dans procedure pbox 0 100 100 200 146 Chapitre 10 Entr e Sortie return hors procedure pcircle 50 150 50 return ON MENU MESSAGE instr_message Commande Surveillance des messages de PAES instr_message instruction en Basic 1000d La commande on menu message sp cifie l instruction qui sera effectu e si un message est g n r par PAES Les messages concernent la gestion des fen tre et les demandes de retrac de zone Exemple Les appels AES concernent les fen tres aes 100 cr e les fen tres d identificateurs f et h Une fen tre est ouverte par aes 101 ferm e par aes 102 et supprim e par aes 103 Les coordonn es du rectangle int rieur de la fen tre sont obtenues par aes 104 Les variables d tat f_type et f_style fixent les attributs de remplissage pour le trac d une bo te par pbox Cliquer sur la case de pleine fen tre renvoie le message menu 1 23 Cliquer sur la case de fermeture renvoie le message menu 1 22 Le message menu 1 20 correspond une demande de retrac hidec aes 100 0 0 0 640 400 f gintout 0 aes 101 f 0 0 640 400 on menu message fen on menu aes 100 4 2 40 40 400 300 h peekw gintout aes 101 h 100 100 80 60 do on menu loop fen select case menu 1 case 22 aes 102 h aes 103 h aes 102 f aes 103 f cls stop case in 20 23 if menu 4 f Chapitre 10 Entr e Sortie 147 f_type 2 f_style 1 else f_typ
387. ots clefs comme variables locales Exemple La deuxi me commande qui essaie de cr er une variable locale ayant le nom d un l ment local du m me niveau de sous programme produit une erreur Local local index F local char F Sortie 70 ms XERREUR LOCAL local char 2 1ocal char F Litt raux Le cas des noms de litt raux est un peu d licat Exemple Dans le programme principal x est un litt ral qui rentre dans la variable W Dans la proc dure SP x est utilisable sans probl me comme variable on lui donne la valeur de W Cependant l impression de W on voit r appara tre le litt ral x Dans SP toutes les utilisations de x concernent la variable locale x Ainsi print deg W x y produirait une erreur W 1 x 72 SP type x stop SP local var x x W type x print x local x return Sortie 140 ms x est de type var x local x 2 2 x 1 x est de type lit L utilisation de litt raux locaux elle aussi peut produire des ph no m nes tonnants Exemple Dans cet exemple on utilise un litt ral local pour donner une valeur la variable globale W De retour dans le programme principal on obtient l erreur Local en voulant crire W 266 Chapitre 12 Labels Sous programmes La diff rence avec l exemple pr c dent provient du fait que les noms d un niveau inf rieur ne sont pas effac s il faut pouvoir les retrouver tandis qu apr s nolocal ou return les noms locaux sont perdus On a donc autoris
388. our chaque tape on obtient le type de point calcul le num ro de l tape et la valeur de la fonction et pour chaque meilleur minimum la valeur des param tres var par 10 accr 10 390 Chapitre 16 Biblioth que Math matique accr 1 1 accr 2 1 print simplex 2 10 10 par 1 accr 1 ftest stop ftest function access par npar 1 local index i value sqr sum i 1 npar of par i 1 1 2 0 0 0 0 0 0 0 return Sortie 137 s init 1 init 2 init 3 meilleur 0 1345362405 E 1 sym 4 loin 5 meilleur 0 1131370850 E 1 sym 281 loin 282 meilleur 0 1492325435 E 9 E 1 fin 299 0 0 1492325435 E 9 1414213562 E 1 1345362405 E 1 1345362405 E 1 1 0000000000 E 1 0O 1272792206 E 1 1131370850 E 1 0 2000000000 0 2000000000 1492325435 E 9 2110829576 E 8 0 1000000000 E 1 0 1000000000 1492325435 E 9 17 Exemples d application 392 Chapitre 17 Exemples d application Nous tudions d abord l aide du Basic 1000d un syst me d quations qui correspond un probl me d lectronique savoir r gler les phases d oscilla teurs pour liminer les harmoniques 3 5 et 7 Dans cette tude la biblioth que MATH est utilis e Ensuite nous vous proposons quelques exercices de program mation R solution d un syst me d quations Mise en forme du probl me Soit r soudre le syst me d quations sin 3x sin 3y sin 3z 0 sin 5x sin 5y
389. our initialiser les mots k 0 36 du tableau intin de l appel syst me vdi 111 On notera d ailleurs qu il est parfois plus simple d utiliser directement la commande vdi 111 que defmouse ch Le masque et le motif dessinent un carr de 16 x 16 pixels x et y sont les coordonn es du point d action relativement l origine du motif y 1 ou 1 couleur du masque couleur du motif masque motif eorne x e w w w N Q En tant que fonction defmouse renvoie la valeur de t ou 255 forme utilisateur correspondant son dernier appel Exemple Une forme utilisateur est d finie puis on fait d filer les 8 formes pr d finies de la souris C mkz 1 6 amp mk1 1 amp mkz 1 32 amp conc I 0 15 of mki 2 1 defmouse C forv i in 7 0 11 0 print c defmouse defmouse pause 1500 defmouse i nextv Lecteurs de disques r pertoires et fichiers On se reportera aussi au chapitre 6 o on trouvera quelques explications sur l organisation des disques ainsi que des claircissements sur la fa on de changer de lecteur exemple du disque virtuel 162 Chapitre 10 Entr e Sortie CHDRIVE lec Variable d tat Lecteur de disques par d faut lec Indique le lecteur C est soit un entier 1 16 soit une exprcha ne commen ant par une lettre de A P En tant que fonction chdrive renvoie un entier de 1 16 1 pour le lecteur A Exemple On crira pour passer au lecteur B une qu
390. ource Plusieurs m thodes sont possibles Par la commande n texte Corriger l erreur sur la ligne num rot e telle qu elle est crite dans la fen tre Basic dans le message d erreur Il faut ensuite appuyer sur Return pour que la modification soit enregistr e dans la source En retournant dans la fen tre Edit Source La case EDIT ou le cliquage du bouton droit sur la ligne num rot e ouvre la fen tre Edit Source avec le curseur positionn sur la ligne en erreur La correction de la ligne est alors enregistr e dans la source sans qu il y ait besoin de valider par Return D bogage Basic 1000d est dot d un syst me de mise au point des programmes tr s perfectionn qui rend la d tection d erreurs logiques de programmation rapide et ais e Comme exemple nous allons contr ler et v rifier l ex cution du programme que nous venons de vous faire diter Si vous n avez pas tap le programme comme les essais qui suivent facilitent l assimilation du langage Basic 1000d avant de poursuivre la lecture reprenez cette notice de fa on active en testant vous m mes dor navant tous les exemples propos s 16 Chapitre 2 Visite rapide du Basic 10004 Lancer le programme en s lectionnant la case DEBUG La fen tre DE BUG s ouvre Elle contient un damier de commandes et quelques lignes source Ce sont les lignes partir de la ligne ex cuter qui est pour le moment la premi re ligne Ces lignes sont toujours n
391. p pop Sortie 4085 ms 12 31 1988 23 59 58 01 01 1989 00 00 02 03 31 1988 10 20 00 TIME_Y y TIME_MO mo TIME_N n TIME_H h TIME M m TIMES s Variables tat Date et Heure TIME _D V_Fonction Jour de la semaine 240 Chapitre 11 Programmation y Entier dans mo Entier dans n Entier dans h Entier dans m Entier dans s 1980 2107 donnant l ann e 1 12 1 31 0 23 0 59 donnant le mois donnant le jour donnant l heure donnant les minutes les secondes Entier dans 0 59 donnant Les variables d tat time_y time_mo time_n time_h time_m et time_s per mettent de lire ou fixer individuellement l ann e le mois le num ro de la date les heures les minutes et les secondes respectivement La fonction time_d renvoie un entier dans 0 6 0 pour Dimanche 1 pour Lundi Exemple Le programme demande la date et l affiche Noter l instruction time_n 1 qui permet d viter une sortie erreur si la date est le 31 mars on ne peut pas changer le mois en mois d avril sans changer le num ro input Entrer la date jj mm yyyy j m y time_n 1 time_y y time_mo m time_n j char jour 6 mois 12 for i 0 6 read jour i next i for i 1 12 read mois i next i data Dimanche Lundi Mardi Mercredi Jeudi Vendredi Samed i data Janvier F vrier Mars Avril Mai Juin Juillet data Aout Septembre Uctobre Novembre D cembre print jour time_d time_n mois time_mo time_y C
392. p pg du menu BLOCK ou cs Help Met le curseur sur la ligne m moris e en haut de la pile et met l ancienne ligne M la place de cette ligne sur la pile Les autres marques de la pile ne sont pas modifi es Last mod du menu BLOCK ou cs Undo Met le curseur sur la ligne de la source qui a t modifi e en dernier Cette marque est ind pendante de la pile des quatre marques 4 La fen tre Basic 1000d 28 Chapitre 4 La fen tre Basic 1000d Le menu Basic 1000d est le menu de base qui s ouvre au chargement du logiciel Il permet d ouvrir les autres fen tres et d ex cuter des instructions du Basic en mode direct C est aussi l tat d attente dans lequel on revient apr s ex cution d un programme ou apr s Break Dans le chapitre d introduction nous vous avons pr sent la commande Dir du menu FILES Cette commande qui a d abord n cessit louverture du menu FILES revient dans la fen tre Basic pour y crire ses r sultats que l on peut consulter tranquillement La plupart des commandes de l diteur se comportent de la m me mani re avec retour dans la fen tre Basic On ne peut pas accepter que des commandes comme Dir crivent leurs r sultats directement dans la fen tre Edit Source qui est un reflet fid le de la source Lorsqu une telle commande y est effectu e il y a galement passage dans la fen tre Basic qui sert attendre que les r sultats aient t examin s avant de permettre le r
393. par exemple 3 2 Les carr s des valeurs de ces coefficients sont rationnels Pour repr senter exactement une telle valeur w nous utilisons sa forme QUA q qui est le nombre rationnel q sgn w w Par exemple w i a pour forme QUA q 2 75 La C_fonction quac q permet d crire la valeur exacte du nombre w partir de sa forme QUA q et la fonction quaf q sa valeur approch e flottante La fonction quasum permet de sommer exactement des nombres partir de leur forme QUA M thode Les coefficients 3j sont calcul s par la formule de l appendice 1 du livre de A P Jucys amp A A Bandzaitis 1965 Les coefficients 6j sont calcul s par la formule de Racah et les 9j comme somme d un produit de trois 6j eq 22 6 et eq 24 33 ibid Temps de calcul Pour divers j voici les temps de calcul en s des 3j 6j et 9j k j j 5 TE 000 basga FI nn a 55 J I I jijij i 33 6j Y 0 1 2 1 10 4 8 47 20 8 1 6 167 30 1 1 2 5 392 90 5 3 15 7 5879 quac q C_fonction Valeur exacte de la forme QUA q quaf q V_fonction Valeur flottante la forme QUA q 368 Chapitre 16 Biblioth que Math matique q r el exact forme QUA La fonction quac renvoie une cha ne contenant la d composition du nombre en produit _ pft o les p sont des nombres premiers s ils sont inf rieurs 10 et les e sont des entiers ou demi entiers La fonction quaf renvoie la valeur flottante sgn q 4 ql de la forme QUA q Exemp
394. pas la racine cubique r elle de 27 mais la racine cubique complexe d argument 7 3 Exemple Dans le programme suivant apparemment la m me expression est cal cul e de fa ons diff rentes L expression u contenant un exposant flottant est calcul e en 145 ms par exp 300 x1og 1 i Par contre w est calcul plus 104 Chapitre 9 Notions de base rapidement en 30 ms par multiplications comme chaque fois que l exposant est un entier 16 complex i w 1 i1 7800 u 1 i 7300 primaire Nombre exact ou flottant Index Variable de type var Litt ral Nom inconnu le type lit est attribu nom Constante Variable d tat V_fonction label de V_fonction expr expr Un index une constante ou une variable est remplac par sa valeur Un litt ral est gard tel quel sous forme symbolique Une V_fonction ou un label de V_fonction ventuellement suivi d arguments prend la valeur calcul e par la fonction expr ou expr o les crochets n indiquent pas un l ment facultatif mais sont r els prend la valeur de expr Voyons maintenant quelques cas particuliers d expr expr sens restreint Dans les fonctions alg briques comme formf p expr d signe seulement les expr exactes flottants exclus nombre flottant C est une expr dont la valeur est un nombre flottant r el ou complexe poly C est une expr pouvant tre crite sous forme de polyn me Par exemple A 2 B 2 A B nombre complexe exa
395. phab tique Pour chiffrer le gain en temps de la m thode pr conis e il suffit de com parer le temps d ex cution sans disques 3s celui avec disques 60 s et de compter le nombre d ex cutions peut tre une douzaine qui ont t n cessaires pour mettre en forme le programme c Et puis vinrent les neiges Chapitre 10 Entr e Sortie 179 cadd c les premi res neiges de l absence sur cadd c les grands l s tiss s du songe et du r el char dico 100 index P 100 F 100 i N W clear timer open i 1 mem c lettres cset A Z AE OE do ift eof 1 exit dico N 1 do ift eof 1 exit a input 1 1 ift upperi a not in lettres exit cadd dico N 1 a loop if dico N 1 lt gt W W 1 i search dico 1 N 1 1 P 1 cmpl if dico P i dico N 1 F P i F P i 1 else N N 1 sort dico 1 N 1 P 1 N 1 cmpi F N 1 endif endif loop close 1 print W mots N entr es mtimer mtimer if sure ins rer la disquette sortie alphab tique open o 1 vbs for i 1 N print 1 dico P i f next i close 1 endif print Tri en fr quence permute dico 1 N 1 P 1 permute F 1 N 1 P 1 sort F 1 N 1 P 1 0 if sure ins rer la disquettel sortie fr quences open o 1 vbs for i 1 N 180 Sortie Chapitre 10 Entr e Sortie ift modr i 100 0 print i criture mtimer mtim er print 1 dico P i f just1 F P i ff f next i close 1 endif 17 entr es mti
396. pitre 19 Appels syst me 445 Table des commandes du VDI Dans la table des commandes VDI suivante la liste maximum d argu ments est donn e pour chaque valeur du num ro de la fonction certains argu ments doivent tre mis gaux 0 ce qui est indiqu par un 0 La r f rence g107 renvoie la page 107 de G Szczepanowski 1985 et la r f rence b158 renvoie la page 158 de L Besle 1986 10 x y dx 0 a b S Affiche la cha ne S avec justification g125 b172 X y point d affichage dx longueur d affichage en pixels a b espace les mots si a 0 et caract res si b 0 intin 2 intin n et contr1 3 sont mis suivant la cha ne S Exemple On crit divers textes graphiques La proc dure deftext permet de modifier les attributs de texte char c cls hidem for i 1 10 j 2 i 2 ift i 1 j 0 ift i gt 6 j random 32 c j justr j 2 ift j and 1 c c amp gras ift j and 2 c c amp brillant ift j and 4 c c amp italique ift j and 8 c c amp soulign ift j and 16 c c amp esquiss ift j 0 c c amp normal deftext j 0 13 vdi 10 0 88 18xi 10xlen c 0 1 0 c next i deftext 0 0 6 vdi 10 0 290 100 0 1 1 Texte 6 deftext 0 2700 32 vdi 10 400 88 200 0 1 1 Texte 32 stop deftext procedure t a h 446 Chapitre 19 Appels syst me t_type t t_angle a t_height h return Sortie 1195 ms 9 x y XP YP Rectangle arrondi plein g125 b158 Identique prbox x y xp yP 8 X Y XP YP Rect
397. placements de k et sont bien s r effectu s sur le texte xqt vircha ne De plus si vircha ne est form de plusieurs instructions les rem placements de k et sont effectu s une deuxi me fois pour ces instructions except e la premi re Exemple La proc dure ex crit trois fois l argument 1 Dans la troisi me ligne de vircha ne il y a eu au total deux remplacements le premier avant le d codage de xqt et le deuxi me avant le d codage du print 232 Chapitre 11 Programmation ex 17 stop ex xqt print 1 print 1 print 001 return Sortie 45 ms 17 17 17 INSTR s sp al INSTRK s sp al RINSTR s sp al RINSTRK s sp al V_fonctions Position de sp dans s S Sp exprcha ne entier 32 a gt 0 La fonction instr cherche la cha ne sp dans la cha ne s partir du a i me caract re a 1 par d faut Si la cha ne est trouv e elle renvoie la position p du d but de la cha ne sp dans s un entier p gt 0 Si la cha ne sp n est pas dans s elle renvoie 0 La recherche distingue ou non les majuscules des minuscules suivant la valeur de distingo ou nodistingo La fonction instrk diff re de instr par le fait que devant et apr s la cha ne sp dans s il doit y avoir un symbole non alphanum rique ceux qui servent dans les noms du basic ou une extr mit de s instrk est particuli rement adapt la recherche de mots clefs lors de la construction d mulateurs Les fo
398. ple w 2 2715 EXPOSANT TROP GRAND Lors d un calcul exposant d un polyn me d passe 216 comme dans w x 2714 62 Chapitre 8 Mise au point des programmes w w 4 EXPRESSION ILLEGALE Echec dans le d codage d une expression par exemple print 2 EXPRESSION LOGIQUE Les expressions logiques doivent tre des entier 32 Par exemple w 2 33 and 1 FATALE Une anomalie dans les donn es zone dynamique des variables a t d tect e L acc s aux donn es est devenu impossible et le Basic effectue un clear Cette erreur peut survenir apr s une erreur m moire apr s un poke hasardeux FICHIER HELP SANS A Un fichier Help doit comporter des commandes de mise en page A B etc et en particulier au moins une commande A FICHIER PAS TROUVE Lors d une demande de lecture sur disque FIN DE BOUCLE SANS DEBUT Par exemple wend non pr c d de while FIN DE FICHIER Essai de lecture au del de la fin de fichier Exemple Le programme suivant est correct et lit la totalit du canal 1 c abc open i 1 mem c do ift eof 1 exit print inp 1 loop Sortie 50 ms 97 98 99 Par contre si on omet la ligne ift eof 1 exit qui arr te la lecture du fichier on provoque cette erreur FIN DE SOURCE Le programme ne trouve pas la fin d une structure if sans endif par exemple et essaie de d passer la fin de la source ou la commande end Ce type d erreur est d tectable en recherchant les d fauts d i
399. ploi utilisables par Help Certains pr f rent avoir une v rification de la syntaxe au moment de l entr e de ligne C est que souvent la correction d erreurs est malais e dans de nombreux langages de programmation Ce n est pas le cas en Basic 1000d La correction des erreurs au cours de l ex cution est extr mement simple En effet la ligne en erreur est pr sent e pour permettre une correction imm diate et on peut ensuite apr s correction faire repartir le programme du point o il avait t arr t Chaque ligne de l cran correspond une ligne de la source Lorsqu une ligne est trop longue pour tre crite compl tement une fl che appara t sur la derni re colonne de la ligne La longueur de ligne maximum permise est environ 3600 caract res L et T level F20 Le listing de la source pr sente usuellement des lignes cons cutives de la source Un autre type de listing crit uniquement les lignes qui portent un label ce qui permet de retrouver rapidement les sous programmes On passe d un type de listing l autre en cliquant sur la case F20 niveau lt T gt out ou lt L gt abel Chapitre 3 La fen tre Edit Source 21 On revient aussi au niveau T en cliquant le bouton droit ou en appuyant sur Return Indent F17 Le listing est indent ou non au choix le changement s effectuant en s lectionnant la case F17 En cas de No indent l affichage est nettement plus nerveux En cas d inden
400. points Y pour i 1 2 D 2 dans 0 1 et une constante R tels que R 1 lw y f 9 jw x f x lt R pour tout x 0 1 si et seulement si w x est le polyn me de degr D qui minimise w f sur 0 1 Le programme polyappr r sout le syst me s pour les inconnues R et les coefficients du polyn me w pour des points Y donn s choisis par polyappr L approximation pourrait tre am lior e en optimisant le choix de ces points Y Ce programme a t utilis pour obtenir les polyn mes approchant les fonctions exp log tan atn du Basic 1000d lorsque la pr cision est 10 ou moins Exemple Calcul d une approximation de EXX x e sinx x 0 1 La fonction EXX est approch e par un polyn me w x de degr 3 puis l erreur est d termin e par calcul de EXX x w x pour des valeurs x al atoires arr t par Break print Calcul d une approximation de EXX x exp x sin x sur 0 1 w polyappr EXX 3 x R print timer timer polyn me approch R pr s print w w print D termination al atoire de l erreur np 0 do S rnd S abs EXX S fsubs w x S np np 1i if S gt R Chapitre 16 Biblioth que Math matique 359 R S print Erreur gt just1 R 20 V rifi en np p oints endif loop stop EXX function value exp 1 sin 1 return Sortie timer 10 polyn me approch 0 6975591747 E 3 pr s w 284006 2081625 x 3 894791 2224375xx 2 60792
401. q 1 1 d3 add 1 di d2 add 1 di d2 addq 1 3 d2 addq l 3 d1 Chapitre 19 Appels syst me 437 dbra d0 cube rts Ce programme relogeable qui occupe 28 octets est implant dans la cha ne machine puis ex cut avec le registre a0 initialis sur l adresse du tableau d index cube et le registre dO sur 1290 qui correspond au plus grand cube en tier 32 On aurait pu initialiser les registres par pokels register 1290 0 0 0 0 0 0 0 ptr cube 0 Le call est quivalent for i 0 1290 cube i i 3 next i mais alors que la boucle en Basic prend 6 s le call est effectu en 15 ms index cube 1290 n 76007400720020c3468246815283448144815682568151c8ffee 4e75 machine mkz n 28 register 0 1290 register 8 ptr cube 0 call ptr machinef print cube 1234 123473 Sortie 105 ms 1879080904 1879080904 Exemple La liste plac e apr s l adresse du programme machine dans call permet de transmettre des mots et des mots longs par la pile Le programme en as sembleur suivant recherche une cha ne dans une zone m moire Il utilise comme entr e les donn es dans la pile SP L adresse de retour du sous programme A SP W longueur de la cha ne 6 SP L adresse de la cha ne 10 SP L fin de la zone 14 SP L d but de la zone En sortie le programme renvoie dans le registre DO l adresse o la cha ne a t trouv e ou bien 0 si elle est absente Le retour du sous programme peut se faire par RTS mais dans
402. qu une autre commande on error label n ait t rencontr e Apr s on error sans label l effet de la commande on error label est annul Une erreur provoque alors un arr t du programme Les fonctions err erl et era caract risent la derni re erreur rencontr e La commande error k simule l erreur k La fonction err renvoie le message d erreur num ro k Si k n est pas un num ro d erreur elle renvoie str k Exemple La deuxi me ligne en erreur provoque un branchement vers la ligne ex_err on error goto ex_err illegal ex_err print Traitement d erreur print Erreur num ro err err err print ligne erl peekz era stop Sortie 115 ms Traitement d erreur Erreur num ro 34 INSTRUCTION ILLEGALE ligne 2 illegal 246 Chapitre 11 Programmation Exemple Le programme suivant crit la liste des messages d erreur tri e dans l ordre alphab tique par sort nodistingo char erm 150 index t 150 do i i 1 ift str i err i exit erm i err i loop i i 1 sort erm 1 i 1 t 1 for j 1 i print justr t j 3 f erm t j next j ON BREAK GOTO label ON BREAK STOP ON BREAK NEXT Commandes Traitement du Break Control Shift et Alternate Les mots clefs goto et stop dans les commandes on break sont facultatifs et n en modifie pas le sens Apr s on break label le Break provoque un goto label en modes Run ou Debug au lieu d interrompre le programme Apr s on break sans l
403. qu un des arguments est flottant le r sultat est galement en flottant Les mots clefs min et max sans arguments sont utilis s avec d autres sens pour l acc s des tableaux et seulement max dans les commandes himem et limit Dans le cas des cha nes les fonctions analogues ont des noms diff rents min et max Exemple Le programme crit le nombre m dian parmi trois a 7 b 45 c 3 print atb c min a b c max a b c Sortie 25 ms 3 FIX p V_fonction Partie enti re de p CINT p V_fonction Plus proche entier de p LINT p INT p V_fonction Plus grand entier inf rieur ou gal p GINT p V_fonction Plus petit entier plus grand ou gal p P r el Les fonctions lint et int sont synonymes La table suivante compare les fonc tions fix cint int et gint p fix cint int gint 2 6 2 3 2 3 2 4 2 2 2 3 2 2 2 2 2 9 9 9 9 9 280 Chapitre 13 Calculs exacts Le r el p est un entier si et seulement si une quelconque de ces fonctions renvoie la valeur p La fonction cxint est l analogue de la fonction cint pour les nombres complexes Exemple Montre comment obtenir les nombres de la table ci dessus p 2 4 print fix p cint p int p gint p Sortie 50 ms 2 2 3 2 EVEN x ODD x V_fonctions Parit entier La fonction even resp odd renvoie 1 true si x est pair resp impair et 0 false sinon Exemple x 2 50 random 2 print odd x even x Sortie 20 ms 1 0 NUMR p D
404. que Comme expliqu plus haut voir ptrptr elle est form e d un millier de petites sous listes de longueur maximum Q dont la valeur est galement sortie Exemple Le programme suivant imprime tous les mots clefs du Basic dans l ordre alphab tique Remarquer que l on a utilis push et pop dans les deux premi res lignes au lieu d un simple C WORDS pour viter que le nom C se retrouve dans la liste Pour faire une sortie cran d router l impression par lprint_dev vbs PUSH WORDS 488 Chapitre 21 C ur du Basic 1000d C POP OPEN I 0 MEM C char D 1000 index P 1000 X 0 WHILE NOT EOF 0 LINE INPUT 0 D X X X 1 WEND X X 1 lprint D X SORT D 0 X 1 P 0 M 50 FOR I 0 X 1 3 M FOR J I MIN I M 1 X 1 lprint just1 D P J 1 30 IF J M lt X lprint just1 D P J M 1 30 IFT J 2 xM lt X lprint D P J 2 M 1 endif lprint next J lprint CHR 12 next I Sortie imprimante 30 s imprime la liste sur trois colonnes VARNUM V V_fonction Num ro de la variable V VARN k CHARN k Acc s aux variables V nomi de variable de type var ou char entier 16 k gt 0 La fonction varnum renvoie un entier dans 0 215 La variable V de type var resp char de num ro a varnum V est aussi accessible sous le nom varn 215 1 a Chapitre 21 C ur du Basic 10004 489 resp charn 2 5 1 a varn donne galement acc s des variables internes varn 7FFE 1 1 apr s comp
405. que Les attributs voir files sont w et l est l adresse du nom 3D l w Ouverture d un fichier existant sur disque w 0 lecture seule w 1 criture seule w 2 lecture criture l est l adresse du nom La fonction renvoie l identificateur du fichier ou un nombre n gatif si erreur 3E w Ferme le fichier d identificateur w 428 Chapitre 19 Appels syst me 3F w N 1 Lit N entier 32 octets du fichier d identificateur w et les implante partir de l adresse l On peut donner N lt 0 pour lire tout le fichier Renvoie le nombre d octets lus ou une valeur n gative si erreur 40 w N 1 Envoie les N long octets en l dans le fichier w Renvoie le nombre d octets transmis ou une valeur n gative si erreur 41 1 Efface un fichier disque Exemple L exemple suivant cr e la proc dure ki11_bis identique la commande kill du Basic save aaaaaaaa aaa 7 print files kill_bis aaaaaaaa aaa stop kill_bis procedure char c ift gemdos 41 ptr c print Fichier c pas trouv return 42 1 w w D place le pointeur d un fichier disque 43 1 w w Fixe ou renvoie les attributs d un fichier disque 45 w Renvoie un autre identificateur du fichier w 46 w w Red finit un identificateur de fichier 47l w Renvoie le r pertoire courant w 0 disque courant w 1 disque A w 15 disque O est l adresse d un tampon de 64 octets o la fonction crit le nom du r pertoire La fon
406. que le signe est converti en la s quence faisant passer l imprimante en mode exposant et le caract re 22 qui indique la fin de l exposant en la s quence retour l impression normale De m me avec l option I ce sont les caract res et qui sont convertis en instructions de passage en indice et retour en impression normale La cha ne C est modifi e par C change C chr 27 amp 81 chr 27 amp T Les conversions imprimantes utilis es conviennent aux imprimantes com patibles Epson Elles peuvent tre modifi es par poke dans une table accessible par systab On peut transmettre jusqu 8 octets adresses valeurs pour imprimante Epson ou compatible systab 46 caract re changer systab 47 3 27 S0 le premier octet est la longueur systab 56 22 systab 58 3 27 T evetah ORRA a3 Chapitre 10 Entr e Sortie 133 Codes envoy s l imprimante D autres octets sont modifi s avant l envoi vers l imprimante m me sans les options E et I Voici la table des conversions origine envoy 0 D A 19 k k autre n n inchang En pratique pour envoyer l octet k il suffit d ex cuter lprint chrp k o le inhibe l envoi du D A terminal USING u D terminant u exprcha ne Le d terminant using permet de formater la sortie des expr ou exprcha nes qui suivent u dans liste du print Formatage des exprcha nes La table suivante
407. que les trois points A B et C sont align s Exemple Soit ABC un triangle Pour tout point M du plan ABC on d signe par P Q et R les projections orthogonales de M sur les droites BC CA et 378 Chapitre 16 Biblioth que Math matique AB D terminer le lieu des points M tel que les droites AP BQ et CR soient concourantes Les coorpoly utilis es sont A a b 1 B c d 1 C e f 1 M u v 1 P A B C Q D E F et R G H I Les coorpoly da db dc dd de df et dg dh di repr sentent les points duaux des droites AP BQ et CR La condition de concourance quivaut la colin arit de ces points ce qui donne pour le lieu cherch une cubique Nota pour simplifier on a pos a b c 0 a 0 b 0 c 0 var A B C D E F G H I var da db dc dd de df dg dh di projorth c d 1 e f 1 u v 1 A B C projorth e f 1 a b 1 u v 1 D E F projorth a b 1 c d 1 u v 1 G H I droite a b 1 4A B C da db dc droite c d 1 D E F dd de df droite e f 1 G H I dg dh di W aligne da db dc dd de df dg dh di print Le lieu est l ensemble des points u v tels que print W 0 Sortie 2160 ms Le lieu est l ensemble des points u v tels que d 3 e 4 y d 3 e 3 xfxu 2 d 3 xe 3 xu y 2xd 3 e 2 xf 2xv 2 xd 3 xe 2 f x v 2 d 2 xe 5 u 2 xd 2 xe 4xfxv d 2 e 4 u 2 d 2 xe 4xv 2 d 2 xe 3 f 2 u 2 xd 2 e 3 xfxuxy 2 xd72 e 3xu xv 2 2xd 2 e 2 xf 3xv 2 xd 2 xe 2xfxv 3 2 xdxe 5xuxv 2 d e 4 xfxy 2 2xdxe 4xu 2 xv
408. quer que c est bit 31 j qui donne le bit du mot long i Le mot haut est modifi par word 0 1 puis par bit 15 0 272 Chapitre 12 Labels Sous programmes index i local datai 31303030 2 ptr i 10020 access word 1 local datai 31303030 32 ptr i 7030020 access bit 31 i random 2 31 print h i word 0 word 1 print B word 0 conc j 0 F of bit j word 0 1 print h i bit 15 0 print h i Sortie 220 ms 2F21185C 2F21 185C 10111100100001 0O O 1 O 1 1 1 1 O O 1 O0 O O O 1 1185C 185C Restriction dans le cas des index 1 2 et 4 Les acc s doivent partir du bit d un octet sinon l erreur Non Entier est g n r e Exemple Erreur car S 1 commence sur le bits d un octet index x4 S 10 local dataa S 1 access U Sortie 90 ms ERREUR NON ENTIER local dataa S 1 2 local dataa S 1 access U D claration simplifi e des l ments locaux PROCEDURE liste ARGUMENT liste FUNCTION liste Chapitre 12 Labels Sous programmes 273 FUNCTIONS liste Commandes D claration de variables locales et passage d arguments liste vci nomi vci nomi vci var char index size access Dans liste vci indique le type du nom qui suit Si vci est omis on prend le type du dernier vci donn ou le type var si aucun vci n a t donn Les nomi sont d finis par ces commandes comme tant des variables de types var ou char acc s ou index size locaux ventuellement indic s
409. ques expra signe terme signe terme La d finition expra repr sente une somme alg brique signe Exemple Le signe peut tre omis Chapitre 9 Notions de base 103 x y Z terme fact terme fact terme fact terme fact terme DIV fact terme MOD fact La d finition terme repr sente un produit de facteurs Exemple Le terme suivant 60 6 2 vaut 20 et est diff rent de 60 6 2 qui vaut 5 Les op rateurs multiplicatifs et div repr sentent la division enti re Les expressions a DIV b a b divr a b sont gales De m me a MOD b modr a b sont gales Les op rateurs div et mod ne sont autoris s qu entre a et b r els Ils ne correspondent pas aux fonctions div et mod mais seulement aux fonctions divr et modr fact primaire primaire signe primaire La deuxi me forme de fact qui repr sente une exponentielle peut tre suivie du caract re de code ASCII 22 qui indique en sortie l imprimante la fin d un exposant Ce caract re est ignor en entr e Cela rend les fonctions val et str inverses l une de l autre En exact l exposant doit avoir une valeur enti re dans 215 215 En flottant l exposant peut tre non entier et m me complexe Des expressions comme 100 5 734 sont converties automatiquement en flottant L expression 27 1 3 n est accept e que lorsque le litt ral complexe est d fini bien qu elle ait un sens en r el Sa valeur n est
410. r E local datai elementn E index i ift i 0 return for i 1 i print h elementy E i element E i next i return Sortie 100 ms 8001 seul 8002 un 8103 six La fonction elementv E k renvoie cvx element E k condition que cela ait un sens Avec elementn et elementy elle permet de d cortiquer un v_ensemble Exemple La proc dure printv permet d crire la d composition d un v_ensemble c vset a 1 72 1 10 printv c stop printv procedure char E local datai elementn E index i ift i 0 return for i 1 i print h using _ elementy E i print using elementv E i next i return Sortie 135 ms 1 a 2 2 a 1 2 1 Chapitre 9 Notions de base 115 103 10 Lorsque les t_ensembles sont utilis s comme listes car est analogue la fonction CDR du langage Lisp La fonction CAR s obtient par element E 1 Exemple Pour sortir les l ments d un v_ensemble sans progression on crit le premier l ment on l te par cdr et on r it re jusqu ce que l ensemble soit vide c vset 1 2 3 repeat print elementv c 1 c cdr c until c Sortie 50 ms 1 2 3 Exemple fichier disque Les nombres 11 et 12 et la cha ne abc sont sauvegard s sous la forme d un t_ensemble dans le fichier disque T MUL par save Le t_ensemble est relu par load et ses l ments sont affich s save t mul vset 11 12 amp cset abc char c c load t
411. r i 1 to 20 w sqr w next i for i 1 to 20 w w 2 next i print w Sortie 300 ms 0 2000000021 E 1 Apr s avoir vid la source si elle n est pas vide Case F13 New taper d abord la premi re ligne puis sur Return ou sur la fl che Taper de m me les trois lignes suivantes Noter que next s obtient par c N et for par c FD c est dire appuyer sur F puis D tout en maintenant la touche Control enfonc e puis rel cher Control Cette premi re frappe effectu e tudier l effet des fl ches Noter que vous ne pouvez vous d placer que sur les quatre lignes de la source et la ligne suivante Toute modification effectu e sur l cran sera galement effectu e dans la source Les lignes 5 7 du programme ressemblent aux lignes 2 4 on peut les diter par des manipulations de bloc Tout d abord d finir le bloc comme tant l ensemble des lignes 2 4 Appuyer pour cela le bouton gauche sur la ligne 2 puis tout en le maintenant appuy d placer la souris sur la ligne 4 ce qui dessine un rectangle en vid o inverse et rel cher le bouton Le bloc est alors visualis par des marques sur la colonne de gauche Remettre le curseur en fin de source s il n y est pas soit avec un click du bouton gauche mais sans d placement cette fois soit avec les fl ches R p ter le bloc case Recopy du menu BLOCK ou touche ca R Remonter le curseur et changer sqr w en w 2 dans la sixi me ligne Pour ce changement
412. r j de 1 n exposants variable Ci nombre rationnel exact Nous avions indiqu que les exposants des litt raux devaient tre dans 0 215 En r alit comme les exposants sont cod s par un mot non sign des valeurs dans 215 216 sont aussi possibles Les fonctions qui utilisent uniquement des formes d velopp es y compris de fa on interne fonctionnent correctement avec ces valeurs Par contre d s que des formes factoris es sont utilis es les r sultats peuvent tre faux Ainsi la factorisation d un polyn me contenant des exposants gt 215 est incorrecte car les exposants des formes factoris es sont limit s 215 Il est impossible de cr er directement un tel polyn me par ex emple par w X 2715 parce que l exponentielle exacte exige un exposant dans 25 215 k Codage d un produit de polyn mes Le produit de polyn mes P P i 2 est cod par longueur 1 mot s nombre de facteurs 0 lt s lt 65534 variable P nombre rationnel exact pour chaque facteur de 2 s s il en existe mot long nombre d octets du codage de P et ki variable codage du polyn me P 1 mot ki exposant De plus les P i gt 1 sont ordonn s dans l ordre de longueur croissante puis dans l ordre lexicographique pour les mots du codage Le premier mot s permet aussi de distinguer la forme produit des formes polyn me et flottantes 486 Chapitre 21 C ur du Basic 1000d Acc s au c ur du Basic 10004
413. r page imprimante LPOS V_fonction Position de la t te imprimante k entier 16 Les variables d tat page_width et page_length servent pour l impression de la source De plus page_width est utilis e par la fonction 1pos et donc aussi lors de la tabulation dans 1print Le compteur servant rep rer la position de la t te imprimante l1pos est g r comme suit Il est remis z ro apr s envoi des octets 0 12 ou 13 ou lorsque sa valeur devient gale page_width L octet 8 d cr mente sa valeur les autres caract res l incr mentent On notera que le compteur ne repr sente la position physique de la t te d impression que si des s quences de commandes ne sont pas utilis es et que si page_width correspond l imprimante utilis e Exemple La commande d impression 1print n envoie pas d instruction de change ment de ligne lorsque le compteur 1pos atteint la valeur page_width C est Chapitre 10 Entr e Sortie 125 l imprimante ou le programmeur qui doit s en charger Dans l exemple donner une largeur de page de 7 ne suffit pas pour imprimer des lignes de 7 caract res push page_width page_width 7 for i 1 5 lprint lpos next i page_width pop lprint page_width page_length Sortie imprimante 90 ms 0 3 6 2 5 80 59 HARDCOPY Commande Copie d cran La commande hardcopy utilise la commande syst me qui peut aussi s appeler par appui sur a Help Exemple L appel xbios 21 de la premi re instru
414. r un mot du texte ou l crire au clavier pour changer la clef Menu A LEVEL Liste seulement le sommaire ce sont les titres de niveau A B LEVEL F LEVEL Listent partir du m me point des niveaux diff rents PG UP PG DOWN Les cases Pg up F5 et Pg down F6 listent plus haut ou plus bas sans modifier le niveau FIND AGAIN Ces actions utilisent la clef La case Find T F7 cherche partir du d but la premi re occurrence du mot clef dans un titre La case Again T F17 cherche loccurrence suivante dans les titres Les cases Find 1st F8 et Again F18 ont des effets analogues dans tout le texte 36 Chapitre 5 La fen tre Help En cas de long programme il est possible que Find Again liste le d but du programme sans que le mot clef apparaisse Il suffit de rappuyer sur Again peut tre plusieurs fois pour le faire appara tre Lorsqu il n y a plus de mot clef la fin de Help est visible SWAP F19 M morise la page et r crit l ancienne page m moris e PG IDEM F9 Remet la m me page utile apr s changement de la clef BASIC F10 Quitte le menu Help et revient la fen tre Basic P gt S F20 Recopie le premier programme crit sur la page en fin de Source et fait revenir la fen tre Basic Pour recopier le deuxi me programme crit sur la page il faut d abord r crire la page avec ce programme en premi re position cliquer le bouton droit sur le programme On peut alor
415. re sortir une cha ne avec ce format elle n est pas sortie mais le texte de c est sorti Lorsque la sortie d un seul nombre est demand e on obtient galement la sortie des caract res non actifs de c situ s avant le deuxi me format de c Lorsque la sortie de plus de nombres que n en comporte c est demand e c est r utilis Les exemples avec using d m langent cha nes et expressions c _ amp HHHH_ T2 _ HHHH_ TO HHHH_72 _ _ J print using c A print using c 777 print using c 3 4 5 5 12 13 da 2345 mars print using d dimanche 9 print using d 1 10 print using d m 11 Sortie 240 ms amp HHHHTO HHHHTD HHHHTO amp 77772 amp 32 472 5 2 amp 5 2 1272 13 72 dimanc 9 mars l 10 mars m 11 mars SCREEN C_fonction Sauvegarde cran RSCREEN vircha ne Commande Chargement cran La fonction screen renvoie une cha ne de 37256 octets contenant des informa tions sur l cran et les param tres du VDI AES ainsi qu un mot de v rification checksum La commande rscreen remet l cran et les param tres VDI AES du moment de l appel de screen Elle n est ex cut e que si la cha ne donn e en argument est de bonne longueur et son checksum correct En pratique rscreen n acceptera donc que les cha nes cr es par screen Exemple L cran avec l ellipse et le menu est sauvegard dans la variable c Il est remis par rscreen apr s l effacement de l
416. remier degr en x la fonction renvoie la racine de l quation p 0 Exemple Le programme suivant r sout le syst me d quations 3x 7y 17 8x 2y 19 en liminant puis y entre les deux quations Noter qu on pouvait ici plus simplement utiliser sroot w sans pr ciser le litt ral forv v in x y w elim 3xx 7xy 17 8 x 2 y 19 v print v sroot w x y v nextv Sortie 100 ms x 79 62 y 167 62 COEFF p x k V_fonction Coefficient P expr X litt ral k entier 32 par d faut k 1 Si p ne Qk x F o Qk est une forme factoris e ind pendante du litt ral z coeff p x k renvoie Q4 Les limites de la somme sont donn es par a ordf p x et b degf p x Si k a b la fonction coeff renvoie 0 Dans le cas ou p est un polyn me les calculs sont plus rapides par coef deg et ord que par coeff degf et ordf Exemple Le programme suivant calcule les l ments de matrice de r entre des fonctions d onde de l atome d hydrog ne La fonction esum f b r qui renvoie l int grale de f r exp br dr utilise coeff pour obtenir le coefficient de r Ici Chapitre 13 Calculs exacts 291 coef ne conviendrait pas parce que f r n est pas un polyn me Le litt ral a repr sente le rayon de Bohr for k 2 5 print lt 2s r just1 k 2s gt esum 1 2 a 3 r 2 x 1 r 2 a 2 r k 1 a r print lt 2plr just1 k 2p gt esum 1 24 xa 5 xr 4 r k 1 a r next k
417. res Voyons maintenant les cha nes de caract res Le mot cha ne d signera l objet en m moire tandis que les mots exprcha ne elcha ne etc d finis ici concernent leur criture dans les programmes elcha ne texte variable de type char a a L f lal S a Z C_fonction label de C_fonction expr La premi re forme permet de donner un texte explicitement Les guille mets qui limitent le texte ne font pas partie de la cha ne Les guillemets doubl s dans texte sont transform s en guillemet simple Un nomi de type char deuxi me forme prend la valeur de la variable Les symboles a f et pren nent respectivement pour valeur les caract res de code ASCII 13 32 et 0 A l impression ils correspondent un retour chariot 13 et 0 ou un espace 32 Une C_fonction ou un label de C_fonction ventuellement suivi d arguments prend la valeur calcul e par la fonction La forme expr galement admise est convertie dans la cha ne de caract res str expr Cette conversion automa tique de expr n est pas toujours possible avec un comparateur in ou not in non parenth s Exemple On donne explicitement un texte contenant des guillemets c u abcd print c Sortie 15 ms u abcd Exemple Dans les deux premi res lignes la conversion en cha ne est correcte Dans la derni re forme a a t d cod comme cha ne et affich puis le symbole lt provoque une erreur dans la
418. res de codes 0 1F ont des actions sp cifiques au Basic 1000d pour la sortie sur l cran VBS Cependant une grande compatibilit avec la sortie CON a t conserv e L appel de l mulateur VT52 du syst me reste de toutes fa ons possible par le canal CON mais compromet la r utilisation de l cran Exemple La troisi me instruction modifie selon le canal CON la premi re ligne affich e Avec 3 s quences Escape elle d place le curseur vers le haut vers la droite puis elle efface la fin de ligne La commande close remet le canal VBS Apr s ex cution la ligne affich e ne peut pas tre r utilis e D placer le curseur sur a et taper une touche en mode insertion r v le les caract res crits en VBS par la premi re instruction print abcdefghijklm print _dev con print chr 27 amp A amp chr 27 amp C amp chr 27 amp K close Sortie 40 ms a Exemple Le programme donne deux fa ons d effectuer l effacement de l exemple pr c dent tout en pr servant la r utilisation de l cran Apr s affichage de la premi re ligne le code 1 d place le curseur vers le haut le code 3 vers la droite et le code 8 efface la fin de ligne La deuxi me fa on utilise simplement les s quences Escape du canal VBS print abcdefghijklm 130 Chapitre 10 Entr e Sortie print chr 1 chr 3 chr 8 print abcdefghijklm print chr 27 amp A amp chr 27 a
419. rint R Sortie 620 ms pseudo division 95 27 x 2 xa 2 54xx 2 a 27 x 2 135 x a 135 x 675 a 3 3 a 2 3 a 1 3 a 3 9 a 2 9 a 3372 0 division 240 27 x a 1 3 x 2 a 2 2 x 2 a x 2 5 x a 5 x 25 3 a 1 3 a 3 3 a 2 3 a 1124 DIVE A B DIVEZ A B V_fonctions Division exacte A B poly Posons R A B La fonction dive renvoie R si R est un polyn me Sinon elle renvoie 0 La fonction divez renvoie R si R est un polyn me coefficients entiers Sinon elle renvoie 0 Ces fonctions sont seulement 2 20 fois plus lentes que les multiplications de polyn mes et beaucoup jusqu 1000 fois plus rapides que la division A B Elles ne doivent donc tre nullement n glig es Exemple Comme p f a f b r est divisible par q a b r on peut calculer p q par dive p q On compare les temps de la division par dive divn div et On compare aussi avec le temps de la multiplication p q r 7 y z y 1 f r 1 x y 3 x 5 308 Chapitre 13 Calculs exacts p subs f x a subs f x b q a b r clear timer U dive p q print dive justr mtimer 7 ms clear timer U divn p q print divn justr mtimer 7 ms clear timer U div p q print div justr mtimer 7 ms clear timer U p q print justr mtimer 7 ms clear timer U p q print justr mtimer 7 ms Sortie dive 645 ms divn 10690 ms div 17645 ms 6915 ms 330 ms GCD p1 p2 pk V_fonction pgcd p
420. rinti t printi x printi y print2 a t print2 a x print2 t x print ord p ord p deg p deg p stop printi print ord p 1 ord p 1 deg p 1 deg p 1 return print2 print ord p 1 2 ord p 1 2 deg p 1 02 deg p 1 02 return Sortie 440 ms Pour p x 2 a x a 4xt ord p a 1 deg p a 4 ord p t 0 deg p t 1 ord p x 1 deg p x 2 288 Chapitre 13 Calculs exacts ord p y 1 deg p y 0 ord p a t 1 deg p a t 5 ord p a x 3 deg p a x 5 ord p t x 2 deg p t x 2 ord p 3 deg p 6 DEGF p x ORDF p x V_fonction Degr et ordre en x P expr xX litt ral Si p est de la forme p qx Ax x o est un polyn me d ordre 0 en x ord A x lt 0 q est ind pendant de x et a est un entier relatif les fonctions ordf p x et degf p x renvoient respectivement a et a deg A x Lorsque p est un polyn me d pendant de x ces fonctions co ncident avec ord p x et deg p x Exemple Ordre et degr en x de l expression a b o 7 m 12x15 x7 ax a b 1 p a b x 7 7 a x 5 12 x 15 a b 1 print ordf p x degf p x Sortie 130 ms HT 15 Dans toute forme factoris e p le facteur x est apparent La fonction ordf p x fonctionne en r alit sans restriction sur p et renvoie l exposant a Par contre degf exige la forme particuli re de p D Exemple La fonction degf sort en erreur pour O 1 x FN 1 x x1 27 p 1 x 1 x x 127 prin
421. risation que prfact mais crit la d composition sous une forme plus lisible en effectuant la transformation change de l exemple suivant Elle convient si on d sire seulement afficher le r sultat Exemple A l criture de P le litt ral phantom ne s affiche pas Le programme montre d abord comment am liorer la sortie par change puis comment extraire les facteurs premiers et leurs exposants P prfact 2 39 1 print P print change P x for i 1 polymn P M polym P i print norm M deg M next i Sortie 675 ms 3 72 2731 x 22366891 372 2731 22366891 3 2 2731 1 22366891 1 Exemple La factorisation de l exemple pr c dent est effectu e par prfactf print 2 39 1 prfact 2 39 1 Sortie 555 ms 549755813889 372 2731 22366891 Chapitre 13 Calculs exacts 285 Exemple Le plus petit diviseur de e s obtient par norm prfact e 0 e 2 40 1 print e norm prfact e 0 Sortie 65 ms 1099511627777 257 Performances de prfact La fonction prfact fonctionne en divisant e par 2 3 5 7 11 puis par les entiers croissants except s les multiples de 2 3 5 7 et 11 Elle convient pour trouver des facteurs inf rieurs 106 comme le montrent les temps de calculs de prfact e 0 en secondes pour obtenir le premier facteur g de e e g temps 23127 premier 7 259 1 179951 39 2107 254 1 843589 303 On trouvera dans la biblioth que MATH des proc dures mettant en uvre des d couvertes
422. rn ou F1 on peut ainsi suivre le programme dans toutes ses instructions SSsr F11 ou barre d espace Ex cute le pas pas seulement dans dans la source Les proc dures de la biblioth que sont alors invisibles elles sont visibles dans le pas pas F1 Arret F2 ou touche A Retour la fen tre Basic Il est alors possible d effectuer des comman des de l diteur des instructions Basic en mode direct et des modifications de source puis de revenir dans le d bogueur par DEBUG F29 et de continuer le programme Toutefois les modifications de source ne doivent pas tre trop importantes destruction des tableaux Elles ne doivent pas non plus modifier l adresse de l instruction de retour si on tait dans une proc dure ou une boucle La ligne qui tait ex cuter devient la ligne M de sorte que l on peut examiner facilement le programme en ouvrant la fen tre Edit Source F10 Break F3 ou touche B Le d bogueur demande un BREAKPT point d arr t Il faut indiquer au programme une ligne en tapant au clavier ligne puis Return On peut donner cette ligne en utilisant les labels syntaxe de la commande ligne Le programme s ex cute ensuite jusqu la ligne sp cifi e Brks F4 ou touche C Le d bogueur demande des points d arr ts BREAKPT Il faut entrer au clavier plusieurs fois Ligne Apr s le dernier point d arr t taper Return pour valider la commande On peut utiliser jusqu 16 points d arr
423. ror goto 244 on error stop 245 on menu 138 140 142 143 144 147 on menu button 138 144 on menu key 138 144 on menu message 146 401 on menu mouse 138 145 148 on menu timer 138 142 open 59 60 65 169 170 171 2 175 180 2 openw 475 516 op rateur logique 100 2 465 optimisation 387 90 or 100 461 ord 287 288 290 ordf 288 290 ordre valuation 286 8 lexicographique 110 220 313 484 486 origin 243 400 origine 400 originx 400 458 originy 400 458 oscillateur 392 others select out 175 177 431 out 176 431 ouvre le canal 170 overwr 22 pack 66 235 237 492 493 page 46 124 page de base 494 page_length 46 124 page_width 46 124 132 palindrome 317 parabole 295 6 paragraphe amp parall le 377 parit 280 partie enti re 279 335 imaginaire 333 principale 291 r elle 333 singuli re 297 partition 262 3 pas pas 16 55 57 passage d arguments 249 50 pause 238 pbox 144 146 401 413 pcircle 413 peek 227 30 cha ne 229 peek 482 peek 229 peekb 228 236 peekbs 228 peek1 228 236 peekls 228 271 peekw 228 peekws 228 peekz 229 pellipse 414 p riph rique 125 170 471 d entr e 150 permutation 217 220 permute 178 215 217 perpendiculaire 376 perpinf 376 pgcd 283 304 308 9 320 336 372 phantom 284 285 332 phistar 382 pi 237 277 341 pibox 413 pile 490 1 des appels 261 des arguments 260 utilisateur 224 7 pixel 120 plan euclidien 375 plot 407 Pochhammer 99
424. rovoque une erreur Instruction Ill gale effectuer un tri avec une relation d ordre quelconque calcul e par la fonction fcmp indiqu e dans le dernier argument Il faut alors donner D m me s il est nul L expression femp x y doit tre un entier 32 qui sp cifie la relation d ordre entre les expr resp exprcha nes x et y si S est de type var resp char selon la table suivante fcmp x y Yy gt ET gt 0 y X 0 y lt T lt 0 Le tri ordinaire avec fcmp omis est donc quivalent l utilisation de cmp pour fcmp si S est de type char et celle de la fonction sgni suivante si S est de type var sgnli function x y value sgn y x return Exemple Le programme range le tableau S de type char suivant trois relations d ordre Le premier rangement est effectu suivant la relation d ordre implicite Chapitre 11 Programmation 217 cmp qui d pend de distingo Le deuxi me est effectu suivant la relation d ordre de la fonction interne cmpi qui convient parfaitement pour classer les mots fran ais Le troisi me rangement est un exemple de relation d ordre sp cifi e par une fonction externe en Basic Les mots sont rang s suivant leur longueur puis suivant cmpi char S 14 index P 14 for i 1 14 read S i next i data t tes t s Et ocle odeur de saintet data Avoir l il sur dipe offre et c tera sort S 1 14 1 P 1 print CMP conc i 1 14 of ffff amp S P i sort S 1 14 1 P 1 0 cmpi
425. rrences 16 lignes FIND S F8 Recherche la cha ne S 48 Chapitre 6 Autres menus de l diteur FIND T F9 Recherche la cha ne T CHANGE S gt T F10 Change la cha ne S en T La cha ne S resp T d finit les zones 1 2 resp 1 2 a S 1111111 a S a F 222222 a F 333333 a S Ces zones ne contiennent ni a S ni a F mais peuvent contenir a Z Dans chaque r gion s par e par les a F il y a une seule zone qui commence au premier caract re ou au deuxi me si le premier est a S La commande de changement exige que le nombre de zones de S et T soit le m me Elle effectue alors le remplacement de la zone 1 par la zone 1 de la zone 2 par la zone 2 Exemple 1 2 Taper sur F1 et entrer comme cha ne S Taper sur F2 et entrer le deuxi me caract re est a Z comme cha ne T Taper ventuellement sur F4 pour que le changement ait lieu dans le bloc En tapant sur F10 on lance le changement de S en T ce qui coupe toutes les lignes du bloc contenant en deux apr s 66 99 Exercice Apluslong Comment peut on remplacer le label A par le label apluslong La difficult vient de ce que beaucoup de A ne doivent pas tre chang s L utilisation d un tel label est tr s malencontreuse Ex cution des programmes 50 Chapitre 7 Ex cution des programmes Un programme est form de lignes de forme g n rale label instruction commentaire Il y a
426. rticale 26 1 Ex cution en mode TRAP 27 Suppression de PAES 40 w Blitter w 1 demande la configuration du blitter 0 teint le blitter transferts par logiciel 1 active le blitter En retour on obtient la configuration ant rieure Les bits 0 et 1 sont significatifs bito Transferts par bit 0 logiciel 0 Pas de blitter 1 blitter 1 Blitter implant 436 Chapitre 19 Appels syst me Appels 68000 CALL adressepaire argwl Commande Appel 68000 argwl entier x16 W entier x16 L entier 32 D signent des arguments pass s par la pile SP REGISTER Constante REGISTER i Index 32 entier i 0 14 La constante register est l adresse d une table de 15 mots longs servant au passage des registres D0 D7 A0 A6 avant et apr s l appel On peut lire et crire dans cette table par register i comme si register tait un tableau d index 32 Les 8 premiers mots longs de ce tableau register i pour i 0 7 correspondent aux registres Di Les 7 mots longs suivants register i 8 pour i 0 6 correspondent Ai Exemple Le programme suivant en assembleur implante les cubes des entiers x de 0 d0 comme des mots longs partir de l adresse a0 Le registre dO sert de compteur et sur la ligne cube d1 vaut 3x d2 vaut 3x et d3 vaut x x augmentant d une unit chaque passage sur cette ligne moveq 0 d3 moveq 0 d2 moveq 0 d1 cube move l d3 a0 add 1 d2 d3 add 1 d1 d3 add
427. rtir de l adresse a l octets lus sur le canal n Exemple Le haut de l cran est sauvegard dans le fichier virtuel mem c puis ressorti sur l cran en 7 tranches L adresse de l cran est obtenue par xbios 2 open O 1 MEM c cursh 0 cls print conc i 32 255 of chr i bput 1 xbios 2 5120 close 1 cls open I 1 mem c for i 0 6 bget 1 xbios 2 ix5120 640 Chapitre 10 Entr e Sortie 175 next i close 1 i keyget INP n INP k V_fonction Lecture d un octet OUT n b OUT k b Commande Ecriture d un ou plusieurs octets n entier n 0 103 num ro de canal k entier k 0 5 num ro du p riph rique b entier 32 seul modr b 28 est envoy La fonction inp lit un octet sur le canal n ou sur le p riph rique k La commande out envoie un ou plusieurs octets vers le canal n ou le p riph rique k Les num ros k des p riph riques sont les valeurs de devid donn es dans la table des p riph riques de la commande open voir aussi bios 1 Les formes inp k et out k ne n cessitent pas l ouverture d un canal par open Par contre veiller ne pas omettre le signe dans les formes inp n et out n Exemple entr e Lecture du p riph rique 2 Console jusqu l appui sur la touche Escape do i inp 2 ift i ib stop print h i loop Exemple sortie Ecriture sur le p riph rique 5 Vid o print c for i 0 255 out 5 i ift m
428. s polyn me print A B CxD D E F F G HxH 1 Sortie 125 ms B 1 A C E G expr exprn exprn AND exprn exprn OR exprn vyw w exprn XOR exprn exprn EQV exprn exprn IMP exprn exprn exprc NOT exprc Les op rations logiques sont possibles uniquement sur des entiers 32 qui sont consid r s comme mots longs Noter la priorit des op rateurs logiques xor eqv imp and et or inf rieure celle de l op rateur not et l exigence d homog n it pas de and et or au m me niveau Voici les tables de v rit des op rateurs logiques La valeur 1 correspond vrai et 0 faux a b notb aandb aorb axorb aeqvb a impb 1 1 0 1 1 0 1 1 1 0 1 0 1 1 0 0 n 1 n 4 41 n 41 Chapitre 9 Notions de base 101 Exemples Les deux exprn suivantes sont identiques NOT a lt 7 NOT a lt 7 Les deux expr suivantes sont galement identiques a AND NOT b AND c a AND NOT b AND c Dans l expr pride AND prejudice OR sense AND sensibility les parenth ses sont obligatoires La forme suivante est ill gale car 1 2 n est pas entier 32 NOT 1 2 L op rateur non associatif imp ne peut tre r p t comme les op rateurs associ atifs and or xor et eqv Ainsi a imp b imp c a imp b imp c sont des expressions diff rentes o on ne peut supprimer les parenth ses Exemple Le programme suivant sort les tables de v rit des op rateurs and or xor
429. s bas Si votre r ponse tait bonne f licitations vous avez tout compris Si votre r ponse tait fausse expliquer pourquoi on n a pas crit pour R value C1xF 1 1 et reprenez la question sur les instructions R si on change R en R value C1xF 1 1 La fonction F N ne permet pas de calculer de tr s grandes factorielles en effet les arguments 1 occupent une tr s grande place et on obtient rapidement l erreur S_xqt Trop Petit i e la pile des arguments est trop petite Voici une autre fonction G N effectuant le m me calcul qui ne pr sente pas ce d faut mais dont le fonctionnement est plus d licat comprendre print G 5 stop G function i 1 if i 1 value 1 else value i G i 1 endif return Sortie 55 ms Chapitre 12 Labels Sous programmes 261 120 Examinez jusqu quelle valeur de N on peut appeler G N La limite d pend de la dimension de la pile des appels s_pro La variable i de la fonction G n est pas une variable locale cependant le fonctionnement de G est correct mais cela d pend de l ordre de calcul des facteurs du produit ixG i 1 Cet ordre est de gauche droite comme dans toute op ration du Basic 10004 Voici la r ponse la question sur les lignes R ex cut es par le programme lors du calcul de F 5 dans l exemple du d but de cette section XQT R value 5 xF 5 1 XQT R value 5 1 F 5 1 1 XQT R value 5 1 1 F 5 1 1 1 XQT R value 5 1 1 1 xF 5 1 1 1 1 REMEMBER n
430. s dans d autres Basics Il faudra donc aussi les modifier Voici deux mots clefs qui ont toujours des significations diff rentes 462 Chapitre 20 Biblioth que STND CONT En Basic 1000d cont renvoie le contenu d un polyn me La commande CONT reprendre l ex cution des autres Basics s obtient par la case DEBUG puis I J Run LOCAL Cette commande joue un r le analogue dans divers Basics mais la syn taxe tant diff rente il est n cessaire de la r crire Commandes absentes du Basic 1000d Comme indiqu dans l introduction elles peuvent en g n ral tre mu l es et STND en donne de nombreux exemples Impressions et Graphismes AT x y C_fonction Localise le curseur X y entier La C_fonction at d place le curseur colonne x et ligne y Elle renvoie une cha ne vide On peut donc l utiliser dans print en la faisant suivre de ou amp mais pas de Exemple print at 1 10 a at 0 10 b Sortie ligne 10 20 ms ba CRSCOL CRSLIN V_fonctions Position du curseur La fonction crscol comme pos et cursc renvoie la colonne du curseur et la fonction crslin comme csrlin et cursl renvoie la ligne du curseur Exemple print at 8 9 crscol crslin Sortie 25 ms 8 9 Chapitre 20 Biblioth que STND 463 VSYNC Proc dure Synchronise avec le balayage cran vertical La proc dure vsync quivaut xbios 25 Exemple D termine la fr quence de balayage cran vertical vsync
431. s du Basic Chacun peut ainsi se constituer des biblioth ques adapt es ses propres besoins Les nombreuses instructions de d codage du Basic 10004 rendent m me possible l criture de v ritables mulateurs d autres langages 8 Chapitre 1 Pr sentation du Basic 1000d Le Basic 10004 permet l criture et l acc s par Help des modes d emploi ou aide m moire Bient t vous explorerez le menu DEBUG C est un d bogueur tr s sophistiqu pas pas points d arr t sortie de boucle retour de proc dure valeur d une variable obtenue par simple click sur le nom de la variable etc qui rend la mise au point des programmes incomparablement plus ais e et rapide que le mode TRACE des Basics usuels Installer une application La proc dure suivante permet de lancer un programme en Basic partir du bureau Gem par simple double cliquage sur le nom du fichier source Elle permet galement le chargement du Basic et d un fichier d aide ou biblioth que par double cliquage sur ce fichier Copier sur une disquette le fichier 1000d prg et les sources en Basic des programmes d application d extension Z Booter le bureau ouvrir la fen tre de cette disquette et effectuer un simple click sur le fichier 1000d prg de sorte que le nom soit noirci Ouvrir le menu Options et s lectionner la ligne Installer une application On va vous demander le type de document Entrer Z et cliquer sur OK Ouvrir de nouveau le menu Options c
432. s limit que par la m moire de votre ordinateur Les additions soustractions et multiplications se r duisent aux m mes op rations sur les polyn mes La fonction normal w r crit le polyn me de sorte que tous les coeffi cients soient lt v forme normale Pour viter les d passements il faut l appeler de temps en temps La fonction pwr w k calcule w et renvoie une forme normale La C_fonction out_c w transforme le polyn me en une cha ne pour impression du nombre Le programme est assez simple avec v puissance de 10 Enfin la proc dure parfait p calcule et crit le nombre parfait corre spondant p Pour p 216091 on obtient un nombre parfait de 130100 chiffres avec un temps de calcul d une heure init parfait 44497 parfait 86243 parfait 132049 init out_c normal pur parfait Solution des exercices parfait 216091 stop lit z var vz index lz 1z 1000 vz 10 1z pack 500000 return function w local index i j char c j deg w 2z for i j 0 c justl coef w z i ift i lt gt j c right chr 30 1z amp c 1z cadd value c next i return function value 1 local var a b index i i 0 repeat a coef value z i b a modr a vz ift b vadd value b vzxz i 1 bxz i i i 1 until deg value z lt i return function a n local datav 1 var v while n ift modr n 2 v normal v a n divr n 2 ift n a normal a a wend value v return procedure p clear timer
433. s soit ex cuter le programme soit l ins rer dans ses propres programmes L criture possible seulement dans la derni re ligne s effectue comme dans la fen tre Edit Source Cependant les touches qui dans Edit Source fai saient changer de ligne ont maintenant un r le diff rent t ou c f Comme Pg up ou c Comme Pg down Home Comme A level s t Liste en levant le niveau e g de C level on passe B level s 4 Liste en abaissant le niveau Help Liste le d but du fichier Help au niveau F Chapitre 5 La fen tre Help 37 Esc Retour la fen tre Basic comme F10 s Esc Comme P gt S case F20 cs Help Comme Swap Menu LBR HLP L dition d un programme et sa mise au point n est possible que dans la fen tre Source Le menu LBR HLP contient les commandes permettant l dition des zones Help et Biblioth que en particulier le transfert de ou vers la zone Source sans passer par les disques Les commandes disques du menu sont tudi es avec le menu FILES Pour effectuer les transferts entre Help et Source il est n cessaire que la Biblioth que soit vide S gt L F1 Transf re la source dans la biblioth que la suite de l ancienne M gt L F2 Transf re les lignes 1 M 1 de la source dans la biblioth que la suite de l ancienne Rappelons que M d signe la ligne du curseur L gt S F3 Transf re toute la biblioth que en t te de la source New L F4 E
434. scendante 364 fontes 472 5 for 56 62 3 90 188 189 93 196 199 200 254 forc 56 109 194 196 200 254 format 81 83 84 86 134 243 format d criture 81 5 133 6 formate 459 format1 81 84 85 134 243 formatm 81 84 134 243 formatx 81 83 84 134 5 242 formc 333 formd 97 forme complexe standard 333 de la souris 160 1 graphique 412 5 non standard 284 323 QUA 367 r cursive 208 formf 98 116 325 332 359 forv 56 109 194 196 200 231 254 fplot 378 380 382 frac 479 fraction nombre exact approch e 276 continue 277 382 fre 66 235 492 fsel1 163 166 fsubs 340 fulldir 165 fullw 475 function 251 272 function 251 273 f_color 409 f_style 146 409 f_type 146 401 409 f_user 409 gamma 380 gammap 381 garbage collection 492 Gauss entier gcd 308 gcdi 372 gcdr 283 511 gcontrl 452 GDOS 405 407 411 413 416 419 440 443 458 470 5 gdos 440 473 GEM 11 gemdos 422 gemdos 48 494 gemdos 49 494 gemsys 482 g om trie 375 8 gestion des v nements 138 42 get 181 gint 279 gintin 452 gintout 452 global local 268 global 452 Goldbach 398 gosub 188 251 252 goto 185 231 242 245 6 248 250 253 goto calcul 231 grand 79 grand nombre 326 grandissime 326 graphismes 378 80 400 20 462 75 graphmode 144 404 440 gr gorien 459 guillemets 107 g get 466 g put 466 hardcopy 125 434 harmonique 392 haut de l cran 122 haut de la m moire 493 HELP 45 help 8 18
435. select case e Dans les commandes ift x if x while x until x l expression x est r duite suivant les conditions Exemple La commande complex impose la condition i 1 0 complex i if i72 1 anormal else print ok Chapitre 14 Calculs conditionnels Nombres complexes 329 endif Sortie 25 ms ok On notera que par contre les conditions ne sont pas utilis es dans les cas suivants e Dans les exprc qui font intervenir des in galit s e Dans print qui n effectue pas d assignation et calcule et crit les expressions sans tenir compte des conditions Exemple Le programme ci dessous fonctionne correctement Par contre on ne peut pas remplacer dans ce programme la troisi me ligne par case lt 3 qui produit une erreur Comparaison les membres de la comparaison doivent tre r els Cette m me erreur serait galement produite par l instruction if s 2 lt 3 cond s 2 2 select s 2 case 2 print ok endselect Sortie 30 ms ok Examinons maintenant comment s effectue la prise en compte des condi tions sur une expression q Les conditions crites avec un nombre e impliquent le calcul modulo e de tous les nombres dans ce cas les calculs sous forme factoris e sont interdits La valeur q est alors remplac e par mod q e Chaque commande cond p x implique la simplification q mod q p x Ce calcul est plus rapide si p est un polyn me de degr n de la forme p x c _17 1 Cest dire tel q
436. sence de k entier 16 Dans la sortie des nombres le symbole tilde indique que la forme crite n est qu une approximation du nombre L criture d un nombre rationnel exact sous forme d cimale est ainsi en g n ral suivie de et toutes les critures d un nombre flottant m me sous la forme m n comportent un pour rappeler que la repr sentation est approch e Il est cependant possible de supprimer l criture de en effectuant la commande notilde Exemple notilde print pi Sortie 65 ms 0 3141592654 E 1 L criture de est r tablie apr s clear et apr s tilde Les variables d tat tilde et notilde renvoient la m me valeur 0 quand s crit et 1 sinon Lorsqu on effectue une des commandes tilde k notilde k l effet ne d pend plus que de la valeur de k Si k 0 ou pair le tilde s crit Si k 1 ou impair le tilde ne s crit pas Le Basic 1000d poss de un grand nombre de variables d tat qui fonc tionnent de fa on analogue la paire tilde notilde L exemple suivant montre l int r t de ce type de fonctionnement Exemple NT est une proc dure qui crit son argument x sans tilde mais qui ne modifie pas l option tilde ou notilde du programme appelant Pour cela la valeur d entr e de tilde est pouss e dans la pile par push Avant le retour de la proc dure par return la valeur d entr e de tilde est t e de la pile par pop et remise dans tilde tilde random 2 print 1
437. ser un tableau indic local avec la liste d appel Calculs exacts 276 Chapitre 13 Calculs exacts Les fonctions tudi es dans ce chapitre effectuent des calculs exacts sans approximations Cependant certaines de ces fonctions comme min ou abs renvoient un r sultat approch en flottant si un des arguments est flottant On remarquera que les fonctions implicites x mod et div dans les expressions se comportent de m me en effectuant des calculs exacts ou flottants suivant le type des arguments Fonctions num riques Nous examinons ici principalement des V_fonctions qui renvoient un nombre exact EXACT p V_fonction Conversion en forme exacte P expr La fonction exact convertit un nombre flottant p en une forme exacte sans perte de pr cision La valeur obtenue pour p r el A2 avec A et a entiers correspond au codage des flottants La fonction accepte galement une expression exacte quelconque comme argument p Elle renvoie alors cet argument sans modification Exemple Le programme suivant d termine l erreur relative sur le calcul du nombre complexe elt en pr cision 10 Pour cela ce nombre est calcul en pr cision 20 et converti en exact La valeur w ainsi obtenue est ensuite consid r e comme tant la valeur exacte pour calculer l erreur relative complex i precision 20 w exact exp 1 i precision 10 format 5 print cabs w exact exp 1 1 w Sortie 1535 ms 0 9773 E 14 APPR P
438. shyg permet le d veloppement en s rie de nombreuses fonc tions usuelles La s rie 5 2 _ Gs s 1 zx 1 CRE GETE E NEN 1 x zi Chapitre 13 Calculs exacts 301 est ici calcul e l ordre 5 w shyg x 5 x s 1 1 1 print 1 x s str w x Sortie 740 ms 1 x 7s 1 s x 1 2 s s 1 x 2 1 6 s x s 2 3 s 2 x 3 1 24 s x s 3 6 s 2 11 s 6 x 4 1 120 s s 4 10 s 3 35 s 2 50 s 24 x 5 D terminant Elimination et Racines DET D n k V_fonction D terminant n entier n 0 999 k entier k 0 n par d faut k 1 D nom Le nom D est tel que D i j d signe une expression pour i et j entiers k n Le nom D peut tre un tableau d clar par var D M N ou index D M N ou une fonction 2 arguments Chaque D i j qui doit repr senter la valeur de l l ment D du d terminant est appel une fois et une seule par la fonction det et m moris dans la pile des variables internes L ordre d appel est D4 x Dk k 1 Dk 1 k Dan La variable d tat s_var doit donc tre plus grande que le nombre d l ments du d terminant n k 1 La fonction det calcule le d terminant Dk k cis Dk n Dates Din Si les D sont tous des nombres flottants r els ou complexes le calcul est effectu de fa on approch e Si les D sont tous des expressions exactes poly n mes ou formes factoris
439. si que sa syntaxe Nous pr sentons tous les mots clefs de fa on analogue La syntaxe est r sum e dans le titre Parfois plusieurs mots clefs sont regroup s pour une pr sentation commune Apr s le s titre s on trouve le type du mot clef Commande Variable d tat etc et une description sommaire Suivent la description d taill e et les exemples 74 Chapitre 9 Notions de base Les mots clefs peuvent s crire indiff remment en majuscules ou mi nuscules par exemple print PrinT etc Les autres noms particuliers votre programme par contre distinguent ou non les majuscules des minuscules Tout d pend des mots clefs suivants DISTINGO k NODISTINGO fk Variables d tat Contr lent la distinction majuscules minuscules k entier 16 Les mots clefs distingo et nodistingo peuvent s utiliser comme commande pour activer l option distingo ou nodistingo ou bien tre lus comme des variables Ils renvoient alors la valeur 0 si distingo est actif ou 1 si nodistingo est actif Il y a en Basic 1000d de nombreux mots clefs semblables d o la n cessit de la d finition suivante Variable d tat type de mot clef Les variables d tat peuvent appara tre en tant que V_fonction sans ar gument ou bien en tant que commande qui modifie la valeur de cette V_fonction Elles s utilisent comme des variables ordinaires mis part que l assignation d une valeur se fait sans signe gal par exemple base A
440. sont num rot es partir de 1 en vue de faciliter le d bogage Le v ritable num ro n de la premi re ligne crite est indiqu par le prgr va ex cuter la ligne n En t te de ces lignes peut se trouver une ligne xqt qui crit en clair l instruction qui va tre ex cut e en cas de ou pour l instruction xqt ou pour la commande du ift si la condition est vraie Rappelons que l cran peut tre modifi par le programme de contr le B_DEBUG Actions possibles Cliquer le bouton gauche sur le damier ou touches F ou taper une touche pour les commandes de d bogage Cliquer le bouton droit sur une ligne du programme pour ex cuter jusqu cette ligne fait une boucle si c est la premi re ligne Cliquer le bouton gauche sur un nom de la page pour obtenir le type du nom et sa valeur si c est une variable index ou fonction Si par exemple on clique sur divr dans divr psi 7 3 l expression est calcul e o psi est une Chapitre 8 Mise au point des programmes 55 fonction crite en Basic Noter toutefois que le cliquage d expressions contenant pop ou pop va ter un l ment de la pile et perturber le programme et que cliquer sur une fonction ayant en argument des noms pas encore d finis produit une sortie erreur Commandes de d bogage SSal F1 ou touche Return Ex cute l instruction de la ligne 1 et s arr te sur l instruction suivante C est le pas pas En appuyant seulement sur Retu
441. t Chapitre 11 Programmation 195 pas autoris s La boucle est l analogue de la boucle forv pour c parcourant l ensemble des cha nes du c_ensemble Exemple forc c in alpha A G print C5 is nextc Sortie 60 ms alpha ABCDEFG Boucles DO WHILE et REPEAT DO bloc LOOP Commandes de boucle DO R p te le bloc d instructions entre les commandes do et loop Sortie par la commande exit ou return dans un sous programme Exemple Le retour de la proc dure attend n a lieu que lorsque un octet est disponible sur l entr e s rie attend print inp 1 stop attend do ift inp 1 return loop REPEAT bloc UNTIL expr Commandes de boucle REPEAT R p te le bloc d instructions entre les commandes repeat et until Sortie en fin de bloc si expr est non nul ou dans le bloc par exit Exemple Il y a sortie de la boucle lorsque x prend la valeur 0 x 10 repeat 196 Chapitre 11 Programmation print x x x 1 until x 0 Sortie 140 ms 10 9 8 7 6 5 4 3 2 1 WHILE expr bloc WEND Commandes de boucle WHILE L ex cution du bloc entre les commandes while et wend est r p t e tant que expr est non nul Si expr est nul au premier passage le bloc est saut La sortie du bloc est possible par exit Exemple La boucle n est plus r p t e lorsque x prend la valeur 0 x 10 while x print x x x 1 wend Sortie 130 ms 10 9 8 7 6 5 4 3 2 1 Sortie des structures EXIT Commande Sortie de boucle
442. t entier 16 par d faut c 1 L argument c indique l index de la couleur du bord La valeur 1 indique que toute couleur diff rente est prise pour bord Exemple La commande fill est utilis e pour remplir la surface entre deux ellipses f_type 2 412 Chapitre 18 Graphismes f_style 7 ellipse 200 120 70 30 0 3600 ellipse 200 120 90 40 0 3600 fill 120 120 Sortie 810 ms Trac de formes Le trac de formes de bords d pend des attributs de ligne tandis que celui de formes de surfaces d pend des attributs de remplissage BOUNDARY n NOBOUNDARY n Variables d tat Trac du bord entier n 0 1 La valeur n 0 correspond l absence de bord et n 1 la pr sence de bord Dans le cas des formes de surfaces le bord est une ligne fine continue qui est trac e ou non suivant la valeur identique de ces variables d tat Chacune des instructions noboundary noboundary 0 boundary 0 supprime le trac des bords Pour remettre le trac des bords on a le choix entre les instructions suivantes boundary noboundary 1 boundary 1 Exemple Le programme trace une bo te et un disque avec et sans bord f_style 9 f_type 2 bord 150 0 bord 290 1 stop bord procedure index x b origin x 182 boundary b Chapitre 18 Graphismes 413 pcircle 50 110 30 pbox 0 0 100 68 return Sortie 725 ms Pour l utilisateur du GDOS seulement mentionnons que boundary et noboundary se comportent en tant
443. t Le programme s ex cute jusqu au premier point d arr t atteint RTS F5 ou touche D Ex cute jusqu sortir du sous programme en cours Par exemple S GOSUB B A W DER W X stop B W SUM I 1 10 OF Y I W SUBS W Y X return Apr s DEBUG le d bogueur va ex cuter la ligne S Appuyez sur Return le d bogueur va ligne B Appuyez sur D le d bogueur va ligne A 56 Chapitre 8 Mise au point des programmes SCRN F6 ou touche E Remet l cran du programme ses couleurs sa r solution et son curseur Vous pouvez alors admirer loisir ce que sort votre programme Attend ensuite une commande de d bogage Seules les commandes du damier indiqu es sont valables Pour les autres commandes il faut d abord revenir l cran de d bogage par NOP F10 ou touche K Noter que la touche Clr ou F21 permet d effacer l cran du programme FOIS F7 ou touche F Demande le nombre de FOIS et un point d arr t BREAKPT on peut rentrer Return sans rien d autre pour la ligne 1 Le d bogueur lance le pro gramme et s arr te lorsqu il a trouv la ligne BREAKPT le nombre de fois donn L instruction de la ligne BREAKPT aura donc t ex cut e FOIS 1 fois ou FOIS fois si BREAKPT est la ligne 1 CYCL F8 ou touche H Ex cute jusqu au retour l instruction de la ligne 1 Cette commande quivaut donc la commande F avec FOIS 1 et BREAKPT vide Return Cette commande peut aussi tre effectu e en c
444. t x y ou vpoint x y 106 t Effets de texte g160 b171 Identique t_type t 107 n Hauteur de la fonte g152 b188 Voir vst_point de la biblioth que STND 108 d f D but et fin de ligne g142 b157 Identique l_begin d l_end f 109 x y xp yp X Y XP YP m Copie de zone g177 b183 La fonction copie le rectangle x y xp yp vers X Y XP YP avec l option logique m Avant l appel il faut donner les adresses des structures MFDB par pokels contrl 14 MFDBsource MFDBdestination Voir la proc dure bitblt de la biblioth que STND 110 Copie structure MFDB g183 b185 Avant l appel il faut donner les adresses des structures MFDB par pokels contrl 14 MFDBsource MFDBdestination 111 f0 f1 f36 Nouvelle forme de la souris g207 b179 Voir defmouse pour la signification de f0 36 Exemple Le programme modifie la forme de la souris puis apr s appui sur une touche remet la fl che par defmouse Chapitre 19 Appels syst me 451 vdi 111 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1440 3024 1632 1056 15996 2064 1057 2066 41 06 4106 4106 4106 2068 1064 592 480 ift keyget defmouse 0 112 g f1 fg Nouveau style de remplissage g173 b163 Identique f_user g f1 fg 113 m Nouveau style de ligne 8138 b156 Identique 1_type m 114 x y XP yP Remplit l int rieur d un rectangle g103 b158 Identique pibox x y xp yp 115 u Voir g242 116 S Cadre pour la cha ne
445. t le r sultat doivent tre d clar es par var R b N o N est suffisamment grand N deg den nreg x 1 est toujours suffisant L expr nreg doit tre une sortie de intg2 et non nul D int grale de nreg est calcul e par intg3 sous la forme n ki b X Xo D Vi j log Bizy i 2 j 1 n est un entier renvoy dans b 0 C est aussi factorn R le nombre de facteurs de R b est un facteur multiplicatif de l int grale qui est renvoy dans b 1 Le i i me facteur de R factorp R i est un polyn me de degr k en y Il a exactement k z ros distincts yi pour j 1 2 k Le nombre yi j est rationnel si et seulement si k 1 Ces y j sont les coefficients des logarithmes de l int grale L expression B j dans le logarithme s obtient partir du polyn me en y renvoy dans b i qui est de degr lt k en substituant y par yi j intg4 nreg x C_Fonction Int grale de la partie logarithmique nreg en x nreg expr 372 Chapitre 16 Biblioth que Math matique litt ral La fonction intg4 renvoie une cha ne dans laquelle est crit le r sultat de l int gration gcdi A B C x y V_fonction Pgcd dans une extension alg brique X y litt raux A B poly en x y et autres litt raux C poly en y de degr k gt 0 Le polyn me C peut contenir d autres litt raux mais doit tre ind pendant de x deg C x 0 La fonction gcdi est utilis e par intg3 mais pr sente un int r t g n r
446. t ordf p x degf p x Sortie 55 ms 127 ERREUR DEVELOPPEMENT EN X K print ordf p x degf p x 2 print ordf p x degf p x Chapitre 13 Calculs exacts 289 COEF p xi ki V_fonction Coefficient P poly xi litt ral ki entier k 0 216 Les 2n arguments apr s p d finissent le mon me normalis ri x rE xo x din Le dernier argument kn peut tre omis par d faut kn 1 La fonction coef renvoie le polyn me Qk k2 kn ind pendant des litt raux x1 2 x tel que k k kn p NO X TI X E5 Xo x akn k1 k2 kn Exemple D termination des coefficients de Y puis de Y Z du polyn me ZT p EX T 9 X Z U p 5 X Z T 11 Y 2 9 Y X Z U print Pour p p p Y 0 p Y 1 p Y 2 P Y 3 p Y 2 Z 1 stop t print coef i tab 17 coef i return Sortie 320 ms Pour p 5 X Y 2 X 1 11 xZxTxY72 Z 9 Y U ou t dd tet coef p Y 0 X Z U coef p Y 1 9 coef p Y 2 5 X 1 11 Z T coef p Y 3 0 coef p Y 2 Z 1 1 11 T SROOT p x V_fonction Somme des racines poly 290 Chapitre 13 Calculs exacts litt ral par d faut x polyl p Posons p Anx An 12 l 4 A5 o les i 0 n sont ind pendants de x et n deg p x est le degr en x du polyn me p La fonction sroot renvoie Ay_1 An qui est gal la somme des racines en x de l quation p 0 Cette valeur peut aussi tre calcul e par coef p x n 1 coef p x n Lorsque p est du p
447. t s lectionne lorsqu il est mis un effet de style i effet gras fin italique soulign fil amp DH Par exemple t 01001 correspond l criture grasse soulign e a entier 16 angle d criture a angle d criture 0 normal 900 vers le haut 1800 vers la gauche 2700 vers le bas h entier 16 hauteur en pixels Les hauteurs utilisables vont de 4 32 h 4 mini 6 normal couleur 13 normal monochrome 32 maxi entier 16 identificateur de fonte Ce paragraphe n a d int r t que pour l utilisateur du GDOS En standard seule la fonte syst me t_font vaut 1 est disponible Sous GDOS il est possible 420 Chapitre 18 Graphismes de charger d autres fontes par vdi 119 ou vst_load_fonts de la biblioth que STND Les attributs peuvent alors prendre d autres valeurs que celles donn es dans les tables ci dessus En tant que fonctions les valeurs t_color t_angle t_height et t_font sont demand es au syst me par vdi 38 et concernent la station de travail courante Par contre comme le VDI ne fournit pas la valeur retenue de t_type la fonction t_type renvoie seulement la derni re valeur fix e TEXT x y ch Commande Affiche ch en mode graphique X y r els coordonn es relatives du point d action ch vircha ne Exemple La commande text crit en gras soulign t_type 1001 text 200 150 texte graphique Sortie 515 ms On trouvera commande vdi 10 un exemple de sortie d
448. t se trouver que dans une fonction et il ne peut y en avoir plusieurs ex cut es dans le m me appel REPERTOIRE Erreur lors de la donn e d un r pertoire dans chdir par exemple RETURN SANS APPEL La commande return a t trouv e au niveau 0 de sous programme Peut tre manque t il une commande stop la fin du programme principal ce qui fait que l ex cution a continu dans un sous programme R_FILES TROP PETIT Il y a trop de fichiers de type R Il suffit d augmenter la valeur de la variable d tat r_files SIZE La taille d un index est incorrecte Par exemple pas de taille 7 index 7 sept ou la taille doit tre 8 16 ou 32 dans copy index 1 g 10 copy g 0 3 1 g 1 1 SORTIE IMPRIMANTE L imprimante n est pas branch e SOURCE VIDE Essai de sauvegarder une source vide commande de l diteur SUBSTITUTION INCOMPLETE La valeur du litt ral y manque dans la substitution flottante w fsubs x xy 1 x 1 S_COND TROP PETIT Trop grand nombre de conditions Il suffit d augmenter la valeur de la variable d tat s_cond S_MENU TROP PETIT La place r serv e pour l arbre du menu est insuffisante Il suffit d aug menter la valeur de la variable d tat s_menu S_NAME TROP PETIT 70 Chapitre 8 Mise au point des programmes Erreur rare qui ne peut survenir que si une commande utilise un tr s grand nombre de noms non encore d clar s Il suffit d augmenter la valeur de la variable d tat s_name
449. t un flottant r el de type 1 Exemple Cas exact L interpr tation de re w comme partie r elle de w tombe l eau si on effectue ult rieurement la substitution a i par exemple complex i w 1 a ixb print formc w print re w print im w print cc w print cxnorm w Sortie 510 ms a 2 b 2 1 ixb a al a 2 b 2 1 bl a 2 b 2 1 a 2 b 2 1 ixb a a 2 b 2 1 Exemple Cas flottant 334 Chapitre 14 Calculs conditionnels Nombres complexes complex i w 1 3 i 4 print print print print Sortie 215 ms 0 3333333333 0 3333333333 0 3333333333 W re w im w cc w cxnorm w i x0 2500000000 0 2500000000 ix0 2500000000 0 1736111111 CXABS w V_fonction Valeur absolue exacte en complexe expr Consid rons d abord le cas o w est une expr exacte et posons y cxnorm w Si y est le carr d une expression rationnelle la fonction cxabs renvoie root y 2 qui correspond au calcul exact du module w Sinon il y a une sortie erreur Non Rationnel Lorsque w est un nombre flottant cxabs w est identique cabs w et correspond au calcul en flottant de w Exemple complex i print cxabs 3 4 i print cxabs 2 txi 1 t 2 print cxabs 1 i Sortie 220 ms 5 t 2 1 0 1414213562 E 1 CABS w CARG w V_fonctions Module et argument nombre complexe Les fonctions cabs et carg renvoient un nombre r el flottant m me lorsque le r sultat pourrait tre
450. t utilis s pour remplir ptsin Dans le cas de vdir ce remplissage est fait partir des coordonn es relatives ptx1 pty1 Autrement dit ptsin est initialis avec originx cint ptxl originy cint ptyl Les arguments inj et la cha ne S qui est plac e pour les fonctions k 8 116 et 10 servent remplir intin Les valeurs k 10 1 correspondent la fonction 11 sous fonction k du VDI Les sorties du VDI sont lisibles dans les tables intout et ptsout Exemple L appel de la fonction 32 change le mode graphique Ainsi vdi 32 3 est quivalent graphmode 3 Lorsque cet appel est effectu par vdif on obtient en retour le mode effectivement s lectionn print vdif 32 2 graphmode Sortie 25 ms 2 2 R entrance du VDI AES Les commandes vdi et aes comme toutes les commandes du Basic 1000d sont r entrantes peuvent s appeler elles m mes Ainsi on peut utiliser coul vdif 105 fx j fy t o les fonctions en Basic fx j et fy t appellent aussi des commandes du VDI Par contre l appel de la forme pokew ptsin fx j fy t coul vdif 105 444 Chapitre 19 Appels syst me est ex cut de la fa on suivante fx j est calcul et implant en ptsin Ensuite fy t est calcul mais si fy t appelle des commandes du VDI que se soit di rectement par la commande vdi ou indirectement par des commandes du Basic comme circle alors la valeur fx j en ptsin sera d truite Il faut don
451. tab 12 norm mono tab 20 for j 1 polyln mono z polyl mono j print z deg mono Z next j print next i Sortie 320 ms D corticage de 5 a 2 10 3 a x 2 5 9 x 4 mon me coef litt raux et exposants 5 a 2 5 a 2 10 3 a x 2 10 3 a 1 x 2 5 9 x 4 5 9 x 4 NUMF p DENF p NUM p 314 Chapitre 13 Calculs exacts DEN p V_fonctions Num rateur et D nominateur P expr Si p est une forme factoris e nous crivons ki M Di 5 o N Pi 4 50 P et D Ik lt o Pi sont des polyn mes sous forme fac toris e qui regroupent les facteurs de p suivant le signe de leurs exposants Les fonctions numf p et denf p renvoient les formes factoris es N et D respective ment Si p est sous forme polyn me les fonctions numf p et denf p renvoient N p sous forme factoris e et D 1 respectivement Les fonctions num p et den p renvoient respectivement N et D sous forme polynomiale Exemple On consid re une forme factoris e p et une forme polynomiale A p 173 23 x 1 2 x y x 2 y 3 z print numf p print denf p print num p print den p A 173 23 x 1 x y 3 print numf A print denf A print num A print den A Sortie 405 ms 173 23 y 3 x 2 x y z x 1 72 173 23 x 3 y 3 173 23 x 2 y 4 x 2 Zz 2 X Z z 173 23 x y 3 x y 3 1 173 23 x y 519 23 x 173 23 y 519 23 1 FACTORN p FACTORP p k Chapitre 13 Calculs exacts 315 FACTORE p k
452. tation il y a d calage la mani re du Pascal des struc tures et boucles Si la source est longue aller du d but en fin de source peut pren dre quelques secondes En effet l indentation n est pas conserv e en m moire mais recalcul e avant affichage No menu F16 L appui sur s F6 supprime ou remet le menu R solution s Tab L appui sur s Tab change la r solution Dans le cas d un cran mo nochrome avec No menu on peut repr senter jusqu 50 lignes de la source sur l cran Num ro de ligne Les lignes sont num rot es 1 2 3 mais seul le num ro des lignes M et D est affich C est l diteur qui se charge de la num rotation Ligne M C est la ligne du curseur Sa valeur est crite sur les cases F27 et F28 du damier Les cases correspondantes sont actives et permettent de modifier la valeur de M La syntaxe pour entrer la ligne qui ne se limite pas seulement aux num ros ou aux labels sera tudi e avec la commande ligne de la fen tre Basic Ligne D La derni re ligne de la source Le num ro D qui est donc aussi le nombre de lignes de la source est affich sur les cases F25 et F26 du damier cases non actives Espace m moire libre Le nombre k de kilo octets encore utilisables par la source est crit sur les cases F23 et F24 du damier Nombre de lignes modifi es Le nombre de lignes de la source qui ont t modifi es depuis la derni re sauvegarde est
453. te aes 101 et les coordonn es du rectangle int rieur sont d termin es aes 104 L origine est plac e au coin haut gauche et clip restreint l affichage l int rieur de la fen tre La commande on menu message permet la surveillance du cliquage de la case de fermeture de la fen tre On demande par circle le trac de cercles al atoires mais seul l arc dans la fen tre est vraiment trac par suite de l appel de clip De temps autre la fen tre est vid e par pbox le type de remplissage f_type tant nul Enfin apr s cliquage de la case de fermeture aes 102 ferme la fen tre et aes 103 la supprime hidec aes 100 2 50 50 150 100 f peekw gintout aes 101 f 50 50 150 100 aes 104 f 4 x peekw gintout 2 y peekw gintout 4 dx peekw gintout 6 dy peekw gintout 8 origin x y clip 0 0 dx 1 dy 1 1 on menu message fen do on menu circle random 150 random 100 30 random 50 if random 10 0 f_type 0 pbox 0 0 dx dy 402 Chapitre 18 Graphismes endif loop fen ift menu 1 lt gt 22 return aes 102 f aes 103 f cls stop COLOR n VCOLOR i Variables d tat Couleur de num ro n ou d index n i entiers 16 n 0 15 0 15 En tant que commande la syntaxe est signe gal permis color n rvb vcolor i rvb ou color n rvb vcolor i rvb rvb entier 16 Une couleur est cod e par ses proportions de rouge vert et bleu r v et b de 0 7 l aide de l entier rvb 28r 24v b Vo
454. te chercher la clef d abord dans les titres puis dans le texte si n cessaire par FIND du menu Clef La clef est un nom contenant seulement des lettres non accentu es des chiffres ou les symboles _ f et dans lequel les majuscules ont la m me valeur que les minuscules Lecture de deux pages Lors de la lecture vous pouvez buter sur un terme expliqu une autre page du mode d emploi Cliquer le bouton gauche sur ce terme pour le mettre dans la clef appuyer sur SWAP pour m moriser la page en cours et aller chercher l explication du mot par FIND Chapitre 5 La fen tre Help 35 Vous revenez la page initiale par SWAP et en rappuyant sur SWAP vous pouvez alterner entre les deux pages Test des exemples propos s Vider d abord la source cliquer sur New avant d entrer dans la fen tre Help Cliquer sur P gt S ou sur s Esc qui a pour effet de copier l exemple dans la source et de vous renvoyer la fen tre Basic Lancer ensuite l ex cution de l exemple en cliquant le bouton gauche sur Run Appuyer sur la touche Help pour reprendre la lecture du manuel Actions possibles Cliquer le bouton gauche sur le damier ou utiliser les touches de fonc tions F1 F20 avec et sans Shift ou des touches mouvements pour les actions du menu Cliquer le bouton droit sur une ligne du texte pour lister partir de cette ligne un niveau inf rieur si c est un titre Cliquer le bouton gauche su
455. te correctement Par contre Basic 1000d ne diagnostique pas qu un sous programme ter mine des boucles commenc es avant l appel Il continue la boucle dans le pro gramme appelant sans d piler l appel pr c dent Exemple Utiliser le d bogueur pour voir que le programme appelle continuelle ment Q sans d piler les appels Pour cela il faut revenir de temps en temps l diteur et examiner la taille de la pile Proc par la commande Quand la pile est pleine il se produit la sortie erreur do Q loop Q loop Sortie 120 ms ERREUR S_PRO TROP PETIT 2 Q VALUE Variable locale interne Valeur de la fonction La variable value permet d assigner sa valeur une fonction Un label de V_fonction peut prendre des valeurs exactes ou flottantes suivant l assignation de value Un label de C_fonction prend pour valeur une cha ne de caract res Exemple Ceci d finit la fonction rndf quivalente la fonction interne rnd qui renvoie une valeur al atoire flottante entre 0 et 1 La fonction n utilise pas d arguments mais on peut l appeler avec des arguments comme dans le troisi me appel Ces arguments sont ignor s print rndf 100 rndf 1 2 rndf non pris en compte stop Chapitre 12 Labels Sous programmes 255 rndf function value random 2 precision2 2 precision2 return Sortie 220 ms 0 3026658925 E 1 0 1880871835 E 2 0 7427453068 Exemple La fonction spc3 renvoie la cha ne form e de 3 espaces Si l
456. te v dive v expr c nomi de type char nomi de type var index non permis La commande cadd rallonge c droite Exemple c A cadd c b c print c c Sortie 20 ms c Abc Les commandes vadd vsub vmul vdiv et vdive effectuent des op ra tions l mentaires de la fa on la moins labor e possible A la diff rence des assignations les conditions cond sont ignor es et il n y a pas conversion suivant la variable d tat develop ou factor 224 Chapitre 11 Programmation La commande vdive effectue la division exacte lorsque v et expr sont des polyn mes Sinon formes factoris es ou flottantes vdive effectue la division ordinaire v v expr Exemple Dans vmul la condition z 2 a t ignor e La valeur v n est donc pas la plus simple possible cond x 3 2 w 1 x 72 W W W print w w v 1 x 72 vmul v v print v v Sortie 130 ms w 6 x 2 2 xx 7 v X74 4 x 3 6 x 2 4 x 1 Exemple Calcule l approximation de e donn e par 1 1 1 21 1 3 1 121 Les lignes 4 et 5 du programme sont quivalentes v v i w w v tout en tant tr s l g rement plus rapides w 1 v 1 for i 1 12 vdiv v i vadd w v next print w Sortie 130 ms 0 2718281828 E 1 Pile utilisateur On dispose d une pile pouvant contenir jusqu s_var variables s_var est modifiable Cette pile utilisateur est uniquement utilis e par les six com mandes et fonctions ci dessous PUSH expr e
457. tes menu 14 Touche clavier appuy e octet faible modr menu 14 2 8 code ASCII octet fort divr menu 14 2 8 code Clavier menu 15 Nombre de cliquages Chapitre 10 Entr e Sortie 149 ALERT i cm b cc rep MESSAGE cm Commandes Bo te d alerte SURE cm V_fonction Demande confirmation entier 0 3 i symbole d alerte 0 aucun 1 2 3 stop cm exprcha ne Message o les lignes sont s par es par Au plus cm peut comporter 5 lignes de 30 caract res b entier b 0 3 b bouton de sortie par Return 0 aucun 1 premier 2 deuxi me 3 troisi me cc exprcha ne Texte des boutons radio s par s par Le nombre de boutons est limit 3 et le texte de chaque bouton ne doit pas d passer 8 caract res rep nomi de type var ou index contient le num ro du bouton cliqu La commande alert trace une bo te d alerte et attend une r ponse Exemple Le programme affiche une forme d alerte avec symbole et bouton de sortie al atoires tant que le bouton Stop n a pas t choisi do 150 Chapitre 10 Entr e Sortie i random 4 j random 3 alert i Exemple avec le amp justc symbole amp i 17 amp et le bouton amp j j 112 Stop rep print rep rep ift rep 3 exit loop La commande message est une forme simplifi e de la commande alert sans symbole et avec un seul bouton OK Exemple message Exemplel de message La fonction sure crit le messa
458. tinue l tape 3 Milieu Si Wmax lt Wsym On estime que la direction n tait pas bonne et on calcule la valeur de la fonction wmi au point imi milieu de imax et G Si Wmil lt Wmax On remplace le point imax par imil et on continue l tape 3 Contraction On interpr te le fait que isym et imi soient plus mauvais que imax en pensant que imin est proche du minimum On remplace alors le simplexe initial par le simplexe homoth tique de rapport 1 2 par rapport au point imin et on continue l tape 2 En g n ral la m thode converge mais peut renvoyer un minimum local Il est donc conseill de l appeler plusieurs fois avec des points et accroissements initiaux diff rents simplex npar eps par 1 accr 1 f Fonction Recherche du minimum de la fonction f npar entier Npar gt 0 nombre de param tres eps petit r el eps gt 0 Pour la signification de eps voir l tape Converg de l algorithme Si on donne une valeur trop petite la fonction simplex peut boucler par 1 El ment d une variable indic e de type var par 1 par 2 par nbar doivent contenir en entr e les estimations initiales En sortie ces variables contiendront les coordonn es du minimum Noter que Chapitre 16 Biblioth que Math matique 389 cet argument est utilis en acc s Au lieu de par 1 on peut utiliser par 25 ou par 3 4 2 par exemple accr 1 El ment d une variable indic e de type var accr 1
459. tion du Basic 10004 7 op op stop op procedure print 16401 10 164 1 10 return Sortie 150 ms 164 10 174 164 10 154 164 10 82 5 164 x10 1640 164 10 14074678408802364030976 Le nombre d arguments peut tre variable dans un sous programme donn Dans l exemple suivant la fonction pw calcule le carr de son argument s il y en a un seul ou bien l l ve la puissance donn e par le deuxi me argument print pw 7 pw 7 3 stop pw function x if 0 1 value x 2 else value x 2 endif return Sortie 50 ms 49 343 Basic 1000d a t muni d instructions sp ciales en vue de faciliter la cr ation et le traitement de nouveaux objets math matiques Le traitement d expressions trigonom triques de la biblioth que Math d j mentionn utilise ces possibilit s Dans l exemple suivant la commande xqt permet d ex cuter un programme en Basic donn sous forme de cha ne de caract res c for i 1 to amp random 10 xqt c amp print i amp next Sortie 55 ms 1 2 3 4 5 On trouvera dans le Basic 1000d toutes les fonctions et commandes des Basics modernes y compris les fonctions graphiques et musicales et tous les appels du syst me La programmation par structures comme dans le langage Pascal est galement bien repr sent e en Basic 1000d Basic 1000d est capable d absorber un ensemble de programmes qui rendus invisibles se comportent comme de nouvelles fonctions et commande
460. tir de l adresse peek1s 436 ou xbios 2 print chr 42 500 bsave T IMG peekls 436 32000 print c bload T IMG peekls 436 i keyget cls Gestion s quentielle ou s lective Avant toute op ration il est n cessaire d ouvrir un canal par open En cas d criture sur disques close permet de terminer la modification physique sur les disquettes OPEN mode n nomdev rlen Commande Ouvre le canal n correspondant au fichier ou p riph rique nomdev en acc s mode mode exprcha ne La table suivante donne les valeurs possibles de mode qui sp cifie le mode d acc s du canal mode devty Mn monique WES 1 Input Lecture igi 2 Output Ecriture nouveau ou efface l ancien A 3 Append Lecture et criture rajoute des donn es y 3 Update Lecture et criture R k gt 0 Random Acc s s lectif entier 0 100 Chapitre 10 Entr e Sortie 171 Le symbole devant le num ro du canal n est facultatif nomdev MEM ch fcha ne Dans la premi re forme ch est un nomi de type char qui sert de fichier virtuel MEM Dans le cas du mode 0 open O 1 mem ch la variable ch est d abord vid e Dans la deuxi me forme nomdevw peut tre un nom de fichier disque ou le nom d un p riph rique pris dans la table suivante sauf MEM On crira par exemple Vbs sans distinction entre majuscules et minuscules nomdev devid p riph rique MEM k
461. tn next dete_detn dete_detn root 0 2 value det dete_dete dete_detn return else print xERREUR x NB D ARGUMENTS DE DETE stop endif function value pop return Sortie 190 ms x 2 2 x 9 Une autre application int ressante de la pile est de permettre dans les sous programmes des calculs sans d finir aucune nouvelle variable Cela vite les erreurs qui se produisent lorsqu on utilise le passage d arguments par nom quand ce nom contient par malheur le nom d une variable locale Un exemple de ce type est discut avec la fonction hunt pr sent e propos de la commande call D utilisation de la pile y permet le d codage d un argument de la forme a to b sans nouvelles variables Peek et Poke 228 Chapitre 11 Programmation PEEKB a PEEKBS a PEEKW ap PEEKWS ap PEEKL ap PEEKLS ap V_fonctions Peek sur 1 2 ou 4 octets POKEB a xi POKEBS a xi POKEW ap xi POKEWS ap xi POKEL ap xi POKELS ap xi Commandes Poke sur 1 2 ou 4 octets a adresse ap adresse paire xi entier Les fonctions peekbs peekws et peekls se terminant par s renvoient un entier sign Les fonctions peekb peekw et peekl renvoient un entier positif ou nul Les suffixes b Byte octet w Word mot 2 octets et 1 Long mot 4 octets indiquent la longueur lue Les commandes pokeb pokebs pokew pokews pokel et pokels cor respondent aux fonctions PEEK avec m me suffixes Les valeurs permises de
462. tnemevitanretla gauche droite et ehcuag etiord ed CMP s sp CMP1 s sp V_fonctions Comparaison de deux cha nes S Sp exprcha ne La table suivante donne la valeur renvoy e par la fonction emp s sp suivant l ordre lexicographique des cha nes s et sp Cet ordre d pend de la variable d tat distingo ou nodistingo voir min sp gt s 1 sp s 0 sp lt s l1 La fonction cmp s sp est donc l analogue de sgn sp s pour des r els s et sp La fonction cmp1 compare les cha nes suivant la relation d ordre des dictionnaires Les signes auxiliaires et la distinction entre majuscule et minus cule n interviennent qu en dernier ressort Elle quivaut la fonction cmp1_bis suivante 206 Chapitre 11 Programmation cmpi_bis function char x y value cmp upper1 x upper1 y ift value return value cmp x y return Exemple char s sp s t sp hiver print cmp s sp cmpi s sp Sortie 20 ms 1 1 LEN exprcha ne V_fonction Nombre de caract res La fonction len renvoie la longueur de la cha ne en octets Exemple print len 12345 amp chr 0 7 Sortie 10 ms 12 SPACES a SPC a C_fonctions Cha ne de a espaces entier 32 a gt 0 En Basic 1000d les deux fonctions space et spc sont identiques Elles sont quivalentes chr 32 a string a 32 ou string a Exemple Cr ation d une cha ne de 100000 espaces print len spc 100000 Sortie 385 ms 100000
463. tr s d favorablement Il est pr f rable temps de calcul d utiliser une valeur aussi faible que possible pour pack c est dire de l ordre de grandeur des variables manipul es par le programme pour viter l erreur m moire LIMIT adressepaire LIMIT MAX Variable d tat Haut de la m moire La variable d tat limit concerne le haut de la m moire utilis e par le Basic 1000d La zone r serv e c est dire la zone m moire limit himem est inu tilis e par le Basic de fa on interne et le syst me Exemple Le mot clef limit est utilis comme commande puis comme variable On peut poker librement dans la zone r serv e qui est ensuite supprim e par limit max limit 70000 pokels 70000 1 23456789 print peekls limit peekls limit 4 limit max 494 Chapitre 21 C ur du Basic 1000d Sortie 35 ms 1 591751049 BASEPAGE V_fonction Adresse de la page de base HIMEM k HIMEM MAX Variable d tat Haut de l allocation k adresse paire La zone m moire de basepage himem est allou e au Basic par le syst me La zone au dessus de himem est donc utilisable par d autres programmes Par exemple himem himem 100000 donne 100000 octets de plus au syst me qui sont pris sur l allocation du Basic La commande himem max laisse 4000 octets au syst me et donne au Basic la plus grande place possible La commande himem modifie limit si n cessaire Si apr s avoir diminu himem on effectue des alloc
464. tr tp 0 drive 0 if gemdos 36 tampon drive print disque inactif else print nombre de blocs libres tp 0 Chapitre 19 Appels syst me 423 print nb total de blocs du disque tp 1 print taille d un secteur tp 2 octets print tp 3 endif Sortie 2345 ms nombre de blocs libres 519 nb total de blocs du disque 711 taille d un secteur 512 octets secteurs par bloc 2 secteurs par bloc Table des fonctions Les num ros de fonctions permis sont en hexad cimal Les num ros 0 et 20 sont interdits et les num ros 31 et 4C d conseill s On a indiqu si des com mandes ou fonctions du Basic 1000d sont analogues Cependant les diff rences peuvent tre tr s importantes La liste d appel est pr cis e w indiquant un entier 16 et l un entier 32 1 Analogue keyget 2 w Comme print chr w mais les caract res crits ne sont pas r utili sables Par exemple la sonnette s obtient par ift gemdos 2 7 3 Comme inp 1 lit un octet sur l entr e RS 232 attente infinie 4w Comme out 1 w met l octet w 0 255 vers RS 232 5w Comme 1print chrp w met loctet w vers la sortie parall le 6 w Analogue keytest ou inp 2 si w FF ou print chr w sinon 7 Analogue keyget 8 Analogue keyget 91 Analogue print c o l ptr c mais les caract res crits ne sont pas r utilisables Al Analogue input 424 Chapitre 19 Appels syst me B Analogue inp 2
465. tre 7 Ex cution des programmes 51 Exemple En utilisant le num ro de ligne nextline et l adresse du code nextcode la proc dure B_TRACE crit le num ro et le texte de chaque ligne ex cut e La commande breakpoint enclenche le d bogage lorsque I prend la valeur 14 Noter qu il est n cessaire de d finir le type de I on aurait pu aussi le d finir dans une proc dure B_INIT sinon il serait pris de type litt ral for I 1 20 print I next I stop B_TRACE index I print nextline gt peekz nextcode ift 1 14 breakpoint return Sortie 1 gt for I 1 20 2 gt print I 1 B_DEBUG La proc dure B_DEBUG est ex cut e la fin de la sortie du listing dans la fen tre DEBUG F9 F19 ou F29 c est dire avant l attente de la commande de d bogage Si elle contient des instructions print l criture se fait dans la fen tre DEBUG Elle peut tre utilis e pour suivre des variables sans interf rer avec l cran de sortie Exemple Lorsque ce programme est lanc par RUN ou DEBUG la proc dure B_INIT est d abord ex cut e ce qui impose le d bogage par suite de la com mande breakpoint Ensuite B_TRACE est appel la fen tre DEBUG est crite B_DEBUG est appel et le d bogueur attend une commande avant d ex cuter la premi re ligne Si le pas pas est utilis appui sur Return le pro gramme B_DEBUG crit dans la fen tre DEBUG le texte de la ligne qui vient d tre ex cut e et la valeur de la vari
466. u 32 Par exemple il faut un entier 16 c mki 9876 INSERTION DE 19 OU 1A Erreur diteur Ces caract res qui marquent le d but et la fin de source ne peuvent tre dit s DL erreur peut se produire apr s chargement d un fichier non de types ASCII ou Z dans la source INSERTION INTERDITE Erreur diteur Par exemple apr s 125 124 en mode direct voir la commande n texte de l diteur INSTRUCTION ILLEGALE Nom de la commande mal crit ou proc dure absente Ce message est aussi g n r lorsque le Basic attendait un d terminant mot clef interne une commande comme to et step dans for ou un s parateur signe etc La cause de l erreur peut alors tre bien avant l endroit indiqu par Par exemple il manque le signe devant y dans print subsr 1 x x 2 y Une autre cause de cette erreur est la pr sence de donn es superflues la fin de la commande comme par exemple dans print 1 INTEGRATION Le d nominateur de la fraction int grer doit tre factorisable en fac teurs de degr un pour la fonction d int gration interne du Basic Cette res triction est lev e pour l int gration par les fonctions de la biblioth que Math Exemple print intg x 2 2 1 LABEL ABSENT Erreur diteur par exemple dans xyz s il n y a pas de label xyz LABEL ILLEGAL Par exemple cont procedure p car cont est un mot clef du Basic Si des labels sont en erreur l ex cuti
467. u 215 invm 356 irrationnel 330 372 irr ductible 95 joker 164 jour 238 41 julien 459 justc 202 justification 202 just1 202 259 justr 202 KEYBRD 45 keyget 45 123 151 222 keytest 45 123 151 KILL 42 kill 166 167 428 1 level 20 1 Labarthe 45 label 30 50 64 75 6 234 248 de c_fonction 107 250 de v_fonction 104 250 label proc 250 LBR HLP 37 lbs 125 132 171 176 lecteur 40 162 lecture 170 174 5 177 181 left 203 legendre 351 len 206 236 lenstra 352 let 115 lexicographique 110 220 313 486 library biblioth que library 349 459 libraryp 349 459 libraryv 349 459 ligne 25 6 B 25 6 D 21 du curseur 121 cran 28 graphisme 407 9 417 469 M 21 texte 28 9 lignes et F 439 463 468 modifi es 21 limit 44 65 228 492 493 494 line 408 447 line input 150 165 177 lint 279 Lisp 115 liste 109 des noms 487 r pertoire 164 6 source 46 lit 90 91 264 295 litp 106 litt ral 3 89 91 104 106 234 265 285 312 513 complexe 80 104 331 LOAD 42 load 168 LOAD IMG 42 load 115 169 LOAD H 42 LOAD L 42 loc 173 180 local 65 249 263 266 273 404 locate 121 lof 60 173 180 log 237 342 logi 343 log10 342 logarithme 281 342 3 logique 100 2 longueur canal 173 cha ne 206 enregistrement 171 182 entier 76 ligne 20 120 124 132 ligne texte 29 nom 72 page 124 loop do lower 201 439 lpeek 482 lpoke 482 1pos 124 128 1print 124 125 132
468. uches de fonctions La notation s F3 d signe l appui sur la touche de fonction F3 et Shift De m me les notations a et c d signent respectivement l appui sur Alternate et Control Par exemple c Z d signe l appui sur la touche Z avec Control enfonc ca T ca ca et ca d signent les appuis sur les fl ches avec Control et Alternate enfonc s Nous noterons aussi F1 F40 les touches avec et sans Shift et Alternate c est l ordre des cases des damiers Shift rajoute 10 et Alternate 20 Break A tout moment sauf en cas d op ration syst me on peut revenir la fen tre Basic en appuyant en m me temps sur Control Shift et Alternate puis en rel chant ces touches Ce retour provoque une v rification de la source qui peut prendre quelques secondes Lecture du mode d emploi En premi re lecture il est conseill de sauter les paragraphes comme A Les textes pr sent s ainsi sont plus difficiles ou font appel des notions non encore expos es lire comme r f rences ou si vous voulez devenir expert en Basic 1000d Certains des exemples demandent quelques minutes de calcul calculer et crire un nombre de 130100 chiffres D autres apparaissent sous forme d exercices avec une solution en appendice Pour bien assimiler le langage d s que vous saurez diter des textes essayez vos propres exemples et ex cutez les avec le d bogueur Chapitre 2 Visite rapide du Basic 10004
469. ue coef p x n 1 Les conditions restent valables jusqu effacement par clear cond ou clear Exemple Calcul modulo 2 cond 2 W 5 X 7 Y Z 2 A il faut effectuer une assignation print W Sortie 95 ms X Y Z Les calculs modulo un nombre premier p peuvent ainsi tre effectu s en imposant la condition cond p Cependant dans ce cas il vaut mieux utiliser les fonctions modulaires du Basic qui sont beaucoup plus performantes et ne pas imposer de condition Au lieu du programme pr c dent il vaut mieux utiliser en particulier si on a aussi besoin de nombres non modulaires print mod 5 X 7 Y Z 2 A 2 Sortie 30 ms X Y Z 330 Chapitre 14 Calculs conditionnels Nombres complexes Exemple Les conditions cond permettent de travailler sur les irrationnels A nsi pour traiter exactement des expressions contenant 42 on introduit le litt ral sgrt2 et la condition sqrt2 2 2 cond sqrt2 2 2 W2 sqrt272 W3 sqrt2 3 print W2 W3 Sortie 40 ms 2 2 sqrt2 Exemple Les conditions sont appliqu es une seule fois et dans l ordre des com mandes cond Il peut donc tre n cessaire d effectuer une ou plusieurs assigna tions comme y y pour simplifier compl tement une expression C est en pr vision de cas semblables la deuxi me partie de l exemple que les conditions sont ap pliqu es une seule fois comme dans subsr et non de fa on cyclique comme dans subsrr En effet le programme entrerait alors dans une boucle sans f
470. ue sa valeur rapport e s_pro c est 100 apr s clear La ligne Xqt donne le nombre d octets encore libres dans la pile des ex cutions et sa valeur rapport e s_xqt La ligne Fre donne le nombre d octets non utilis s ainsi que sa valeur rapport e l allocation NEW F11 Efface la source et ouvre la fen tre Edit Source Chapitre 6 Autres menus de l diteur 45 OLD F12 La commande essaie de r cup rer la source apr s NEW Elle peut ga lement permettre de retrouver une source ditable apr s une destruction Aides menu HELPS Appel d aides la programmation AUTHOR F1 Le num ro de version du Basic et l auteur Basic 10004 version 1 00 J J LABARTHE 1990 KEYBRD F2 Les codes que renvoient les fonctions keyget et keytest EDITING F3 Rappel des touches particuli res en dition ASCII F4 Table des codes ASCII et des touches Alternate lettre PRINTING Codes 0 1F actifs dans print NOHELP F10 Efface Help MERGE H F18 Rajoute un fichier la fin de help voir le menu FILES LOAD H F19 Vide help et y charge le fichier HELP Z voir le menu FILES HELP F20 Cette commande identique l appui sur la touche Help ouvre la fen tre Help elle charge HELP Z si la fen tre est vide 46 Chapitre 6 Autres menus de l diteur Imprimer la source menu PRINTER Le menu PRINTER contient la commande Print F16 qui imprime toute la source et la commande Print b F17 qui
471. ues gt amp et a sont obtenus par a V a C et a L print lirenom stop lirenom function checker gt lt Quel est le fichier charger aaa cls do value fsel ift value lt gt ift exist value return loop KILL f Commande Efface le fichier f fcha ne contenant le nom du fichier d truire Chapitre 10 Entr e Sortie 167 La commande kill permet d effacer un fichier disque On peut aussi utiliser la commande Kill menu FILES de l diteur Exemple Efface le fichier x z puis sort en erreur parce que le fichier y z n existait pas kill x z kill y z Sortie 2 s ERREUR GEMDOS 33 kill y z 2 ki11 y z NAME c1 AS c2 Commande Renomme un fichier cl fcha ne nom de l ancien fichier c2 fcha ne nouveau nom du fichier La commande name change le nom d un fichier Le s parateur as entre c1 et c2 peut tre remplac par L identificateur de disque doit tre le m me pour les deux fichiers Exemple Avant de sauvegarder c par save dans le fichier x a on modifie le nom de l ancien fichier s il existe en x bak Noter que kill efface d abord x bak sinon name sortirait en erreur if exist x a ift exist x bak kill x bak name x a as x bak endif save x a c 168 Chapitre 10 Entr e Sortie Gestion par fichier complet VERIFY V_fonction V rifie lecture criture disque La fonction verify relit le dernier fi
472. um rot es partir de 1 en vue de faciliter le d bogage le v ritable num ro n de la premi re ligne est indiqu par le message le prgr va ex cuter la ligne n Le d bogueur est donc positionn sur la premi re instruction qui n a pas encore t ex cut e Appuyez sur Return la premi re instruction a t ex cut e le d bogueur est positionn sur la deuxi me ligne Appuyez encore plusieurs fois sur Return ou sur F1 Les instructions sont ex cut es une une c est le pas pas Vous pouvez aussi cliquer au cours de ce pas pas sur les divers noms crits sur la page avec le bouton gauche Par exemple cliquez sur print cela vous indique que print est une commande Cliquez sur w cela vous indique que w est de type var et crit sa valeur Cliquez maintenant le bouton droit sur la ligne for i 1 to 20 Le programme s ex cute jusqu cette ligne L effet du cliquage a t de placer un point d arr t breakpoint et de lancer l ex cution Retournez la fen tre Basic par Arret F2 ou touche A Vous pouvez taper print 1 w pour examiner la valeur de 1 w Ouvrez la fen tre Edit Source Le curseur se trouve sur la ligne o tait arriv le d bogueur Modifier la source en rajoutant print w Pour cela placer le curseur sur next puis appuyer sur Insert et taper la nouvelle ligne La fin du programme est donc maintenant for i i to 20 w w 2 print w next i print w S lectionner la case DEBUG a
473. un label Il y a trois types de labels label de V_fonction label de C_fonction et label proc Tous les labels peuvent tre utilis s dans les branchements goto label Exemple Le programme affiche seulement le type des labels type factori chainep procedu Chapitre 12 Labels Sous programmes 251 stop factori function n chainep function c 4 procedu local index i Sortie 160 ms factori est de type label de V_fonction chainep est de type label de C_fonction procedu est de type label proc Selon l instruction suivant le apr s le label tout label est de l un des types ci dessus Si l instruction est function comme apr s factori dans l exemple resp function comme apr s chainep on a un label de V_ resp C_ fonction Si l instruction suivant est autre comme apr s procedu on a un label proc Les labels de fonctions et seulement ceux l peuvent tre utilis s comme FONCTIONS avec ou sans arguments dans les expressions La valeur de la fonction est calcul e par un programme en Basic commen ant par ce label et se terminant par return Le programme de la fonction peut utiliser tout le Basic y compris des appels de fonction elle m me r cursivit Nous tudierons dans les sections suivantes comment on utilise les arguments comment on assigne la valeur les variables locales et autres possibilit s Un label proc peut tre utilis comme PROCEDURE L appel de la proc dure qui se fait par la c
474. une instruction qui tait crite dans la source ou d afficher la totalit d une ligne de plus de 80 caract res Le bloc est un ensemble de lignes cons cutives de la source Il peut tre d plac copi effac sauvegard et imprim Le bloc est visualis par des marques dans la colonne de gauche Les commandes principales relatives au bloc sont obtenues au clavier par appui simultan sur Control Alternate et une autre touche Nous avons d j vu comment on peut d finir le bloc s il est enti rement sur une page avec le bouton gauche appuy Si le bloc est plus grand d finir son d but et sa fin s par ment Ligne A La premi re ligne du bloc La ligne M du curseur est prise pour ligne A par la commande Mark a du menu BLOCK ou par appui sur ca T Inversement on peut d placer le curseur sur la ligne A par la commande Goto a du menu BLOCK ou en appuyant sur ca Ligne B La derni re ligne du bloc La ligne M du curseur est prise pour ligne B par la commande Mark b du menu BLOCK ou par appui sur ca Inversement on peut d placer le curseur sur la ligne B par la commande Goto b du menu BLOCK ou en appuyant sur ca Delete du menu BLOCK ou ca D Efface le bloc apr s avertissement Move du menu BLOCK ou ca M D place le bloc devant la ligne M et met M apr s le bloc Le bloc reste d fini sur les m mes lignes Recopy du menu BLOCK ou ca R Recopie le bloc devant la ligne M
475. ur revenir Codes renvoy s par KEYTEST et KEYGET Ils sont aussi tabul s dans KEYBRD F2 du menu HELPS Renvoy par keytest si aucune touche ou bouton n est appuy 1 FF Ce sont les codes renvoy s par les touches du clavier qui ont des codes ASCII ou encore par a nnn ou a Hnn en hexad cimal 152 Chapitre 10 Entr e Sortie 100 1FF Les combinaisons de touches Control Shift et Alternate avec des touches sp ciales renvoient 100 v o v est donn en hexad cimal dans la table suivante Les touches ca Ins et ca Home renvoient chacune deux codes en succession Les combinaisons Control Alternate et une lettre renvoient les codes 180 si la lettre est A 199 pour la lettre Z T l Home Ins Del Bs Tab Help Undo CR Esc T 2 3 4 5 10 7 13 9 18 12 D 20 s 6 B E A C 1A 8 14 F 11 1B 19 21 a 27 33 29 32 2D 22 sa 28 34 2F 3B 39 23 c 41 42 55 56 57 50 47 53 49 58 52 4D 24 cs 46 4B 5C 5D 5E 5A 48 54 4F 51 5B 59 25 ca 61 62 75 76 xx xx 67T 73 69 78 72 6D 26 200 24F L appui sur la touche de fonction k 1 10 renvoie le code 2 10 4c 2a 5 k 1 o s a c valent 0 ou 1 suivant l appui ou non sur Shift Alt et Control Le bouton gauche cliqu au dessus de la ligne cursh renvoie les m mes codes ce qui permet de traiter facilement les attentes d v nement damier 280 Ce code est renvoy par c 10000 24F31 Cliquer un bouton b 1 pour le gauche ou b 2 pour le dro
476. ures Le Basic 1000d poss de des fonctions internes permettant de traiter des structures de listes Ces fonctions facilitent les extensions du Basic 10004 au calcul symbolique d expressions irrationnelles ou transcendantes Un exemple est fourni dans la biblioth que MATH permettant la manipulation d expressions trigonom triques Dans cette section nous d crivons deux types de structures repr sentant des ensembles Les v_ensembles contiennent des expr quelconque des intervalles r els continus ou discrets Les c_ensembles contiennent des cha nes quelconque et des intervalles lexicographiques On dispose de l op rateur d inclusion in qui permet de d terminer si une expr ou exprcha ne appartient un ensemble donn de l op rateur oppos not in et des commandes de boucles forv nextv et forc nextc permettant d effectuer une boucle sur les l ments d un ensemble fini Les fonctions vset et cset permettent de cr er des ensembles et d autres fonctions permettent de retrouver les l ments d un ensemble ou de modifier un ensemble Exemple Le segment 1 1 repr sente l ensemble des r els x 1 lt x lt 1 La progression 5 5 3 est l ensemble des nombres 5 2 1 et 4 Le v_ensemble 0 1 5 5 3 est l ensemble des nombres 0 1 5 2 1 et 4 Noter que des l ments r p t s sont possibles Le c_ensemble un deux trois est un ensemble de trois cha nes print 1 2 in
477. urs des p racines dans les variables T 1 T p et les multiplicit s correspondantes dans M 1 M p La proc dure zerop se contente d crire les racines Noter que si q 0 les racines rationnelles sont sorties sous forme exacte par contre si q 0 des racines rationnelles peuvent sortir sous forme flottante M thode Algorithme de Collins et Akritas Voir la description et la comparaison d autres m thodes dans Computer Algebra 1982 p83 386 Chapitre 16 Biblioth que Math matique Exemple D termination avec 20 chiffres exacts des z ros d un polyn me de degr 6 Il y a une racine double rationnelle w 37538 x 6 236736 x 5 482848xx 4 357108 xx 3 97519 x 2 11046 xx 441 precision 20 zerop w i Sortie 52 s Z ros r els de f 37538 xx 6 236736 xx 5 482848 xx 4 357108 x 3 9751 9 x 2 11046 xx 441 Nombre de z ros distincts 5 compt s avec leur multiplicit 6 1 0 28989663259659067020 E 1 1 0 22368128791039502966 E 1 1 0 76318712089604970342 2 0 15328467153284671533 exact 21 137 1 0 10103367403409329797 Performances Nous donnons ici le temps de calcul en s des k racines du polyn me irr ductible de degr k ppur x k 1 avec p chiffres exacts pour divers k et p k p 10 20 30 40 50 100 200 300 400 5 31 63 111 177 269 1183 6783 20427 37796 10 113 222 398 659 1042 3252 18766 15 305 609 1155 2027 3356 9151 20 721 1445 2837 5141 8735 25 1709 3269 6386
478. us des 1 comme par exemple 11 et 11111111111111111111111 Exercice Goldbach En 1742 Goldbach proposa la conjecture suivante Tout nombre pair gt 3 est la somme de deux nombres premiers Par exemple 4 2 2 6 3 3 8 3 5 Cette conjecture n est de nos jours ni d montr e ni infirm e Ecrire un pro gramme v rifiant la conjecture ou essayant de trouver un contre exemple par calcul num rique Exercice Parfait Ecrire un programme recherchant les nombres parfaits pairs voir l exer cice Grandissime pour des indications suppl mentaires S il y a un nombre fini ou non de nombres parfaits et s il existe des nombres parfaits impairs sont encore des probl mes non r solus Graphismes 400 Chapitre 18 Graphismes Coordonn es et Couleurs Le syst me de coordonn es graphiques d pend de la r solution Les points de l cran x y ont des coordonn es x variant de 0 gauche max 1 droite et y variant de 0 haut ymax 1 bas Le nombre de couleurs c d pend galement de la r solution resolution C Tmax Ymax Basse r solution 0 16 320 200 Moyenne r solution 1 4 640 200 Haute r solution 2 ou 3 2 640 400 ORIGINX a ORIGINY b Variables d tat Origine graphique ORIGIN a b Commande Fixe l origine graphique a b entier 16 Ces commandes fixent l origine du syst me de coordonn es Lorsque l origine est en a b la donn e des coordonn es x y d un point dans
479. us faudra modifier ce programme qui est une simple bauche de traducteur Voici quelques exemples des transformations effectu es octets 13 10 octet 0 Fichier Z commentaires amp H nombres hexad cimaux amp X nombres binaires downto s parateur end stop input input rajoute un espace print print idem Num ros de ligne Si le Basic traduire utilise des num ros de lignes il faut les remplacer par des labels Par exemple on remplacera goto 1270 1270 x 3 par goto lab_1270 lab_1270 x 3 Proc dures L indication des proc dures en Basic 1000d est identique celle des sous programmes dans de nombreux Basics anciens Par contre si le d but d une proc dure est indiqu comme dans procedure Exemple A B il faut traduire en Exemple local datav 1 02f var A B ou Exemple Procedure A B L appel des proc dures est en g n ral indiqu par un mot clef gosub etc que l on supprimera en Basic 1000d Fonctions Dans les Basics qui acceptent des fonctions sous forme de programmes la valeur est en g n ral renvoy e par return expr Chapitre 20 Biblioth que STND 461 que l on modifiera en value expr return Les instructions def fn doivent tre transform es en fonctions et d pla c es en dehors du programme Par exemple Deffn Yerr 1 Sqr Max Y_data I 14 Deffn Ds_max Str N_set s rie s de donn es peut tre transform en Yerr function index i
480. uvegarde la position du curseur Remet le curseur sur la position m moris e Efface la ligne Vid o inverse Vid o normale lt lt lt Ps Om oc N N Dans la s quence Y y x les codes y et x sont les coordonn es du curseur augment es de 32 Dans les s quences b z et c z la donn e z 0 15 est le code de la couleur Remarquer que les s quences d e f o v et w ne sont pas permises parce que incompatibles avec le traitement interne du curseur et de l cran 132 Chapitre 10 Entr e Sortie Sortie sur l imprimante p riph rique LBS V rification Si l imprimante n est pas connect e il y a imm diatement sortie d un message d erreur Longueur de ligne La commande 1print n envoie pas d octets de changement de ligne pour les lignes plus longues que page_width Il faut donc r gler l imprimante pour qu elle effectue elle m me le changement de ligne c est le r glage usuel Cependant il est utile de d finir la variable d tat page_width avec la valeur de l imprimante pour un fonctionnement correct des tabulations Options E et I Exemple L impression obtenue ressemble la notation math matique usuelle avec exposants et indices lprint EI Z 1 7 X73 X 2 1 Sortie imprimante 70 ms Z1ar X X 1 Avec l option E la cha ne C envoy e l imprimante est modifi e avant envoi par C change C chr 27 amp S0 chr 22 chr 27 amp T c est dire
481. valeur 31303030 sert seulement de v rification pour viter un mauvais m lange des elocaux index et access La deuxi me valeur nb_max indique le nombre maximum d l ments permis pour l acc s correspondant s il est indic En effet l acc s local n est pas autoris d passer les bornes du tableau auquel il acc de La quatri me valeur t indique le type de l acc s t type 30020 index 32 10020 index 16 20 index 8 4010020 index 4 6020020 index 2 7030020 index 1 30 var 40 char A Lorsque le type est un index la troisi me valeur a est l adresse de l index ptr nomi Lorsque le type est char ou var a varnum nomi est le num ro de la variable Exemple Cr ation de l index 32 c200hz acc dant l adresse 4BA La lecture de c200hz est quivalente peek1s 4BA On peut crire c200hz 0 qui est quivalent pokels 4BA 0 Nota modifier le compteur en 4ba ou c200hz peut provoquer des ennuis disques parce que ce compteur est utilis par le syst me pour d terminer le changement de lecteur local datai 31303030 1 4BA 30020 access c200hz t c200hz W 1 x 7100 print c200hz t Sortie 2060 ms 405 Exemple Cr ation d un acc s index 16 word 1 acc dant aux mots haut et bas de l index i et d un acc s bit 31 de type index 1 acc dant aux 32 bits de i On crit les mots haut et bas de i par word 0 et word 1 puis les bits corre spondant au mot haut Remar
482. value Sqr Max Y_data i i return Ds_max function value Str N_set amp s rie s de donn es return Noter que la forme suivante galement possible dans laquelle 1 est calcul 2 fois est d savantageuse si 1 est une expression compliqu e Yerr function value Sqr Max Y_data 1 01 return Autres difficult s La concat nation des cha nes s indique par amp Basic 1000d et non par comme dans certains Basics Les instructions modifier se trouvent en recher chant les suites de 2 caract res et ainsi que ces caract res s par s de caract res quelconque La donn e des nombres en octal n est pas pr vue en Basic 10004 sauf en base 8 Les op rateurs logiques en Basic 1000d ont une syntaxe inspir e du langage ADA qui diff re de celle g n ralement adopt e par les autres Basics L op rateur not a une pr c dence plus lev e que xor or et and il faut veiller l homog n it pas de m lange de and et or et il ne peut y avoir plusieurs imp la suite Ainsi de nombreux Basics not a and b c and d imp e imp f doivent tre r crites Basic 10004 not a and b c and d imp e imp f Mots clefs du Basic 1000d Il faut changer les noms de variables qui sont des mots clefs De plus chaque nom ne peut tre utilis que pour un seul type d objet en Basic 10004 la diff rence d autres Basics Les mots clefs du Basic 1000d peuvent d signer des commandes ou fonctions diff rente
483. w pur 2 p 1 w normal w 2 w 1 char c c out_c w 499 500 Solution des exercices piR2 Mille Hilbert 11 11 print a Pour p p le nombre N s crit avec len c chiffres timer timera N c return precision 100 print La surface du cercle est pi 49 print Ce calcul a pris timer secondes stop P 1 W 1 for i 1 1000 W prime W 1 vmul P W next i secondes print Ce calcul a pris timer print a Le produit des 1000 premiers nombres premiers vaut P stop print Le d terminant vaut det A 10 print Ce calcul a pris timer secondes stop function value 1 1 02 return Le programme suivant trouve 4 tels nombres en 3 heures k 2 do k prime k a val chr 31 k ift prtst a print Le nombre crit avec justr k 5 f chr 34 1 chr 34 est premier timer time r k k 1 loop Goldbach g 6 g1 g 2 1 do Solution des exercices 501 p 3 ai p prime p ift p gt g1 goto a2 ift prtst g p goto a3 vadd p 1 goto al a2 print Conjecture de Goldbach fausse print g n est pas la somme de 2 nombres premiers print Publiez votre r sultat stop a3 print Conjecture de Goldbach v rifi e pour g p M E a timer timer vadd g 2 vadd gi i loop Parfait Le programme suivant trouve les 10 premiers nombres parfaits en 29 secondes et les 4 suivants en 1h20 p 2 do p prime p Mp 2 p 1 ift prtst Mp print p justl1 p 6
484. x donne la d termination de l arc cotangente de x comprise dans 0 7 On a aussi l galit atn2 y 1 atn y Exemple Calcule la somme des angles d un triangle rectangle de petits c t s a et b a rnd b rnd print atn2 a b atn2 b a pi 2 Sortie 155 ms 0 3141592654 E 1 SINH p COSH p TANH p ASINH p ACOSH p ATNH p V_fonctions Fonctions hyperboliques P r el 346 Chapitre 15 Calculs approch s Ces fonctions se distinguent des fonctions circulaires par le suffixe H Il faut p lt 1 pour atnh p et p gt 1 pour acosh p Pour ces deux fonctions l erreur relative sur le r sultat correspondra la pr cision en cours m me pour p au voisinage de 1 si p est entr en exact Exemple On v rifie les relations cosh p sinh p 1 atnh tanh p p ainsi que acosh cosh p p pour une valeur al atoire de p p rnd print cosh p 2 sinh p 2 print atnh tanh p p print acosh cosh p p Sortie 540 ms 1 0000000000 0 2220446049 E 14 0 3552713679 E 14 Exemple On calcule l arc sinus hyperbolique pour un petit nombre p sinh x d une part l aide de la fonction asinh et d autre part en utilisant l expression log p 4 1 p La comparaison avec la valeur th orique x montre que l erreur relative correspond la pr cision en cours pour le calcul par asinh mais pas pour la deuxi me m thode x rnd x10 6 p sinh x xi asinh p x2 log p sqr 1 p 2 print xi abs x x1
485. x print x2 abs x x2 x Sortie 370 ms 0 2898312905 E 6 0 7306258631 E 15 0 2898312849 E 6 0 1935531953 E 7 Biblioth que Math matique 348 Chapitre 16 Biblioth que Math matique La biblioth que MATH Z contient quelques fonctions et proc dures ma th matiques d int r t g n ral que nous avons class es en commen ant par les m thodes alg briques qui donnent des r sultats exacts sans approximations et en terminant par les m thodes num riques qui renvoient des approximations flottants Une fonction ou proc dure d crite dans ce chapitre peut presque s uti liser comme si elle faisait partie du Basic apr s chargement de la biblioth que Les seules diff rences avec les commandes internes du Basic sont que le mot clef value ne peut pas tre utilis dans les arguments et que les noms des programmes doivent tre crits en minuscules l option nodistingo n tant pas utilis e Ces programmes qui sont des sources en Basic peuvent tre modifi s et adapt s aux besoins de chacun Pour en faciliter l tude et la modification nous indiquons quels sont les algorithmes utilis s Menu B_USER Des exemples d utilisation du menu B_USER de la biblioth que Math ont t donn s dans le chapitre 2 Ce menu permet d appeler les proc dures ci dessous qui demandent des donn es l aide d un dialogue Il vaut mieux effectuer pr alablement un clear pour viter des conflits de noms sauf si on veut entrer d
486. xi d pendent des suffixes S B W et L comme indiqu dans la table suivante B W L 0 256 0 65536 0 4294967296 S 128 128 32768 32768 2147483648 2147483648 Exemple La valeur initiale de limit est conserv e dans la pile pour pouvoir tre restaur e en fin du programme Elle est ensuite diminu e pour cr er une zone Chapitre 11 Programmation 229 de 100 octets o on peut poker en toute libert pokeb crit les 4 octets 1 2 3 et 4 partir de l adresse limit pokew crit le mot 5 en limit 4 et le mot 6 en limit 6 pokel crit les mots longs 7 et 8 en limit 8 et limit 12 Suivent ensuite des critures d entiers sign s Ces critures sont v rifi es l aide de peekb On montre ensuite la diff rence entre les PEEK sign s et non sign s push limit limit limit 100 pokeb limit 1 2 3 4 pokew limit 4 5 6 pokel limit 8 7 8 pokebs limit 16 1 128 pokews limit 18 2 pokels limit 20 4 print conc i 0 24 of peekb limit i print h peekbs limit 816 peekb limit 816 print h peekws limit 818 peekw limit 818 print h peekls limit 820 peekl limit 820 limit pop Sortie 300 ms 1 2 3 4 0 5 0 6 O0 O O 7 O O O0 8 255 128 255 254 255 255 255 252 0 1 OFF 2 OFFFE 4 OFFFFFFFC PEEKS a 1 PEEKZS a C_fonctions Peek cha ne POKECB a a vircha ne POKECVW a ap vircha ne Commandes Poke cha ne a adresse l entier 32 ap adresse paire a C est le symbole a L 2
487. xpr Chapitre 11 Programmation 225 PUSHS exprcha ne exprcha ne Commandes Poussent des valeurs dans la pile POP V_fonction POP C_fonction STACK n STACKS n Acc s la pile lecture et criture entier 16 Les expressions pouss es dans la pile par les commandes push et push peuvent tre retrouv es par les fonctions pop et pop qui tent une valeur de la pile et renvoient cette valeur La fonction pop v rifie que la valeur est une expr On peut profiter de la pile pour effectuer des conversions push a b 7 c pop est quivalent c mkx a b 7 Exemple La pile est remplie dans l ordre avec 5 2 15 et x Elle est vid e dans l ordre inverse les expressions sont toujours d cod es de gauche droite ce qui revient calculer 152 5 push 5 push 2 15 push x print pop pop pop pop Sortie 25 ms x 45 Exemple La pile permet d effectuer une permutation de variables x 1 y 2 z 3 push x y z y pop X pop z pop print x y Zz Sortie 25 ms 226 Chapitre 11 Programmation 2 3 1 L argument n dans stack et stack doit tre compris entre 0 et p 1 o p d signe le nombre d l ments dans la pile L argument 0 correspond au dernier l ment pouss dans la pile et l argument p 1 au plus ancien l ment pouss On peut utiliser stack n et stack n comme fonctions pour lire une valeur dans la pile sans modifier la dimension de la pile On peut
488. y sont omis l ancien lutin est effac Pour 468 Chapitre 20 Biblioth que STND le premier appel ch doit contenir une cha ne de 74 octets form e de 37 mots C est le bloc de d finition du lutin utilis par la ligne A du syst me To Yo type d affichage 0 positif 1 n gatif couleur du masque 0 ou 1 8 couleur du lutin 0 ou 1 10 ligne 0 du masque 12 ligne 0 du lutin 14 ligne 1 du masque 16 ligne 1 du lutin OS amp ND 70 ligne 15 du masque 72 ligne 15 du lutin Le vecteur x0 yo d finit une translation appliqu e au lutin Apr s le pre mier appel ch contient en plus du lutin le contenu de l ancien cran sous le lutin Exemple D place al atoirement un lutin en forme de croix origin 25 25 f_type 2 f_style 1 pbox 0 0 266 166 char c c chr 0 8 amp mki 1 for i 0 15 c c amp mk1 0380 or i gt 5 and i lt 9 next i sprite c 0 0 while keytest 0 hidem sprite c random 250 random 150 pause 500 wend DEFFILL i t s DEFFILL i m Proc dure Attributs de remplissage i t s entier 16 Chapitre 20 Biblioth que STND 469 m exprcha ne La proc dure deffill permet de d finir les attributs de remplissage en une seule instruction La premi re forme quivaut f_color i f_type t f_style s La deuxi me forme d finit un nouveau motif m et quivaut f_color i f_user g f1 f2 fg avec m mki f1 amp amp mki fg Exemple Remplit l
489. zero e7 T7 M nb 0 notilde format 10 for i 1 4 si appr T7 i ep5 subs e5 s 1 s1 ep3 subs e3 s 1 s1 s2 sroot ep5 s 2 ep3 subs ep3 s 2 s2 s3 sroot ep3 s 3 print cas i si float s1 s2 float s2 s3 float s3 zero u 3 s1xu 2 s2xu s3 TU M nb 0 print x 1 TU 1 print x 2 TU 2 print x 3 TU 3 A asin TU 1 B asin TU 2 C asin TU 3 print par exemple x A y B z C next i Sortie 92 s cas 1 si 2 429215139 s2 1 917714494 s3 0 487508896 x 1 0 979327550 x 2 0 891508709 x 3 0 558378879 par exemple x 1 367109951 y 1 100664790 Zz 0 592430380 cas 2 si 1 797580965 s2 0 857631992 s3 0 054885330 x 1 0 978176699 x 2 0 743986452 x 3 0 075417814 par exemple x 1 361496817 y 0 839016712 z 0 075489492 cas 3 si 1 204209233 s2 0 183610207 s3 0 059925167 x 1 0 941634011 x 2 0 415674653 x 3 0 153099431 par exemple x 1 227451720 y 0 428684450 z 0 153703923 cas 4 si 0 817004656 s2 0 637528121 s3 0 498394891 x 1 0 922371535 x 2 0 684280777 x 3 0 789647656 par exemple x 1 174175214 y 0 753616949 z 0 910234524 398 Chapitre 17 Exemples d application Exercices de programmation Exercice Mille Calculer le produit des 1000 premiers nombres premiers Exercice Hilbert Calculer le d terminant de la matrice 10 x 10 d l ments 1 i 5 Exercice 11 11 Chercher des nombres premiers dont les chiffres en base 10 sont to

Download Pdf Manuals

image

Related Search

Related Contents

LPC2 ID1 User Manual  Phocos SI 350 Series  V-G3100 Final User Manual  取扱説明書 - 床暖房(電気床暖房)  8T0 054 630 A MA PDC Audi A4 + A5 Sportback.fm  TELUS I465 Cell Phone User Manual  Visualizar en PDF  Acco 64162 cable lock  Samsung 24-tolline täiustatud ergonoomikaga äriklassi LED-kuvar Kasutusjuhend  vantec series User`s Manual - DAS Audio  

Copyright © All rights reserved.
Failed to retrieve file