14. labor: Käsurea argumendid

Labori sisu

Esitamisele kuuluvad ülesanded

Selles tunnis on üks ülesanne ning edasijõudnute ülesanded, mis lisavad algsele lahendusele funktsionaalsust juurde.

Tunnitöö: kalkulaator

Selle tunnitöö raames ehitad kalkulaatori mis töötab kasutades käsurea argumente.

Nõuded
  • Loodavaks programmiks on lihtne kalkulaator, mis
    • teostab liitmist, lahutamist, korrutamist ja jagamist
    • toetab positiivseid täisarvulisi operande
    • teeb vaid ühe tehte korraga (nt 3 + 6)
  • Tehte vastus antakse 2 komakohaga
  • Nii operandid kui operaator loetakse käsurea argumentidena
    • Näide liitmistehtest: ./calculator 3 + 6
  • Programm ei tohi pärast käivitumist kasutajalt sisestust küsida
  • Programm tuvastab ära järgnevad veaolukorrad
    • Vale käsurealt loetud argumentide arv
    • Tundmatu operaator (tehe)
    • Mittenumbriline operand (arv)
    • Nulliga jagamine
  • Vea tekkides kuvatakse kasutajale mis viga tehti ning seejärel programmi kasutusjuhend
Soovituslik loetelu funktsioonidest
  1. Abiinfo kuvamine
    1. Kuvab juhised kuidas programmi kasutada
  2. Argumentide kontroll
    1. Kontrollib mitu argumenti programmile anti
    2. Edasijõudnute versioonis tuvastab --help  argumendi.
  3. Veahalduse funktsioon
    1. Kuvab mis vea kasutaja tegi
    2. Kutsub abiinfo kuvamise funktsiooni
  4. Operandi kontroll
    1. Kontrollib, kas operand on numbriline
    2. Tagastab operandi, mis on teisendatud arvulisele kujule (nt int)
  5. Arvutamine
    1. Tuvastab kasutaja poolt soovitatud tehte ja arvutab välja vastuse
    2. Tagastab vastuse

Lisaks võib olla kasulik luua ka funktsioonid operaatori kontrollimiseks ja tuvastamiseks.

Näidis

Valmislahenduse testimiseks omal käel soovitame alla laadida näidisprogrammi ja katsetada kuidas see töötab.

Kõikide testjuhtudega mida programm toetama peab vaata järgmist peatükki.

Näide 1: Programmi sisend OK, programm annab vastuse

Näide 2: programm käivitatakse vale sisendiga ning kuvatakse veateade ja kasutamisjuhend

Testimine

Järgnevalt olen välja toonud peamised testjuhud kalkulaatorile

Edasijõudnute ülesanne 1: reaalarvud

Muuda oma programmi sedasi, et sisendina oleksid toetatud reaalarvud. St pead toetama negatiivseid ja murdosaga arve.

Testi järgnevate sisenditega

  • -3.3
  • 3-3
  • -3-3
  • 3.3.3

Edasijõudnute ülesanne 2: laiendatud funktsionaalsus

Lisa oma programmi järgnevad funktsioonid:

  • Ruutjuure võtmine
  • Astendamine
  • Abiinfo kuvamine argumendiga --help . Abiinfo kuvades ei tohi tekkida veaolukord.

Kõik lisatud funktsioonid peaksid olema kajastatud ka abiinfos!

Pärast tundi peaksid

  • Saama aru mis asi on käsurea argument
  • Teadma näiteid teistest programmidest mis kasutavad käsurea argumente ja kuidas
  • Oskama ise programmile käsurea argumente anda
  • Oskama C koodis käsurea argumente vastu võtta
  • Teadma, et main() funktsioonil on mitu kuju
    • Mõistma mis asi on argumentide arv (argc, argument count)
    • Mõistma mis asi on argumentide vektor (argv, argument vector)
  • Teadma mis on tavaliselt esimene kaasa antav argument
  • Mõistma kuidas argumentide hulk muutub vastavalt palju argumente programmi käivitades kaasa antakse
  • Mõistma, et * ja [] tähistavad sisuliselt sama asja
  • Mõistma mida * tähistab käsurealt programmi käivitades ja kuidas on seda sümbolit võimalik programmile anda argumendina
  • Oskama anda edasi mitmest sõnast koosnevat argumenti ühe argumendina
  • Oskama teisendada sõnesid täisarvudeks, murdarvudeks

Täiendav materjal