Upload
synclair-osvaldo
View
61
Download
6
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
1
Graafika. Loogiline tüüp.
Keerukamad loogilised avaldised.
Tahvlipraktikum 8
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:
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);
4
Loogiline meetod: tagastustüüp booleanVastab kontrollimisülesandele.
boolean m(form. param. loetelu){// Antud: // Tulemus: tagastatakse true, kui ......// false vastasel korral
. . .
return lav;}
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)
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
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.
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
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 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
11
12
Tahvli lisamine raamile
• Teha klass Tahvel• Klassi Jooniseraam lisada korraldus uue
tahvli lisamiseks
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
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());
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
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
17
javac Joonis.javajavac Tahvel.javajavac Jooniseraam.javajava Jooniseraam
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));
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
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
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
22
Graafikaülesanne 1
• Kuidas teha ristkülik (slaid 8)?• Millist faili muuta?• Mida muuta?
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.
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
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