Šablona:Mod
{{mod|17|9}}
= 8
Operace modulo.
Oproti prosté wiki-syntaxi a funkcím parseru tato šablona přináší i validace vstupů a vysvětlující/navádějící chybová hlášení.
Teoretický základ a varování o dvojznačnosti
[editovat zdroj]Pokud jsou a and d celá čísla, d nenulové, je zbytek po dělení r takové celé číslo, že a = qd + r pro takový celý výsledný koeficitent q, že |r| < |d|.
Při této definici však jsou při použití záporných členů možné dvě hodnoty zbytků. Například při dělení −42 / −5:
- −42 = 9×(−5) + 3
- −42 = 8×(−5) + (−2).
Zbytky tedy jsou buď 3, nebo −2
Pro dvojici zbytků dále platí, že:
- d = +r − −r
Tato definiční nejednoznačnost může způsobovat závážné potíže při programování.
Příklady
[editovat zdroj]{{mod|5|3}}
= 2{{mod|5|-9}}
= -4{{mod|-5|-9}}
= -5{{mod|0|-9}}
= 0{{mod|0|-9|}}
= 0
Hodnoty a validace
[editovat zdroj]Šablona používá pro účely výpočtu tři nepojmenované hodnoty:
- 1 = čitatel: celé číslo, požadovaný (validováno)
- 2 = jmenovatel: celé číslo, nenulový, požadovaný (validováno)
- 3 = metoda: určuje metodu výpočtu a tedy i vlastnosti výstupu, "volitelný"... (nevalidováno, možnými hodnotami pokryty všechny možnosti, přijme cokoli)
- a) I jeho nepřítomnost už je považována za hodnotu, určuje "ruční" metodu výpočtu pomocí interní funkce round.
- b) Metoda pro vracení vždy kladné hodnoty, aktivovaná hodnotou "+" (znaménko plus jako vstupní string).
- c) Metoda na základě interní funkce mod. Ativována čímkoli jiným: Například stringy "", "w", "wiki"...
Příklady různých hodnot
[editovat zdroj]{{mod}}
= Šablona{{mod}}
pro parametr "čitatel" požaduje vstup, aby bylo co ověřovat!{{mod||}}
= Šablona{{mod}}
pro parametr "čitatel" požaduje vstup, aby bylo co ověřovat!{{mod|5}}
= Šablona{{mod}}
pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!{{mod|5|}}
= Šablona{{mod}}
pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!{{mod|5||+}}
= Šablona{{mod}}
pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!{{mod|x|9}}
= Šablona{{mod|čitatel}}
pro parametr "čitatel" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!{{mod|x|-9}}
= Šablona{{mod|čitatel}}
pro parametr "čitatel" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!{{mod|x|-9|w}}
= Šablona{{mod|čitatel}}
pro parametr "čitatel" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!{{mod|5|y}}
= Šablona{{mod|jmenovatel}}
pro parametr "jmenovatel" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{mod|x|y}}
= Šablona{{mod|čitatel}}
pro parametr "čitatel" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!{{mod|2=y|9}}
= Šablona{{mod|jmenovatel}}
pro parametr "jmenovatel" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{mod|5|0}}
= Šablona{{mod}}
pro parametr "jmenovatel" ověřuje nenulová celá čísla, ale předaná hodnota je právě "0", což nesmí!{{mod|5|0|wiki}}
= Šablona{{mod}}
pro parametr "jmenovatel" ověřuje nenulová celá čísla, ale předaná hodnota je právě "0", což nesmí!{{mod|5|0|z=M|param1=cit|param2=jm}}
= Šablona{{M}}
pro parametr "jm" ověřuje nenulová celá čísla, ale předaná hodnota je právě "0", což nesmí!{{mod|5|1.5}}
= Šablona{{mod}}
pro parametr "jmenovatel" ověřuje celá čísla, což ale předaná hodnota "1.5" není!{{mod|5.5|3}}
= Šablona{{mod}}
pro parametr "jmenovatel" ověřuje celá čísla, což ale předaná hodnota "3.5" není!{{mod|7.7|-9}}
= Šablona{{mod}}
pro parametr "čitatel" ověřuje celá čísla, což ale předaná hodnota "7.7" není!
Metody výpočtu
[editovat zdroj]kladné
[editovat zdroj]- kladné, snadné
{{mod|8|7}}
= 1{{mod|8|7|w}}
= 1 = 1 ={{#expr:8mod7}}
{{mod|8|7|}}
= 1{{mod|8|7|+}}
= 1
- kladné, ale menší
{{mod|1|7}}
= 1{{mod|1|7|w}}
= 1 = 1 ={{#expr:1mod7}}
{{mod|1|7|}}
= 1{{mod|1|7|+}}
= 1
záporný čitatel
[editovat zdroj]- výchozí snadný
{{mod|17|9}}
= 8{{mod|17|9|w}}
= 8 = 8 ={{#expr:17mod9}}
{{mod|17|9|}}
= 8{{mod|17|9|+}}
= 8
- obrácení čitatele
{{mod|-17|9}}
= 1{{mod|-17|9|w}}
= -8 = -8 ={{#expr:-17mod9}}
{{mod|-17|9|}}
= -8{{mod|-17|9|+}}
= 1
- čitatel absolutně menší, záporný
{{mod|-8|9}}
= 1{{mod|-8|9|w}}
= -8 = -8 ={{#expr:-8mod9}}
{{mod|-8|9|}}
= -8{{mod|-8|9|+}}
= 1
záporný jmenovatel
[editovat zdroj]- výchozí snadný
{{mod|14|9}}
= 5{{mod|14|9|w}}
= 5 = 5 ={{#expr:14mod9}}
{{mod|14|9|}}
= 5{{mod|14|9|+}}
= 5
- obrácení jmenovatele
{{mod|14|-9}}
= -4{{mod|14|-9|w}}
= 5 = 5 ={{#expr:14mod-9}}
{{mod|14|-9|}}
= 5{{mod|14|-9|+}}
= 5
- čitatel absolutně menší, kladný
{{mod|5|-9}}
= -4{{mod|5|-9|w}}
= 5 = 5 ={{#expr:5mod-9}}
{{mod|5|-9|}}
= 5{{mod|5|-9|+}}
= 5
oba záporné
[editovat zdroj]- oba záporné
{{mod|-14|-9}}
= -5{{mod|-14|-9|w}}
= -5 = -5 ={{#expr:-14mod-9}}
{{mod|-14|-9|}}
= -5{{mod|-14|-9|+}}
= 4
- čitatel absolutně menší
{{mod|-5|-9}}
= -5{{mod|-5|-9|w}}
= -5 = -5 ={{#expr:-5mod-9}}
{{mod|-5|-9|}}
= -5{{mod|-5|-9|+}}
= 4
metoda | 17 mod 9 | 17 mod -9 | -17 mod 9 | -17 mod -9 |
---|---|---|---|---|
null | 8 | -1 | 1 | -8 |
"w" | 8 | 8 | -8 | -8 |
"" | 8 | 8 | -8 | -8 |
"+" | 8 | 8 | 1 | 1 |
Parametry pro použití v šablonách a validace
[editovat zdroj]Účelem je využít již zde existující mechanismus chybových hlášení i pro další šablony, které v sobě budou tuto šablonu používat.
Šablona používá pro účely nastavení textací do chybových hlášení tři pojmenované parametry:
- z - šablona, která se má v chybovém hlášení zobrazovat
- param1 - název vstupu 1, čitatele, jak se má zobrazovat v hlášeních následnických šablon
- param2 - název vstupu 2, jmenovatele, jak se má zobrazovat v hlášeních následnických šablon
Příklady s parametry
[editovat zdroj]{{mod|x|9|z=M|param1=cit|param2=jm}}
= Šablona{{M|cit}}
pro parametr "cit" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!{{mod|x|9|z=M|param1=|param2=jm}}
= Šablona{{M}}
ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!{{mod|x|9|z=M|param1=cit}}
= Šablona{{M|cit}}
pro parametr "cit" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!{{mod|x|9|z=|param1=cit}}
= Když už je používán vstup "param", je také nutno vstupem "z" určit šablonu, ke které ten "param"="cit" patří!
Šablona{{|cit}}
pro parametr "cit" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!{{mod|x|9|param1=cit}}
= Když už je používán vstup "param", je také nutno vstupem "z" určit šablonu, ke které ten "param"="cit" patří!
Šablona{{|cit}}
pro parametr "cit" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!{{mod|5|9|param1=cit}}
= Když už je používán vstup "param", je také nutno vstupem "z" určit šablonu, ke které ten "param"="cit" patří!
5
{{mod|5|y|z=M|param1=cit|param2=jm}}
= Šablona{{M|jm}}
pro parametr "jm" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{mod|5|y|z=M|param1=cit|param2=}}
= Šablona{{M}}
ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{mod|5|y|z=M|param1=cit}}
= Šablona{{M|jmenovatel}}
pro parametr "jmenovatel" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{mod|5|y|z=M|param1=|param2=jm}}
= Šablona{{M|jm}}
pro parametr "jm" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{mod|5|y|z=M|param2=jm}}
= Šablona{{M|jm}}
pro parametr "jm" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{mod|5|y|z=M|param2=jm}}
= Šablona{{M|jm}}
pro parametr "jm" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{mod|5|y|z=M|param2=}}
= Šablona{{M}}
ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{mod|5|y|z=M}}
= Šablona{{M|jmenovatel}}
pro parametr "jmenovatel" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{mod|5|y|z=|param2=jm}}
= Když už je používán vstup "param", je také nutno vstupem "z" určit šablonu, ke které ten "param"="jm" patří!
Šablona{{|jm}}
pro parametr "jm" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{mod|5|y|param2=jm}}
= Když už je používán vstup "param", je také nutno vstupem "z" určit šablonu, ke které ten "param"="jm" patří!
Šablona{{|jm}}
pro parametr "jm" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{mod|5|y|param2=}}
= Šablona{{mod}}
ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{mod|5|9|param2=}}
= 5