TI-Basic: Programma voor vierkantsvergelijking en uitbreiden

Wat is een vierkantsvergelijking? Als leerling zal je het wel geweten hebben. Je kan heel makkelijk een programma maken op je rekenmachine om de discriminant en de wortels te berekenen. Degenen die een sjieker programma willen maken, kunnen hier allemaal verbeteringen terugvinden en zelfs gebruiken in andere programma's!

TI-Basic: Vierkantsvergelijking


Wat is een vierkantsvergelijking?

Een vierkantsvergelijking is een lang woord, daarom zal ik vkv gebruiken... Een vkv is een tweedegraadsvergelijking (bv. y=x²+3x-10), maar de y-waarde is altijd 0 (bv. 0=x²+3x-10) - een functie met vergelijking y=0, valt samen met de x-as. Door middel van de discriminant (b²-4ac), kunnen we de snijpunten van de functie met de x-as berekenen. Als de dicriminant negatief is zijn er geen snijpunten. Als hij 0 is, is er één oplossing voor x. In het geval dat de discriminant groter is dan 0, zijn er twee oplossingen of wortels.
AlgemeenTI-BasicVoorbeeld
Vergelijkingy=ax²+bx+cy=AX²+BX+Cy=x²+3x-10
Vkv0=ax²+bx+c0=AX²+BX+C0=x²+3x-10
Discriminantd=b²-4acB²-4AD->D49
Wortel 1 (E)-b+v(d)/(2a)(-B-v(D))/(2A)->E-5
Wortel 2 (F)-b+v(d)/(2a)(-B+v(D))/(2A)->F2

prgmVKV Simpel

(Een degelijk programma bestaat uit drie delen: Invoer, Verwerking, Uitvoer.)
Eerst maken we een simpel programmaatje waarmee we een vkv kunnen in voeren: (invoer)

:Prompt A,B,C

Dan berekenen we de discriminant en de wortels: (verwerking)

:B²-4AC->D
:(-B+v(D))/2/A->E
:(-B-v(D))/2/A->F

Tenslotte laten we de resultaten zien op het scherm:(uitvoer)

:Disp "DISCR",D,"WORTELS",E,F

Het totaal:

:Prompt A,B,C
:B²-4AC->D
:(-B+v(D))/2/A->E
:(-B-v(D))/2/A->F
:Disp "DISCR",D,"WORTELS",E,F

Grootte: 94

prgmVKV Uitbreiden

Nu gaan we het programma wat uitbreiden, we beginnen bij de invoer.
We maken de user(degene die het programma gebruikt) duidelijk wat hij moet invullen:

:Disp "AX²+BX+C=0"
:Prompt A,B,C

Om het wat mooier te maken:

:Disp "AX²+BX+C=0"
:Input "A: ",A
:Input "B: ",B
:Input "C: ",C

Het invoergedeelte is klaar, dus we gaan over op de verwerking. Stel je voor: een vkv heeft een negatieve discriminant, dus kan hij ook geen wortels hebben. Maar als we een negatieve discriminant hebben, zal het programma stoppen bij:

:(-B+v(D))/2/A->E

Waarom? Omdat de vierkantswortel van een negatief getal - hier is dit D - niet bestaat. We kunnen dit oplossen door te vragen of D kleiner is dan 0, we doen dit zo:

...
:B²-4AC->D
:If D<0
:Stop
:Disp "DISCR",D,"WORTELS",E,F

Nu weet de user wel de discriminant niet, dus:

...
:B²-4AC->D
:Disp "DISCR",D
:If D<0
:Stop
:(-B+v(D))/2/A->E
:(-B-v(D))/2/A->F
:Disp "WORTELS",E,F

Dit is al een hele verbetering: bij elke invoer zal de discriminant getoond worden, als hij positief of 0 is komen de wortels er ook bij. We creëren nog een situatie en zetten alle situaties eens apart:

...
:B²-4AC->D
:If D<0
:Then
:Disp "DISCR",D
:Stop
:End
:(-B+v(D))/2/A->E
:(-B-v(D))/2/A->F
:If D=0
:Then
:Disp "DISCR",D,"DE WORTEL",E
:Stop
:End
:Disp "DISCR",D,"DE WORTELS",E,F

De verwerking is in drie situaties opgedeeld: D<0, D=0, iets anders (Dus: D>0). We kunnen de uitvoer nu uitbreiden:

...
:Disp "DISCR IS NEG:",D,"","DIT BETEKENT:","GEEN WORTELS..."
...
:Disp "DISCR = 0","DE WORTEL",E
...
:Disp "DISCR",D,"TWEE WORTELS",E,F

Elke keer het programma uitgevoerd is komt er rechts 'Done' te staan, die gaan we wegwerken:

...
:Disp "DISCR IS NEG:",D,"","DIT BETEKENT:","GEEN WORTELS..."
:Output(1,1,"")
...
:Disp "DISCR = 0","DE WORTEL",E
:Output(1,1,"")
...
:Disp "DISCR",D,"TWEE WORTELS",E,F
:Output(1,1,"")

Voor degenen die er niet genoeg van kunne krijgen, we zetten alles nog eens om in breuken:

...
:Disp "DISCR IS NEG:",D,D>Frac"","DIT BETEKENT:","GEEN WORTELS..."
:Output(1,1,"")
...
:Disp "DISCR = 0","DE WORTEL",E,E>Frac
:Output(1,1,"")
...
:Disp "DISCR",D,"TWEE WORTELS",E,E>Frac,F,F>Frac
:Output(1,1,"")

Zo hebben we het wel gehad.

prgmVKV Uitgebreid

Nu we het hebben uitgebreid, zetten we het allemaal eens achter elkaar: (Een Clrhome in het begin is wel handig)

:Clrhome
:Disp "AX²+BX+C=0"
:Input "A: ",A
:Input "B: ",B
:Input "C: ",C
:B²-4AC->D
:If D<0
:Then
:Disp "DISCR IS NEG:",D,D>Frac"","DIT BETEKENT:","GEEN WORTELS..."
:Output(1,1,"")
:Stop
:End
:(-B+v(D))/2/A->E
:(-B-v(D))/2/A->F
:If D=0
:Then
:Disp "DISCR = 0","DE WORTEL",E,E>Frac
:Output(1,1,"")
:Stop
:End
:Disp "DISCR",D,"TWEE WORTELS",E,E>Frac,F,F>Frac
:Output(1,1,"")

Grootte: 393

Dit is nog een beetje 'onprofessioneel' omdat elke situatie helemaal apart staat, een beetje snoeien en een paar ingrepen:

:Clrhome
:Disp "AX²+BX+C=0"
:Input "A: ",A
:Input "B: ",B
:Input "C: ",C
:B²-4AC->D
:Disp "D",D,D>Frac
:If D<0
:Then
:Disp "DUS GEEN WORTELS"
:Else
:(-B+v(D))/2/A->E
:(-B-v(D))/2/A->F
:If D=0
:Disp "WORTEL",E,E>Frac
:If D>0
:Disp "WORTELS",E,E>Frac,F,F>Frac
:End
:Output(1,1,"")

Grootte: 296

Zo spaar ik bijna 100 bytes!

Hierbij hoop ik iedereen veel bijgeleerd te hebben. Nog veel succes met het schrijven van programma's!
© 2007 - 2024 Wmnoa, het auteursrecht van dit artikel ligt bij de infoteur. Zonder toestemming is vermenigvuldiging verboden. Per 2021 gaat InfoNu verder als archief, artikelen worden nog maar beperkt geactualiseerd.
Gerelateerde artikelen
Sportschool in Rotterdam: Welke past het beste bij u?Sportschool in Rotterdam: Welke past het beste bij u?Welke Sportschool in Rotterdam is nu het meest geschikt voor het bereiken van uw persoonlijk fitnessdoelen? In Rotterdam…
Sportschool: Health CitySportschool: Health CityVeel mensen houden hun conditie of gewicht op peil door te gaan sporten bij een sportschool. Een van de grotere ketens v…
Vierkantsvergelijkingen en hoe ze op te lossenVierkantsvergelijkingen en hoe ze op te lossenEen vierkantsvergelijking is in de wiskunde een vergelijking in de van de vorm ax^2+bx+c=0. Hierbij zijn a,b en c consta…
Evernote - Notities altijd en overal beschikbaarEvernote - Notities altijd en overal beschikbaarMet Evernote creëer je een digitale werkplek in een handomdraai. Jouw notities zijn overal en altijd toegankelijk. Wanne…

PHP Hypertext PreprocessorPHP Hypertext PreprocessorPHP Hypertext Preprocessor, beter bekend als PHP, is een scripttaal die voornamelijk wordt gebruikt voor het programmere…
HTML: De eerste stappenHTML: De eerste stappenWie HTML wil leren, moet ergens beginnen. Maar waar? De bedoeling van dit artikel is diegenen die geïnteresseerd zijn in…
Reactie

Dries, 12-12-2013
Die ->, is moet je dan gewoon een (-) en een > plaatsen, of gewoon =?
MVG
Dries Reactie infoteur, 28-04-2014
Boven de ON knop staat er STO>
Dat is het benodigde symbool.

Wmnoa (6 artikelen)
Gepubliceerd: 24-02-2007
Rubriek: Pc en Internet
Subrubriek: Programmeren
Per 2021 gaat InfoNu verder als archief. Het grote aanbod van artikelen blijft beschikbaar maar er worden geen nieuwe artikelen meer gepubliceerd en nog maar beperkt geactualiseerd, daardoor kunnen artikelen op bepaalde punten verouderd zijn. Reacties plaatsen bij artikelen is niet meer mogelijk.