Co je potřeba si rozmyslet, než začnu programovat
Matematika: Jak se to počítá...
Tak asi si to pamatujete z matematiky, ale kdyby náhodou ne... :)
Kvadratická rovnice je rovnice ve tvaru ax2 + bx + c = 0.
Zapsáno syntaxí PHP by rovnice vypadala takto: $a * $x**2 + $b * $x + $c = 0.
Důležitá hodnota pro řešení kvadratické rovnice diskriminant D = b2 - 4ac.
Zapsáno syntaxí PHP: $d = $b**2 - 4 * $a * $c.
Počet řešení kvadratické rovnice (v oboru reálných čísel ℝ) závisí na diskriminantu:
-
$d < 0: Řešení neexistuje. -
$d = 0: Existuje jedno řešení x =-$b / (2 * $a). -
$d > 0: Existují dvě řešení x1,2 =(-$b ± sqrt($d) ) / (2 * $a).
![]()
Takže výpočet řešení bude o nějakých
ifech a zápisech matematických funkcí...
Programování: Jak se bude funkce na výpočet řešení chovat
V PHP žádná vestavěná funkce na výpočet kvadratické rovníce není.
Budeme si ji tedy muset napsat sami.
Následující poznámky by si měli ti, co to sprogramováním myslí vážněji, projít dopodrobna.
Ostatní si (pro teď) vystačí s tím, že si poznámky přečtou a zapamatují si tu poslední žlutou :)
![]()
Vypočítat řešení nebude složité.
Složité bude vymyslet, v jakém formátu bude funkce vypočítaná řešení vracet do hlavní aplikace.
![]()
Když narazím na problém tohoto typu, obrátím se pro radu k programátorským principům.
![]()
Podívám se na stránku se základními principy PHP a vyberu si ty relevantní:
- KISS (Keep It Simple, Stupid)
- Oddělení zájmů (Separation of Concerns)
![]()
Princip Oddělení zájmů mi říká, že každá část programu má dělat svou práci, nic navíc.
- Funkce pro výpočet řešení proto bude jen počítat řešení.
- Aplikace (příklad) se sama rozhodne, jak s řešením naloží.
![]()
Princip KISS mi říká, že nemám věci komplikovat.
- Funkce mé vracet 0, 1 nebo 2 čísla (řešení).
Na neurčitý počet stejných hodnot "v jednom balíku" máme v PHP indexované pole.- Poradí si ale aplikace nějak jednoduše s indexovaným polem?
ANO, půjde to:
- Aplikace potřebuje jednoduše zjistit, kolik řešení rovnice má = kolik prvků má vrácené pole.
- K tomu má PHP funkcicount($pole), která počet prvků spočítá.
![]()
Naše funkce tedy spočítá řešení, vloží je to indexovaného pole a to vrátí do aplikace.
Aplikace si pole vezme, spočítá počet jeho prvků a tím zjistí počet řešení.
S tím se dá docela dobře pracovat...
OK, ujasnili jsme si, jak se popereme s funkcí na řešení kvadratické rovnice.
Podívejme se tedy na aplikaci.