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

Graafika. Loogiline tüüp. Keerukamad loogilised avaldised

Embed Size (px)

DESCRIPTION

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: - PowerPoint PPT Presentation

Citation preview

Page 1: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

1

Graafika. Loogiline tüüp.

Keerukamad loogilised avaldised.

Tahvlipraktikum 8

Page 2: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

2

Loogiline tüüp: ainult kaks väärtusttrue (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

falseloogiline muutujaaritm.av võrdlusmärk artim.av

==!=<=>=<>

loogilineMeetod(argumendid)sulgude ja loogiliste tehete abil koostatud

Konstant:

Konstant:

Muutuja Võrdlus:

Loogilise meetodi väljakutse:

Ei ole lubatud:aritm.av võrdlusmärk artim.av võrdlusmärk artim.avNt.0 < a <= b+1

Keerukam loogiline avaldis:

Page 3: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

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 korralreturn a == invert(a);

Page 4: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

4

Loogiline meetod: tagastustüüp booleanVastab kontrollimisülesandele.

boolean m(form. param. loetelu){// Antud: // Tulemus: tagastatakse true, kui ......// false vastasel korral

. . .

return lav;}

Page 5: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

5

Loogilised tehted:

! lav

lav1 && lav2

lav1 || lav2

EI

JA

VÕI

Kui lav on loogiline avaldis, siis ka (lav) on loogiline avaldis.

0 < a <= b+1asemel tuleb kirjutada:0 < a && a <= b+1Samaväärne (siin tarbetult pikk):!(0 >= a || a > b+1)

Page 6: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

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.

Page 7: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

7

GraafikaErinevalt tavapärasest “paremakäelisest” koordinaadistikust on ekraanikoordinaadistik “vasakukäeline” (y-telg on suunatud alla):

x

y

Ekraani (joonistamistahvli) vasak ülemine nurk on (0; 0).Ekraanipunkti nimetatakse ka piksliks.

Page 8: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

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

y

T1 T2

T3T4

T1 = (100; 100)T2 = T3 =T4 =

190

80

Page 9: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

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– …

Page 10: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

10

Raami loomine (Jooniseraam.java)import java.awt.*; // Java paketid graafika loomiseksimport 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

Page 11: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

11

Page 12: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

12

Tahvli lisamine raamile

• Teha klass Tahvel• Klassi Jooniseraam lisada korraldus uue

tahvli lisamiseks

Page 13: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

13

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

Page 14: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

14

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());

Page 15: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

15

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

Page 16: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

16

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

Page 17: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

17

javac Joonis.javajavac Tahvel.javajavac Jooniseraam.javajava Jooniseraam

Page 18: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

18

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));

Page 19: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

19

Värvidg.setColor(…); t.setBackground(…);

Color.black mustColor.blue sinineColor.cyan hele rohekas-sinineColor.darkGray tumehallColor.gray hallColor.green rohelineColor.lightGray helehallColor.magenta lillaColor.orange oranžColor.pink roosaColor.red punaneColor.white valgeColor.yellow kollane

Page 20: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

20

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 nurkg.fillRect(x, y, laius, kõrgus); ristkülikg.drawOval(x, y, laius, kõrgus); ovaaljoon mõttelisse ristkülikusseg.fillOval(x,y,laius, kõrgus); ovaal mõttelisse ristkülikusse (x,y)

(x,y)

kõrgus

laius

Page 21: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

21

Kirjutamineg.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

Page 22: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

22

Graafikaülesanne 1

• Kuidas teha ristkülik (slaid 8)?• Millist faili muuta?• Mida muuta?

Page 23: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

23

Ü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.

Page 24: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

24

Punkt asub ruudul parajasti siis, kui ta on kas ruudu sisealas või ruudu küljel.

Ülesanne 3.

Olgu antud punkt (xp, yp) ning ruut küljepikkusega a ja ülemise vasaku nurgaga (x, y). Lõpetada punkti ruudul asumise tingimus: 1 axxpx ja

x

y

Page 25: Graafika.  Loogiline tüüp.  Keerukamad loogilised avaldised

25

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.

R1R2

R1R2

R1R2

Ülesanne 4. On antud 2 ruutu R1 ja R2. Kas on õiged väited

a) Kui R1 torkab ruutu R2, siis R1 ja R2 lõikuvad.b) Kui R1 ei torka ruutu R2, siis R1 ja R2 ei lõiku.c) R1 ja R2 lõikuvad parajasti siis, kui kui R1 torkab ruutu R2 või R2 torkab ruutu R1.

R2