1 / 25

Graafika. Loogiline tüüp. Keerukamad loogilised avaldised.

Graafika. Loogiline tüüp. Keerukamad loogilised avaldised. Tahvlipraktikum 8. Loogiline tüüp: ainult kaks väärtust true (jah; tõene) false (ei; väär). Loogilist tüüpi muutuja ( x ) kirjeldus: boolean x; Sellele võib omistada ainult loogilise avaldise väärtust:

Download Presentation

Graafika. Loogiline tüüp. Keerukamad loogilised avaldised.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Graafika. Loogiline tüüp. Keerukamad loogilised avaldised. Tahvlipraktikum 8

  2. Loogiline tüüp: ainult kaks väärtust true (jah; tõene) false (ei; väär) Loogilist tüüpi muutuja (x) kirjeldus: boolean x; Sellele võib omistada ainult loogilise avaldise väärtust: x = lav; true false loogiline muutuja aritm.av võrdlusmärk artim.av Konstant: Konstant: Muutuja Võrdlus: == != <= >= < > Ei ole lubatud: aritm.av võrdlusmärk artim.av võrdlusmärk artim.av Nt. 0 < a <= b+1 loogilineMeetod(argumendid) Loogilise meetodi väljakutse: sulgude ja loogiliste tehete abil koostatud Keerukam loogiline avaldis:

  3. Ülesannet, mille korral tuleb leida üks kahest võimalikust vastusest (JAH või EI), nimetatakse kontrollimisülesandeks. Kontrollimisülesanne programmeeritakse loogilist tüüpi meetodina, st meetodina, mille tagastustüübiks on boolean. Sellise meetodi naasmisdirektiivides näidatakse loogiline avaldis, erijuhul loogiline konstant (true või false) või loogiline muutuja. static boolean onPalindroom(int a) Antud: arv a, a > 0 Tulemus: tagastatakse true, kui a on palindroom false vastasel korral return a == invert(a);

  4. Loogiline meetod: tagastustüüp boolean Vastab kontrollimisülesandele. boolean m(form. param. loetelu){ // Antud: // Tulemus: tagastatakse true, kui ...... // false vastasel korral . . . return lav; }

  5. Kui lav on loogiline avaldis, siis ka (lav) on loogiline avaldis. ! lav lav1 && lav2 lav1 || lav2 Loogilised tehted: EI JA 0 < a <= b+1 asemel tuleb kirjutada: 0 < a && a <= b+1 Samaväärne (siin tarbetult pikk): !(0 >= a || a > b+1) VÕI

  6. Ülesandeid • Koostada meetod, mis kontrollib, kas antud täisarv on paarisarv. • Koostada meetod, mis kontrollib, kas antud järjendi elementide summa on positiivne arv. • Koostada meetod, mis kontrollib, kas antud täisarvude järjendi elemendid moodustavad aritmeetilise progressiooni.

  7. Graafika Erinevalt tavapärasest “paremakäelisest” koordinaadistikust on ekraanikoordinaadistik “vasakukäeline” (y-telg on suunatud alla): x Ekraani (joonistamistahvli) vasak ülemine nurk on (0; 0). Ekraanipunkti nimetatakse ka piksliks. y

  8. Ülesanne 1. Ristküliku laius on 190 ja kõrgus 80 ning vasaku ülemise tipu koordinaadid on (100; 100). Leida ülejäänud kolme tipu koordinaadid. x T1 = (100; 100) T2 = T3 = T4 = T1 T2 190 80 T3 T4 y

  9. Mida tuleb teha • Teha raam ehk aken • Lisada raamile joonistamise ala ehk tahvel • Tahvlile joonistada: • teksti • lõike • ristkülikuid • ringe või ovaale • …

  10. Raami loomine (Jooniseraam.java) import java.awt.*; // Java paketid graafika loomiseks import javax.swing.*; class Jooniseraam { // PEAKLASS public static void main(String[] arg) { // peameetod JFrame raam = new JFrame("Joonis"); // raami loomine, raami (akna) pealkiri: Joonis raam.setLocation(new Point(100, 100)); // raami asukoht ekraanil: ülemine vasak nurk (100; 100) raam.setSize(new Dimension(600, 500)); // raami mõõtmed: laius 600, kõrgus 500 raam.show(); // raami näitamine }// peameetod }// Jooniseraam

  11. Tahvli lisamine raamile • Teha klass Tahvel • Klassi Jooniseraam lisada korraldus uue tahvli lisamiseks

  12. Tahvli loomine (Tahvel.java) import java.awt.*; import javax.swing.*; class Tahvel extends JPanel { public void paintComponent(Graphics g) { super.paintComponent(g); // paneeli joonistamine }// paintComponent }// Tahvel

  13. Tahvliga raam (Jooniseraam.java) import java.awt.*; import javax.swing.*; class Jooniseraam { public static void main(String[] arg) { JFrame raam = new JFrame("Joonis"); raam.setLocation(new Point(100, 100)); raam.setSize(new Dimension(600, 500)); // tahvli lisamine raam.show(); }// main }// Jooniseraam raam.getContentPane().add(new Tahvel());

  14. Joonistamine (Joonis.java) import java.awt.*; class Joonis{ static void joonistada(Tahvel t, Graphics g){ // põhimeetod, rakendamiseks klassist Tahvel // Antud: tahvel t, graafikakontekst g // Tulemus: joonis tahvlil t t.setBackground(Color.yellow); // tahvli taustvärv (kollane) // raamitud tekst tahvli ülemisse vasakusse nurka: g.setColor(Color.blue); // teksti värv (sinine) g.drawString(„Minu esimene joonis“, 15, 20); // tekst g.drawRect(10, 7, 125, 15); // raamida tekst } //joonistada } // Joonis

  15. Joonistamine tahvlil (Tahvel.java) import java.awt.*; import javax.swing.*; class Tahvel extends JPanel { public void paintComponent(Graphics g) { super.paintComponent(g);Joonis.joonistada(this, g); }// paintComponent }// Tahvel

  16. javac Joonis.javajavac Tahvel.javajavac Jooniseraam.javajava Jooniseraam

  17. Teised joonised • Muuta meetodit joonistada() klassis Joonis • Klassid Jooniseraam ja Tahvel jäävad samaks • Klassis Tahvel võib muuta joonistamise klassi nime ja joonistamise meetodi nime • Joonis.joonistada(this, g); • Peaklassis Jooniseraam võib soovi korral muuta • raami pealkirja • JFrame raam = new JFrame("Joonis"); • raami esialgset paiknemist • raam.setLocation(new Point(100, 100)); • raami suurust • raam.setSize(new Dimension(600, 500));

  18. Värvid g.setColor(…); t.setBackground(…); Color.black must Color.blue sinine Color.cyan hele rohekas-sinine Color.darkGray tumehall Color.gray hall Color.green roheline Color.lightGray helehall Color.magenta lilla Color.orange oranž Color.pink roosa Color.red punane Color.white valge Color.yellow kollane

  19. Joonistamismeetodid (Graphics) g.drawLine(x, y, x1, y1); lõik (x;y)---(x1;y1) g.drawRect(x, y, laius, kõrgus); ristküliku küljed, (x;y): ülemine vasak nurk g.fillRect(x, y, laius, kõrgus); ristkülik g.drawOval(x, y, laius, kõrgus); ovaaljoon mõttelisse ristkülikusse g.fillOval(x,y,laius, kõrgus); ovaal mõttelisse ristkülikusse (x,y) (x,y) kõrgus laius

  20. Kirjutamine g.drawString(“tekst”, x, y); (x,y) tekst Jooksva kirjakuju seadmise (enne g.drawString()) näiteid: g.setFont(new Font(“Serif”, Font.PLAIN, 14)); g.setFont(new Font(“Courier”, Font.BOLD, 12)); g.setFont(new Font(“SansSerif”, Font.ITALIC, 16)); kirja tüüp kuju suurus PLAIN - tavaline; BOLD - poolpaks, ITALIC - kursiiv

  21. Graafikaülesanne 1 • Kuidas teha ristkülik (slaid 8)? • Millist faili muuta? • Mida muuta?

  22. Ülesanne 2. Koostada* graafikaprogramm, mis joonistab hallikat värvi (Color.lightGray) täidetud ruudu, mille küljepikkus on 200 ning vasaku ülemise tipu koordinaadid (100; 100) ja ääristab selle sama suure ruudu musta värvi külgedega. Ülesanne 2a. Täiendada* eelmises ülesandes koostatud graafikaprogrammi nii, et hallika ruudu sisse joonistataks veel juhusliku paigutuse ja suurusega väiksem punane ruut. Küljepikkus a on juhuarv lõigul [10; 60]. Seega punase ruudu vasaku ülemise tipu koordinaadid on juhuarvud lõigul ? * Kirjutada ainult meetodi joonistada sisu.

  23. Punkt asub ruudul parajasti siis, kui ta on kas ruudu sisealas või ruudu küljel. x y Ülesanne 3. Olgu antud punkt (xp, yp) ning ruut küljepikkusega a ja ülemise vasaku nurgaga (x, y). Lõpetada punkti ruudul asumise tingimus: ja

  24. Kaks ruutu lõikuvad, kui neil on vähemalt 1 ühine punkt. Ütleme, et üks ruut R1 torkab teist ruutu R2, kui vähemalt 1 ruudu R1 tipp asub ruudul R2. R1 R1 R2 R2 R2 R1 • Ülesanne 4. On antud 2 ruutuR1 ja R2. Kas on õiged väited • Kui R1 torkab ruutu R2, siis R1 ja R2 lõikuvad. • Kui R1 ei torka ruutu R2, siis R1 ja R2 ei lõiku. • R1 ja R2 lõikuvad parajasti siis, kui • kui R1 torkab ruutu R2 või R2 torkab ruutu R1. R2

More Related