Š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