90 likes | 238 Views
Animatsiooni näide Ruutvõrrandi lahendamine Siseklass Andmed käsurealt Andmed tekstifailist Tulemused tekstifaili. Tahvlipraktikum 9. Animatsiooni näide Vt. http://www.cs.ut.ee/~kiho/progr/fall06/Tahvlipraktikum/T8/PorkePall/
E N D
Animatsiooni näideRuutvõrrandi lahendamine SiseklassAndmed käsurealtAndmed tekstifailistTulemused tekstifaili Tahvlipraktikum 9
Animatsiooni näide Vt. http://www.cs.ut.ee/~kiho/progr/fall06/Tahvlipraktikum/T8/PorkePall/ http://www.cs.ut.ee/~kiho/progr/fall06/Tahvlipraktikum/T8/TP8GraafikaLoogika.ppt
Ülesanne 1. Kirjutada meetod ruutvõrrandi lahendamiseks. Antud: kolm reaalarvu. Tulemus: tagastatakse kolme-elemendiline järjend (esimene [indeksiga 0] – õnnestumise tunnus) Täiendada programmi selle meetodi testimisega. Meetod: • ??? rtvl(double a, double b, double c) • Antud: ruutvõrrandi kordajad a, b, c • Tulemus: luuakse kolme-elemendiline järjend, selles • [0]: õnnestumise tunnus – kui õnnestus, siis > 0 • [1]:[2]:lahendid (õnnestumise korral) • tagastatakse viit loodud järjendile • ??? tulem = new ??? ; • … • tulem[0] = … • tulem[1] = … • tulem[2] = … • … • return tulem; Rakendamine: ??? lah = rtvl(1.0, 2.0, -3.0); if(??? > 0) println(“x1 = “ + ???); println(“x2 = “ + ???); else println(“Lahendit ei leitud!“);
Aineprogrammi-väline ---------------------------------------------------------------------- Ülesanne 2. Kirjutada meetod ruutvõrrandi lahendamiseks. Antud: kolm reaalarvu. Tulemus: tagastatakse objekt, mis koosneb kolmest väljast: boolean ok – õnnestumise tunnus double x1 double x2 Täiendada programmi selle meetodi testimisega.
Siseklassi kirjeldus (siin: sisaldab ainult andmevälju) Alt+kirje static class Lahend{ boolean ok; double x1; double x2; } class Lahend boolean ok; double x1; double x2; Meetod: • Lahend rtvl(double a, double b, double c) • Antud: ruutvõrrandi kordajad a, b, c • Tulemus: luuakse objekt Lahend (klassi Lahend isend), selles • ok – õnnestumise tunnus • x1 ja x2: lahendid (õnnestumise korral) • tagastatakse viit loodud isendile • Lahend tulem = new Lahend(); • … • tulem.ok = … • tulem.x1 = … • tulem.x2 = … • … • return tulem; Rakendamine: Lahend lah = rtvl(1.0, 2.0, -3.0); if(lah.ok) println(“x1 = “ + lah.x1); println(“x2 = “ + lah.x2); else println(“Lahendit ei leitud!“); ---------------------------------------------------------------------- Aineprogrammi-väline.
Ülesanne 3. Kirjutada ruutvõrrandi lahendamise meetodi katsetamise programm, mis saab ruutvõrrandi kordajad käsurea argumentidena. if (args.length != ???) õpetus(); return; Alt+s2d Double.parseDouble(args[0/1/2]) . . . … rtvl(…) … … õpetus(…) …
Ülesanne 4. Kirjutada ruutvõrrandi lahendamise meetodi katsetamise programm, mis saab ühe ruutvõrrandi kordajad tekstifaili järjekordsest reast. Arvude vahel on tühik(ud). AlgJava I/O, readln Alt+io !! try print(“Palun faili nimi: “) String kust = readln(); sisendfaili nimi BufferedReader sfail = readerFrom(kust); sisendfailst lugeja String rida = ""; * while((rida = sfail.readLine()) != null)lugeda rida sisendfailist println(rida); rea väljastamine konsoolile lõpetamine sfail.close(); catch (IOException e){ System.err.println(e.getMessage()); Vt. järgmine slaid
String abc[] = rida.trim().split(“( )+”); eraldaja: üks või mitu tühikut if on parajasti kolm arvu, siis double a = ???; double b = ???; double c = ???; Lahendada ruutvõrrand: ??? Väljastada vastus: ??? else Väljastada: “Vigane rida: pole kolm arvu!” String abc[] = rida.trim().split(“,( )*”); eraldaja: koma ja null või enam tühikut
Ülesanne 4. Kirjutada ruutvõrrandi lahendamise meetodi katsetamise programm, mis saab ühe ruutvõrrandi kordajad tekstifaili järjekordsest reast ja väljastab teise tekstifaili read: kas Kordajad: <a>, <b>, <c>; x1 = … x2 = … --- õnnestumise korral või Kordajad: <a>, <b>, <c>; reallahendeid ei ole või Vigane rida! Sisendfailis on arvude vahel koma ja null või enam tühikut.