Přeskočit na obsah

Šablona:Mod

Z Wikipedie, otevřené encyklopedie

{{mod|17|9}} = 8

podstránky Šablona: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 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 = +rr

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