Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

3. úkol - Calculator

Vaším třetím úkolem bude vytvoření plnohodnotné kalkulačky. Soubor se kalkulačkou nazvěte: calculator.py a nahrajte do Odevzdávacího systému.

Zadání

Vytvořte soubor calculator.py, v kterém naimplementujte následující funkce/operace (v závorce název funkce a počet parametrů, která funkce potřebuje):

  1. Sčítání (addition 2)
  2. Odčítání (subtraction 2)
  3. Násobení (multiplication 2)
  4. Dělení (division 2)
  5. Výpočet modula (modulo 2, v našem případě mohou být použita pouze varianty při kterých platí x >= y a y > 0)
  6. Výpočet druhé mocniny čísly (secondPower 1)
  7. Výpočet n-té mocniny čísla (power 2, pořadí: mocněnec, mocnitel, v našem případě mohou být použiti pouze kladní mocnitelé (nula je kladná)) - vracejte typ float.
  8. Výpočet druhé odmocniny z čísla (secondRadix 1, odmocninu lze provést pouze z kladného celého čísla splňující: x > 0)
  9. Magický výpočet (magic 4) - operace bude vysvětlena
  10. Hlavní ovládací funkce (control 5) - funkce bude vysvětlena

Každá z výše uvedených funkcí vrací na výstupu výpočet. V případě, že výpočet nelze provést tak funkce vyhodí výjímku ValueError('This operation is not supported for given input parameters').

K implementaci použijte tuto šablonu: calculator.py
  • Zamyslete se jaké jsou situace, za kterých nelze výpočet provést u všech výše zmíněných funkcí. Berte v úvahu i mezi výpočty.
  • Jelikož některé operace nejsou komutativní, tak pořadí operandů odpovídá pořadí parametrů v hlavičce funkce (např.: substraction(a, b) provádí (a - b) a ne (b - a)).
  • Nezapomeňte na řádné přetypování proměnných.

Magický výpočet

Na vstupu přijímá 4 parametry x, y, z, k. Funkce nejprve spočítá x + k = l, y + z = m a pote vypočte ((l / m) + 1) = n. Hodnotu v proměnné n vrátí na výstupu.

Hlavní ovládací funkce

Na vstupu přijímá 5 parametrů: a,x,y,z a k, na výstupu je výsledek konkrétní operace. Funkce vždy obdrží v parametru a textovou hodnotu na jejím základě se rozhodne co za funkci zavolat. Mapování je následující:

  • “ADDITION” = addition()
  • “SUBTRACTION” = subtraction()
  • “MULTIPLICATION” = multiplication()
  • “DIVISION” = division()
  • “MOD” = modulo()
  • “POWER” = power()
  • “SECONDRADIX” = secondRadix()
  • “MAGIC” = magic()

Parametry x,y,z a k se poté předají konkrétní funkci v pořadí v jakém byly obdrženy. Pokud funkce vyžaduje pouze jeden parametr předá se jí proměnná x, pokud dva parametry předají se jí x a y, pokud čtyři parametry, předají se ji x,y,z a k. Příklad volání:

control('ADDITION', 2,3,4,5) zavolá funkci addition(2,3), která spočítá 2+3 = 5. Funkce control tedy vrátí hodnotu 5.

control('SUBTRACTION', 2,3,4,5) zavolá funkci subtraction(2,3), která spočítá 2-3 = -1. Funkce control tedy vrátí hodnotu -1.

control('DIVISION', 1,0,4,5) zavolá funkci division(1,0), která zjistí, že dělení nelze provést. Funkce tedy vyvolá výjimku dle zadání: ValueError('This operation is not supported for given input parameters')

Funkce control podporuje pouze funkce vypsané v mapování - pokud by chtěl uživatel volat jakoukoliv jinou funkce tak systém vyvolá opět výjimku: ValueError('This operation is not supported for given input parameters')

Hodnocení

Za úlohu lze získat maximálně 2 body.

  • Kalkulátor obsahuje všechny potřebné funkce včetně vstupů a výstupů a tyto funkce provádí správně výpočty včetně správnosti magické funkce. (1 bod)
  • Kalkulátor má správně implementovanou kontrolní funkci control a tato funkce produkuje správné výsledky (1 bod)
Za každý započatý týden po deadline (termínu odevzdání) je penalizace 2 body. Záporné body neudělujeme.

Aby jste nemuseli chodit na cvičení, v kterém je tato úloha zadána, tak je potřeba úlohu odevzdat před cvičením a mít za ní plný počet bodů.

courses/b0b36zal/zadani/3_calculator.txt · Last modified: 2020/09/28 17:05 by seredlad