Ohjelma, joka ratkaisee yhtälöitä

Olemme tähän mennessä oppineet muutamia asioita:
  • tekstin tulostaminen näytölle riippuen, onko kyseessä numeroita vai merkkijonoja (eli tekstiä)
  • muuttujan luominen (muuttujalla on nimi ja arvo, jota voidaan muuttaa ohjelman edetessä)
  • while-silmukan käyttö (while-silmukka on kätevä silloin, kun jotakin asiaa toistetaan monta kertaa)
  • if-komennon käyttö (if-komennolla saadaan ohjelma tekemään eri asioita eri tilanteissa)

Tässä kappaleessa yhdistämme opitut asiat luodaksemme ohjelman, joka ratkaisee yhtälöitä. Pitäydymme yksinkertaisissa yhtälöissä, joiden ratkaisut ovat kokonaislukuja ja täten helpommin löydettävissä.

Yhtälöitä ratkaiseva ohjelma voidaan tehdä kahdella tavalla:

1) Kokeillaan eri arvoja muuttujalle [[$x$]] while-silmukalla ja katkaistaan silmukka sopivalla if-komennolla, kun ratkaisu on löytynyt.

2) Kokeillaan eri arvoja muuttujalle [[$x$]] ja laitetaan while-silmukkaan sopiva ehto, joka pysäyttää silmukan, kun ratkaisu on löytynyt.

Tapa 1)

Kuvitellaan, että haluamme ratkaista yhtälön [[$3x=2x \ + \ 10$]]. Helposti nähdään, että yhtälö toteutuu, kun [[$x=10$]].

Luodaan ohjelma, joka kokeilee while-silmukalla muuttujalle [[$x$]] eri arvoja alkaen luvusta yksi. Silmukka pysähtyy, kun ratkaisu yhtälöön [[$3x=2x \ + \ 10$]] löytyy.
​​

Tapa 2)

Pidetään ratkaistava yhtälö samana eli [[$3x=2x \ + \ 10$]]. 

Tässä tapauksessa ratkaistava yhtälö laitetaan suoraan while-silmukan ehtoon. Nyt yhtälön eri puolet pitää vain merkitä erisuuriksi merkinnällä !=. Silmukka pysähtyy, kun yhtälön molemmat puolet ovat yhtä suuret.


Yhtälön ratkaiseminen ohjelmoimalla on kätevää etenkin silloin, kun yhtälön ratkaisu on suuri luku.

Tehtävä 1.

Ratkaise yhtälö [[$4x \ + \ 20 \ = \ 2x \ + \ 260$]] luomalla ohjelma molemmilla yllä mainituilla tavoilla. Muista antaa riittävän suuri yläraja tavassa 1). Mieti, kumpi on mielestäsi järkevämpi tapa.
​​