4 Visueel programmeren met Java

Vergelijkbare documenten
6,1. Samenvatting door een scholier 1809 woorden 28 oktober keer beoordeeld. Informatica

APPLICATIEBOUW 2E COLLEGE: ONTWERPEN, GEBRUIKERSINTERFACES, VARIABELEN & EXPRESSIES. Onderdeel van SmartProducts

Vakgroep CW KAHO Sint-Lieven

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet.

4 Visueel programmeren met Java

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren


Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

BEGINNER JAVA Inhoudsopgave

Variabelen en statements in ActionScript

Lab Webdesign: Javascript 3 maart 2008

Syntax- (compile), runtime- en logische fouten Binaire operatoren

VAN HET PROGRAMMEREN. Inleiding. Het spiraalmodel. De programmeertaal. vervolgens de berekening van het totale bedrag, incl. BTW:

VAN HET PROGRAMMEREN. Inleiding

Programmeren met Arduino-software

Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby?

Java Les 3 Theorie Herhaal structuren

PSD. Reeksen van logische procedures om problemen op te lossen in een eindig aantal stappen.

Constanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object.

Modelleren en Programmeren

APPLICATIEBOUW 2E COLLEGE: ONTWERPEN, GEBRUIKERSINTERFACES, VARIABELEN & EXPRESSIES. Onderdeel van SmartProducts

17 Operaties op bits Bitoperatoren en bitexpressies

Een spoedcursus python

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

Datum. Vraag het bedrag in BEF. Reken om naar EURO. Toon het bedrag in EURO. --- Vraag het bedrag in BEF Reken om naar EURO---

Programmeren in Java les 3

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing.

Arduino Cursus, Deel 2 Programmeren. Simon Pauw, ZB45, Amsterdam

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Inhoud leereenheid 4. Inleiding JavaScript. Introductie 99. Leerkern 100. Zelftoets 108. Terugkoppeling 109

PYTHON REEKS 1: BASICS. Mathias Polfliet

Uitleg: In de bovenstaande oefening zie je in het eerste blokje een LEES en een SCHRIJF opdracht. Dit is nog lesstof uit het tweede trimester.

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

eerste voorbeelden in Java

In de tweede regel plaatsen we in het gereserveerde stukje geheugen een getal.

Online c++ leren programmeren:

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd

Hoofdstuk 1: Een eerste Visual Basic project

van PSD naar JavaScript

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Java. Basissyllabus. Egon Pas

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2

6.2 VBA Syntax. Inleiding Visual Basic

Zelftest Inleiding Programmeren

Hoofdstuk 2: Werken met variabelen

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Hoofdstuk 1: Een eerste Visual Basic project

Objectgeoriënteerd programmeren in Java 1

Programmeerstructuren met App Inventor

OEFENINGEN PYTHON REEKS 1

Hoofdstuk 7: Werken met arrays

Inhoud hoofdstuk 2. Programmeren met herhaling en keuze. Introductie. Leerkern. Zelftoets. Terugkoppeling

VBA voor Doe het Zelvers deel 20

Hoofdstuk 2: Werken met variabelen

DE INTERACTIEVE SHELL

Numerieke benadering van vierkantwortels

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Handleiding JCreator. Inhoud. Een Workspace en een eerste project maken

2 Elementaire bewerkingen

Programmeren: Visual Basic

Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms

Excel reader. Beginner Gemiddeld.

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

Small Basic Programmeren Text Console 2

maplev 2010/7/12 14:02 page 15 #17 Nadere detaillering van een aantal zaken van Module 1 Geen,, " ", \, save, read, protect, unprotect

6.3 VBA Syntax Instructie. Wij gaan de Visual Basic Editor opnieuw openen, om de instructie die wij zojuist getypt hebben, nader te bekijken.

9.18 Macro s: oefeningen

[8] De ene 1 is de andere niet

JavaScript. 0 - Wat is JavaScript? JavaScript toevoegen

Inhoud hoofdstuk 2. Programmeren met herhaling en keuze. Introductie. Leerkern. Leereenheid 2 Programmeren met herhaling en keuze

Bij elkaar behorende instructies die een probleem oplossen of een taak uitvoeren.

Informatie over. 5VWO DT51: JavaLogo. Casper Bezemer. Toetsweek 1 13 oktober 2016

Een korte samenvatting van enkele FORTRAN opdrachten

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

OEFENINGEN PYTHON REEKS 1

GEDETAILLEERDE INHOUD

9.19 Macro s: oefeningen

Modelleren en Programmeren

Lab Webdesign: Javascript 11 februari 2008

II. ZELFGEDEFINIEERDE FUNCTIES

Bij elkaar behorende instructies die een probleem oplossen of een taak uitvoeren.

Tutorial 1, Delphi: Geldspraak

import java.io.*; één klasse public class Hallo { public static void main (String[] a) ...met één functie System.out.println("Hallo!

Info-books. Toegepaste Informatica. Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) AL20. Jos Gils Erik Goossens

Programmeren (1) Examen NAAM:

PHP. Les 4 : Variabelen

Deeltentamen Grammatica s en ontleden 22 december 2005

Hoofdstuk 5: Functies voor getallen en teksten

Handleiding bij de Booktest Generator

OEFENINGEN PYTHON REEKS 1

PROS1E1 Handleiding ( ) Kf/Dd/Bd

Info-books. Toegepaste Informatica. Handleiding. Deel 40c : Gegevensbeheer en algoritmen in Access. HA40c. Jos Gils Erik Goossens

[13] Rondjes draaien (loops)

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 23 december 2016, uur

Inhoud leereenheid 8. Programmeren in JavaLogo (1) Introductie 73. Leerkern 75. Samenvatting 94. Zelftoets 95. Terugkoppeling 97

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c

Python. Vraag 1: Expressies en types. Vraag 1 b: Types -Ingebouwde functies- Vraag 1 a 3/10/14

5. Functies. In deze module leert u:

Transcriptie:

Hoofdstuk 4 Visueel programmeren met Java 47 4 Visueel programmeren met Java 1 ALGORITMEN Peter Dijkstra viert morgen zijn verjaardag. Voor de gasten wil hij een appeltaart bakken. Daarvoor zoekt hij een recept in het kookboek: Ingrediënten 200 gram boter 200 gram suiker een mespunt zout een zakje vanillesuiker 3 eieren 300 gram bloem een eetlepel bakpoeder een deciliter melk 500 gram zoetzure appels 100 gram poedersuiker 1 eetlepel citroensap Bereiding Verwarm de oven voor op 175 0 C. Roer de boter goed schuimig. Voeg onder het roeren suiker, vanillesuiker, zout en eieren toe. Vermeng de bloem met bakpoeder en zeef het boven de schuimige boter. Voeg af en toe een beetje melk toe. Klop het beslag goed luchtig. Vet een springvorm in en giet het beslag erin. Schil de appels, halveer ze en verwijder het klokhuis. Snij de appels in en druk ze in het beslag. Zet de appeltaart 50 tot 60 minuten in de oven. Wanneer de taart uit de oven komt, bestrijk de appeltaart met een glazuur van citroensap en poedersuiker. Met behulp van dit recept kan Peter een appeltaart bakken. Het recept bestaat uit een lijst met ingrediënten die Peter nodig heeft om de taart te bakken en een stappenplan dat hij moet volgen om de taart te bakken. Als hij alle stappen heeft doorlopen, heeft Peter een lekkere appeltaart. De beschrijving van die stappen noemen we een algoritme. Wanneer een algoritme zodanig beschreven is dat een computer het kan uitvoeren, spreken we van een computerprogramma. Als een algoritme heel groot of ingewikkeld wordt, deelt men het op in delen. Die worden procedures genoemd. In het vorige hoofdstuk heb je gezien dat een computerprogramma bestaat uit een reeks instructies, die in het werkgeheugen zijn opgeslagen. Deze instructies worden stap voor stap na elkaar uitgevoerd. Een programmeur moet voordat hij het programma gaat schrijven eerst een gedetailleerde beschrijving van het probleem maken. Welke stappen en keuzen moeten worden gevolgd? In welke volgorde moeten die worden doorlopen? Welke gegevens moeten worden verwerkt? Uiteindelijk levert dit een algoritme op. opdracht 1 In computerprogramma s kun je drie basisstructuren onderscheiden: de opeenvolging (sequentie) de keuze de herhaling

48 ENIGMA Informatieboek Om algoritmen te beschrijven wordt gebruik gemaakt van hulpmiddelen, bijvoorbeeld een Programma Structuur Diagram (PSD) In een PSD worden die als volgt weergeven: Sequentie Keuze stap 1 Logische expressie stap 2 stap 3 stap 4 JA stap stap NEE Herhaling ZOLANG logische expressie stap en stap TOTDAT logische expressie opdracht 2 1.1 SEQUENTIE Peter geeft een overhoring, waarvoor de leerlingen maximaal 40 punten kunnen halen. Hij berekent het cijfer door het aantal punten door vier te delen. Het volgende PSD hoort bij dit algoritme: LEES punten; cijfer := punten / 4; SCHRIJF cijfer; De programmaregels worden na elkaar (sequentieel) uitgevoerd.

Hoofdstuk 4 Visueel programmeren met Java 49 1.2 KEUZE Peter heeft een programma met behulp van een PSD ontworpen, dat beoordeelt of een cijfer voldoende is. In de omgekeerde driehoek staat een logische expressie: cijfer >= 6. Het resultaat van een logische expressie is of. Wanneer het resultaat is, dan wordt de stap onder JA uitgevoerd. Levert de expressie het resultaat op (bv als het cijfer een 4 is) dan wordt de stap onder NEE uitgevoerd. LEES cijfer; cijfer >= 6 JA SCHRIJF voldoende ; NEE SCHRIJF onvoldoende ; 1.3 HERHALING Het onderstaande PSD toont de tafel van vijf op het scherm. teller := 1; tafelgetal := 5; ZOLANG teller <= 10 resultaat := teller * tafelgetal; SCHRIJF teller, x, tafelgetal, =,resultaat; teller := teller + 1; Achter ZOLANG staat een logische expressie. Het omsloten PSD (de herhaling) wordt nul of meer keren uitgevoerd, zolang de logische expressie het resultaat oplevert. In de herhalingslus wordt de teller met één opgehoogd: de stapopdracht. Bij de ZOLANG-opdracht staat de logische expressie aan het begin van de lus, bij de TOTDAT-opdracht aan het eind, zodat het omsloten PSD wordt één of meer keren uitgevoerd, totdat de logische expressie het resultaat oplevert. Een belangrijk verschil tussen de ZOLANG-opdracht en de TOTDAT-opdracht is dat in het laatste geval de herhaling tenminste één keer wordt uitgevoerd. opdracht 3-4

50 ENIGMA Informatieboek Het schrijven van een computerprogramma gebeurt in vier fasen: In de eerste fase beschrijf je het probleem: de analyse. Je beschrijft exact welk resultaat het programma moet opleveren. In de tweede fase denk je na over het oplossen van het probleem. Je maakt een planning, je verzamelt informatie en je werkt het probleem uit in een schema, bijvoorbeeld in een PSD. Dit is het ontwerp van het programma. Het ontwerp wordt uitgesplitst in een functioneel ontwerp, de beschrijving van wat het programma moet kunnen en het technisch ontwerp, hoe het programma gemaakt moet worden. Bij grote programma s wordt het probleem gesplitst in een aantal deelproblemen. In de derde fase schrijf je het programma in een programmeertaal, bijvoorbeeld Java. Tenslotte wordt het programma uitgebreid getest om te zien of het programma het verwachte resultaat oplevert. opdracht 5-10 2 VISUEEL PROGRAMMEREN MET JAVA Voor het programmeren maken wij gebruik van de programmeertaal Java. Om een computerprogramma te schrijven kun je volstaan met een eenvoudige editor zoals Kladblok, die platte tekst (tekst zonder codes voor opmaak) levert. Om het programma uit te voeren heb je dan nog een compiler of interpreter nodig. De moderne programma s hebben een uitgebreide user-interface met menu s, knoppen, invulvelden en animaties. Voor het schrijven van een simpele user-interface moet er al veel programmacode worden ingetypt: veel en niet zo interessant werk. Daarom zijn er zogenaamde geïntegreerde ontwikkelomgevingen (IDE: Integrated Development Enviroment) op de markt gebracht, die het werk van de programmeur verlichten. De programmacode voor het schrijven van de user-interface wordt door de IDE voor de programmeur gemaakt. Er zijn verschillende IDE s op de markt waarvan wij er een gebruiken: JavaEditor. Het gaat te ver om JavaEditor in al zijn details te behandelen. In deze paragraaf laten we je zien hoe je een programma met een eenvoudige interface kunt maken. opdracht 11 2.1 WERKEN MET JAVAEDITOR Wanneer je JavaEditor opstart, krijg je het scherm hiernaast te zien. Een nieuw project start je op met Bestand Nieuw Applet of door op de knop Applet te klikken: JavaEditor vraagt je om een een naam te geven aan het applet.

Hoofdstuk 4 Visueel programmeren met Java 51 1 Maak eerst een map EersteApplet aan. 2 Geef het applet de naam EersteApplet. 3 Sla het applet op in de map EersteApplet. Het programmavenster van de JavaEditor bestaat uit een aantal onderdelen: de menubalk. de knoppenbalk of symboollijst. Links op het scherm staat het designformulier dat gebruikt wordt om de userinterface voor het applet te maken of aan te passen. In het designformulier vind je de Object-inspecteur. Die geeft een overzicht van de eigenschappen en de huidige waarden van een object (bijvoorbeeld een knop). Rechts zie je de Editor: een venster met Java-code. 2.2 HET EERSTE APPLET We gaan een programma schrijven waarvan de interface bestaat uit twee tekstvelden en een knop. In het eerste tekstveld typt de gebruiker zijn naam in. Het klikken op de knop heeft als resultaat dat de ingevoerde naam in het tweede tekstveld wordt geplaatst. Het eerste tekstveld wordt weer leeggemaakt. We beginnen met het maken van de user-interface. We maken daarbij gebruik van het hulpmiddel dat JavaEditor ons biedt: het designformulier. 4 In het designformulier moeten twee tekstvelden geplaatst worden: een voor de invoer en een voor de uitvoer. In de symboollijst van JavaEditor is daar een aparte knop voor. Klik in de symboollijst op het tablad AWT en vervolgens op de knop TextField. TextField 5 Plaats een tekstveld in het designformulier door een rechthoek te trekken. Plaats het tweede tekstveld op dezelfde manier.

52 ENIGMA Informatieboek Vervolgens plaatsen we een knop in het designformulier. Klik daarvoor op de knop Button in de knoppenbalk en plaats de knop in het designformulier. Button 6 Op de knop staat standaard de tekst button. We willen natuurlijk een tekst die duidelijk maakt wat de functie van de knop is. Dergelijke kenmerken van een object kunnen we wijzigen in de Object-inspecteur. Selecteer de knop door er op te klikken. In de Objectinspecteur verschijnen de kenmerken (attributen) van de knop. Daarin wordt bijvoorbeeld het lettertype van het knop (font), de positie en grootte van het knop, de tekst op de knop (label) en de naam van de knop (name) getoond. Wijzig het label van de knop in Verplaats. 7 De naam die JavaEditor aan de knop heeft gegeven is button1. Wanneer we meerdere knoppen gebruiken in een applet is aan de naam niet af te lezen welke knop bedoeld wordt. Daarom verdient het de voorkeur ieder object van een duidelijke naam te voorzien. Wijzig de naam van de knop in verplaatsknop. Let daarbij op het gebruik van hoofdletters en kleine letters. Java ziet dat als verschillende tekens. Je kunt ook de andere attributen aanpassen. 8 Wijzig op dezelfde manier de naam van het bovenste tekstveld in invoerveld en het onderste tekstveld in uitvoerveld. Verwijder de tekst in het vak text. 9 Het ontwerp van de user-interface is klaar. Het applet kan proefdraaien. Daarvoor bezit JavaEditor een interpreter: de Applet Viewer. Uiteindelijk als het applet klaar is, kan het ook in een browser draaien. Om het applet te testen kies: Start Starten. Typ in het invoerveld je naam en klik op de knop Verplaats. In het uitvoerveld verschijnt niets. We hebben wel keurig de velden en de knop geplaatst, maar nog niet aangegeven, wat het applet moet doen als er op de knop gedrukt wordt. Het klikken op de knop noemen we een event (een gebeurtenis). De gebruiker wil het programma iets laten doen. Daarvoor moet er een stukje programma worden geschreven, dat de event afhandelt. Dat stukje code noemen we een event-handler (het afhandelen van een event). 10 Sluit de Applet Viewer af.

Hoofdstuk 4 Visueel programmeren met Java 53 11 Om het applet te laten reageren op de Verplaats-knop, moet er programmacode worden toegevoegd. Daarvoor maken we gebruik van de editor in JavaEditor. In het venster staat al de code. Dit is de code (blauw en zwart gekleurd) die JavaEditor gemaakt heeft op het moment dat je een tekstveld of een knop in het designformulier plaatste. We gaan nu nog niet in op de betekenis van die code. Om de Verplaatsknop iets te laten doen moeten we de event-handler voor de knop toevoegen. Deze code moet de tekst uit het invoerveld halen, die tekst in het uitvoerveld zetten en het uitvoerveld leegmaken. Dat is het het algoritme. Dat zou je met een PSD kunnen beschrijven, maar in dit geval is het algoritme zo simpel dat een PSD overbodig is. Onder aan de programmacode staat de event-handler van de verplaatsknop. // Begin eventmethoden public void verplaatsknopactionperformed(actionevent evt) { Tussen de accolade typ je de onderstaande programmacode in. Denk eraan dat je de code letterlijk overneemt. Let daarbij op het gebruik van hoofdletters en de leestekens.

54 ENIGMA Informatieboek // De tekst in het invoerveld wordt verplaatst naar het uitvoerveld. String naam; naam = invoerveld.gettext(); uitvoerveld.settext(naam); invoerveld.settext(""); 12 Wat betekent de code? De eerste regel is commentaar. Commentaar is bedoeld om de code beter leesbaar te maken voor de programmeur. In Java kun je commentaar toevoegen door tekst achter // te plaatsen of tussen /* en */. In de tweede regel wordt de variabele naam gecreëerd van het type String. In deze variabele kan tekst worden opgeslagen. In de derde de regel wordt de inhoud van het invoerveld met behulp van de methode gettext() opgeslagen in de variabele naam. In regel vier wordt de inhoud van de variabele met behulp van de methode settext() in het uitvoerveld geplaatst. In de laatste regel wordt het invoerveld leeg gemaakt. 13 Test het applet nu nog een keer en kijk of alles werkt. 14 Als laatste stap moet je de applet bewaren in de vorm van een project. Kies Bestand Als project opslaan. Geef het project de naam EersteAppletProject. opdracht 12-19 3 JAVA-PROGRAMMA S NADER BEKEKEN In deze paragraaf ga je eens wat beter kijken naar de programmacode van Javaprogramma's. Het applet uit paragraaf 2, het EersteApplet, is daarvoor een goed voorbeeld. Omdat in dat applet nog niet zoveel gebeurt, bekijk je in deze paragraaf ook nog een nieuwe applet. 3.1 TOEKENNING EN EXPRESSIE In het EersteApplet staat het volgende stukje programmacode: String naam; naam = invoerveld.gettext(); Bekijk deze code eens wat beter. De tweede regel is een voorbeeld van een toekenning, in het Engels assignment. Aan de rechterkant van de '=' staat een zogenaamde expressie, waarvan de waarde wordt toegekend aan de variabele aan de linkerkant van de '=. Variabelen zijn geheugenplaatsen. Een toekenning heeft altijd de volgende vorm: variabelnaam = expressie;

Hoofdstuk 4 Visueel programmeren met Java 55 In regel twee is de expressie invoerveld.gettext(). De waarde van deze expressie is de tekst die we hebben ingetypt in het tekstveld invoerveld. Deze waarde wordt toegekend aan de variabele naam. 3.2 NAMEN IN JAVA In Java moeten namen aan vaste regels voldoen: Namen bestaan uit letters en cijfers. Java maakt daarbij een onderscheid tussen hoofdletters en kleine letters. Een naam moet met een letter beginnen. Niet alle woorden mogen gebruikt worden als naam voor een variabele. Bepaalde woorden, als int en while, hebben in Java een speciale betekenis. Die woorden heten reserved words. Daarnaast worden er afspraken gemaakt over het geven van namen, waar iedere goede programmeur zich aan houdt: Namen van klassen beginnen met een hoofdletter: EersteApplet RenteApplet Namen van objecten laten we beginnen met een kleine letter. De naam moet zo gekozen zijn dat het duidelijk aangeeft wat de inhoud van het object is: adresveld annuleerknop Wanneer een naam uit twee of meer woorden bestaat dan worden de volgende woorden met een hoofdletter vast aan het vorige woord geschreven: EersteApplet invoerveld 3.3 DECLARATIE VAN VARIABELEN Je kunt niet zomaar iedere waarde toekennen aan een variabele. Er zijn variabelen die tekst bevatten, maar ook variabelen die alleen een geheel getal of een reëel getal kunnen bevatten. Een variabele is altijd van een bepaald type. Het geven van een naam en een type aan een variabele gebeurt in een declaratie. Kijk nog eens naar het voorbeeld: String naam; naam = invoerveld.gettext(); Er wordt aan de variabele naam een tekst toegekend. De variabele is van het type String. Een waarde van het type String is een tekst. In de eerste regel is in een declaratie vastgelegd dat de variabele 'naam een bepaalde naam heeft en van een bepaald type is. De naam van een variabele kan in principe vrij worden gekozen, maar het type niet. In Java bestaat een klein aantal basistypen, bijvoorbeeld int voor gehele getallen en double voor reële getallen. Daarnaast zijn er in Java ook voorgedefinieerde typen, bijvoorbeeld String, die klassen worden genoemd. Een Java-programmeur kan zelf ook nog nieuwe typen/klassen definiëren. Voorbeelden van declaraties zijn: String naam; int a; double a; opdracht 20-23

56 ENIGMA Informatieboek 3.4 HET RENTEAPPLET Wanneer je geld op een spaarrekening zet, dan krijg je daar rente over. Het kapitaal op de spaarrekening groeit. Om uit te rekenen hoe groot dat kapitaal na een aantal jaar geworden is kun je een algoritme bedenken en een programma schrijven. De gebruiker van je programma moet eerst een aantal gegevens invoeren: het beginkapitaal, het aantal termijnen en de rente (in procenten). Voor het gemak kun je ervan uitgaan dat de jaarrente een geheel getal is. Wanneer er een termijn verstreken is, moet bij het kapitaal de rente opgeteld worden. Bij de volgende termijn berekent het programma natuurlijk de rente over het nieuwe kapitaal. Dat gaat door tot de laatste termijn is verstreken en dan ziet de gebruiker het kapitaal op het scherm verschijnen. Het is natuurlijk verstandig om eerst een PSD te schrijven, voor je een Java-applet gaat maken. Het Java-applet heeft drie invoervelden die je heldere namen als beginkapitaalveld, renteveld en termijnenveld geeft. Je moet ook een uitvoerveld maken, bijvoorbeeld eindkapitaalveld, en een berekenknop opnemen. Voor de berekenknop moet je een event-handler schrijven. De code hiervoor is: int beginkapitaal; beginkapitaal = Integer.parseInt(beginkapitaalVeld.getText()); int rente; rente = Integer.parseInt(renteVeld.getText()); int termijnen; termijnen = Integer.parseInt(termijnenVeld.getText()); int kapitaal; kapitaal = beginkapitaal; int termijn; termijn = 1; while (termijn <= termijnen){ kapitaal = kapitaal + kapitaal * rente / 100; termijn = termijn + 1; eindkapitaalveld.settext(string.valueof(kapitaal));

Hoofdstuk 4 Visueel programmeren met Java 57 Wanneer je de code hebt ingevoerd, is het goed het programma te testen en een aantal resultaten met de hand na te rekenen. opdracht 24 3.5 TOEKENNING DOOR OPERATIES OP OPERANDEN Kijk eens naar de toekenning (ook wel assignment): kapitaal = kapitaal + kapitaal * rente/100; Aan de rechterkant staat een expressie waarin verschillende operaties voorkomen. Hier zijn dat: optellen, vermenigvuldigen en delen. Operaties werken op operanden. In dit geval zijn dat de constante 100 en de variabelen kapitaal en rente. Bij de toekenning aan de variabele kapitaal wordt eerst de expressie aan de rechterkant uitgerekend. Daarbij maakt het programma gebruik van de 'oude' waarde van kapitaal. Het resultaat van de berekening wordt daarna toegekend aan de variabele kapitaal. Daarmee gaat de 'oude' waarde van kapitaal verloren. termijn 2 1102 1050 1050 52 termijn 1 1050 1000 1000 50 kapitaal = kapitaal + kapitaal * rente/100; Toekenningsoperator in Java Expressie waarin verschillende operaties voorkomen. Een deling van twee gehele getallen (int) wordt afgebroken! 3.6 HERHALING MET WHILE De toekenning kapitaal = kapitaal + kapitaal * rente/ 100; staat in een herhalingslus: while (termijn <= termijnen){ kapitaal = kapitaal + kapitaal * rente/100; termijn = termijn + 1; Het woord while (zolang) geeft het begin van de lus aan. Een while-opdracht heeft altijd de volgende vorm: while (voorwaarde) {opdracht of opdrachten De voorwaarde tussen de ronde haken is een expressie, hier: (termijn <= termijnen). Het resultaat daarvan moet een waarde zijn van het type boolean. Dit type kan maar twee waarden aannemen: (waar) of (niet waar). Een expressie van dit type wordt ook wel een logische expressie genoemd.

58 ENIGMA Informatieboek Als het resultaat van de voorwaarde is, dan worden de opdrachten tussen de accolades uitgevoerd en wordt de lus nogmaals verwerkt. Als het resultaat is, dan worden de opdrachten tussen de accolades overgeslagen en wordt de lus beëindigd. In het RenteApplet geldt dat het of waar is dat termijn kleiner is dan of gelijk is aan termijnen of dat het niet waar is. Als het waar is, dan wordt het kapitaal met de rente verhoogd. Als het niet waar is, dan wordt de lus beëindigd. opdracht 25 3.7 METHODE-AANROEP In de tweede regel van de programmacode van het RenteApplet staat de volgende toekenning: beginkapitaal = Integer.parseInt(beginkapitaalVeld.getText()); Er staan twee methode-aanroepen in: Integer.parseInt() beginkapitaalveld.gettext() Beide methoden zullen we bekijken. Het is handig deze even apart te bekijken. Daarom hebben we de opdracht opgesplitst in de onderstaande code. Het resultaat van beide stukjes programmacode is hetzelfde, maar de code is wat makkelijker te analyseren. String hulpstring; hulpstring = beginkapitaalveld.gettext(); beginkapitaal = Integer.parseInt(hulpstring); In de eerste regel wordt een variabele hulpstring gedeclareerd. In de tweede regel staat een toekenning. Aan de rechterkant van deze toekenning staat een methode-aanroep. De methode gettext() haalt een waarde van het type String uit het beginkapitaalveld. Deze wordt vervolgens toegekend aan de variabele hulpstring. gettext() String In de laatste regel staat aan de rechterkant van de toekenning de methode parseint(). Tussen haakjes moet een argument van het type String staan, in dit geval is dat de variabele hulpstring. De methode parseint() zet het argument, een getal in tekstvorm, om in een type int, een geheel getal dus. Deze wordt toegekend aan de variabele beginkapitaal. String parseint() int Een methode-aanroep heeft altijd de volgende vorm: methode(argumenten)

Hoofdstuk 4 Visueel programmeren met Java 59 Een methode kan nul, één of meerdere argumenten hebben. Methoden horen bij een object of soms bij een klasse. Zo moet je beginkapitaalveld.gettext() lezen als de methode gettext() haalt een string uit het object beginkapitaalveld. Integer.parseInt() moet je lezen als de methode parseint() van de klasse Integer. Er zijn ook methoden die geen resultaat opleveren en dus niet in een expressie kunnen voorkomen. Een aanroep van zo n methode kan wel als statement in een programma worden opgenomen. Een voorbeeld van een dergelijke methode is settext() in de laatste regel: eindkapitaalveld.settext(string.valueof(kapitaal)); String settext() Samenvattend De methode gettext() heeft als resultaattype een String en heeft geen argumenten: String gettext() De methode parseint() heeft als resultaattype een int en heeft als argument een String: int parseint(string) De methode settext() heeft geen resultaattype en heeft als argument een String: void settext(string) Voor de naam van de methode settext() staat als resultaattype het woord void. Het Engelse woord void betekent leeg. Dat wil zeggen dat deze methode geen resultaat heeft. Het is een methode die wel effect heeft, namelijk het plaatsen van een string in een veld. 3.8 CONVERSIE In de voorlaatste regel van de programmacode van het RenteApplet zie je de methode String.valueOf() staan. Deze methode zet het argument, een geheel getal, om in een tekst, dus een waarde van het type String. Dat is nodig omdat een tekstveld alleen waarden van het type String accepteert. Ook decimale getallen kunnen met deze methode omgezet worden in een String. int / double valueof() String Om een waarde van het type String te converteren naar het type int gebruik je de methode Integer.parseInt(). Om een waarde van het type String te converteren naar het type double gebruik je de methode Double.parseDouble().

60 ENIGMA Informatieboek Om een waarde van het type int of double te converteren naar het type String gebruik je de methode String.valueOf(). opdracht 26-27 3.9 STATEMENTS Opdrachten worden ook wel statements genoemd. Voorbeelden van elementaire statements zijn: de declaratie int beginkapitaal; de toekenning termijn = termijn + 1; Ook de while-opdracht is een statement, maar dan wel een samengesteld statement. Elementaire statements worden altijd afgesloten met een puntkomma, maar een samengesteld statement niet. while (termijn <= termijnen){ kapitaal = kapitaal + kapitaal * rente/100; termijn = termijn + 1; opdracht 28-37 4 HERHALING EN KEUZE Je hebt in de vorige paragrafen al kennis gemaakt met een herhalingslus. In deze paragraaf leer je andere voorbeelden van herhalingslussen kennen. Bij een herhaling moet Java vaak waarden met elkaar kunnen vergelijken. Java kent daarvoor een aantal relationele operatoren: Operator Betekenis < kleiner dan > groter dan <= kleiner dan of gelijk aan >= groter dan of gelijk aan == is gelijk aan!= is ongelijk aan opdracht 38 4.1 HET RENTEAPPLET ANDERS GESCHREVEN In de vorige paragraaf heb je het RenteApplet nader bekeken. In een programmeertaal als Java kun je dezelfde dingen op verschillende manieren opschrijven. Hieronder staat het RenteApplet op een andere manier geschreven. Er is een aantal verschillen.

Hoofdstuk 4 Visueel programmeren met Java 61 int beginkapitaal = Integer.parseInt(beginkapitaalVeld.getText()); int rente = Integer.parseInt(renteVeld.getText()); int termijnen = Integer.parseInt(termijnenVeld.getText()); int kapitaal = beginkapitaal; for (int termijn = 1; termijn <= termijnen; termijn++) { kapitaal = kapitaal + kapitaal * rente / 100; eindkapitaalveld.settext(string.valueof(kapitaal)); 4.2 DECLARATIE EN TOEKENNING In de eerste regel is sprake van een declaratie én een toekenning in één statement: int beginkapitaal = Integer.parseInt(beginkapitaalVeld.getText()); Java biedt de mogelijkheid een variabele te initialiseren (een beginwaarde te geven) bij de declaratie. Dit wordt beschouwd als een goede programmeerstijl. Variabelen die niet geïnitialiseerd zijn, waaraan dus geen beginwaarde is toegekend, zijn vaak een bron van fouten. 4.3 HET FOR-STATEMENT In het RenteApplet is de herhalingsconstructie while vervangen door het forstatement: for (int termijn = 1; termijn <= termijnen; termijn++) { kapitaal = kapitaal + kapitaal * rente / 100; Een for-statement heeft altijd de volgende vorm: for (initialisatieopdracht; voorwaarde; stapopdracht) { opdracht(en); Het is eigenlijk alleen maar een verkorte schrijfwijze van initialisatieopdracht; while (voorwaarde) { opdracht(en); stapopdracht; Het deel tussen de ronde haakjes heeft drie onderdelen. Het eerste onderdeel is een initialisatie. Deze wordt meestal gebruikt om een variabele, die wel de stuurvariabele van het for-statement genoemd wordt, een beginwaarde te geven. Het tweede onderdeel is een logische expressie. Zolang het resultaat is, worden de opdrachten tussen de accolades uitgevoerd. Het derde onderdeel is een stapopdracht, meestal een opdracht die de stuurvariabele wijzigt. Het statement termijn++ verhoogt termijn met 1 (het resultaat is hetzelfde als van de expressie termijn = termijn + 1).

62 ENIGMA Informatieboek for (int termijn = 1; termijn <= termijnen; termijn++) initialisatie logische expressie stapopdracht opdracht 39 4.4 DECIMALE GETALLEN OMZETTEN NAAR BINAIRE GETALLEN In hoofdstuk 2 heb je een algoritme bekeken voor het omzetten van een decimaal getal naar een binair getal: Om een decimaal getal om te zetten in een binair getal deel je het getal door 2 en noteer je de rest van de deling. Dit herhaal je totdat de uitkomst gelijk is aan 0. Het PSD hieronder is een uitwerking in Struktograaf van dat algoritme. LEES decgetal; resultaat := ; resultaat := STR(decGetal MOD 2) + resultaat; decgetal := INT(decGetal / 2); TOTDAT decgetal = 0 SCHRIJF resultaat; In het PSD staan drie functies: de functie MOD heeft als resultaat de rest van een deling; de functie STR zet een getal om in een string (vergelijkbaar met de methode-aanroep String.valueOf() uit Java); de functie INT maakt van een getal een geheel getal, waarbij het decimale deel weggelaten wordt. Met behulp van dit PSD kun je nu een applet maken in Java dat een decimaal getal omzet in een binair getal. Voor de knop die de omzetting doet, moet een event-handler geschreven worden. De code in Java is een vertaling van het PSD.

Hoofdstuk 4 Visueel programmeren met Java 63 int decgetal = Integer.parseInt(decimaalVeld.getText()); String resultaat = ""; do { resultaat = String.valueOf(decGetal % 2) + resultaat; decgetal = decgetal / 2; while (decgetal > 0); binairveld.settext(resultaat); opdracht 40 4.5 HET DO-WHILE-STATEMENT In de programmacode van het applet waarmee een decimaal getal naar een binair getal wordt omgezet, komt het do-while-statement voor: do { while (decgetal > 0); Een do-while-statement heeft altijd de volgende vorm: do {opdracht(en) while (voorwaarde); Deze herhalingsopdracht is nauw verwant aan het while-statement, maar kent twee belangrijke verschillen: de opdrachten tussen de accolades worden minstens één keer uitgevoerd. het berekenen van de voorwaarde vindt aan het eind plaats. Eerst worden de opdrachten tussen de accolades verwerkt. Daarna wordt de logische expressie achter de while berekend. Als het resultaat is, worden de opdrachten tussen de accolades opnieuw verwerkt. Is het resultaat, dan wordt de do-whileopdracht beëindigd. opdracht 41-42 4.6 HET IF-ELSE-STATEMENT Het OverwerkApplet berekent welk bedrag aan een werknemer betaald moet worden als vergoeding voor overwerk. Tevens geeft het applet aan wanneer er niet overgewerkt is. De gebruiker van het applet voert een viertal gegevens in: het uurloon, het aantal uren dat de werknemer normaal werkt, het vergoedingspercentage voor overwerk en het aantal uren dat de werknemer werkelijk gewerkt heeft. Voor de berekenknop moet je een eventhandler schrijven. De code hiervoor is:

64 ENIGMA Informatieboek int uurloon = Integer.parseInt(uurloonVeld.getText()); int taakomvang = Integer.parseInt(taakomvangVeld.getText()); int vergperc = Integer.parseInt(vergPercVeld.getText()); int gewerkt = Integer.parseInt(gewerktVeld.getText()); if (gewerkt > taakomvang) { int loon = (gewerkt - taakomvang) * uurloon * vergperc / 100; resultaatlabel.settext("vergoeding overwerk: " + String.valueOf(loon)); else { resultaatlabel.settext("niet overgewerkt!"); Tijdens de verwerking van het OverwerkApplet wordt een keuze gemaakt: is er wel of niet overgewerkt. Dit gebeurt met een if-else-statement. Net als het while-statement is dit een samengesteld statement. Een if-else-statement heeft de volgende vorm: if (logische expressie) opdrachtl else opdracht2 Bij de uitvoering wordt eerst de logische expressie berekend. Is het resultaat, dan wordt opdracht1 verwerkt. Wanneer het resultaat is, wordt opdracht2 verwerkt. In het geval dat opdracht1 of opdracht2 uit meer dan één statement bestaat, komen de statements tussen accolades. Een variatie is het if-statement: if (logische expressie) opdracht Wanneer het resultaat van de logische expressie is, wordt de opdracht uitgevoerd. Is het resultaat, dan wordt de opdracht overgeslagen. opdracht 43-50 5 VARIABELEN EN OPERATOREN In paragraaf 3 heb je kennis gemaakt met het gebruik van variabelen in een Javaprogramma. Je kunt een variabele voorstellen als een doos met aan de buitenkant een sticker waar de naam op staat. In de doos zit een waarde (bijvoorbeeld een getal). De waarde kan door het programma gewijzigd worden, maar de naam niet. Een variabele heeft een type. Het type bepaalt welke waarden de variabele kan aannemen en welke operaties er op kunnen worden uitgevoerd. Het type is als het ware de vorm van de doos. type naam Java kent twee soorten variabelen: Variabelen die naar een object verwijzen. Dergelijke variabelen worden referenties genoemd. De doos bevat dus niet het object zelf, maar een verwijzing (zeg maar het adres) van de plek in het geheugen waar het object zich bevindt. De klasse Button, Textfield en Label zijn voorbeelden van referentietypen. Daarnaast kent Java 8 primitieve typen: byte, short, int, long, float, double, char en boolean. Variabelen van dat type verwijzen niet naar een object. De doos bevat de waarde zelf.

Hoofdstuk 4 Visueel programmeren met Java 65 In deze paragraaf wordt een aantal primitieve typen behandeld. In de volgende paragraaf wordt de klasse String als voorbeeld van een referentietype bekeken. 5.1 GEHELE GETALLEN Het type int representeert gehele getallen. Daarvoor wordt 32 bits gereserveerd om een waarde van dit type op te slaan. Een getal van het type int moet daarom liggen tussen de 2147483648 en + 2147483647 (tussen de -2 31 en +2 31-1). Behalve het type int kent Java ook nog de typen byte, short en long voor gehele getallen. Het bereik van deze typen verschilt: byte 8 bits, short 16 bits en long 64 bits. opdracht 51 5.2 REËLE GETALLEN Voor het opslaan van reële getallen kent Java het type double. Een reëel getal noteer je in Java met een decimale punt. Een waarde van het type double wordt opgeslagen in 64 bits. Daarnaast is er ook nog het type float. Deze waarden worden in 32 bits opgeslagen. Het type double kan grotere getallen representeren en is ook nauwkeuriger. De interne representatie van waarden van het type float of double lijken op de getallen in wetenschappelijke notatie (zoals 3.452510562E-03) die je op veel calculators aantreft. opdracht 52 In Java kun je de hoogste en laagste waarde van een type opvragen met behulp van de constanten MAX_VALUE en MIN_VALUE: int hoogsteint = Integer.MAX_VALUE; double laagstedouble = Double.MIN_VALUE; Let op! MAX_VALUE en MIN_VALUE zijn constanten en geen methoden. Daarom staan er geen haakjes () achter de namen. 5.3 OPERATOREN Java kent de volgende rekenkundige operatoren Operator Betekenis + optellen - aftrekken * vermenigvuldigen / delen % rest van een deling De operator / geeft bij een deling van waarden van het type int als resultaat een geheel getal: 15/2 geeft als resultaat 7 en niet 7.5. Bij een deling van waarden van het type double is het resultaat een reëel getal: 15.0/2 geeft als resultaat 7.5. De operator % levert de rest van een deling: 15%2 geeft als resultaat 1.

66 ENIGMA Informatieboek 5.4 RANDOM GETALLEN Het maken van random getallen (toevalsgetallen) komt veel voor in allerlei programma s. In Java maak je een random getal met behulp van de methode random() uit de klasse Math. We nemen als voorbeeld een applet die het werpen van een dobbelsteen simuleert In de event-handler van de knop Dobbel komt de volgende code te staan: double randomgetal = Math.random(); int worp = (int)(6*randomgetal) + 1; dobbelsteenveld.settext(string.valueof(worp)); In de eerste regel staat de methode random() uit de klasse Math. Met deze methode kun je willekeurige getallen laten berekenen. Elke keer als je de methode random() aanroept, levert dat een willekeurig reëel getal van 0.0 tot 1.0 op (1.0 komt zelf niet voor). In de tweede regel staat een expressie waarvan het resultaat is een getal uit de verzameling {1, 2, 3, 4, 5, 6. Het resultaat van de expressie is van het type double. De variabele worp, waarin het resultaat wordt opgeslagen, is van het type int. Je kunt je afvragen of dat zomaar kan. opdracht 53 5.5 CONVERSIE VAN NUMERIEKE VARIABELEN In het onderstaande voorbeeld levert de conversie geen probleem op: int x, y; x = 10; y = 20; double r; r = x + y; In het statement r = x + y; komen twee verschillende typen voor, maar Java kan die zonder problemen converteren. De int-waarde van het resultaat wordt geconverteerd naar double. Dit wordt een impliciete conversie genoemd. Het volgende voorbeeld geeft wel een probleem: double x, y; x = 1,5; y = 2,7; int g; g = x + y; In het voorbeeld wordt geprobeerd een getal van het type double te converteren naar int: g = x + y; Dit staat Java niet zonder meer toe, want er gaat dan informatie verloren. Wanneer hier toch een conversie gewenst is, kan dat met behulp van een expliciete conversie. Dit wordt casting genoemd ( in een bepaalde vorm gieten ). Om een expressie naar een bepaald type te converteren schrijven we de typenaam tussen haakjes voor de expressie: (typenaam) expressie

Hoofdstuk 4 Visueel programmeren met Java 67 Door het woord int tussen haakjes voor de expressie te zetten, geef je Java de opdracht om x + y te converteren naar int. In het voorbeeld van de dobbelsteen geeft de code int worp = 6 * randomgetal + 1; hetzelfde conversieprobleem. Omdat in dit geval een conversie gewenst is, converteren we het getal van het type double naar int: int worp = (int) (6 * randomgetal) + 1; We komen nog even terug op de deling uit paragraaf 5.3. Bekijk het volgende voorbeeld: double r = 15 / 2; Het resultaat van deze deling wordt opgeslagen in een variabele van het type double. Je zou verwachten dat in r de waarde 7.5 wordt opgeslagen. Dat is niet het geval. Het resultaat is 7. De verklaring is dat hier twee gehele getallen op elkaar gedeeld worden. Er is hier sprake van een gehele deling waarvan het resultaat 7 is. Dit resultaat wordt opgeslagen in de variabele r middels een impliciete conversie: 7.0. Ook in dit geval zal er een expliciete conversie moeten plaatsvinden: double r = (double) 15 / 2; opdracht 54-60 5.6 TYPE BOOLEAN Het type boolean kan maar twee waarden hebben: of. In het volgende deel van een programmacode zie je het gebruik van het type boolean in combinatie met een if-statement: boolean ok = a > 10; if (ok) tekstlabel.settext( Je bent klaar ); Op het type boolean kunnen de logische operatoren &&, en! werken. Het resultaat van een expressie met logische operatoren is van het type boolean. De &&-operator is de logische AND. In de expressie x && y is het resultaat alleen als zowel x als y is. x y x && y De -operator is de logische OF. In de expressie x y is het resultaat als x of y is of beiden zijn. x y x y

68 ENIGMA Informatieboek De!-operator is de logische NOT. In de expressie!x is het resultaat als x is en is het resultaat als x is. x!x Net zoals *, / en % voor numerieke typen (int, float, etc.) een hogere prioriteit hebben dan + en (Mijnheer Van Dalen Wacht Op Antwoord), heeft! een hogere prioriteit dan && en die weer een hogere dan. Om waarden met elkaar te kunnen vergelijken kent Java een aantal relationele operatoren: < kleiner dan > groter dan <= kleiner dan of gelijk aan >= groter dan of gelijk aan == is gelijk aan!= is ongelijk aan Een relationele operator vergelijkt het resultaat van twee expressies (van numeriek type) met elkaar, bijvoorbeeld a >= b + c;. Het resultaat is van het type boolean. opdracht 61-63 5.7 LOKALE VARIABELEN EN INSTANCE VARIABELEN We bekijken nog even de event-handler van de dobbelknop: public void dobbelknopactionperformed(actionevent evt) { double randomgetal = Math.random(); int worp = (int)(6*randomgetal) + 1; dobbelsteenveld.settext(string.valueof(worp)); In de event-handler worden twee variabelen gedeclareerd: randomgetal en worp. Omdat deze variabelen in de event-handler gedeclareerd worden, kun je ze alleen in de event-handler gebruiken. In Java geldt dat variabelen die in een body van bijvoorbeeld een methode of van een lus gedeclareerd worden alleen daar gebruikt kunnen worden. We spreken in dit verband over lokale variabelen. Wanneer je de variabele worp ook in andere methoden wilt gebruiken dan moet je de variabele niet in de event-handler declareren, maar direct aan het begin van de klasse DobbelApplet: public class DobbelApplet extends Applet { // Begin variabelen int worp;

Hoofdstuk 4 Visueel programmeren met Java 69 In dit voorbeeld kun je de variabele worp in de hele klasse DobbelApplet gebruiken. We spreken dan over een instance variabele. opdracht 64-71 6 STRINGS Voor het werken met strings (rijen tekens) kent Java de klasse String. Een voorbeeld van een string is ENIGMA, maar ook 2021. Het feit dat een string geen primitief type is, maar een instantie van de klasse String maakt dat het werken met strings anders is dan het werken met een variabele van bijvoorbeeld het type int. De oorzaak van dit verschijnsel ligt in het feit dat alle klassen, dus ook String referentietypen zijn. int De ==-operator vergelijkt alleen de referenties (verwijzingen naar het geheugenplaatsen), en niet de objecten zelf. Die staan in het geheugen. Om te controleren of twee strings dezelfde inhoud hebben kun je dus niet de operator == gebruiken, maar moet je een methode gebruiken. Bijvoorbeeld kun je met de methode equals()controleren of twee strings gelijk zijn. Deze methode geeft als resultaat een boolean-waarde: String boek kapitaal 1232 1233 1234 ENIGMA 1235 String naam1 = Jan ; String naam2 = Piet ; if (naam1.equals(naam2)) resultaatlabel.settext( Gelijk ); else resultaatlabel.settext( Ongelijk ); opdracht 72-73 6.1 HET PALINDROOMAPPLET Een palindroom is een woord dat je ook van achter naar kunt lezen. Het volgende applet controleert of een woord een palindroom is. Voorbeelden van dergelijke woorden zijn bijvoorbeeld kok, lepel, kayak, parterretrap. Het applet heeft een invoerveld waar het woord wordt ingetypt. In een label wordt aangegeven of het woord een palindroom is of niet. In het applet worden een aantal methoden uit de klasse String gebruikt.

70 ENIGMA Informatieboek Voor de Controleerknop moet je een event-handler schrijven. De code hiervoor is: String woord = invoerveld.gettext(); int aantal = woord.length(); String omgekeerd = ""; for (int index = 0; index < aantal; index ++) { String letter = woord.substring(index, index + 1); omgekeerd = letter + omgekeerd; if (woord.equals(omgekeerd)) uitvoerlabel.settext("palindroom"); else uitvoerlabel.settext("geen palindroom"); 6.2 HET GEBRUIK VAN METHODEN In de tweede regel geeft de methode length() als resultaat het aantal tekens van de string. Deze methode heeft als resultaattype een int en heeft geen argument: int length(). In regel 4 staat een for-lus, die er voor zorgt dat het woord letter voor letter wordt langs gelopen. De variabele index geeft de positie van de letter in een string aan. De eerste letter staat op positie 0! In regel 5 wordt met behulp van de methode substring een letter uit het woord gehaald. De methode substring geeft als resultaat een string die een deel is van de oorspronkelijke string. Deze methode heeft als resultaattype een String en heeft twee argumenten van het type int, die het begin en het einde van de string markeren: String substring(int, int). opdracht 74-77 6.3 CONCATENATIE VAN STRINGS In regel 6 worden twee strings aan elkaar geplakt worden met behulp van het plusteken. Dit wordt concatenatie van strings genoemd. Bekijk het volgende voorbeeld: String voornaam = Alan ; String achternaam = Turing ; uitvoerveld.settext(voornaam + + achternaam); Ook is het mogelijk om op deze manier strings en getallen achter elkaar te plakken. Het resultaat is weer een string: String adres = 1011 + ENIGMA-way ; In regel 8 worden twee strings met elkaar vergeleken met de methode equals. Deze methode heeft als resultaattype een boolean en heeft als argument een String: boolean equals(string). opdracht 78-79

Hoofdstuk 4 Visueel programmeren met Java 71 6.4 CONVERSIE VAN EN NAAR STRINGS Om een getal naar een string te converteren kent de klasse String de methode valueof(). Deze methode kan als argument een variabele van het type int hebben, maar ook van het type double. Het resultaat is van het type String: int g = 1234; double r = 12.34; String sg = String.valueOf(g); String sr = String.valueOf(r); uitvoerveld.settext(sg+ + sr); Omgekeerd moet het ook mogelijk zijn om van een string een getal te maken. Als eerste bekijken we de conversie van String naar int. De klasse Integer bevat een methode parseint() die als argument een variabele van het type String heeft. Het resultaat is van het type int: int g = Integer.parseInt( 5 ); Voor de conversie naar double kent Java de methode parsedouble() uit de klasse Double. Deze methode heeft als argument een variabele van het type String heeft. Het resultaat is van het type int: int r = Double.parseDouble( 12.34 ); Alleen strings die een int-waarde voorstellen kunnen worden geconverteerd: 5 Wanneer een string niet de juiste vorm heeft en je in bovenstaand voorbeeld in plaats van 5 ENIGMA invult, levert dit een foutmelding (Exception) tijdens de verwerking van het programma op. In de klasse String zit een groot aantal methoden, waar elke instantie gebruik van kan maken. Een aantal methoden hebben we in deze paragraaf de revue laten passeren, zoals length(), substring(), equals()en valueof(). In de bijlage van het verwerkingsboek vind je een overzicht van een aantal veelgebruikte methoden uit de klasse String. opdracht 80-85