|
Java-opgaven
-
Maak een applet waarin een regel staat met "Geef je lengte (in cm)" en daarachter een
tekstvenster waarin de lengte kan worden ingevoerd.
Daaronder een regel met "Geef je gewicht (in kg)" en daarachter een
tekstvenster waarin het gewicht kan worden ingevoerd.
Daaronder een knop met Geef de Body Mass Index erop.
Daaronder een regel met "BMI: " en daarachter een
tekstvenster voor de BMI
Als er op de knop met Geef de Body Mass Index wordt geklikt verschijnt de BMI in het tekstvenster er onder.
En in een venstertje verschijnt of de gebruiker overgewicht heeft of niet.
Als er geen goede lengte en/of gewicht is ingevoerd verschijnt er een venstertje, waarin dat gemeld wordt.
Aanwijzing :
De formule voor de BMI is : Gewicht in kg gedeeld door (Lengte in m)2
Een BMI hoger dan 25 betekent overgewicht.
-
Een kwadratische vergelijking is van de vorm ax2 + bx + c = 0
Zo'n vergelijking kun je oplossen met de abc-formule.
Maak een applet waarin je om de waarden van a, b en c vraagt, en dat dan de oplossing van de vergelijking geeft.
Doe dat op de volgende manier: Zet op het formulier een regel met "a =" en daarachter een
tekstvenster waarin dat getal kan worden ingevoerd.
Daaronder een regel waarop staat "b =" en daarachter een
tekstvenster waarin dat getal kan worden ingevoerd.
Daaronder een regel waarop staat "c =" en daarachter een
tekstvenster waarin dat getal kan worden ingevoerd.
Dan een button met als opschrift "Bereken !"
Daaronder een regel met "D =" en daarachter een tekstvenster waarin de waarde van de discriminant
( D = b2 - 4ac ) verschijnt verschijnt als er op de Bereken-button wordt geklikt.
Daaronder een regel met "x1 =" en daarachter een tekstvenster waarin de waarde van de eerste oplossing
( x1 = (-b + √ D)/(2a) ) verschijnt als er op de Bereken-button wordt geklikt, tenminste
als die oplossing bestaat.
Als die oplossing niet bestaat, dus als D < 0, dan moet er in dat tekstvenster "bestaat niet" verschijnen.
En daar weer onder een regel met "x2 =" en daarachter een tekstvenster waarin de waarde van de tweede oplossing
( x2 = (-b - √ D)/(2a) ) verschijnt als die bestaat, en als die oplossing niet bestaat
moet er ook in dat tekstvenster "bestaat niet" verschijnen.
Aanwijzing :
Eerst moet de discriminant D = b2 - 4ac worden berekend, en in
het tekstvenster achter D= wordt geplaatst.
Als D<0 is dan moet er in de laatste twee tekstvensters "bestaat niet" worden geplaatst.
En anders moeten de twee oplossingen x1 = (-b + √ D)/(2a) en
x2 = (-b - √ D)/(2a) worden berekend en in de laatste twee tekstvensters worden geplaatst.
√ D bereken je m.b.v. de opdracht Math.sqrt(D)
-
Inhoud van bol of kubus
Maak een applet waarin een regel staat met "straal of ribbe" en
daarachter een tekstvenster waarin die straal of ribbe kan worden ingevoerd.
Daar onder een pulldownmenu, waarin de soort figuur uitgekozen kan worden. Er kan gekozen worden uit kubus en bol.
Verder staat op het formulier een button met als opschrift "Geef de inhoud" met daarachter een tekstvenster waarin
de inhoud verschijnt, als er op de knop met Geef de inhoud wordt geklikt.
Als er geen figuur is uitgekozen, of als er geen (goed) getal is ingevoerd, verschijnt er een venstertje waarin dat vermeld wordt.
Aanwijzing :
Bij een kubus geldt, als de ribbe r is, voor de inhoud I = r3
Bij een bol geldt, als de straal r is, voor de inhoud I = (4/3)*π*r3
De waarde van pi krijg je met Math.PI
-
Maak een applet waarop een aantal sommetjes in tekstvensters verschijnen, met achter elk sommetje een invoervak.
Het aantal sommen wordt bepaald door een parameter in het aanroepende html-document.
Het zijn keer-sommen met getallen tussen 5 en 10, die automatisch worden gegenereerd.
Verder staat op de pagina een button met Controleer.
Als op Controleer wordt geklikt dan worden de antwoorden gecontroleerd, en er wordt vermeld hoeveel antwoorden er goed zijn.
-
Maak een applet waarmee het laadvermogen van een vrachtwagen kan worden berekend.
Een vrachtwagen met 2 assen heeft een MTM (Maximaal Toegelaten Massa) van 19 ton,
eentje met drie assen heeft een MTM van 26 ton en eentje met 4 assen heeft een MTM van 32 ton.
Zet een regel op de pagina met "leeg gewicht:" en daarachter een
tekstvenster waarin dat lege gewicht kan worden ingevoerd.
Daaronder drie radio-buttons, met de opschriften 2 assen, 3 assen en 4 assen. Door het aanklikken van één van
die option buttons kan het aantal assen worden gekozen
Dan een knop met als opschrift "Bepaal laadgewicht"
Daaronder een regel waarop staat "Laadgewicht: " en daarachter een tekstvenster waarin staat hoeveel ton gewicht
er beladen mag worden. Dat verschijnt er in zodra er op de knop met "Bepaal laadgewicht" wordt geklikt.
Als op die knop geklikt wordt, en er zijn niet genoeg gegevens ingevoerd (er is bijv. niet op een radio-button geklikt) dan
verschijnt er een venstertje, waarin dat vermeld wordt.
-
Maak een applet, waarop onderstaand formulier staat.
De gebruiker voert de prijzen in van de gerechten.
Verder selecteert de gebruiker een voor-, hoofd en nagerecht.
En als er dan op Uitrekenen geklikt wordt, verschijnt de prijs in het onderste tekstvenster.
-
Maak een applet, waarin een rechthoek wordt getekend en wel zo dat de lengte, de breedte en de opvulkleur bepaald worden door
argumenten uit het html-bestand. Zorg er voor dat het applet meldingen geeft als de meegegeven argumenten onjuist zijn.
Ook moet vermeld worden als de meegegeven lengte en/of breedte negatief of te groot zijn om in het appletvenster te passen.
-
Maak een applet, waarop een tekstvenster staat waarin een woord kan worden
ingevoerd.
Daaronder een button met het opschrift "Draai om"
Daaronder een regel met het opschrift "Omgedraaid:" en daarachter een tekstvenster.
Als er op de button met "Draai om" wordt geklikt dan worden de letters van het ingevoerde woord omgedraaid,
en dat omgedraaide woord verschijnt dan in het tweede tekstvenster.
Aanwijzing :
z.charAt(5) is de vijfde letter van de string z
Andere manier: z.substring(4,5) levert ook de vijfde letter van de string z
z.substring(3,8) is de substring van de string z, die bestaat uit de vierde t/m de achtste
letter van de string z
z.length is het aantal tekens van de string z
Als de ingevoerde string in de variabele z wordt vastgelegd, en de nieuwe (omgedraaide) wordt in de variabele n vastgelegd,
dan geldt:
De eerste letter van n moet gelijk zijn aan de laatste letter van z, dus als je het aantal letters van het woord met a aangeeft
dan moet er gelden: n1=z.charAt(a)
De tweede letter van n moet gelijk zijn aan de op-een-na-laatste letter van z, dus er moet gelden: n2 = z.charAt(a-1)
In het algemeen geldt voor de i-de letter: ni = z.charAt(a-i+1)
En dat moet gebeuren voor zoveel waarden van i dat alle letters van het woord aan de beurt komen, daarvoor moet je dus
een for-lus gebruiken. En dan moeten de letters van n achter elkaar geplakt worden tot een nieuw woord.
-
Maak een applet waarop drie tekstvakken en een knop staan. Na invoeren van de lengte en de breedte en de opvulkleur in de tekstvensters
en klikken
op de knop wordt een rechthoek met de gewenste lengte en breedte getekend, en ingekleurd met de aangegeven kleur.
Zorg er voor dat het applet een melding geeft als er geen positieve gehele getallen zijn ingevoerd,
of als de getallen te groot zijn om in het appletvenster te passen.
-
Maak een applet, waarin een tekstvenster staat waarin een woord kan worden
ingevoerd.
Daaronder een button met het opschrift "Codeer"
Daaronder een regel met het opschrift "In geheimschrift:" en daarachter een tekstvenster.
Als er op de button met "Codeer" wordt geklikt dan wordt het ingevoerde woord in geheimschrift omgezet, en dat geheimschrift
verschijnt dan in het tweede tekstvenster.
Het geheimschrift ontstaat door elke letter van het woord te vervangen door een letter die een eindje verder in het alfabet zit.
Hoeveel er wordt opgeschoven wordt bepaald door een parameter in het aanroepende html-document.
Denk er om dat aan het eind van het alfabet doorgedraaid wordt naar het begin, dus na de z komt weer de a, enz.
Bijvoorbeeld: Test wordt Uftu, bij een opschuiving van één letter.
Aanwijzing :
z.charAt(5) is de vijfde letter van de string z
Andere manier: z.substring(4,5) levert ook de vijfde letter van de string z
z.length is het aantal tekens van de string z
int a = (int) z.charAt(1) geeft de asc-code van de eerste letter van z
int a = (int) z.charAt(2) geeft de asc-code van de tweede letter van z
char s = (char) k levert het teken, waarvan de asc-code k is
Als de ingevoerde string in de variabele z wordt vastgelegd, en de nieuwe (gecodeerde) wordt in de variabele n vastgelegd,
dan ga je de eerste letter als volgt omzetten:
int k = (int) z.charAt(1)
char c = (char) (k+1)
En dat moet niet alleen voor de eerste letter gebeuren, maar voor alle letters van het woord; daarvoor moet je dus
een for-lus gebruiken. En dan moeten de letters van n achter elkaar geplakt worden tot een nieuw woord, dus beginnen met
String n = ""; en verder bij de omzetting van elke letter n = n + c;
-
Maak een applet, met twee tekstvensters en een button.
Als je in het eerste tekstvenster een geheel getal onder de 20 invoert, en je klikt op de button, dan verschijnt in het
tweede tekstvenster de faculteitswaarde van het eerste getal. Dus als je 5 invoert in het eerste tekstvenster dan verschijnt
in het tweede tekstvenster 120 (want 5 faculteit = 5! = 1 x 2 x 3 x 4 x 5 = 120)
Als er geen geheel getal, of een negatief getal of een getal groter dan 20 wordt ingevoerd dan wordt dat gemeld in het
tweede tekstvenster
-
Maak een applet, met twee tekstvensters en een button.
Als je in het eerste tekstvenster een woord invoert, en je klikt op de button, dan verschijnt in het
tweede tekstvenster hetzelfde woord, maar tussen elk tweetal letters is een streepje gezet.
Dus als je in het eerste tekstvenster automobiel invoert verschijnt er in het
tweede tekstvenster a-u-t-o-m-o-b-i-e-l
-
Maak een applet, met twee tekstvensters en een button.
Als je in het eerste tekstvenster een zin invoert, en je klikt op de button, dan verschijnt in het
tweede tekstvenster dezelfde zin, maar zonder spaties. Alle spaties zijn uit de zin verwijderd.
Dus als je in het eerste tekstvenster dit is een test invoert verschijnt er in het
tweede tekstvenster ditiseentest
-
Maak een applet, met een tekstvenster en een button.
Als je een woord in het tekstvenster hebt ingevoerd, en je klikt op de button dan moet er onder worden vermeld hoeveel klinkers
en hoeveel medeklinkers het ingevoerde woord bevat. (klinkers zijn a,e,i,o en u, de andere letters zijn medeklinkers)
En verder moet het ingevoerde woord op een andere manier in het tekstvenster verschijnen: tussen elk tweetal letters van het woord
moet een spatie staan.
-
Maak een applet, met een tekstvenster en een button.
Als je een woord in het tekstvenster hebt ingevoerd, en je klikt op de button dan moet er worden berekend wat de som is van de delers van
het ingevoerde getal. Als bijvoorbeeld het getal 10 is ingevoerd dan zijn de delers 1, 2 en 5, en de som daarvan is 8
(het getal 1 wordt dus wel meegeteld, maar het getal zelf niet)
Als er geen geheel getal is ingevoerd, of het getal is kleiner dan 1, dan wordt dat vermeld.
-
Maak een applet waarin een regel staat met "Kapitaal:" en daarachter een tekstvenstertje
waarin een getal getypt moet worden, dat het kapitaal voorstelt.
Daaronder staat een regel met "hoeveel % rente ?" en daarachter een tekstvenstertje
waarin een getal getypt kan worden.
Verder een button met als opschrift "Bereken verdubbelingstijd %"
Zodra er op de Berekenbutton wordt geklikt verschijnt er in het document de waarde van het kapitaal
na 1, 2, 3, ... jaren, als er elk jaar zoveel procent rente bij komt als ingetypt is.
Dit gaat net zo ver door tot het kapitaal twee keer zo groot geworden.
Als achter "Kapitaal" dus 1000 is ingevoerd, en achter "hoeveel % rente?" het getal 2, dan
wordt er net zo lang doorgegaan tot het kapitaal 2000 euro of meer is geworden.
Aanwijzing :
Gebruik:
While (k<2000)
{...................................
...................................}
dan worden de opdrachten op de stippeltjes net zo lang uitgevoerd als de waarde van k kleiner dan 2000 is. Er
wordt dan dus gestopt met herhalen als k>=2000 is
Verder geldt:
Als de rente r % is en het kapitaal k, dan is het bedrag aan rente k*r/100,
en het nieuwe kapitaal na een jaar is dan dus k + k*r/100
-
Maak een applet waarin een regel staat met "Aantal keer gooien:" en daarachter een
tekstvenstertje waarin het aantal getypt moet worden.
Verder een button met als opschrift "Gooi" en daaronder een regel met als opschrift
"Aantal zessen:" en een tekstvenster waarin het aantal zessen dat is geteld.
Zodra op de button met "Gooi" wordt geklikt simuleert de computer het gooien met een dobbelsteen,
net zo vaak als is aangegeven in het tekstvenster. Er wordt geteld hoe vaak er een zes wordt
gegooid, en dat aantal verschijnt in het onderste tekstvenster.
Aanwijzing :
Math.floor(Math.random*6) + 1 levert een getal op tussen 1 en 6.
-
Maak een applet, waarin een tekstvenster staat waarin een zin kan worden ingevoerd.
Daaronder een button met het opschrift "Tel het bepaalde aantal letters"
Daaronder een regel met het opschrift "aantal bepaalde letters in de zin:" en daarachter een tekstvenster.
De letter die geteld moet worden wordt bepaald door een parameter in het html-document, dat het applet aanroept.
Als die letter bijvoorbeeld de letter d is en er wordt op de button met "Tel het aantal bepaalde letters" geklikt,
dan wordt dat aantal geteld en dat aantal verschijnt in de onderste tekstvenster.
Als de parameter, die in het html-document wordt gegeven, geen geldige letter is, dan wordt dat gemeld en er wordt in dat
geval niets geteld.
Aanwijzing :
z.charAt(5) is de vijfde letter van de string z
Andere manier: z.substring(4,5) levert ook de vijfde letter van de string z
z.substring(3,8) is de substring van de string z, die bestaat uit de vierde t/m
de achtste letter van de string z
z.length is het aantal tekens van de string z
Je moet elke letter van het woord controleren, en als het een d is het aantal met één vermeerderen.
Je moet dus een for-lus gebruiken:
for (var i; i<=z.lenght;i++)
{...................................
...................................}
-
Maak een applet, waarin een tekstvenster staat waarin een woord kan worden
ingevoerd.
Daaronder een button met het opschrift "Controleer !"
Daaronder een regel met het opschrift "Is het een palindroom ?" en daarachter een tekstvenster.
Als er op de button met "Controleer" wordt geklikt dan wordt er gecontroleerd of het
ingevoerde woord een palindrooms is. Als dat zo is dan verschijnt er in de laatste tekstvenster
"ja" en anders "nee.
Aanwijzing :
Een palindroom is een woord dat het zelfde is als je het van achter naar voren
leest, bijvoorbeeld lepel en parterretrap.
z.charAt(5) is de vijfde letter van de string z
Andere manier: z.substring(4,5) levert ook de vijfde letter van de string z
z.substring(3,8) is de substring van de string z, die bestaat uit de vierde t/m de achtste letter
van de string z
z.length is het aantal tekens van de string z
De eerste letter moet gelijk zijn aan de laatste letter, dus als je het aantal letters van het woord met a aangeeft
dan moet er gelden:
z.charAt(1)=z.charAt(a)
De tweede letter van z moet gelijk zijn aan de op-een-na-laatste letter van z, dus er moet gelden: z.charAt(2) = z.charAt(a-1)
In het algemeen geldt voor de i-de letter: z.charAt(i) = z.charAt(a-i+1)
En dat moet je controleren voor alle waarden van i, daarvoor moet je dus een for-lus gebruiken:
for (var i; i<=z.lenght;i++)
{...................................
...................................}
-
Maak een applet waarin een regel staat met "Binair getal: " en daarachter een
tekstvenster waarin dat getal kan worden ingevoerd.
Daaronder een regel waarop staat "Decimaal getal : " en daarachter een
tekstvenster.
Dan een button met als opschrift "Bereken !"
Er wordt een binair getal ingevoerd (je mag er van uit gaan dat het uit 8 bits bestaat).
En als er op de button wordt geklikt dan wordt de
decimale waarde van het binaire getal getoond in de tekstvenster.
Aanwijzing :
z.charAt(5) is de vijfde letter van de string z
Andere manier: z.substring(4,5) levert ook de vijfde letter van de string z
g = parseInt(z.charAt(5)) levert de getalswaarde op van het vijfde teken van de string z
z.length is het aantal tekens van de string z
Het laatste cijfer moet keer 1, het cijfer daarvoor keer 2, het cijfer daarvoor keer 4 enz.
Hoe doorloop je iets achterstevoren ?
Als je de volgende regels invoert:
For (var i=20;i>0;i--)
{...................................
...................................}
dan worden de opdrachten op de stippeltjes 20 keer uitgevoerd, en i doorloopt daarbij
achtereenvolgens de waarden 20 tot en met 1 (dus van groot naar klein)
-
Maak een applet waarin een regel staat met "Getal :" en daarachter een tekstvenstertje
waarin een getal getypt moet worden tussen 10 en 100
Daaronder een regel met de tekst "priemgetal ?" en daarachter een tekstvenster.
Daaronder een button met het opschrift "Controleer !"
Als er een getal in het eerste tekstvenster is ingevoerd, en er wordt op de controleer-knop geklikt, dan verschijnt
er in het tweede tekstvenster "ja" als het getal een
priemgetal is en anders "nee".
Aanwijzing :
Als je wilt controleren of een getal a een priemgetal is, dan moet je
controleren of het deelbaar is door 2, 3, 4, enz. t/m a-1. Zodra het door één
van die getallen deelbaar is dan is het geen priemgetal.
Hoe controleer je of een getal ergens deelbaar door is ?
a is deelbaar door i als (a / i) == Math.round(a / i)
-
Maak een applet waarin een regel staat met "Teller : "
en daarachter een tekstvenster waarin de teller van een breuk kan worden ingevoerd.
Daaronder een regel met "noemer" en daarachter een tekstvenster waarin de noemer van een
breuk kan worden ingevoerd.
Daaronder een button met als opschrift "Vereenvoudig".
Daaronder een regel en een tekstvenster met de nieuwe teller, en daar weer onder
een regel en een tekstvenster met de nieuwe noemer. Zodra er op de button "Vereenvoudig" wordt
geklikt wordt de breuk vereenvoudigd (als dat kan) en de nieuwe teller en noemer verschijnen
in beeld. Als de breuk niet te vereenvoudigen is, dan zijn de nieuwe teller en noemer
gelijk aan de oude teller en noemer.
Aanwijzing :
Als je de computer wilt laten controleren of de breuk a/b te vereenvoudigen is
dan moet je laten controleren of a en b allebei deelbaar zijn door 2, 3 , 4 enz. t/m a
(je mag er van uit gaan dat a kleiner of gelijk aan b is)
Hoe controleer je of een getal ergens deelbaar door is ?
a en b zijn beide deelbaar door i als ( (a / i) == Math.round(a / i) ) and
( (b / i) == Math.round(b / i) )
-
Maak een applet waarin een tekstvenster staat waarin een
getal kan worden ingevoerd.
Daaronder nog een tekstvenster waarin een getal kan worden ingevoerd.
Daarnaast een button met een +, een button met een -, een button met een x en een button met :
En daaronder een derde tekstvenster waarin de uitkomst komt.
Als je op de button met de + klikt dan worden de getallen in de eerste twee tekstvensters opgeteld,
en het resultaat verschijnt in het derde tekstvenster.
Als je op de button met de - klikt dan verschijnt het resultaat van de aftrekking van die twee getallen
in het derde tekstvenster.
En wat er bij een klik op de x-button en op de :-button gebeurt zal wel duidelijk zijn.
-
Maak een applet, waarop een verkeerslicht staat zoals hiernaast.
Dat verkeerslicht kan door middel van drie knoppen bediend worden. Bij de start zijn de drie lichten allemaal zwart.
Klik je op de knop met het woord rood, dan zie je het rode verkeerslicht oplichten, de andere twee blijven zwart.
Klik je op de knop met het woord groen, dan zie je het groene (dus onderste) verkeerslicht oplichten, de andere twee blijven
of worden weer zwart. Enz.
-
Maak een applet waarbij je vijf optel-sommetjes moet maken.
Hoe groot de getallen minimaal en maximaal zijn kun je via het html-document, waar het applet op staat, doorgeven m.b.v. param.
Maak het programma zo dat als de sommetjes gemaakt zijn er wordt afgedrukt
hoeveel er goed waren en ook hoeveel tijd (in seconden) het maken geduurd heeft.
Aanwijzing:
Je hebt de klasse Date, waarmee de datum en de tijd kan worden opgevraagd.
Die zit in de package java.util.
Je moet dus bovenaan toevoegen import java.util.*;
Of beter: import java.util.Date;
(dan wordt alleen de klasse Date geimporteerd, dat kost minder geheugen en minder tijd)
Je moet eerst een nieuwe datum-instantie declareren, dat gaat als volgt (als je die nu noemt:
Date nu = new Date( );
(N.B.: bij vrijwel alle klassen, behalve bij integers enz. en bij strings, moet er new bij de declaratie)
En dan kun je de uren, minuten en seconden op de volgende manier opvragen:
int uur=nu.getHours( );
int minuut = nu.getMinutes( );
int seconde = nu.getSeconds );
Je moet de tijd twee keer opnemen : vlak voor er met de sommen wordt begonnen, en vlak nadat
ze af zijn. Het verschil is de tijd die er over gedaan is.
-
Maak een applet waarop een kleurenmenger is te zien
Er zijn drie scrollbalken, waarmee je de hoeveelheid rood, groen en blauw kunt instellen.
Zodra je een scrollbalk verzet verandert de kleur van de ellips er onder.
Kijk bij H18.9 (overzicht) wat de methoden van een scrollbalk zijn.
In de tekstvelden onder de scrollbalken wordt ook de hoeveelheid rood, groen en blauw weergegeven.
Je kunt de kleur ook veranderen door in die tekstvelden getallen in te vullen
-
Maak een applet waarop een listbox is te zien. In die listbox staan de maanden, maar niet in de goede volgorde.
Zet ze er zo in:
juni, april, december, januari, maart, november, augustus, juli, oktober, februari, mei, september
Zet er een button met het opschrift Schuif omhoog op.
En wel zo dat als je daar op klikt de geselecteerde maand een regel omhoog schuift
En een tekstbox, waarin bij de start het getal 0 staat, en elke keer als je op de schuif_omhoog-button klikt
moet dat getal met 1 verhoogd worden zodat je daaraan kunt zien hoeveel verschuivingen er nodig zijn
om de maanden in de juiste volgorde te krijgen
Voeg ook nog een knop aan het programma toe met het opschrift Sorteer, en een textbox met daarvoor een label
met het opschrift Aantal verschuivingen. En zorg er voor dat in die textbox het aantal verschuivingen wordt bijgehouden als je op de knop Sorteer klikt,
waardoor de lijst gesorteerd wordt met het bubble-sort algoritme.
-
Maak een applet waarop je boter, kaas en eieren kunt spelen.
Degene die aan de beurt is klikt op een hokje, en daar verschijnt dan X of O in, tenminste als het hokje leeg was.
Zorg er voor dat als X of O gewonnen heeft, dat gemeld wordt en dat dan gevraagd wordt of er met een nieuw spelletje begonnen moet worden.
Je kunt gebruik maken van een array van labels, zie daarvoor hoofdstuk 6
-
Maak een applet waarop je het drie-deurenprobleem kunt laten zien.
Je ziet drie deuren (rechthoeken) op het applet. Achter één ervan zit de hoofdprijs, en welke dat is door de
computer door een toevalsgetal bepaald. Jij moet aanwijzen achter welke deur de prijs volgens jou zit.
Dat doe je door op de deur te klikken. Je hebt op dit moment een kans van 1/3 om de juiste deur te kiezen.
Als je op een deur geklikt hebt verschijnt daar een zwarte pijl onder (zie de figuur).
Na een klik op de knop met het woord Ga verder opent de computer een andere deur, en wel de deur waar de hoofdprijs
niet achter ligt. Als de juiste deur was aangewezen kan de computer bij het openen uit twee deuren kiezen, en dat doet
hij dan at random. Die deur verandert dan in een smal wilt strookje (zie figuur).
Er wordt bij het drie-deurenprobleem vervolgens gevraagd of je nog van deur wilt wisselen, want op dit moment heb je een
kans van 1/2 om de juiste deur te kiezen. We gaan er van uit dat je dat wel doet.
De pijl verschijnt nu onder de andere deur, en op de plaats waar de prijs zat zie je een rode cirkel verschijnen.
In de tekstvenstertjes onder de deuren zie je vervolgens dat de aantallen worden bijgewerkt: hoe vaak je na wisseling goed
zat en hoe vaak fout, en hoeveel procent dat is. En het aantal keren dat je al een deur hebt gekozen.
De tekst op de knop is nu gewijzigd in Nog een keer, en als je er op klikt wordt het vorige herhaald.
-
Maak een applet waarop je het volgende spelletje kunt spelen.
Je begint met 50 punten, en je moet een bepaalde letter van het alfabet raden.
Die letter wordt at random door de computer bepaald.
Je typt een woord, en het programma zorgt er voor dat er wordt aangegeven hoevaak de betreffende letter in dat woord voorkomt.
Als de letter niet in het woord voorkomt verlies je 10 punten.
Als de letter wel voorkomt, maar minder dan 5 keer, dan verlies je 5 punten.
Als de letter 5 keer of vaker voorkomt dan stopt het programma, en jij hebt gewonnen.
Als je minder dan 0 punten hebt dan stopt het programma ook, en dan heb je verloren.
Voorbeeld: de gevraagde letter is: F (maar dat weet je niet)
Je hebt 50 punten. Typ een woord in. Maryhadalittlelamb
In dat woord komt de letter 0 keer voor.
Je hebt 40 punten. Typ een woord in. Herfleecewaswhiteassnow
In dat woord komt de letter 1 keer voor.
Je hebt 35 punten. Typ een woord in. Feefiefoefum
In dat woord komt de letter 4 keer voor.
Je hebt 30 punten. Typ een woord in. fffffffff
Gefeliciteerd, je hebt gewonnen.
-
Maak een applet waarop je het volgende spelletje kunt spelen.
Het programma kent 20 woorden van acht letters (zet die in een array van Strings).
Het programma kiest willekeurig één van de 20 woorden, en jij moet dat woord raden door steeds een letter te kopen.
Je begint met 8 punten, en elke keer als je een letter invoert en die letter komt niet in het woord voor dan verlies je een punt.
Als de letter wel in het woord voorkomt dan verlies je geen punt.
Als je geen punten meer over hebt, en je hebt het woord nog niet geraden, dan heb je verloren.
Als je het woord compleet hebt heb je gewonnen.
Voorbeeld: Veronderstel dat het woord is: MYSTERIE
Je hebt 8 punten, en het woord is ********
Voer nu een letter in: E
Je hebt 8 punten, en het woord is ****E**E
Voer nu een letter in: N
Je hebt 7 punten, en het woord is ****E**E
Voer nu een letter in: A
Je hebt 6 punten, en het woord is ****E**E
Voer nu een letter in: O
Je hebt 5 punten, en het woord is ****E**E
Voer nu een letter in: I
Je hebt 5 punten, en het woord is ****E*IE
Voer nu een letter in: Y
Je hebt 5 punten, en het woord is *Y**E*IE
Voer nu een letter in: S
Je hebt 5 punten, en het woord is *YS*E*IE
Voer nu een letter in: T
Je hebt 5 punten, en het woord is *YSTE*IE
Voer nu een letter in: R
Je hebt 5 punten, en het woord is *YSTERIE
Voer nu een letter in: M
Je hebt 5 punten, en het woord is MYSTERIE
Gefeliciteerd, je hebt het woord geraden.
-
Maak een applet waarin een methode voorkomt die een dobbelsteenkant tekent, waarbij je de waarde als parameter mee kunt geven.
Laat het programma dan twee keer met een dobbelsteen gooien (dus twee keer een random-getal tussen 1 en 6 kiezen).
Toon die twee getallen in het midden van het applet, en laat twee dobbelstenen (links een blauwe en rechts een rode) tekenen die
die twee waarden laten zien.
Maak de dobbelsteen van een vierkant van 100 bij 100. Verdeel dat vierkant in gebiedjes van 10 bij 10. In sommige van
die gebiedjes moet een dikke stip worden geplaatst, in sommige niet.
-
Maak een applet waarop je het volgende spelletje kunt spelen.
Twee spelers mogen om de beurt één of meer keren met twee dobbelstenen gooien.
Ze mogen zo vaak achter elkaar gooien als ze willen, en het totaal aantal punten wordt dan opgeteld bij wat ze al hadden.
Maar als ze met beide dobbelstenen hetzelfde gooien krijgt de ander de beurt en is degene die dubbel gooide alle punten kwijt,
en moet dus opnieuw beginnen.
Als iemand de beurt aan de ander geeft zonder dubbel te hebben gegooid mag de behaalde punten bij zijn totaal optellen.
Wie van de twee het eerst 100 punten heeft heeft gewonnen.
-
Maak een applet waarin een methode voorkomt die een gezicht tekent, waarbij je de gezichtskleur als parameter mee kunt geven.
Zorg er dan voor dat de volgende figuur verschijnt:
-
Maak een applet waarop drie tekstvensters staan, waarin je getallen in kunt voeren.
En een button met het opschrift "Teken de driehoek". Als je daarop klikt wordt er een driehoek getekend waarvan de zijden zo
groot zijn als de drie ingevoerde getallen (als er als lengte bijvoorbeeld 5 wordt aangegeven, neem dan aan dat de lengte 500 pixels
moet zijn, vermenigvuldig de getallen dus met 100). Tenminste als het mogelijk is.
Als het niet mogelijk is om een driehoek te tekenen met zijden van de aangegeven lengten dan moet dat worden vermeld.
Je kunt het programma eerst de hoeken laten berekenen, en die gebruiken om de figuur te tekenen.
De hoeken kun je laten berekenen m.b.v. de cosinusregel:
a2 = b2 + c2 - 2*b*c*cos α
b2 = a2 + c2 - 2*a*c*cos β
c2 = a2 + b2 - 2*a*b*cos γ
Als je de cosinus van een hoek weet dan kan de hoek worden berekend met de methode Math.acos(x)
(dat correspondeert met cos-1(x). Dan wordt de hoek berekend in radialen. Wil je hoek in graden dan moet
er worden vermenigvuldigd met 57.2958.
Er is een driehoek mogelijk als de twee kleinste zijden samen groter zijn dan de grootste zijde. Is dat niet het geval
dan kan de driehoek niet worden getekend.
Als de grootste zijde groter is dan de helft van de breedte van het applet moet dat ook worden vermeld en dan
wordt er ook niets getekend.
-
Maak een applet waarin een methode voorkomt die een dobbelsteenkant tekent, waarbij je de waarde als parameter mee kunt geven, en
ook de x-coördinaat en de y-coördinaat van de linker bovenhoek van het vierkant.
Zet zes buttons op het applet met daarop de getallen 1,2,3,4,5 en 6.
Als je op een button klikt dan verschijnt links in het applet een rode dobbelsteen met de aangeklikte waarde.
Verder gooit het programma met een dobbelsteen (het kiest dus een random-getal tussen 1 en 6).
Rechts in het applet verschijnt dan een blauwe dobbelsteen met de gegooide waarde.
Als jouw dobbelsteen hetzelfde aangeeft als de andere, of het verschil is één, dan heb je gewonnen, en anders heb
je verloren. Of je gewonnen of verloren hebt verschijnt dan ook nog in beeld.
Maak de dobbelsteen van een vierkant van 100 bij 100. Verdeel dat vierkant in gebiedjes van 10 bij 10. In sommige van
die gebiedjes moet een dikke stip worden geplaatst, in sommige niet.
-
Maak een applet waarmee een "Mandelbrotfiguur", zoals hieronder omschreven, wordt getekend.
Mandelgetallen
Voor elk punt (x,y) van het platte vlak, wordt een bijbehorend getal (het zogenaamde "mandelgetal") worden bepaald.
Om het mandelgetal te kunnen uitrekenen, bekijken we eerst de volgende functie, die punten (a,b) van het vlak
transformeert naar andere punten:
f (a,b) = (a*a-b*b+x, 2*a*b+y)
Let op: deze functie transformeert het punt (a,b), maar in de berekening speelt ook de waarde van x en y, dat is het punt
waarvan we het mandelgetal willen bepalen, een rol.
Deze functie f nu, passen we toe op het punt (a,b) = (0,0).
Op het punt dat daar uitkomt, passen we nog eens de functie f toe. Op het punt dat daar weer het resultaat van is,
passen we opnieuw f toe, enzovoorts enzovoorts.
We stoppen pas met toepassen van f als het resultaat-punt een afstand van meer dan 2 tot de oorsprong heeft.
Het mandelgetal is nu gelijk aan het aantal keren dat f is toegepast.
Voor sommige punten (x,y) is dat meteen al zo, en is het mandelgetal dus gelijk aan 1. Voor andere punten duurt het langer:
die hebben een groter mandelgetal.
Er zijn ook punten waarbij je f kan blijven toepassen, zonder dat de afstand tot de oorsprong ooit meer dan 2 wordt:
die punten hebben mandelgetal oneindig.
In de praktijk kunnen we niet oneindig vaak een functie toepassen; daarom stoppen we met toepassen van f bij een bepaald
maximum aantal keren, zeg 100 keer; is dan de afstand nog niet groter dan 2, dan nemen we maar
aan dat het mandelgetal oneindig is.
Een voorbeeld
Als voorbeeld berekenen we het Mandelgetal van het punt (0.5, 0.8).
We beginnen met (a, b)=(0, 0) en zetten de teller op 0.
Bij het toepassen van de formule zijn a en b nog 0, en komen we dus uit op het punt (0.5, 0.8).
De teller staat nu op 1. De afstand van (0.5, 0.8) tot (0, 0) is volgens Pythagoras wortel(0.25+0.64) = wortel(0.89)
is ongeveer 0.94, en dat is niet groter dan 2. We mogen dus doorgaan.
We berekenen met de formule de nieuwe a: 0.5*0.5 - 0.8*0.8 + 0.5 = 0.11
en de nieuwe b: 2*0.5*0.8 + 0.8 = 1.6, en de teller komt op 2.
De afstand van (0.11, 1.6) tot (0, 0) is volgens Pythagoras ongeveer 1.6038, dus we mogen nog steeds doorgaan.
We berekenen met de formule weer een nieuwe a: 0.11*0.11 - 1.6*1.6 + 0.5 = -2.0479
en een nieuwe b: 2*0.11*1.6 + 0.8 = 1.152, en de teller komt op 3.
De afstand van (-2.0479, 1.152) tot (0, 0) is royaal meer dan 2, dus de teller blijft staan op 3.
Het mandelgetal van (0.5, 0.8) is dus 3.
De Mandelbrot-figuur
Aan de hand van mandelgetallen kunnen we gemakkelijk een kleur van elk punt bepalen.
Een mogelijkheid is deze:
Punten met mandelgetal 1, 6, 11, enz worden wit, punten met mandelgetal 2 modulo 5 (d.w.z. 2, 7, 12, 17 enz) worden rood,
met mandelgetal 3 modulo 5 geel, met
mandelgetal 4 modulo 5 blauw en met mandelgetal 5 modulo 5 zwart. Ook punten met mandelgetal oneiding worden zwart.
Teken je van elk punt de aldus bepaalde kleur, dan zie je een afbeelding van de Mandelbrot-figuur.
Zo'n figuur ziet er bijvoorbeeld als volgt uit:
Maak een applet voor de Mandelbrotfiguur.
Ga er van uit dat de x-coordinaat van het middelpunt van het scherm 0 is, en de de y-coordinaat van het middelpunt van het scherm is
ook 0.
De schaalfactor mag je zelf bepalen. Bij een schaalfactor van bijvoorbeeld 0.01 is het zo dat als je een punt hebt dat 400
pixels rechts van het middelpunt ligt, de x-coordinaat 4 is.
Het maximum aantal herhalingen van f mag je ook zelf bepalen.
|
| |