Vergelijkbare documenten

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

sheets Programmeren 2 Java Recursie, de muis en graphics Walter Kosters

NAAM: Programmeren 1 Examen 29/08/2012

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Game of Life in Java

SPOJ oplossingen Gilles Callebaut 7 augustus 2015

Programmeermethoden NA. Week 6: Lijsten

recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie

Programmeermethoden NA

Derde college complexiteit. 7 februari Zoeken

Ingebouwde klassen & methodes

Programmeermethoden. Arrays. Walter Kosters. week 7: oktober kosterswa/pm/

Modelleren en Programmeren

Programmeren (1) Examen NAAM:

Een eenvoudig algoritme om permutaties te genereren

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Programmeermethoden. Talen: Java, Qt, Python,... Walter Kosters. week 14: december

Programmeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/

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

Hoofdstuk 7: Werken met arrays

IMP Uitwerking week 13

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/

Java Les 3 Theorie Herhaal structuren

Modelleren en Programmeren

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

NAAM: Programmeren 1 Examen 21/01/2011

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

PO: Informatica Olympiade

Modelleren en Programmeren

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40

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

Programmeren in C# Samenvatting van C#

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

Arrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma:

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

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

Tentamen Imperatief Programmeren

Javascript oefenblad 1

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

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

Stel dat u 15 tellers nodig heeft. Dat kunt u een array van tellers als volgt declareren:

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd

Voorbeeld: Simulatie van bewegende deeltjes

Vierde college complexiteit. 14 februari Beslissingsbomen


Recursie. public static int faculteit( int n ){ // Deze functie berekent n! // pre: n = N en n >= 0 // post: faculteit = N!

Voor het bepalen van de getalswaarde van een string is een standaardmethode beschikbaar: n = Integer.parseInt(s);

Een stoomcursus door Edgar de Graaf, november 2006

Programmeren in Java les 3

Dynamisch Programmeren. Het Rugzakprobleem

Een functie is een kant en klare formule. Via de knop Som in de groep Bewerken van het tabblad Start kun je een aantal veelgebruikte functies kiezen:

INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN

Achtste college algoritmiek. 8 april Dynamisch Programmeren

Programmeermethoden NA. Week 5: Functies (vervolg)

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Programmeermethoden NA. Week 5: Functies (vervolg)

Modelleren en Programmeren

Oefeningen Java Oplossingen

Modelleren en Programmeren

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Modelleren en Programmeren

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

Scala. Korte introductie. Sylvia Stuurman

eerste voorbeelden in Java

Zelftest Programmeren in Java

Zesde college complexiteit. 19 maart Mergesort, Ondergrens sorteren Quicksort, Shellsort

Small Basic Programmeren Text Console 2

Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 21 oktober 2011, uur

Programmeermethoden. Arrays (vervolg) Walter Kosters. week 8: 29 oktober 2 november kosterswa/pm/

Uitgebreide uitwerking Tentamen Complexiteit, juni 2017

Lineaire data structuren. Doorlopen van een lijst

Verslag Opdracht 4: Magische Vierkanten

Versie 2: B C D D A C D A C C. Versie 3: C D A A B D A B D D. Versie 4: A D C C B D C B D D. Versie 5: B A D D C A D C A A

Zevende college complexiteit. 7 maart Mergesort, Ondergrens sorteren (Quicksort)

Hoofdstuk 0. Van Python tot Java.

Modelleren en Programmeren

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Transcriptie:

sheets Programmeren 1 Java college 6, Walter Kosters De sheets zijn gebaseerd op met name hoofdstuk 13 en 14 van: D. Bell en M. Parr, Java voor studenten, Prentice Hall, 2002 http://www.liacs.nl/home/kosters/java/ 1

Java arrays Je kunt eenvoudig een geordende rij (array ) met getallen maken in Java: int[ ] serie = new int[5]; Nu hebben we de volgende vijf int s: serie[0], serie[1], serie[2], serie[3] en serie[4]. Het getal tussen [ ] heet een array-index, terwijl serie[3] een array-element is. Let er goed op dat de array-indices altijd binnen de perken blijven. Zo bestaat in bovenstaand voorbeeld serie[5] niet! Als je een array doorgeeft aan een functie, kan het array wel degelijk gaan veranderen dit in tegenstelling tot bijvoorbeeld int s! 2

Java afdrukken Stel dat we de inhoud van een array af willen drukken. Dat gaat als volgt: public void drukaf (int[ ] array) { int i; for ( i = 0; i < array.length; i++ ) System.out.println (array[i] + " "); } // drukaf public void vularray (int[ ] A) { int i; for ( i = 0; i < A.length; i++ ) A[i] = (int) ( 100 * Math.random ( ) ) + 1; } // vularray public static void main (String[ ] args) { int[ ] ar = new int[30]; vularray (ar); drukaf (ar); } // main Let op de verschillende namen (A, array, ar) die het array kan hebben. Merk ook op dat de functie vularray het array wijzigt! 3

Java afdrukken (vervolg) Of in een applet: public void drukaf2 (int[ ] arr, Graphics g) { int i; int y = 30; for ( i = 0; i < arr.length; i++ ) { g.drawstring (arr[i] + " ",50,y); y = y + 20; } // for } // drukaf2 public void paint (Graphics g) { int[ ] arr = new int[100];... vul arr als eerder... drukaf2 (arr,g); } // paint Je kunt in de body van de drukaf2-functie overigens ook g ophalen via Graphics g = getgraphics ( ); en zo zonder paint tekenen! 4

Java sorteren We gaan nu een array oplopend sorteren met behulp van bubblesort: public void bubblesort (int[ ] array) { int i, j; int temp; for ( i = 1; i < array.length; i++ ) for ( j = 0; j < array.length-i; j++ ) if ( array[j] > array[j+1] ) { temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } // if } // bubblesort In iedere ronde wisselen we buren die verkeerd om staan, van links naar rechts door het array heen. Zo wordt 3 5 8 2 7 9 1 na de eerste ronde 3 5 2 7 8 1 9: het grootste getal staat nu zeker achteraan. Aanroep: bubblesort (serie); 5

Java zoeken En vervolgens willen we weten op welke plek getal X in het array staat: public int zoeken (int[ ] array, int X) { int i = 0; while ( i < array.length ) { if ( X == array[i] ) // bingo return i; i++; } // while return -1; // X niet gevonden } // zoeken Dit heet wel lineair zoeken. Aanroep: nummer = zoeken (serie,42); Het kan sneller (met binair zoeken) als de rij oplopend gesorteerd is: je kijkt naar het middelste getal, en als dat niet X is ga je of links of rechts verder, al naar gelang het middelste getal groter of kleiner dan X is. 6

Java de grootste En wat is het grootste getal in het array? public int grootste (int[ ] array) { int i; int groot = array[0]; for ( i = 1; i < array.length; i++ ) { if ( array[i] > groot ) groot = array[i]; } // for return groot; } // grootste Probeer zelf eens het op-een-na-grootste arrayelement te vinden. 7

Java de grootste (vervolg) Maar waar staat dat grootste getal in het array: public int plekgrootste (int[ ] array) { int i; int index = 0; int groot = array[0]; for ( i = 1; i < array.length; i++ ) { if ( array[i] > groot ) { groot = array[i]; index = i; } // if } // for return index; } // plekgrootste Als je deze functie zo aanpast dat je vanaf een bepaalde plek de grootste zoekt, kun je een eenvoudige sorteermethode maken door herhaald de grootste van de rest op te sporen en die te wisselen met het achterste element. 8

Java tellen En hoe vaak komt X in een 2-dimensionaal array (matrix) voor? public int tellen (int[ ][ ] array, int X) { int i, j; int teller = 0; for ( i = 0; i < array.length; i++ ) for ( j = 0; j < array[0].length; j++ ) if ( X == array[i][j] ) teller++; return teller; } // tellen Let er op dat hier array.length het aantal rijen van array is, en array[0].length het aantal kolommen van array. 2 3 4 5 2 2 rijen, 5 kolommen 3 5 2 7 8 2 komt drie keer voor 9

Java exceptions Hoe vang je fouten op? Hoe kun je bijvoorbeeld controleren of iemand in een tekstveld daadwerkelijk een getal invoert? Dat verloopt via exceptions: public void actionperformed ( ActionEvent event) { try { int getal = Integer.parseInt ( tekstveld.gettext ( )); getal = 2 * getal; anderveld.settext ("Verdubbeld " + getal); } // try catch (NumberFormatException e) { anderveld.settext ("Fout... nog eens: "); } // catch } // actionperformed Je kunt exceptions ook nog doorgeven met behulp van throws-commando s. 10

Java voor de zekerheid Voor de zekerheid nog één keer de twee soorten functies, dit maal voor machtsverheffen: 2 10 = 2 2 2 2 2 2 2 2 2 2 = 1024. public int macht (int x, int n) { int res = 1; int i; for ( i = 1; i <= n; i++ ) res = res * x; return res; } // macht public void macht2 (int x, int n) { int res = 1; int i; for ( i = 1; i <= n; i++ ) res = res * x; System.out.println (" " + res); } // macht2 Met aanroepen: int iets = macht(2,10); System.println (" " + iets); // 1024 macht2 (2,10); // ook 1024 11