Useat funktiot palauttavat jonkin arvon. Esimerkiksi
Processing-kielessä valmiina oleva funktio float min(float a,
float b)
palauttaa pienemmän luvuista a
ja b
. Funktion avulla
voimme piirtää helposti piirtoikkunaan mahdollisimman suuren
ympyrän.
size (600, 400);
// halkaisija on leveydestä ja korkeudesta pienempi
float halkaisija = min (width, height);
ellipse (width / 2.0, height / 2.0, halkaisija, halkaisija);
Funktio
float min (float a, float b)on esimerkki funktiosta, joka palauttaa arvon. Paluuarvon tyyppi näkyy funktion nimen edessä olevasta sanasta. Jos sana on
void
, paluuarvoa ei ole.Ohjelman suorituksessa funktiokutsu korvataan paluuarvolla. Esimerkiksi rivillä
float halkaisija = min (width, height);muuttujaan
halkaisija
sijoitetaan funktiokutsun paluuarvo.
Funktion paluuarvo palautetaan käyttämällä Processing-kielen
varattua sanaa return
. Alla on esimerkki funktiosta
float suurempi (float a, float b)
joka palauttaa kahdesta luvusta suuremman. Jos luvut ovat yhtä suuret, on sama kumpi niistä palautetaan.
float suurempi (float a, float b)
{
if (a > b)
return (a);
else
return (b);
}
void setup ()
{
size (600, 400);
noLoop ();
}
void draw ()
{
float halkaisija = suurempi (width, height);
ellipse (width / 2.0, height / 2.0, halkaisija, halkaisija);
}
Vastaava funktio max()
on olemassa valmiina Processing-kielessä.
Alla olevassa esimerkissä määritellään funktio
boolean piirtoikkunassa (int x, int y)
joka palauttaa arvon true
täsmälleen silloin, kun piste (x, y)
on piirtoikkunan sisällä. Muuten funktio palauttaa arvon false
.
boolean piirtoikkunassa (int x, int y)
{
return (x >= 0 && x < width && y >=0 && y < height);
}
void setup ()
{
size (400, 400);
final int HALKAISIJA = 10;
for (int x = 0, y = 0;
piirtoikkunassa (x, y);
x += HALKAISIJA / 2.0, y += HALKAISIJA)
ellipse (x, y, HALKAISIJA, HALKAISIJA);
}
void draw ()
{
}
- Alla oleva funktio palauttaa \(y\)-koordinaatin pisteelle, joka
sijaitsee ympyrän kaarella. Pisteen \(x\)-koordinaatti on
parametri
x
ja kaarta vastaavan ympyrän säde on piirtoikkunan leveys.float kaariY (float x) { return (sqrt (sq (width) - sq (x))); }
Piirrä funktion avulla alla olevan kaltainen kuva. Voit valita kuvan mitat itse
<<funktion-paluuarvo-kaariY>> void setup () { size (400, 400); noLoop (); } void draw () { for (float x = 0; x < width; x += 20) line (0, 0, x, kaariY (x)); }
- Processing-kielen valmis funktio
float dist (float x1, float y1, float x2, float y2)
palauttaa pisteiden
(x1, y1)
ja(x2, y2)
välisen etäisyyden. (Funktion nimi tulee englannin kielen etäisyyttä tarkoittavasta sanasta distance.) Käytä funktiota alla olevan interaktiivisen ohjelman tekemiseen. Hiiren painallus aiheuttaa ympyrän piirtämisen. Ympyrän kehä kulkee hiiren painalluskohdan kautta, eli ympyrä säde on sama kuin painalluskohdan etäisyys piirtoikkunan keskipisteestä.void setup () { size (400, 400); colorMode (HSB, 100); background (0); } void draw () { } void mousePressed () { background (0); // keskipisteen koordinaatit float x = width / 2.0, y = height / 2.0; float halkaisija = 2 * dist (mouseX, mouseY, x, y); ellipse (x, y, halkaisija, halkaisija); }
- Kirjoita funktio
float f (float x)
joka palauttaa arvon
x / 2 + 50
. Piirrä funktion avulla alla oleva kuva. Kuvassa kunkin pystyviivan päätepisteiden koordinaatit ovat(x, 0)
sekä(x, f (x))
, ja vierekkäisten pystyviivojen etäisyys \(x\)-akselilla on 10.float f (float x) { return (x / 2 + 50); } void setup () { size (600, 400); colorMode (HSB, 100); noLoop (); } void draw () { for (int x = 0; x < width; x += 10) line (x, 0, x, f (x)); }
- Processing-kielen funktiot
int hour () int minute () int second ()
palauttavat tämänhetkisen kellonajan tunnit, minuutit ja sekunnit. Tee näiden funktioiden avulla animaatio, joka näyttää kellonajan.
- Kirjoita funktion
dist ()
avulla oma funktioboolean ympyrassa (float x, float y, float kpX, float kpY, float sade)
joka palauttaa arvon
true
, jos piste(x, y)
on sellaisen ympyrän sisällä, jonka keskipiste on(kpX, kpY)
ja säde onsade
. Muussa tapauksessa paluuarvo onfalse
. Käytä funktiotasi alla olevan interaktiivisen animaation tekemiseen: ympyrän väri riippuu siitä, onko hiirtä painettu ympyrän sisällä vai sen ulkopuolella.boolean ympyrassa (float x, float y, float kpX, float kpY, float sade) { return (dist (x, y, kpX, kpY) <= sade); } final float HALKAISIJA = 100; float kpX, kpY; // ympyrän keskipisteen koordinaatit void setup () { size (600, 400); colorMode (HSB, 100); fill (100); kpX = width / 2.0; kpY = height / 2.0; } void draw () { ellipse (kpX, kpY, HALKAISIJA, HALKAISIJA); } void mousePressed () { if (ympyrassa (mouseX, mouseY, kpX, kpY, HALKAISIJA / 2.0)) fill (35, 100, 100); else fill (0, 100, 100); }
- Kirjoita funktio
booolean ympyratLeikkaavat (float x1, float y1, float sade1, float x2, float y2, float sade2)
joka palauttaa arvon
true
, jos kaksi ympyrää leikkaavat, ja muussa tapauksessa arvonfalse
. Toisen ympyrän keskipiste on(x1, y1)
ja sädesade1
, ja toisen ympyrän keskipiste(x2, y2)
ja sädesade2
. Kirjoita funktiosi avulla tällä sivulla näkyvä animaatio. Voit valita animaatiossa olevat mitat vapaasti.
-
<<funktion-paluuarvo-kaari>>
-
<<funktion-paluuarvo-ympyra>>
-
<<funktion-paluuarvo-f>>
-
void setup () { size (600, 400); colorMode (HSB, 100); background (0); fill (100); textAlign (CENTER, CENTER); textSize (40); frameRate (1); } void draw () { background (0); final float VALI = width / 6.0; // kellon eri osien välimatka final float KORKEUS = height / 2.0; text (hour (), VALI, KORKEUS); text (":", 2 * VALI, KORKEUS); text (minute (), 3 * VALI, KORKEUS); text (":", 4 * VALI, KORKEUS); text (second (), 5 * VALI, KORKEUS); }
-
<<funktion-paluuarvo-ympyrassa>>
-
<<funktion-paluuarvo-ympyrat-leikkaavat>>