MatrixCalculator
MatrixCalculator on programm, mis võimaldab teha tehteid maatriksitega.
Autorid: Martin Maikov Harald Jõgi
Kirjeldus
Kasutaja saab luua tekstipõhises keskkonnas maatrikseid, neid vaadata ning nende peal tehteid sooritada
Klassid
Kasutajaliides: Kasutaja side programmiga. Küsib sisendit ja teeb selle põhjal asju Alustamiseks meetod küsi(), mis otsustab, mis lehekülge järgmisena näidata Privaatne meetod prompt võtab sõne, väljastab selle koos muutumatu päisega, ning küsib sisendit. Tehtepuu: Loeb sõnest välja võrrandi, kus muutujad asendab nende väärtustega Meetod parse võtab sõne ja muutujate sõnastiku ning teeb nendest võrrandi Meetod lex võtab sõne ja muudab selle vähimate sümbolite massiiviks TundmatuMuutuja: Viga, mis annab teada, et võrrandis on muutuja, mida pole määratud.
Protsess ja Panus
Harald tegi kasutajaliidese ja parseri. (Klassid Kasutajaliides, Tehtepuu, TundmatuMuutuja) Kulus u. 15h. Martin tegi maatriksid ja tehted nendega.
Kõigepealt tegi Harald valmis kogu kasutajaliidese peale maatriksitega tehete.
Lõpuks tegi Harald valmis parseri, viis kasutajaliidese maatriksitele üle ja ühendas parseri kasutajaliidesega.
Mured
Hinnang
Kasutajaliides saaks olla parem: Kohati ebamugav, ülevalt eelmist lehte veel näha jne.
Testimine
Kasutajaliidest testisin peamiselt lihtsalt kasutades ja vaadates, kas soovitud asju on võimalik teha. Tehtepuu juures hakkasin põhjast pihta: Testisin, kas lex() töötab õigesti, siis kontrollisin algeliste tehete puhul parserit jne.
Nõuded
- Maatriksi operatsioonid:
- Liitmine ja korrutamine
- Transponeerimine
- Inverteerimine ehk pöördmaatriksi leidmine
- Determinandi leidmine
- Mälu --- kalkulaatoril on teatud hulk mälupesi, kuhu on defineeritud maatriksid või numbrid.
- Tehted --- kalkulaator on võimeline arvutama mitu tehet ja õiges järjekorras.
Ülesannete jaotus
- Martin --- Maatriksi operatsioonid ja tehete struktuurne representatsioon ning arvutus.
- Harald --- Kasutajaliides ja sõne parsimine tehete andmestruktuurile.
Kasutajaliidese näide
> 2 + 2
4
> |{{1, 4, 3},{0, 4, 0}, {0, 0, 9}}|
36
> |-4|
4
> 6/2*(1+2)
9
> {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}} + {{2, 4, 9}, {0, 4, 0}, {0, 0, 9}}
{{3, 6, 12}, {4, 9, 6}, {7, 8, 18}}
> %set A {
A = {{3, 6, 12}, {4, 9, 6}, {7, 8, 18}}
> %list
A {{3, 6, 12}, {4, 9, 6}, {7, 8, 18}}
B = null
C = null
D = null
E = null
F = null
X = null
Y = null
Z = null
> A*2
{{6, 12, 24}, {8, 18, 12}, {14, 16, 36}}