Wikipedista:Oashi/mod
{{Wikipedista:Oashi/mod|17|9}}
= 8
[podstránky Šablona:Mod/] - [podstránky Wikipedista:Oashi/mod/]
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
editovatPokud 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
editovatkladné
editovat- kladné, snadné
{{Wikipedista:Oashi/mod|8|7}}
= 1{{Wikipedista:Oashi/mod|8|7|w}}
= 1 = 1 ={{#expr:8mod7}}
{{Wikipedista:Oashi/mod|8|7|}}
= 1{{Wikipedista:Oashi/mod|8|7|+}}
= 1
- kladné, ale menší
{{Wikipedista:Oashi/mod|1|7}}
= 1{{Wikipedista:Oashi/mod|1|7|w}}
= 1 = 1 ={{#expr:1mod7}}
{{Wikipedista:Oashi/mod|1|7|}}
= 1{{Wikipedista:Oashi/mod|1|7|+}}
= 1
záporný čitatel
editovat- výchozí snadný
{{Wikipedista:Oashi/mod|17|9}}
= 8{{Wikipedista:Oashi/mod|17|9|w}}
= 8 = 8 ={{#expr:17mod9}}
{{Wikipedista:Oashi/mod|17|9|}}
= 8{{Wikipedista:Oashi/mod|17|9|+}}
= 8
- obrácení čitatele
{{Wikipedista:Oashi/mod|-17|9}}
= 1{{Wikipedista:Oashi/mod|-17|9|w}}
= -8 = -8 ={{#expr:-17mod9}}
{{Wikipedista:Oashi/mod|-17|9|}}
= -8{{Wikipedista:Oashi/mod|-17|9|+}}
= 1
- čitatel absolutně menší, záporný
{{Wikipedista:Oashi/mod|-8|9}}
= 1{{Wikipedista:Oashi/mod|-8|9|w}}
= -8 = -8 ={{#expr:-8mod9}}
{{Wikipedista:Oashi/mod|-8|9|}}
= -8{{Wikipedista:Oashi/mod|-8|9|+}}
= 1
záporný jmenovatel
editovat- výchozí snadný
{{Wikipedista:Oashi/mod|14|9}}
= 5{{Wikipedista:Oashi/mod|14|9|w}}
= 5 = 5 ={{#expr:14mod9}}
{{Wikipedista:Oashi/mod|14|9|}}
= 5{{Wikipedista:Oashi/mod|14|9|+}}
= 5
- obrácení jmenovatele
{{Wikipedista:Oashi/mod|14|-9}}
= -4{{Wikipedista:Oashi/mod|14|-9|w}}
= 5 = 5 ={{#expr:14mod-9}}
{{Wikipedista:Oashi/mod|14|-9|}}
= 5{{Wikipedista:Oashi/mod|14|-9|+}}
= 5
- čitatel absolutně menší, kladný
{{Wikipedista:Oashi/mod|5|-9}}
= -4{{Wikipedista:Oashi/mod|5|-9|w}}
= 5 = 5 ={{#expr:5mod-9}}
{{Wikipedista:Oashi/mod|5|-9|}}
= 5{{Wikipedista:Oashi/mod|5|-9|+}}
= 5
oba záporné
editovat- oba záporné
{{Wikipedista:Oashi/mod|-14|-9}}
= -5{{Wikipedista:Oashi/mod|-14|-9|w}}
= -5 = -5 ={{#expr:-14mod-9}}
{{Wikipedista:Oashi/mod|-14|-9|}}
= -5{{Wikipedista:Oashi/mod|-14|-9|+}}
= 4
- čitatel absolutně menší
{{Wikipedista:Oashi/mod|-5|-9}}
= -5{{Wikipedista:Oashi/mod|-5|-9|w}}
= -5 = -5 ={{#expr:-5mod-9}}
{{Wikipedista:Oashi/mod|-5|-9|}}
= -5{{Wikipedista:Oashi/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 |
validace
editovat{{Wikipedista:Oashi/mod|x|-9}}
= Šablona{{mod|čitatel}}
pro parametr "čitatel" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!{{Wikipedista:Oashi/mod|x|-9|w}}
= Šablona{{mod|čitatel}}
pro parametr "čitatel" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!{{Wikipedista:Oashi/mod|x|-9|+}}
= Šablona{{mod|čitatel}}
pro parametr "čitatel" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!
{{Wikipedista:Oashi/mod|5|}}
= Šablona{{mod}}
pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!{{Wikipedista:Oashi/mod|5||w}}
= Šablona{{mod}}
pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!{{Wikipedista:Oashi/mod|5||+}}
= Šablona{{mod}}
pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!
{{Wikipedista:Oashi/mod|5}}
= Šablona{{mod}}
pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!{{Wikipedista:Oashi/mod|5}}
= Šablona{{mod}}
pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!{{Wikipedista:Oashi/mod|5}}
= Šablona{{mod}}
pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!
{{Wikipedista:Oashi/mod|0|-9}}
= 0{{Wikipedista:Oashi/mod|0|-9|w}}
= 0{{Wikipedista:Oashi/mod|0|-9|+}}
= 0
{{Wikipedista:Oashi/mod|5|0}}
= Šablona{{mod}}
pro parametr "jmenovatel" ověřuje nenulová celá čísla, ale daný vstup je právě "0", což nesmí!{{Wikipedista:Oashi/mod|5|0|w}}
= Šablona{{mod}}
pro parametr "jmenovatel" ověřuje nenulová celá čísla, ale daný vstup je právě "0", což nesmí!{{Wikipedista:Oashi/mod|5|0|+}}
= Šablona{{mod}}
pro parametr "jmenovatel" ověřuje nenulová celá čísla, ale daný vstup je právě "0", což nesmí!
Validace hodnot
editovatŠ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"...
Validace parametrů pro použití v šablonách
editovatÚč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
- 1 null
- -8 w
- -8 ""
- 1 +
- -8 null
- -8 w
- -8 ""
- 1 +
validace
editovat{{Wikipedista:Oashi/mod|5|3}}
= 2{{Wikipedista:Oashi/mod|5|-9}}
= -4{{Wikipedista:Oashi/mod|-5|-9}}
= -5{{Wikipedista:Oashi/mod|0|-9}}
= 0{{mod|0|-9|}}
= 0
{{Wikipedista:Oashi/mod}}
= Šablona{{mod}}
pro parametr "čitatel" požaduje vstup, aby bylo co ověřovat!{{Wikipedista:Oashi/mod||}}
= Šablona{{mod}}
pro parametr "čitatel" požaduje vstup, aby bylo co ověřovat!{{Wikipedista:Oashi/mod|5}}
= Šablona{{mod}}
pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!{{Wikipedista:Oashi/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!{{Wikipedista:Oashi/mod|x|9}}
= Šablona{{mod|čitatel}}
pro parametr "čitatel" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!{{Wikipedista:Oashi/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!{{Wikipedista:Oashi/mod|5|y}}
= Šablona{{mod|jmenovatel}}
pro parametr "jmenovatel" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{Wikipedista:Oashi/mod|x|y}}
= Šablona{{mod|čitatel}}
pro parametr "čitatel" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!{{Wikipedista:Oashi/mod|2=y|9}}
= Šablona{{mod|jmenovatel}}
pro parametr "jmenovatel" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{Wikipedista:Oashi/mod|5|0}}
= Šablona{{mod}}
pro parametr "jmenovatel" ověřuje nenulová celá čísla, ale daný vstup 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í!{{Wikipedista:Oashi/mod|5|0|z=M|param1=cit|param2=jm}}
= Šablona{{M}}
pro parametr "jm" ověřuje nenulová celá čísla, ale daný vstup je právě "0", což nesmí!{{Wikipedista:Oashi/mod|5|1.5}}
= Šablona{{mod}}
pro parametr "jmenovatel" ověřuje celá čísla, což ale daný vstup "1.5" není!{{Wikipedista:Oashi/mod|5.5|3}}
= Šablona{{mod}}
pro parametr "jmenovatel" ověřuje celá čísla, což ale daný vstup "3.5" není!{{Wikipedista:Oashi/mod|7.7|-9}}
= Šablona{{mod}}
pro parametr "čitatel" ověřuje celá čísla, což ale daný vstup "7.7" není!
{{Wikipedista:Oashi/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!{{Wikipedista:Oashi/mod|x|9|z=M|param1=|param2=jm}}
= Šablona{{M}}
ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!{{Wikipedista:Oashi/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!{{Wikipedista:Oashi/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!{{Wikipedista:Oashi/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!{{Wikipedista:Oashi/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
{{Wikipedista:Oashi/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!{{Wikipedista:Oashi/mod|5|y|z=M|param1=cit|param2=}}
= Šablona{{M}}
ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{Wikipedista:Oashi/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!{{Wikipedista:Oashi/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!{{Wikipedista:Oashi/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!{{Wikipedista:Oashi/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!{{Wikipedista:Oashi/mod|5|y|z=M|param2=}}
= Šablona{{M}}
ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{Wikipedista:Oashi/mod|5|y|z=M}}
= Šablona{{M|jmenovatel}}
pro parametr "jmenovatel" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{Wikipedista:Oashi/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!{{Wikipedista:Oashi/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!{{Wikipedista:Oashi/mod|5|y|param2=}}
= Šablona{{mod}}
ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!{{Wikipedista:Oashi/mod|5|9|param2=}}
= 5