Een programma voor de ABC-formule
- Inleiding
- Programma-opzet
- Het programma
3.1. De invoer
Opdracht 1
Opdracht 2
Opdracht 3
3.2. Bewerking van gegevens
Opdracht 4
3.3. De uitvoer
Opdracht 5
Opdracht 6
Opdracht 7
Opdracht 8 - Download
1. Inleiding
Uitgaande van de vierkantsvergelijking (2e-graads vergelijking)
ax2 + bx + c = 0
kan een formule worden afgeleid voor de oplossing, ook wel wortels, van
die vergelijking.
Deze formule luidt: |
Hieronder wordt beschreven hoe een programma voor de TI83 kan worden ontwikkeld, dat de wortel(s) van deze vergelijking berekent na invoer van de waarden voor a, b en c.
2. Programma-opzet
In principe kan men elk (deel van een) computerprogramma uiteen
laten vallen in drie delen:
- invoer van gegevens (data input)
- bewerking van de ingevoerde gegevens (processing)
- uitvoer van de gewenste gegevens (output).
Deze deelprocessen in het programma zijn vaak niet helemaal van elkaar gescheiden,
omdat vaak ook bij de bewerking van de gegevens andere gegevens (bijvoorbeeld uit een
bestaande verzameling data, of ook wel aanvullende gegevens) moeten worden gebruikt.
Bij het ontwikkelen van een programma is het echter verstandig deze driedeling in het oog
te houden.
Daarnaast is het verstandig na te gaan of het programma vaker moet worden gebruikt, en
vooral ook hoe (onder welke omstandigheden) het programma moet worden gestopt.
Voortgaande op dit laatste.
Bekijken we de vergelijking, dan zien we dat er geen sprake van kan zijn dat er
gegevens kunnen worden berekend (uitgevoerd) als a = 0.
Immers, deling door 0 is niet mogelijk (zie de formule); of ook, als a
= 0 is er geen sprake van een vierkantsvergelijking.
Daar gebruiken we a = 0 als "stopkriterium".
Bij de opzet van het programma zullen we verder de principes gebruiken die op de pagina's "Programmeren in TI-Basic" als uitgangspunt hebben gediend.
3. Het programma
3.1. De invoer
De in te voeren gegevens voor het programma zijn de waarden van a, b en c.
Op basis van de overwegingen in paragraaf 2 hebben we dan:
ClrHome Disp "ABC-formule" Disp "-----------" Disp "(STOP: A=0) Prompt A If A=0 Then STOP Else <verdere invoer> <bewerking> <uitvoer> End <opnieuw>
De programmaregels waarop tekst tussen <
en > staat, moeten echter nog worden
uitgewerkt.
We kunnen het programma nu toch al invoeren in de TI83, mits we die regels gewoon weglaten
(leeg laten).
Opdracht 2
Ga na, dat je het programma nu gewoon kunt uitvoeren.
Merk echter op, dat het programma ook stopt als je een getal ongelijk aan
0 invoert.
De regel met <opnieuw> (zie hierboven) kan het probleem uit Opdracht 2 ondervangen.
3.2. Bewerking van gegevens
Als a ongelijk 0 is, hebben we verdere invoer nodig, namelijk de
waarden van b en c.
Opdracht 4
We kunnen deze regels eenvoudig toevoegen. Doe dat dus. Ook hierna kan je het programma weer testen, als je wilt. |
Uit de formule volgt dat het aantal oplossingen van de vergelijking
afhangt van de waarde van de zogenoemde discriminant
D = b2 - 4ac
twee verschillende oplossingen: | D > 0 | te weten: x1 = (-b + ÖD) / (2a) .... zie formule x2 = (-b - ÖD) / (2a) |
één oplossing: | D = 0 | met x = -b/(2a) |
geen oplossing: | D < 0 | en dus: x bestaat niet |
In het onderdeel <bewerking>
moeten deze verschillende gevallen dus worden afgehandeld.
Elk geval levert dan een andere uitvoer op, zodat we ook het uitvoerproces het handigst
kunnen opnemen in elk van die onderscheiden gevallen.
Het proces <uitvoer> vervalt dus
min of meer.
Opdracht 5
Zet nu de berekening van de discriminant D op de juiste plaats in het programma. |
Merk op, dat je niet onmiddellijk daarna de wortel uit D kunt berekenen, omdat D
immers ook negatief kan zijn (dit zou tijdens het uitvoeren van het programma tot een
"foutmelding" leiden). Handel daarom nu de verschillende gevallen voor de waarde van D af. |
We kunnen een en ander in een "pseudo taal" schrijven als
ALS D>0 DAN <handel dit geval af> ANDERS <handel de beide andere gevallen af> EINDE-ALS
Of, en tevens voorafgegaan door de uitvoer van D,
Disp "D=",D If D > 0 Then ÖD ® D (-B+D)/(2A)®X (-B-D)/(2A)®Y Disp "2 WORTELS:",X,Y Else <D gelijk 0 of D kleiner 0> End
Ook bij <D gelijk 0 of D kleiner 0>
hebben we een keuze.
We krijgen dus op de plaats van die regel:
If D = 0 Then -B/(2A)®X Disp "1 WORTEL:",X Else Disp "GEEN WORTELS" End
Opdracht 6
Maak het programma met bovenstaande gegevens verder af.
Let bij de "implementatie" van de berekeningen in TI83-Basic op de haakjes en op
de "speciale" mintekens van de TI83!
Ga na, dat er aan het einde van het programma nu 3 keer de opdracht End moet staan.
Waarom is dat?
Opdracht 7
Werkt het programma nu goed?
Of kan je dat niet zien??
Als dit laatste het geval is, ga dan eens na waardoor dat veroorzaakt wordt.
Het programma moet er nu (ongeveer) uitzien als hieronder.
De ingesprongen regels zijn hier voor vergroting van de leesbaarheid; in het echte
programma staan ze -helaas- recht onder elkaar. Hierdoor wordt het "geneste
gebruik" van de verschillende IF..END statements goed zichtbaar.
Lbl O ClrHome Disp "ABC-FORMULE" Disp "-----------" Disp "(STOP: A=0)" Prompt A If A=0 Then Stop Else Prompt B,C B2-4AC®D Disp "D=",D If D>0 Then Ö(D)®D (-B+D)/(2A)®X (-B-D)/(2A)®Y Disp "2 WORTELS:",X,Y Else If D=0 Then -B/(2A)®X Disp "1 WORTEL:",X Else Disp "GEEN WORTELS" End End End Goto O
Opdracht 8
Voeg één opdracht toe in het programma waardoor de Disp
resultaten op het scherm blijven staan.
Aanwijzing
Kijk hiervoor zo nodig eens naar de opdracht Pause
aan het einde van Paragraaf 4 van het programma "Cilinder2"
4. Download
Het bovenstaande programma kan (mogelijk samen met andere programma's) in een bestand via
deze website worden gedownload.
Dergelijke programma's kunnen met het programma TI-Graph Link
(website van Texas Instruments) vanuit een computer worden overgezonden naar de TI-83.
Klik hier
om het downloaden te starten [ZIP-formaat].
Het werkblad is NIET MEER beschikbaar als PDF-bestand.
[prgmvkv.htm] laatste wijziging op: 19-01-18