Převody jednotek

Následující interaktivní notebook umožňuje testovat převody jednotek.

Pro převod jednotek je možné použít dva připravené seznamy předpon jednotek:
	všechny předpony - a, f, p, n, μ, m, základní jednotka, k, M, G, T, P, E;
	omezený výběr předpon - n, μ, m, základní jednotka, k, M, G.

Čas na úlohu lze nastavit kdykoliv během běhu apletu, ale projeví se při generování další úlohy. Po uplynutí tohoto času se zobrazí na 5 sekund řešení úlohy.

Tlačítkem Spustit se spustí náhodné generování úloh.
Tlačítkem Zastavit lze v kterékoliv fázi výpočtu jeho běh zastavit.
Tlačítkem Ulož obrázek se uloží právě zobrazený pracovní prostor (tj. bílý obdélník) do aktuální složky (složka, v níž je uložen tento notebook) pod jménem, které je uloženo v proměnné jmenosouboru. K tomuto jménu souboru je při opakovaném ukládání grafu přidáváno pořadové číslo. Soubor je uložen ve formátu *.JPG.
Pozor! Při každém spuštění tohoto apletu se začínají soubory číslovat opět od jedné! Tak může dojít k přepsání minule uložených obrázků.

© Jaroslav Reichl, 2009

Příprava pro vykreslení grafu

ClearAll["Global`*"];
jmenosouboru="jednotky_prevody_.jpg";
cesta=NotebookDirectory[];
pocetulozeni=0;

x1=-10;x2=10;
y1=0;y2=10;
deltax=1;deltay=2;
stredx=((x1+x2)/2);stredy=((y1+y2)/2);

t0=5;tmin=5;tmax=60;deltat=5;
casnareseni=5;

seznampredpon={"všechny","omezený výběr"};
defaultnipredpony=seznampredpon[[2]];

predponyall={"a","f","p","n","μ","m","","k","M","G","T","P","E"};
koeficientall={(10^(-18)),(10^(-15)),(10^(-12)),(10^(-9)),(10^(-6)),(10^(-3)),1,(10^3),(10^6),(10^9),(10^12),(10^15),(10^18)};
predponyvyber={"n","μ","m","","k","M","G"};
koeficientvyber={(10^(-9)),(10^(-6)),(10^(-3)),1,(10^3),(10^6),(10^9)};
jednotky={"m","m","m","m","m","N","N","N","N","J","J","J","Pa","Pa","Pa","F","V","A","Hz","Hz","s"};
(*Zopakováním některých jednotek ve výše uvedeném seznamu se zvýší pravděpodobnost jejich výběru při náhodném výběru.*)

pocetjednotek=Length[jednotky];
minulyvyber=1;

pocetkroku=0;
dalsipriklad=False;
poprve=True;
okzadani=False;

barva=Black;
barvavarovani=Red;

PrevodyJednotek=Manipulate[
If[dalsipriklad,
{dalsipriklad=False,
casnaulohu=zadanycas,
If[vyberpredpon==seznampredpon[[1]],
{pocetpredpon=Length[predponyall],
poradipredpony1=RandomInteger[{1,pocetpredpon}],
predpona1=predponyall[[poradipredpony1]],
poradipredpony2=RandomInteger[{1,pocetpredpon}],
predpona2=predponyall[[poradipredpony2]],
vybranykoeficient1=koeficientall[[poradipredpony1]],
vybranykoeficient2=koeficientall[[poradipredpony2]]},
{pocetpredpon=Length[predponyvyber],
poradipredpony1=RandomInteger[{1,pocetpredpon}],
predpona1=predponyvyber[[poradipredpony1]],
poradipredpony2=RandomInteger[{1,pocetpredpon}],
predpona2=predponyvyber[[poradipredpony2]],
vybranykoeficient1=koeficientvyber[[poradipredpony1]],
vybranykoeficient2=koeficientvyber[[poradipredpony2]]}],
vybranajednotka=jednotky[[RandomChoice[{1,pocetjednotek}]]],
cislo1=Round[RandomChoice[{1,10,100,1000}]RandomReal[{0.1,9.9}],0.1],
cislo2=cislo1 (vybranykoeficient1/vybranykoeficient2),
okzadani=True
},
""];
If[okzadani,
{If[minulyvyber≠cislo1,
{minulyvyber=cislo1,
caszacatku=AbsoluteTime[]
},
""],

If[caszacatku+casnaulohu+casnareseni-0.5≤Refresh[AbsoluteTime[],UpdateInterval->0.1],
{dalsipriklad=True,
minulyvyber=""},
""]},
""];

grafik=Deploy[
Show[
Graphics[{
If[okzadani&&poprve==False,
{Text[Style[StringJoin[ToString[cislo1,TraditionalForm]," ",predpona1,vybranajednotka," =                    ",predpona2,vybranajednotka],30,barva,FontFamily->Times],{x1,y2-deltay},{Left,Center}],
If[caszacatku+casnaulohu-0.5≤AbsoluteTime[],
{Text[Style["Řešení",20,barvavarovani,FontFamily->Times],{x1,y2-3deltay},{Left,Bottom}],
Text[Style[StringJoin[ToString[cislo1,TraditionalForm]," ",predpona1,vybranajednotka," = ",ToString[cislo2,TraditionalForm]," ",predpona2,vybranajednotka],25,barva,FontFamily->Times],{x1,y2-3.5deltay},{Left,Center}],
Text[Style[StringJoin["Další úloha za: ",ToString[Round[caszacatku+casnaulohu+casnareseni-AbsoluteTime[]]]," s"],15,barva,FontFamily->Times],{x1,y1-deltay},{Left,Bottom}]},
Text[Style[StringJoin["Na řešení zbývá: ",ToString[Round[caszacatku+casnaulohu-AbsoluteTime[]]]," s"],15,barva,FontFamily->Times],{x1,y1-deltay},{Left,Bottom}]]},
If[poprve,
Text[Style["Úlohy se začnou generovat stiskem tlačítka 'Spustit'.",17,barvavarovani,FontFamily->Times,Bold],{stredx,stredy},{Center,Center}],
Text[""]]]
}],
FormatType->StandardForm,
AxesLabel->{"x","y"},AspectRatio->Automatic,PlotRange->{{x1-deltax,x2+deltax},{y1-deltay,y2}},ImageSize->420
]],

{{zadanycas,t0,Style["čas na úlohu",15,barva,FontFamily->Times]},tmin,tmax,deltat,Appearance->"Labeled"},
Delimiter,
{{vyberpredpon,defaultnipredpony,Style["použít předpony",15,barva,FontFamily->Times]},seznampredpon,ControlType->PopupMenu},
Delimiter,
Button[" Spustit ",{
poprve=False,
dalsipriklad=True,
caszacatku=AbsoluteTime[],
minulyvyber=""},ImageSize->{100,Automatic}],
Button[" Zastavit ",{
poprve=True,
dalsipriklad=False},ImageSize->{100,Automatic}],
Delimiter,
Button[" Ulož obrázek ",{pocetulozeni=pocetulozeni+1,Export[StringInsert[StringJoin[cesta,jmenosouboru],ToString[pocetulozeni],-5],grafik]},ImageSize->{100,Automatic}],
ControlPlacement->Left,
FrameLabel->{Style["© Jaroslav Reichl, 2009",10,Black,FontFamily->Times],"",Style["Převody jednotek",25,Black,FontFamily->Times],""}];

Spuštění výpočtu
Zpracujte běžným způsobem následující buňku a na dotaz, který se objeví, odpovězte ANO.

PrevodyJednotek