Skip to content
Snippets Groups Projects

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õik klassid pakettides exceptions(v.a. TundmatuMuutuja), expressions (v.a. Tehtepuu) ja matrix). Kulus u. 10h.

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.

Tehete parsimine sõnest võiks olnud olla võimsam ning oleks võinud lisada ka vektori andmetüübi ja sellega seonduvad tehted.

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.

Martin otsustas targem olla ja konfigureeris JUnit testimisraamistikku ning kirjutas palju teste, mis kontrollisid erinevate klasside tööd. Selle abil oli võimalik mul koodi kirjutamise ajal üles leida erinevaid vigu.

Nõuded

  1. Maatriksi operatsioonid:
    • Liitmine ja korrutamine
    • Transponeerimine
    • Inverteerimine ehk pöördmaatriksi leidmine
    • Determinandi leidmine
  2. Mälu --- kalkulaatoril on teatud hulk mälupesi, kuhu on defineeritud maatriksid või numbrid.
  3. Tehted --- kalkulaator on võimeline arvutama mitu tehet ja õiges järjekorras.

Ülesannete jaotus

  1. Martin --- Maatriksi operatsioonid ja tehete struktuurne representatsioon ning arvutus.
  2. 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}}
> A*2
{{6, 12, 24}, {8, 18, 12}, {14, 16, 36}}