Arvutiteaduse instituut
  1. Kursused
  2. 2019/20 sügis
  3. Programmeerimiskeeled (MTAT.03.006)
EN
Logi sisse

Programmeerimiskeeled 2019/20 sügis

  • Info
  • Õppekava
  • Moodle
  • Loengud & Praksid
  • Lisamaterjalid
  • Küsi abi! (Fleep)

Teine Scala kodutöö

Implementeerida Poola kuju (mitte RPN) kalkulaator. Tulemus peab olema selline, et kutsudes käsurealt välja argumendiga '+ * 2 3 4' vastab programm "Vastus: 10\n".

a) Kirjuta meetodid loe, liida, lahuta, korruta ja jaga. Kõik meetodid, mis tuleb kirjtada, on kujul

def f(xs: Seq[String]): (Double, Seq[String]) = ???

Sisse võetakse järjestus Seq[String] kujul ja väljastatakse paar mille esimene kompnent on väärtus ja teine komponent ülejäänud avaldis.

Meetod loe: vaatab järjestuse esimest sümbolit, kui see on "+", "-", "*" või "/" siis kutsub välja vastava meetodi --- argumendiks anda järjestue saba. Kui tegemist pole operaatoriga, eeldame et see on ujukoma arvu kujul --- tagastame selle paaris koos järjestuse sabaga.

Näiteks:

  • loe(Seq("*","2","3","4")) tagastab (6.0, Seq("4"))
  • loe(Seq("2","3","4")) tagastab (2.0, Seq("3", "4"))

Operaatorite meetodid (näiteks liida): meetodiga loe(xs) lugeda sisse (x,r1), siis loe(r1) lugeda (y,r2), nüüd tagastada (x+y, r2).

Näiteks:

  • korruta(Seq("2","3","4")) tagastab (6.0, Seq("4"))
  • loe(Seq("2","4","5")) tagastab (2.0, Seq("4", "5"))

b) Lisa veaolukordade haldus. Veast peab teatama nii juhtudel kui argumente on puudu, üle või on sisestatud tundmatu operaator. (Vihje: sys.exit() sulgeb programmi)

object Calc {
  def main(args: Array[String]): Unit = {
    val xs = args(0).split(" ") // teeb "+ 2 4"-st järjestuse Seq("+","2","4")
    // ...
  }
}
  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused