TI -BASIC - TI-BASIC

TI-BASIC je oficiální název BASIC -jako jazyka vestavěného do Texas Instruments (TI) ‚s graphing kalkulačky . TI-BASIC je jazyková rodina tří různých a nekompatibilních verzí, vydaných pro různé produkty:

TI zřídka odkazuje na jazyk jménem, ​​ale název TI-BASIC byl použit v některé dokumentaci pro vývojáře.

Pro mnoho aplikací je to nejpohodlnější způsob, jak naprogramovat jakoukoli kalkulačku TI, protože schopnost psát programy v TI-BASIC je integrována. Lze také použít sestavovací jazyk (často označovaný jako „asm“) a pro překlad do sestavení existují kompilátory C : kalkulačky založené na TIGCC pro Motorola 68000 (68k) a SDCC pro kalkulačky založené na Zilogu Z80 . Oba jsou však křížovými kompilátory , které neumožňují programování na kalkulačce. TI-BASIC je podstatně pomalejší než sestavovací jazyk (protože musí být interpretován ), takže je vhodnější pro psaní programů pro rychlé řešení matematických problémů nebo provádění opakujících se úkolů, než pro programování her nebo graficky náročných aplikací. Některé učebnice matematiky dokonce poskytují programy v TI-BASIC (obvykle pro rozšířenou variantu používanou řadou TI-82/83/84).

Ačkoli je to ve srovnání s programovacími jazyky používanými na počítačích poněkud minimalistické, TI-BASIC je nicméně důležitým faktorem v programovací komunitě. Vzhledem k tomu, že kalkulačky grafů TI jsou vyžadovány pro pokročilé hodiny matematiky na mnoha středních a vysokých školách, TI-BASIC často poskytuje první pohled, který mají mnozí studenti do světa programování.

Wikibooky

Wikibooks má učebnice programování TI-BASIC:

Syntax

Syntaxe všech verzí TI-BASIC se poněkud liší od typických implementací BASIC. Samotný jazyk má některé základní možnosti strukturovaného programování , ale omezuje se na žádné použití mezer nebo odsazení. Je také závislá na poněkud nestandardní znakové sady se specifickými znaky pro přiřazení (pravá „STO“ šipku, nejsou snadno dostupné ve většině znakových sad), čtvercové a kostky kořeny a dalších matematických symbolů, stejně jako tokenized vstupu a úložiště pro klíčová slova. Všechny příkazy začínají dvojtečkou, která funguje také jako oddělovač příkazů v řádcích. U modelů TI-83/84 lze zavírací závorky, závorky, závorky a uvozovky volitelně vynechat na konci řádku nebo před tokenem STO, aby se ušetřilo místo, i když je někdy lepší nechat je zapnuté. Například u modelů TI 83/84 běží funkce for loop mnohem pomaleji, aniž by za určitých okolností zavírala závorky.

Výrazy používají infixovou notaci se standardní prioritou operátora . Mnoho příkazů požaduje argumenty v závorkách, podobné syntaxi používané pro matematické funkce. Syntaxe pro přiřazování (kopírování dat do proměnné) je neobvyklá s ohledem na většinu konvenčních programovacích jazyků pro počítače; namísto použití příkazu BASIC-like let se znaménkem rovnosti nebo operátoru podobného algolu:= používá TI-BASIC operátor „STO“ se šipkou doprava se syntaxí: zdroj → cíl . To je podobné několika japonským kalkulačkám, například Casio, Canon a Sharp, které často používají podobnou syntaxi od doby, kdy se na konci sedmdesátých a na začátku osmdesátých let objevil první japonský alfanumerický kalkulátor.

Řídicí tok

Řídicí tokové příkazy zahrnují bloky if-then-else , pro smyčky , zatímco smyčky a opakující se smyčky , ačkoli žádné příkazy přepínače . Hlavní příkazy toku řízení jsou:

 If condition
 Then
 ...
 Else
 ...
 End

 For(variable,start,stop,step)
 ...
 End

 While condition
 ...
 End

 Repeat condition
 ...
 End

Neobvyklé pro jazyk vysoké úrovně, implementace TI-BASIC zahrnují příkazy IS> (Increment and Skip if Greater Than) a DS <(Decrement and Skip if Less Than), konstrukty obecně spojené s montážními jazyky . Sekce programů mohou být označeny ; zejména u modelů Z80 však štítky fungují jako cíle příkazů nebo funkcí Goto,Menu( nikoli jako štítky programů nebo bloků.

Dostupnost funkcí a podprogramů závisí na implementaci; verze dostupné na kalkulačkách sestupných z TI-82 nepodporují ani funkci podobnou GOSUB , ačkoli je možné volat programy navzájem a sdílet proměnné mezi programy. Návrhy založené na TI-89/92 mohou mít přístup ke sdíleným funkcím, v podstatě programům schopným vrátit hodnotu.

Typy dat

TI-BASIC je silně a dynamicky psaný jazyk. Dostupné datové typy se mezi verzemi 68k a Z80 značně liší. Bez použití knihovny zapsané v sestavení není možné vytvářet uživatelem definované datové typy. Seznamy se často používají jako náhrada struktur .

TI-83/84 (Z80)

  • Numerické proměnné , včetně A- Za Θ(theta). Ty umožňují ukládání reálných čísel nebo komplexních čísel (implementovaných jako dvojice reálných čísel ) ve formátu s plovoucí desetinnou čárkou . Hodnoty se mohou pohybovat od 1 E -99 do 1 E 99 s přesností až na deset číslic. Limit 27 proměnných však lze rozšířit pomocí seznamů, matic a manipulace s celočíselným zápisem. Lze použít seznam nebo matici obsahující jedinečné skutečné proměnné, na které lze jednotlivě odkazovat. Celá čísla lze zřetězit do jedné reálné proměnné jejich vymezením jako celé číslo a desetinnou polovinu skutečného čísla; ke každé polovině se pak přistupuje nezávisle pomocí příkazů iPart a fPart. Proměnné s binárními hodnotami lze uložit jako jedno celé číslo pomocí převodu mezi základnou 2 a základnou 10.
  • Řetězce , včetně Str0- Str9. Ty mohou ukládat libovolný počet znaků nebo dokonce názvy funkcí, pokud je k dispozici volná paměť. Lze je vyhodnotit jako výraz s expr()funkcí, která se nachází v katalogu.
  • Seznamy, včetně - , se schopností vytvářet další. Jedná se v podstatě o jednorozměrná pole sloužící k uložení skutečného nebo komplexního čísla do každého z jejich prvků . Rozměr ze seznamu, jejich počet prvků, může být v rozmezí od 1 do 999, ačkoliv je k dispozici paměť , může být omezujícím faktorem . Když je dimenze seznamu nastavena níže, než byla, prvky na konci jsou oříznuty. Při nastavení výše jsou další prvky na konci vyplněny nulami. Dimenze se nastavují uložením platného čísla do názvu seznamu. Výchozí seznamy mají název L 1 – L 6 , ale lze vytvořit vlastní seznamy. To se provádí nastavením dimenze seznamu, na který odkazuje token L v , za nímž následuje název v rozsahu 1 až 5 znaků, který začíná velkými písmeny - a . K jednotlivým prvkům seznamů lze přistupovat tak, že číslo prvku uvedete do závorky za název seznamu.L1L6 dim( ListsAZΘ
  • Matice , včetně [A]- [J]. Jejich prvky podléhají stejným omezením jako seznamy. Jejich rozměry mohou být definovány až do 99x99 prvků, i když to opět omezuje dostupná paměť. Není možné vytvářet uživatelem definované matice, takže lze použít pouze deset vestavěných.
  • Rovnice proměnných, včetně - , - , a , , . Jedná se v podstatě o řetězce, které ukládají rovnice. Jsou vyhodnoceny tak, aby při použití ve výrazu nebo programu vrátily hodnotu. Specifické hodnoty (konstantní, C) lze zapojit pro nezávislou proměnnou (X) podle názvu rovnice (závislý, Y) podle konstantní hodnoty v závorkách. V níže uvedeném příkladu je použito „(4)“ (bez konkrétního důvodu). ( (4) vrátí hodnotu at X = 4)Y0Y9r1r6uvwY1Y1

Mezi datové typy, se kterými nelze přímo manipulovat, patří:

  • Obrázky ( Pic0- Pic9)
  • Programy ( prgm)
  • Databáze grafů ( GDB0- GDB9)

TI-89 (68k)

  • Celá čísla, do kterých lze uložit velké množství dat. 68k kalkulačky mohou ukládat velmi velká čísla, tak vysoká , s dokonalou přesností.
  • Skutečná čísla pomocí desetinné čárky . Ty ukládají až 14 platných číslic v závislosti na modelu kalkulačky.
  • Komplexní čísla , implementovaná jako dvojice reálných čísel .
  • Řetězce
  • Seznamy, což jsou jednorozměrné propojené seznamy, které podporují operace podle prvků. Na 68k kalkulačkách mohou být prvky celá čísla, reálná čísla, komplexní čísla, řetězce nebo výrazy.
  • Matice s prvky, na které se v seznamech vztahují stejná omezení
  • Symbolické výrazy , jedinečné pro řadu 68k.

Mezi datové typy, se kterými nelze přímo manipulovat (zadáním pouze jejich názvu na řádek by došlo k chybě), patří:

  • Obrázky
  • Data
  • Programy
  • Funkce

Proměnné

Flexibilita při používání proměnných se u modelu kalkulačky značně liší. Například na TI-84 Plus jsou k dispozici všechna písmena v angličtině i theta (Θ).

TI-83/84 (Z80)

Na TI-83/84 může programátor vytvářet seznamy, jejichž jména mají až pět znaků. Všechny ostatní datové typy jsou omezené, například 27 skutečných nebo komplexních proměnných a řada předdefinovaných názvů proměnných jiných typů (např. Matice musí být jednou z deseti proměnných [A]- [J]). Na TI-83/84 mají určité proměnné, jako Ansa finanční proměnné, pevné adresy v paměti RAM, což jim umožňuje mnohem rychlejší přístup než 27 písmenné proměnné. Ansfunguje jako speciální proměnná obsahující výsledek posledního vyhodnoceného kódu. Řádek s pouze proměnnou bude stále vyhodnocen a jeho obsah bude uložen Ansjako výsledek. Protože Ansje tak často přehodnocován, nejčastěji se používá k ukládání velmi dočasných výpočtů nebo k uchovávání hodnot, ke kterým by byl jinak pomalý přístup, například k položkám ze seznamu. Všechny proměnné jsou globální.

TI-89 (68k)

Naproti tomu 68k kalkulačky umožňují, aby všechny názvy proměnných obsahovaly až osm alfanumerických znaků, včetně řečtiny . Proměnné lze navíc seskupit do "složek" nebo je lze lokálně nastavit v programu jejich deklarací Localpříkazem.

Komentáře

TI-83/84 (Z80)

Programátoři Z80 často začínají řádky s „(uvozovkami) pro označení komentáře. Řádky začínající na“ se ve skutečnosti provádějí změnou Ansproměnné, ale to neovlivní nic jiného než výkon, pokud Ansnení přečteno bezprostředně poté.

TI-89 (68k)

68k kalkulačky umožňují programům zahrnout jednořádkové komentáře pomocí symbolu komentáře © . Pokud se komentář objeví jako první řádek za příkazem „Prgm“, zobrazí se ve stavovém řádku, když je program vybrán v katalogu; takové komentáře se často používají k dokumentaci názvů nebo typů parametrů. 68k překladač má vestavěnou funkci pro uložení počtu mezer na začátku řádku, což umožňuje odsazení .

Funkce

TI-83/84 (Z80)

Verze Z80 TI-BASIC znemožňuje explicitní "funkce", jako jsou 68k. Všechny proměnné jsou však globální, takže funkce lze emulovat nastavením proměnných, podobných argumentům, před voláním jiného programu. Návratové hodnoty neexistují; Returnprohlášení zastaví aktuální program a pokračuje kde byl program s názvem.

TI-89 (68k)

68k verze TI-BASIC umožňuje vytváření uživatelsky definovaných funkcí. Funkce mají stejnou syntaxi jako programy, kromě toho, že by použít Func... EndFuncklíčová slova namísto Prgm... EndPrgma že není dovoleno návodu k použití, který provádí I / O, upravovat non-lokální proměnné, ani programy volání. Nicméně funkce mohou být stále ne čistá , protože mohou volat vestavěné funkce, jako je getTime(), getKey()nebo rand(). Všechny funkce mají návratovou hodnotu, která při absenci explicitního Returnpříkazu je posledním vyhodnoceným výrazem.

Jazyková rozšíření třetích stran

Aplikace třetích stran v chronologickém pořadí Omnicalc, xLIB, Celtic a Doors CS přetížily funkce TI-BASIC na kalkulačkách Z80, aby poskytovaly další jazykové funkce. Knihovny třetích stran přetěžují funkce sum () , real () , det () a identity () , které jsou zpracovávány a interpretovány jejich příslušnými aplikacemi. Mezi další funkce patří rychlé rutiny kreslení tvarů, nástroje sprite a tilemap, úpravy a přístupové schopnosti programu a DPH, funkce konstrukce grafického uživatelského rozhraní a mnoho dalšího, většina z nich je obvykle omezena na použití programátory sestav. Všechny funkce vyžadují, aby aplikace jako Doors CS 7.0 byla přítomna na kalkulačce uživatele, což je někdy považováno za omezení používání knihoven.

Příklady

Ahoj světe

Následující programy po spuštění zobrazí frázi „ HELLO, WORLD!“.

TI-83/84 (řada Z80)

:Disp "HELLO, WORLD!"

TI-89 (řada 68k)

(PS tento kód lze zkrátit pouze na funkci Disp, jako v TI-83/84, a hellowld, prgm a endprgm jsou generovány automaticky.)

:hellowld()
:Prgm
:ClrIO
:Disp "HELLO, WORLD!"
:Pause
:ClrIO
:DispHome
:EndPrgm

TI-Nspire

text "HELLO, WORLD!"

TI-Nspire CX

text "HELLO, WORLD!"

Seznamy a smyčky

TI-83/84 (řada Z80)

PROGRAM:LISTS
:"ASK FOR THE NUMBER OF VARIABLES
:Input "NUMBER OF VARS? ",A
:"VALIDATE INPUT OR STOP
:If A<1 or fPart(A)
:Stop
:"A FOR LOOP TO ASK FOR EACH VALUE TO BE IN THE LIST
:For(N,1,A
:Input "VAR ",B
:"STORE THE VALUE INTO THE NTH ELEMENT
:B→L1(N)
:End
:"IMPLICITLY RETURN THE FINAL LIST
:L1

TI-89 (řada 68k)

lists()
:Prgm
:  Local n,i,c © Declare local variables n, i, and c.
:  {}→list © Initialize list as an empty list.
:  Input "Number of variables?",n 
:  For i,1,n
:    Input "Variable #"&string(i),c © & concatenates i after it is converted to a string.
:    c→list[i]
:  EndFor
:EndPrgm

Seznamy mají mnoho možných jmen, což umožňuje mnoha programům manipulovat s mnoha seznamy bez přepsání předchozích dat. Seznamy na TI-82 nemohou mít vlastní názvy (L 1 až L 6 jsou předprogramovány). TI-85 a TI-86 nemají schopnost zpracovávat název proměnné s předplatnými. TI-81 zcela nezvládá seznamy. Seznamy mohou být použity mnoha vestavěnými funkcemi TI-BASIC pro výpočet statistik, včetně různých regresních analýz a dalších . Ty lze volat uvnitř programů, ale přesto zobrazují informace při pozastavení provádění a nemohou ukládat konkrétní výsledky do proměnných.

Rekurze

Rekurze je možná. Program lze volat z jeho samotného nebo z jiného programu.

TI-83/84 (řada Z80)

Níže uvedený příklad slouží k výpočtu faktoriálů . Aby to fungovalo, Xje parametr faktoriální funkce a Amusí se rovnat 1.

PROGRAM:FACT
:If X=0
:Then
:Disp A
:Stop
:End
:XA→A
:X-1→X
:prgmFACT

TI-89 (řada 68k)

factui()
:Prgm
:  Local n
:  Define fact(x)=Func
:    If x=0
:      Return 1
:    Return x*fact(x-1)
:  EndFunc
:  Input "Input a number", n
:  Disp "n! = "
:  Disp fact(n)
:EndPrgm

Funkce

Řada 68k rozlišuje mezi programy a funkcemi. Funkce jsou stejné jako programy, kromě toho, že neumožňují příkazy, které provádějí I/O, včetně úpravy nelokálních proměnných, a vracejí hodnotu, která při absenci explicitního Returnpříkazu je posledním vyhodnoceným výrazem.

fact(x)
:Func
:  If x=0
:    Return 1
:  If x<0
:    Return undef
:  x*fact(x-1)
:End Func

Editory a nástroje

Rozmach komunity grafických kalkulaček fandů v 90. letech přinesl sdílení a spolupráci, včetně nutnosti sdílet TI-BASIC kód na mailing listech a diskusních fórech. Nejprve to bylo provedeno zadáním kódu TI-BASIC z obrazovky kalkulačky do počítače ručně nebo naopak zadáním programů ručně do kalkulaček. Programy TI-BASIC jsou uloženy v tokenizovaném formátu, nelze je upravovat pomocí standardních počítačových textových editorů, takže jak komunita programátorů kalkulaček dospěla, vyvstala potřeba automatizovaného převaděče. Formát počítačem uložených programů TI-BASIC generovaných aplikací TI-GraphLink společnosti Texas Instruments byl nakonec dekódován a byly vytvořeny nástroje třetích stran pro manipulaci s těmito soubory. TI vytvořil základní editor, který zahrnoval v určitých vydáních propojovacího programu TI-GraphLink, ale nezískal široké využití. Zejména používala vlastní znakovou sadu, která se při kopírování a vkládání na fóra nezobrazovala správně.

V roce 2005 vytvořil Joe Penna OptiBASIC, překladatelský nástroj pro převod textu z editoru TI-GraphLink na standardní Unicode. Projekt se brzy rozšířil o regexový optimalizátor TI-BASIC. Nezávisle na tom začal Christopher „Kerm Martian“ Mitchell z Cemetechu vytvářet online převaděč pro extrakci obsahu prostého textu (a později ve formátu HTML a BBCode ) z tokenizovaných programů TI-BASIC, který se rozšířil o online editor programů, exportér a TI -83 Plus emulátor. Projekt SourceCoder absorboval OptiBASIC na konci roku 2005. Jediným dalším hlavním aktuálně používaným editorem TI-BASIC je TokenIDE (neboli „Tokeny“), vytvořený Shaunem „Merthsoft“ McFallem. Offline editor, Tokens, může importovat, upravovat a exportovat programy TI-BASIC, obsahuje nástroje pro sledování velikosti a správnosti programu a nabízí doplňkové funkce, jako je editor sprite/image. Postaven na definicích tokenů uložených v souborech XML , je zamýšlen jako rozšiřitelný pro práci s jakýmkoli uživatelem zadaným mapováním tokenů.

Programy řady NSprire a kalkulaček TI 92 plus a Voyage 200 lze přenášet a ukládat ve formátu prostého textu (Ansi/Ascii/ISO 8859-*) a pro programování kalkulaček TI existuje několik IDE. Pro kalkulačky TI je k dispozici řada definic syntaxe TextPad , úryvků kódu a grafů a definice syntaxe byly také převedeny do formátu používaného editorem Zeus . Formát pro čistý text se také používá pro tlumočníka Lua na kalkulačce.

Existuje nezávislý projekt na vývoj tlumočníka na straně PC pro variantu TI89-92-Voyage 200 TI Basic, který by umožňoval přímé spouštění programů pro kalkulačku i kombinované programy jiných jazyků, které tento tlumočník nazývají. Tlumočník používá standardní vstupní, výstupní, chybové a specifikovatelné protokoly a konfigurační soubory v režimu konzoly pod Windows a druhý program pro replikaci grafiky použité na kalkulačce by s ním souvisel stejným způsobem jako nástroje Tk, které jsou integrovány s Tcl , Perl , Rexx , C a další jazyky. Zdrojem tohoto nástroje je související projekt pro vývoj nástroje typu Tk pro použití VBScript. Předpokládá se také třetí nástroj, který integruje TI Basic na straně PC s tabulkovými a databázovými programy prostřednictvím motorů VBA a WSH. Tento projekt také zahrnuje prostředí Unix ve stylu kalkulačky a tlumočníky Rexx a Perl, tlumočníka Fortran 77 a také převaděče, které se pohybují tam a zpět mezi různými programovacími jazyky kalkulaček Casio, HP, Sharp a Texas Instruments a z těch a různých skriptovacích jazyků .

Viz také

Reference

externí odkazy