TI-Basic

TI-Basic er navnet på programmeringssprog for regnemaskiner Texas Instruments grafik . På grund af sin filosofi og dets evner ligner dette sprog BASIC , deraf navnet. Dens syntaks er imidlertid væsentligt forskellig fra BASIC . TI-Basic for lommeregnere baseret på Motorola 68000 (“68K”) (TI89) er ikke den samme som for lommeregnere baseret på Z80 (TI-83, TI-84) . Hver regnemodel har specifikke funktioner, der kan bruges af programmer, men sprogets kerne er almindelig.

Afhængigt af regnemodellerne kan instruktionerne enten vælges fra menuer eller indtastes fuldt ud på et alfanumerisk tastatur. I det første tilfælde er ingen lexemiseringsfase nødvendig, og programmet lagres direkte i en bytekodeform . I det andet tilfælde udføres en lexemisering under den første udførelse, der følger en modifikation. I alle tilfælde fungerer tolken selv på bytekoden .

Kort beskrivelse af sproget

Datatyper

De anvendelige variabler er de, der er tilgængelige fra beregningsskærmene. For eksempel i tilfælde af TI-82  :

Den TI-82 ikke mulighed for opbevaring og manipulation af andre typer af data, såsom tegnstrenge. Det er kun muligt at vise kanaler. Strengvariabler blev vist på nyere modeller.

TI-Basic er et stærkt skrevet sprog , i betragtning af at det ikke er muligt at ændre eller vælge typen af ​​variable værdier. Variabler er globale og behøver ikke at blive deklareret, før de bruges i et udtryk.

Syntaks

På Z80-baserede regnemaskiner indtastes programmer ikke i alfanumerisk form, men via regnemenuerne. Bogstaverne repræsenterer altid numeriske variabler, idet produktet er implicit. Således betegner bogstaverne "FOR" efter hinanden ikke begyndelsen på en sløjfe, men produkterne af variablerne F, O og R. Et udtryk slutter med et kolon.

Kontrol- og loop-kommandoer skal afsluttes ved hjælp af End- nøgleordet , der fungerer som en slut-af-blok-markør (svarende til den afsluttende afstivning på C- familie sprog ).

Som med andre fejl får syntaksfejl programmet til at afslutte med en fejlmeddelelse.

Kontroller

TI-Basic understøtter de grundlæggende kontrolkoncepter, nemlig:

  • den opgave med pilen orienteret til højre (→): udtrykket placeret til venstre for pilen evalueres, og resultatet lagres i variablen placeret til højre;
  • de betingede forgreningserklæringer If , Then , Else , EndIf  ;
  • de løkker  : Mens (Z80) Gentag (Z80) eller Loop (68K) For  ;
  • forbindelserne med Goto- instruktionen og etiketterne udpeget af Lbl . Derudover viser en menu (Z80) eller værktøjslinje (68K) en menu med valgmuligheder, hver forgrening til en bestemt etiket.
Indgange udgange

Input / output instruktionerne er:

  • Input and Prompt for at bede brugeren om at indtaste en værdi, der skal tildeles en variabel;
  • Output for at vise en variabel eller en streng et sted på skærmen i modsætning til den følgende;
  • Disp , som kun giver dig mulighed for at udsende en variabel i hovedskærmens strøm;
  • DispGraph , DispTable , som viser den aktuelle graf eller tabel;
  • Input giver dig også mulighed for at hente koordinaterne til den markør, der vises på skærmen;
  • ClrHome , ClrTable , der rydder hovedskærmen eller den aktuelle tabel;
  • PrintScreen (z80), udskriver den aktuelle skærm på en ekstern enhed, hvis den er tilsluttet;
  • Get and Send, som tilføjes GetCalc og SendCalc på 68K og SendChat til nye 68K; de eksporterer eller importerer en variabel fra en ekstern enhed (en anden maskine);
  • getKey giver dig endelig mulighed for at få den kode ( scancode ), der svarer til den sidst trykkede tast.
Oprettelse af funktioner og programmer

I Motorola 68000-baserede regnemaskiner kan en funktion eller et program oprettes direkte ved hjælp af Define- funktionen , dens syntaks er:

Define ma_fonction(v1,..,vN) = Func : fonction... : EndFunc

Dette kan bruges i en anden funktion og implementerer således lokale funktioner og programmer.

I Z80-baserede regnemaskiner er dette ikke muligt. Den eneste mulighed er at ringe til andre programmer, der er gemt på maskinen, og disse tager ikke argumenter: enhver værdioverføring sker via globale variabler.

En mulig strategi til at simulere funktionsopkaldet, tage et eller flere argumenter og returnere en eller flere værdier er som følger: givet et PrgmA-program vil vi kalde et PrgmB-program, vi kan skrive:

:{I,X,N} # liste stockée dans Ans :PrgmB :Ans→{I,X,N,Y}

Ans repræsenterer værdien af ​​det sidst beregnede udtryk.

PrgmB-programmet kan derefter have følgende form:

:Ans(1)→I :Ans(2)→X :Ans(3)→N :X→Y :For(I,1,N) :X+cos(I*(I+1))→X :End :{I,X,N,Y}

Interessen for denne metode er ikke desto mindre begrænset i betragtning af at alle variabler er globale.

Forskellige

De mange matematiske funktioner er tilgængelige i instruktionerne til de forskellige maskiner.

Det er muligt at udveksle programmer ved at forbinde to lommeregnere med kabel eller ved at forbinde lommeregneren til en computer; dette gør det også muligt at bruge en computeremulator for at lette indtastning og fejlretning af et program.

Eksempler på programmer

Bonjour Monde

Disp- nøgleordet bruges til at vise den traditionelle Hello-verden på skærmen:

:Disp "HELLO, WORLD !"

Men vi kan også bruge en anden funktion, som viser Hello world ved de koordinater, der er defineret af X og Y (koordinater i pixels til TI-89 eller højere, i rækker / kolonner med tegn til de ældre):

:Output(Y,X,"HELLO WORLD")

Bemærk: Ti-Basic-programmerne, der kun udfører en instruktion pr. Linje, de to foregående eksempler kan forenkles henholdsvis ved:

:Disp "HELLO, WORLD ! :Output(Y,X,"HELLO WORLD

Det er vigtigt at specificere, at den sidste linje ikke er en fejl: fortolkeren af ​​TI-Basic accepterer faktisk, at kommandoer ikke er helt parantesede; og det er derfor en almindelig optimering for ikke at skrive citater og parenteser i slutningen af ​​linjen.

Den eneste kendte svaghed ved denne optimering er, når en kommando slutter med et anførselstegn, udeladt, og den næste linje begynder med en Lbl [0-9] .

Kvadrat af et tal

For at lave et program, der viser kvadratet af et tal, skal du:

  • indtast nummeret med instruktionen, Inputder tillader hurtigmeddelelsen som det første argument, og navnet på variablen, der modtager nummeret som det andet:

:Input "A =",A

  • beregne firkanten ved hjælp af nøglen ²og tildel dette resultat til en variabel (valgfri) ved hjælp af nøglen sto → :

:A²→R

  • vis nummeret med udsagnet, Dispder viser et argument pr. linje:

:Disp "A² =",R

Instruktionerne Inputkan Dispfindes i undermenuen I/Oved at trykke på mens du PRGMredigerer programmet.

Et møntkast-spil

Dette program er et spil, der simulerer flippen af ​​en mønt flere gange. Det falder enten på halesiden eller på ansigtet. Det viser, hvordan man bruger funktionen tilfældig helgenerering, med andre ord randInt(. Bemærk, at dette program er roden til spillet, det er derefter muligt at tilføje funktioner til det.

:Lbl D Étiquette du Début du programme. :0→N Initialisation de la variable N (Touche STO→ Pour →) :Menu("PILE OU FACE","PILE",A1,"FACE",A2,"QUITTER",Q Menu préprogrammé. Si non disponible, suivre la note :Lbl A1 Étiquette du choix PILE :1→J La variable J prend la valeur 1. Le joueur a choisi PILE :Goto B Aller à l'étiquette B :Lbl A2 Étiquette du choix FACE :0→J La variable J prend la valeur 0. Le joueur a choisi FACE :Lbl B Étiquette B :randInt(0,1)→N La variable N prend la valeur d'un entier entre 0 et 1. :If N=J Si ce nombre aléatoire est égal à celui choisi par le joueur. :Then Alors… :Disp "GAGNE ! Afficher GAGNE ! :Else Sinon… :Disp "PERDU ! Afficher PERDU ! :End Fin Boucle Si :Pause Maintenir le résultat affiché. :Goto D Aller à l'étiquette du Début du programme. :Lbl Q Étiquette Quitter le jeu. :Output(1,1," Retire le Done lors de l'arrêt du programme.

NB: Hvis kommandoen Menu(ikke er tilgængelig, er det muligt at bruge:

:Disp "0. PILE :Disp "1. FACE :Input "VOTRE CHOIX",J

Find delere af et tal (i ℕ)

Dette program giver dig mulighed for at finde delere af et nummer. Det viser flere vigtige strukturer i TI-Basic programmering. Den gemmer disse skillevægge på en L1-liste, som den vises i slutningen af ​​udførelsen.

:0→P Initialisation de la variable :Input "N=", N Demande le nombre dont on veut trouver les diviseurs :ClrList L1 Suppression de la liste L1 (si existante) :For I,1,N Début de la boucle For : pour I variant de 1 à N :N/I→A Divise le nombre choisi au départ (par Input) par un diviseur possible :If fPart(A)=0 Si la partie décimale de A est nulle… :Then …Alors… :P+1→P …On incrémente la variable… :I→L1(P) …Et on stocke le diviseur dans L1 :End Fin de la boucle If :End Fin de la boucle For :Pause L1 Fin du programme par une pause sur les valeurs de L1 (les diviseurs de N), appuyer sur ENTER

NB: Det er nytteløst at teste alle tallene fra 1 til N, man kan være tilfreds med at gå indtil N / 2, eller bedre , (man må da ikke glemme at sætte N, som er en skillevæg, på listen)

Find de virkelige rødder til en trinomial funktion

Dette program giver dig mulighed for at finde de virkelige rødder i en kvadratisk funktion. Den beregner den diskriminerende, og som en funktion heraf beregner den mulige rod (er).

:Lbl 1 À ne mettre que si l'on écrit la boucle entrer/annul (voir fin programme) :EffEcr On efface l'écran :Disp "FORME AX²+BX+C" On indique à l'utilisateur à quoi correspondent les lettres A, B et C demandées plus tard :Prompt A,B,C Comme :Input "A=", A mais moins gourmand en caractères et en mémoire ; demande A, B et C :B²-4AC→D Calcul du discriminant Δ (Delta) :Disp "DELTA=",D On informe l'utilisateur de ce que vaut le discriminant :If D<0 Si D est inférieur à 0, alors… :Disp "PAS DE RACINES" Écrit… :If D>0:Then Si D est supérieur à 0, alors… :Disp "IL Y A 2 RACINES" Écrit… :((-B+√(D))/(2A)→E Calcul et stockage de la première racine :((-B-√(D))/(2A)→F Calcul et stockage de la deuxième racine :Disp E,F On affiche les deux racines :End Fin de la condition :If D=0:Then Si D est égal à 0, alors… :Disp "IL Y A 1 RACINE" Écrit… :(-B)/(2A)→G Calcul et stockage de la racine :Disp G On affiche la racine :End Fin de la condition Facultatif (en italique) : l'appui sur « annul » permet de quitter le programme, sur « entrer » de le recommencer :Repeat K=105 Tant que l'utilisateur n'appuie pas sur entrer… :codetouche→K La variable K est assimilée au codeTouche :If K=45:Goto 2 L'appui sur la touche annul envoie à Lbl 2 :End Fin de boucle :Goto 1 Retour au départ :Lbl 2 Après avoir appuyé sur « Annul » :EffEcr Efface l'écran :Output(1,1," Évite l'inscription de « Fait » à l'écran

Kilder

eksterne links

<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">