Skip to content

Latest commit

 

History

History
247 lines (216 loc) · 8.45 KB

ehdollinen-suorittaminen.org

File metadata and controls

247 lines (216 loc) · 8.45 KB

Ehdollinen suorittaminen

{{{example}}}

Haluamme kirjoittaa ohjelman, joka toimii seuraavasti.

  • Jos piirtoikkunan leveys on suurempi kuin piirtoikkunan korkeus, piirretään “oikealla osoittava” kolmio.
  • Muussa tapauksessa piirretään “alas osoittava” kolmio.

Ohjelma toimii siis eri tavoin eri tilanteissa. Tämä voidaan ohjelmoida ehdollisen suorittamisen avulla. Ehdollisessa suorittamisessa käytetään Processing-kielen varattuja sanoja if (jos) sekä else (muutoin).

<<ehdollinen-kolmio-oikealle>>

if-else -rakenne

if-else -rakenteessa on

  1. ehto, joka määrää mikä lauseke suoritetaan
  2. lauseke, joka suoritetaan jos ehto on tosi
  3. lauseke, joka suoritetaan jos ehto ei ole tosi.
if (ehto)
  lauseke suoritetaan jos ehto tosi;
else
  lauseke suoritetaan jos ehto ei tosi;
  

Huomaa, että

  • ehto kirjoitetaan sulkujen sisään
  • if-rivin lopussa ei ole puolipistettä
  • else-rivin lopussa ei ole puolipistettä.

Yleensä lausekerivit sisennetään, jotta nähdään mihin lausekkeeseen ehto vaikuttaa. Processing-editori sisentää lausekkeet valikosta Edit \(→\) Autoformat tai suoraan näppäinkomennolla Ctrl+t.

Lukujen vertaileminen

Jos if-else -rakenteen ehdossa vertaillaan lukuja, tarvitaan lukujen vertailuoperaattoreita.

ehtolausekemerkitys
a < bonko a pienempi kuin b
a <= bonko a pienempi tai yhtä suuri kuin b
a > bonko a suurempi kuin b
a >= bonko a suurempi tai yhtä suuri kuin b
a == bonko a yhtä suuri kuin b
a != bonko a eri suuri kuin b

Yllättävintä on yhtäsuuruuden testaaminen.

Lukujen a ja b yhtäsuuruus testataan vertailuoperaattorilla ==, jossa on kaksi yhtäsuuruusmerkkiä peräkkäin.

{{{example}}}

Piirretään neliön muotoiseen piirtoikkunaan ympyrä tai nelikulmio riippuen vakion P arvosta. Jos P on alle 95 piirretään ympyrä, muuten nelikulmio.

Ensin vakio on suurempi kuin 95, joten piirretään nelikulmio.

size (250, 250);
final float P = 96;

<<ehdollinen-ympyra-nelio-runko>>

Kun vakion arvoa lasketaan, piirretään ympyrä.

size (250, 250);
final float P = 93;

<<ehdollinen-ympyra-nelio-runko>>

Pelkkä if-rakenne

Seuraavassa esimerkissä piirretään neliö neliön muotoiseen piirtoikkunan keskelle. Piirtoikkunan vasempaan yläkulmaan piirretään toinen samankokoinen neliö, jos kuvassa on sille tilaa. Neliön sivun pituuden määrää vakio SIVU.

size (200, 200);
final float SIVU = 60;

<<ehdollinen-neliot-runko>>

Kun neliön sivun pituutta kasvatetaan, toista neliötä ei enää piirretä.

size (200, 200);
final float SIVU = 80;

<<ehdollinen-neliot-runko>>

if-rakenteessa on

  1. ehto, joka määrää suoritetaanko seuraava lauseke
  2. lauseke, joka suoritetaan jos ehto on tosi
if (ehto)
  lauseke suoritetaan jos ehto tosi;
  

Tehtäviä

  1. Kirjoita ohjelma, joka asettaa piirtoikkunan taustan väriksi vihreä värin, jos vakion P arvo on vähintään 100. Muussa tapauksessa avataan vain harmaa piirtoikkuna. Testaa ohjelmasi toimivuus muuttamalla vakion P arvoa.
  2. Kirjoita ohjelma, joka piirtää neliön muotoisen piirtoikkunan keskelle mahdollisimman suuren ympyrän. Jos vakion P arvo on vähintään 100, ympyrä on vihreä. Muussa tapauksessa ympyrä on oranssi. Testaa ohjelmasi toimivuus muuttamalla vakion P arvoa.
  3. Kirjoita ohjelma, joka asettaa piirtoikkunan taustaväriksi valkoisen, mikäli piirtoikkuna on neliön muotoinen. Muussa tapauksessa taustaväriksi asetetaan musta. Testaa ohjelmasi toimivuus muuttamalla piirtoikkunan kokoa.
  4. Kirjoita ohjelma, joka piirtää piirtoikkunan vasempaan yläkulmaan \(100× 100\)-kokoisen neliön, jos ikkunan leveys on suurempi kuin korkeus. Muussa tapauksessa piirtoikkunan vasempaan yläkulmaan piirretään ympyrä, jonka halkaisija on 100. Voi olettaa, että piirtoikkunan leveys ja korkeus ovat vähintään 100. Testaa ohjelmasi toimivuus muuttamalla piirtoikkunan leveyttä ja korkeutta.
  5. Kirjoita ohjelma, joka piirtää piirtoikkunan vasempaan yläkulmaan neliön. Neliön sivun pituus on vakio SIVU. Jos piirretyn neliön viereen mahtuu toinen samankokoinen neliö, niin myös toinen neliö piirretään. Testaa ohjelmasi toimivuus muuttamalla piirtoikkunan leveyttä ja vakion SIVU suuruutta. Voit olettaa, että piirtoikkunan leveys ja korkeus ovat molemmat vähintään yhtä suuria kuin SIVU.
  6. Kirjoita ohjelma, joka piirtää piirtoikkunan vasempaan reunaan ympyrän, jonka halkaisija on piirtoikkunan korkeus. Ohjelma piirtää myös piirtoikkunan oikeaan reunaan samanlaisen ympyrän, mikäli jälkimmäinen ympyrä ei mene ensin piirretyn päälle. Testaa ohjelmasi toimivuus muuttamalla piirtoikkunan leveyttä ja korkeutta. Voit olettaa, että piirtoikkunan leveys on korkeutta suurempi.

Ratkaisuja

  1. size (300, 300);
    final float P = 101;
    
    colorMode (HSB, 100);
    
    if (P >= 100)
      background (44, 66, 71);
        
  2. size (300, 300);
    final float P = 101;
    colorMode (HSB, 100);
    noStroke ();
    
    if (P >= 100)
      fill (21, 100, 71);
    else
      fill (6, 100, 100);
    
    final float SADE = width / 2.0;
    ellipse (SADE, SADE, width, width);
        
  3. size (300, 300);
    colorMode (HSB, 100);
    
    if (width == height)
      background (100);
    else
      background (0);
        
  4. size (300, 200);
    
    if (width > height)
      rect (0, 0, 100, 100);
    else
      ellipse (50, 50, 100, 100);
        
  5. size (300, 200);
    final float SIVU = 180;
    rect (0, 0, SIVU, SIVU);
    if (width >= 2 * SIVU)
      rect (SIVU, 0, SIVU, SIVU);
        
  6. size (600, 200);
    final float SADE = height / 2.0;
    ellipse (SADE, SADE, height, height);
    
    if (width >= 2 * height)
      ellipse (width - SADE, SADE, height, height);