Wikipedista:Oashi/mod/doc

[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 editovat

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 = +rr

Tato definiční nejednoznačnost může způsobovat závážné potíže při programování.

Příklady editovat

kladné 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