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 631×

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 NEWTON Media prohledá 200  milionů mediálních zpráv během sekund díky Cisco UCS

NEWTON Media prohledá 200 milionů mediálních zpráv během sekund díky Cisco UCS

Česká společnost NEWTON Media provozuje největší archiv mediálních zpráv ve střední a východní Evropě. Mezi její zákazníky patří například ministerstva, evropské instituce nebo komerční firmy z nejrůznějších oborů. NEWTON Media rozesílá svým zákazníkům každý den monitoring médií podle nastavených klíčových slov a nabízí online službu, kde lze vyhledat mediální výstupy v plném znění od roku 1996.

Reklama
Reklama
Obrázek ke článku Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Touto roční dobou, kdy je zem pokrytá barevným listím a prsty křehnou v mrazivých ránech, se obvykle těšíme na zbrusu novou verzi RAD Studia. Letos si však ale budeme muset počkat na Godzillu a Linux až do jara. Vezměme tedy za vděk alespoň updatem 2 a jelikož dle vyjádření pánů z Embarcadero se budou nové věci objevovat průběžně, pojďme se na to tedy podívat.

Obrázek ke článku Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Stále rostoucí zájem o cloudové služby i maximální důraz na pružnost, spolehlivost a bezpečnost IT vedou k výrazným inovacím v datových centrech. V infrastruktuře datových center hraje stále významnější roli software a stále častěji se lze setkat s hybridními přístupy k jejich budování i provozu.

Obrázek ke článku Konference: Mobilní technologie mají velký potenciál pro byznys

Konference: Mobilní technologie mají velký potenciál pro byznys

Firmy by se podle analytiků společnosti Gartner měly  rychle přizpůsobit skutečnosti, že mobilní technologie už zdaleka nejsou horkou novinkou, ale standardní součástí byznysu. I přesto - nebo možná právě proto - tu nabízejí velký potenciál. Kde tedy jsou ty největší příležitosti? I tomu se bude věnovat již čtvrtý ročník úspěšné konference Mobilní řešení pro business.

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ý