TI-Basic - 2. díl
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

TI-Basic - 2. dílTI-Basic - 2. díl

 

TI-Basic - 2. díl

Google       Google       13. 10. 2005       8 799×

Přístup k výpočtům v kalkulačkách TI si v některých situacích vyžaduje změnu typu proměnné, ať už z důvodu nároků možné metody nebo zrychlení výpočtu. K těmto převodům slouží několik vestavěných funkcí, které se vám budu snažit přiblížit.

Reklama
Reklama

Převody typů proměnných jsou užitečné ve chvílích, kdy je výhodnější některé proměnné zpracovat jako jiný typ. Jednoduchým příkladem může být příkaz Request, který vyvolá okno pro zadání obsahu proměnné, ale vložená data uloží jako string (řetězec). Pokud jsme ale zadali číslo, pravděpodobně chceme zpracovávat číslo a ne řetězec. Je tedy nutné proměnnou převést z typu řetězec (string) na typ výraz (expression). Uvedu zde nejčastější použití převodů (pokud možno názorně). Nebudu uvažovat použití převodů v základní obrazovce (HOME), protože tam není vyžadováno další zpracování výsledků. Tyto rady berte spíše jako pomůcky pro psaní programů...

Řetězec -> výraz

Nejběžnější použití tohoto převodu jsem již uvedl, takže si to můžeme ukázat na příkladu:

Chceme třeba po spuštění programu zadávat nějaké číslo, a protože jsme nároční, chceme využít okna Request pro vkládání dat. Z uživatelské příručky ale víme, že proměnná, do které se data vloží, je typu řetězec. Jak víme, nad řetězci nelze provádět matematické operace, je tedy potřebné proměnnou převést do přijatelné podoby. K tomu poslouží funkce expr(). Argumentem funkce je název proměnné (nebo přímo řetězec - nepoužívá se), jejíž obsah chceme převést; návratovou hodnotou je výsledek po převodu, tedy data typu výraz. Tato data musíme v programu nějak zpracovat. Buď uložit, nebo je použít ve výpočtu. Uložením myslím i přepsání původního obsahu proměnné. Viz několik příkladů:


request "Zadej cislo",cis

Do proměnné cis vloží zadané číslo jako řetězec:


expr(cis)->a

Do proměnné a vloží převedený řetězec na číslo (výraz):


Disp 2+10*expr(cis)

Zobrazí výsledek výrazu, počítá s hodnotou cis převedenou na výraz:


expr(cis)->cis

Přetypuje proměnnou - do proměnné cis uloží výraz z převedení cis:


expr("10")-›cis

Po provedení tohoto příkazu bude v proměnné cis hodnota 10 a ne řetězec "10". Tento příkaz s přímým zadáním argumentu nemá v programu praktický význam - když víme, že budeme chtít převést "10" na výraz, tak rovnou uložíme 10 jako výraz:


expr("ahoj")->cis

Zajímavější je převod "nečíselného" řetězce. Tu se projeví síla typu expression - výraz. Po tomto příkazu se hledá proměnná s názvem "ahoj". Pokud existuje, bude "ahoj" bráno jako proměnná s obsahem, můžeme tedy tímto převodem vyvolat její obsah. Pokud neexistuje, bude s "ahoj" nakládáno jako s obecnou nezávislou proměnnou bez hodnoty.

Výraz -> řetězec

Tento převod se používá přesně v opačném případě, než v předchozím, tedy když číslo (přesněji výraz) - výsledek výpočtu - chceme zobrazit na displeji jako součást nějakého dalšího řetězce nebo textu (příkaz Text v dialogovém okně). K tomuto účelu slouží funkce string(). Jejím argumentem je název proměnné typu výraz (nebo rovnou výraz samotný - opět - v programu se nepoužívá) a vrací převedený řetězec, který musí být zpracován buď jako argument jiného příkazu či funkce, nebo uložen do proměnné. Opět uvedu příklad:


10->a
Disp "Vysledek je "&string(a)&" V"

Zobrazí "Vysledek je 10 V", tedy spojení řetězců. V případě použití 'Disp "Vysledek je ",a' je zobrazení na dvou řádcích.


string(a)->a
Dlog
Text "Cislo a = "&a
Enddlog

Příkaz Text v bloku dialogu vyžaduje jako argument řetězec. I zde by se dalo použít převedení až v spojení řetězců.


string(10)->a

Tento příklad je zde jen pro úplnost, neboť je zbytečné v programu uvádět pevné argumenty (převod by se prováděl zbytečně). Po provedení tohoto příkazu bude v proměnné a řetězec "10".

Matice -> seznam

Převod mezi maticí a seznamem je méně používaný, ale použitelný. Oceníme ho hlavně v případech, kdy pracujeme se statistickou analýzou, tedy s proměnnou typu data (resp. se seznamy). Pokud do argumentu této funkce zadáme celou matici, bude převedena na seznam po řádcích. Chceme-li tedy vybírat do seznamu jeden prvek, řádek, sloupec nebo submatici, musíme využít přístupu k těmto prvkům pomocí funkce SubMat(), v případě řádku postačí výběr pomocí hranatých závorek (viz příklad).


mat list([1,2,3;4,5,6])->sez

Původní matice je dvouřádková, výsledný seznam bude {1,2,3,4,5,6}


mat list([1,2,3;4,5,6][2])

Do seznamu bude umístěn pouze druhý řádek matice.


mat list(subMat([1,2,3;4,5,6],1,1,2,2)

Pomocí funkce subMat() jsme vybrali submatici [1,2;4,5], která je umístěna do seznamu {1,2,4,5}. Samozřejmě je možné pracovat s maticí uloženou v paměti voláním jména její proměnné. Příklad zde uvádět nebudu.

Seznam -> matice

Protože se jedná o opačný převod než předchozí, je jasné, že oblast použití bude obdobná, tedy máme-li seznam jako výsledek nějaké statistické analýzy, můžeme jej použít v maticovém, resp. vektorovém počtu. Tato funkce ale nedokáže odhadnout, které prvky patří do kterého řádku, takže alibisticky vytvoří řádkovou matici, tedy vektor. K vytvoření dvourozměrné matice budeme muset vytvořit novou libovolnou dvourozměrnou matici, do které budeme jednotlivé řádkové matice vkládat prostým přiřazením. Ukážeme si pár příkladů:


list mat({1,2,3})->mat

Z daného seznamu jsme vytvořili řádkovou matici, neboli řádkový vektor.


list mat({1,2,3})->mat1
list mat({4,5,6})->mat2
NewMat(2,3)->mat
mat1->mat[1]
mat2->mat[2]

V prvních dvou řádcích jsme vytvořili dva nové vektory, dále novou dvouřádkovou matici, do které budeme ukládat naše vektory. Když už jsme ale u toho, mohli bychom tento převod trochu vylepšit. Pravděpodobně budeme počet vektorů (řádků nové matice) znát dopředu. Půjde tedy jen o to, aby seděl počet sloupců (prvků v každém vektoru). Toto malé ošetřeníčko by mohlo vypadat třeba takto:

 
list mat({1,2,3})->mat1
list mat({4,5,6})->mat2
if (dim(mat1) > < dim(mat2))
return
NewMat(2,dim(mat1))->mat
mat1->mat[1]
....

Kdybychom měli těchto seznamů více, mohli bychom ušetřit kód a umístit celou proceduru do cyklu. Dokonce bychom ani nemuseli znát počet seznamů. To už ale zasahuje do dalších článků....

Výraz -> sezam

Název "Výraz -> seznam" trochu zavádí. Slovo "výraz" totiž znamená výsledek po řešení rovnice pomocí funkce solve() a csolve(). Je třeba dodat, že tyto funkce nejsou funkcemi v pravém slova smyslu - nevracejí totiž hodnoty, ale výsledek pouze zobrazí na display. Tyto výsledky se nedají programově zpracovat a proto je tu funkce, která výsledky solve() a csolve() převede na seznam výsledků (kořenů rovnice). Potom už lze s výsledky dále počítat. Tento postup (použití dvou funkcí) je trochu nešikovný, vzhledem k tomu, že se dá většina problémů řešit pomocí zeros() a czeros(). Někdy je ale použití solve() nevyhnutné, takže proto je tu tento převod:


exp list(solve(2x^2-2x+1=5,x),x)->vysl
disp "Prvni koren",vysl[1]
disp "Druhy koren",vysl[2]

Řešením dané rovnice dostaneme dva kořeny, které nám funkce exp > list uloží do seznamu vysl, jehož členy můžeme například jednotlivě zobrazit pomocí disp. Nesmíme zapomenout udat v argumentu funkce převodu název proměnné, jejíž výsledky chceme převést (v našem případě x).

Zdroj: www.education.ti.com

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

3 názory  —  3 nové  
Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Ing. Matěj PáchaAutor je studentem doktorského studia na Elektrotechnické fakultě Žilinské univerzity, obor Elektrická trakce. Mezi koníčky patří hudba a hra na baskytaru.
Web    

Nové články

Obrázek ke článku Nový IT hráč na českém trhu

Nový IT hráč na českém trhu

V roce 2015 otevřela v Praze na Pankráci v budově City Tower své kanceláře společnost EPAM Systems (NYSE:EPAM), jejíž centrála se nachází v USA. Společnost byla založená v roce 1993 a od té doby prošla velkým vývojem a stále roste.

Reklama
Reklama
Obrázek ke článku České Radiokomunikace opět hledají nejlepší nápady pro internet věcí

České Radiokomunikace opět hledají nejlepší nápady pro internet věcí

České Radiokomunikace (CRA) pořádají druhý ročník CRA IoT Hackathonů. Zájemci z řad vývojářů a fanoušků moderních technologií mohou změřit své síly a během jediného dne sestrojit co nejzajímavější funkční prototyp zařízení, které bude komunikovat prostřednictvím sítě LoRa. CRA IoT Hackathony se letos uskuteční ve dvou fázích, na jaře a na podzim, v různých městech České republiky. Jarní běh se odstartuje 31. března v Brně a 7. dubna v Praze.

Obrázek ke článku Cloud computing je využíván stále intenzivněji

Cloud computing je využíván stále intenzivněji

Využívání cloud computingu nabývá na intenzitě. Jen v letošním roce vzroste podle analytiků trh se službami veřejného cloudu o 18 %, přičemž o téměř 37 % vzrostou služby typu IaaS. Růst o více než pětinu pak čeká služby poskytování softwaru formou služby, tedy SaaS. Aktuálním trendům v oblasti využívání cloudu se bude věnovat konference Cloud computing v praxi, která se koná 23. března. 2017 v pražském Kongresovém centru Vavruška na Karlově náměstí 5.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý