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

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

 

TI-Basic - 2. díl

Google       Google       13. 10. 2005       8 497×

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 Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

Reklama
Reklama
Obrázek ke článku ICT PRO školení zaměřené nejenom na ICT

ICT PRO školení zaměřené nejenom na ICT

Dovolte, abychom se představili. Jsme zaměstnanci společnosti ICT Pro, profesionálové v oblasti poskytování komplexních ICT služeb. Neboli služeb spojených s informačními a komunikačními technologiemi, které dnes - ve 21. století - tvoří  nedílnou součást běžného provozu všech moderních firem.

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 © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý