Algoritmiek Arrays: wat zijn dat en wat kun je ermee? Loops: hoe hou je ze in bedwang? Hoorcollege 6 - Ma. 9 okt. 2006 L.M. Bosveld-de Smet.

Slides:



Advertisements
Verwante presentaties
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.
Advertisements

OOS Object geOrienteerd Software-ontwerp - 4 Codeerperikelen Singleton Specificeren Scheiding GUI en Domein Facade.
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 6.
Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a;
Hoorcollege 8 Game object structuren. Arrays in games Grid-gebaseerd speelveld (zoals Tetris) Lijst van spelers Lijst van inventory items Lijst van alle.
Hoorcollege 7 Collections, arrays. Programma ‘Snowflakes’ Sneeuwvlok object.
Algoritmiek Object-georiënteerd Programmeren
Algoritmiek Strings & Stringmanipulaties; Controle Structuren; Floating-point notation. Hoorcollege 4 - Ma. 25 sept L.M. Bosveld-de Smet.
Algoritmiek Java GUIs, AWT en Swing API Overzicht te bestuderen stof, voorbeeldtentamen Hoorcollege 15 - Ma. 11 dec L.M. Bosveld-de Smet.
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
1 Over het examen (1): Modus Mondeling met schriftelijke voorbereiding 4 uur, 3 onderdelen: –Modellering (  schriftelijk, dan mondeling) –Queries / relationeel.
Wageningen University Meteorologie en Luchtkwaliteit
Hoe deel je gesteenten in? Codering; Streckeisen
Veevoeding Blok 3 en 4: Ruwvoerbalans melkveehouderij
Dynamica van luchtstromen
Jeugd in het Strafrechtelijk kader Les 3, 2016 ‘Needs’
Klaar met het PW? Lees aandachtig het samenvattingenblad hst 7
Aanleiding Veranderende organisatie
Financiële situatie Volley
Portfolio Zon projecten.
Door Marco Lassche, Joyce Mulder en Mare de Winter
Bomen en struiken IVN Helden.
STUUR DIT AAN EEN SLIMME VROUW... EN AAN ALLE MANNEN... DIE ER TEGEN KUNNEN !!! Na 5000 jaar moppen over vrouwen... uiteindelijk moppen over mannen.
Roundtable De Gefragmenteerde Organisatie
Mictieklachten bij mannen
Quel jour sommes-nous aujourd’hui ?
RECHT VAN SPREKEN FUNCTIONEREN OC’S 2016
Toolbox: ATEX ATmosphere - EXplosive
En blessurepreventie Trainingsopbouw.
VEELTERMEN BLADWIJZERS: GETALWAARDE OPTELLEN EN AFTREKKEN
Omdenken Een kleine test….
Je kunt iedere dag iets betekenen voor een ander
NIET-RATIONELE BESLISSINGEN in de TECHNIEK
6. Sleutelvoedingsfactoren
Participatie in Onderzoek ZonMw
Kwaliteitsborging voor het Bouwen
Op weg naar echte eenheid
Belangrijkste wijzigingen
Microsoft® Office SharePoint® Server 2007-training
Landschapsecologische criteria voor Nationale Parken van Wereldklasse
H 3 Stabiliteits- en groeipact
De Mount Etna Presentatie voor Plannex door Veerle van Deelen.
Lokale autonomie en interbestuurlijk toezicht
De economie in de gouden eeuw
Pastoraat van heling en vernieuwing
Kleurenschema’s Inspiratie: steden van de wereld.
Hoe zal de wereld eruit zien als er geen wiskunde bestond? Voorbeeld Hoe zal de wereld eruit zien als er geen wiskunde bestond? BIG QUESTION.
Paul Geurts, Gemeente Nijmegen
Aardrijkskunde Olympiade
Natuurkunde Overal Hoofdstuk 3: Kracht en Beweging.
Herhaling § §12.1: Echografie = geluidsgolven: onschadelijk
De Nobelprijs voor de natuurkunde materie in de knoop
Natuurkunde Overal Hoofdstuk 2: Elektriciteit.
Wolf Mooij Jeroen de Klein Jan Janse
Hoofdstuk 5 Les 7: Markten.
Natuurkunde Overal Hoofdstuk 2: Elektriciteit.
4.2 en 4.3 warmte en uitzetten warmtetransport
TONEEL.
Uitnodiging Rabobank-Sprintwedstrijden Het leukste side-event van de Giro d’Italia!! 30 april – uur.
Macro-economie Oplossingen proefexamen
Beleid, Actualiteit en Praktijk
4. Gezinnen als vragers van goederen
De Lorenzcurve Doel van de Lorenzcurve is inzicht geven in de verdeling van het (nationaal)inkomen over de inkomenstrekkers. Het is een grafische weergave.
WETENSCHAPPLIJK EN SIGNIFICANTIE
Hoofdstuk 8 | Over economische grenzen! (kader)
Formules omschrijven.
Hoofdstuk 4 | Aan het werk! (basis)
Toegepast rekenen HEO Algebra.
1. vergelijkingen 1.1 Rekenen met letters.
Transcript van de presentatie:

Algoritmiek Arrays: wat zijn dat en wat kun je ermee? Loops: hoe hou je ze in bedwang? Hoorcollege 6 - Ma. 9 okt L.M. Bosveld-de Smet

Datastructuren Programs = Data Structures + Algorithms Data structure: definitions = ‘a group of related data items organised in the computer’ (in: A Glossary of Computer Terms) = “collection of data items stored under a single name” (in: King) Voorbeelden van datastructuren objects arrays lists, tables, trees, files, …

Arrays en Objects Enige datastructuren in Java Array is een subklasse van de klasse Object Arrays zijn objecten, maar van een bepaalde soort in een object kunnen elementen van verschillend type zijn in een array zijn alle elementen van hetzelfde type Array heeft length als instantievariabele Array kent een aantal voorgedefinieerde methoden Arrays “store a set of data in an order accessible by index”

Arrays en postvakjes

Arrays

Arrays met invullingen

Een simpel Array voorbeeld public class ArrayArgs { public static void main (String[] args) { for (int i=0, n=args.length; i<n; i++) { System.out.println (“Arg “ + i + “ “ + args[i]); } array van string objecten aantal strings in array args de string op positie i in array args

ArrayArgs java ArrayArgs Drink Hot Java Arg 0 Drink Arg 1 Hot Arg 2 Java Command-line Screen display

Array declaratie Specificeer type elementen int[] scores; int scores[]; String[] names; String names[]; Account[] accounts; Account accounts[]; Arrayvariabelen worden gedeclareerd. Net als bij object declaratie, zijn deze bedoeld voor referenties

Array aanmaken Specificeer arraygrootte Geheugenruimte wordt toegekend scores = new int[10]; names = new String[50]; accounts = new Account[1000]; scores

Array opslag in computergeheugen

Array initializers int[] scores = {8, 5, 6, 6, 7, 9, 10, 6, 5, 8}; String[] names = {“Java”,“Pascal”,“Python”,“Logo”};

Exceptions NullPointerException ArrayOutOfBoundsException

Arrays: elementen bereiken en waarden toekennen scores[0] = 8; scores[i + 2] = 10; sum = sum + scores[i]; names[i] = “Java”; System.out.print (names[i]); char firstLetter = names[i].charAt(0);

Example: average temperature double[] temperatures = {32.0, 30.8, 25.7, 26.1, 34.0, 31.5, 29.0}; double sum = 0.0; for (int i=0; i < temperatures.length; i++) { sum = sum + temperatures[i]; } System.out.println(“average temperature of this week is “ + sum / temperatures.length);

Test Wat is de output? char[] vowel = {‘a’, ‘e’, ‘i’, ‘o’, ‘u’}; for (int i=0; i < vowel.length; i++) { System.out.println( vowel [i] ); } OK? int[] b = new int[10]; for (int i=1; i <= b.length; i++) { b[i] = 5 * i; }

Arrays als argumenten en als return waarde Arrays kunnen gebruikt worden als argumenten van methoden Referentie wordt doorgegeven Verandert de methode de array inhoud, dan ‘verlaat de array de methode in veranderde vorm’ Een methode kan een array maken of veranderen en deze als resultaat afgeven Dit is mogelijk omdat ‘niet de hele array, maar de referentie wordt afgegeven’

Copiëren van arrays public class DoubleArray { public static void main (String[] args) { int array1[] = {1,2,3,4,5}; int array2[] = {1,2,3,4,5,6,7,8,9}; System.out.println(“Original size: “ + array1.length); System.out.println(“New size: “ + doubleArray(array1).length; System.out.println(“Original size: “ + array2.length); System.out.println(“New size: “ + doubleArray(array2).length; } static int[] doubleArray(int[] original) { int length = original.length; int[] newArray = new int[length*2]; System.arrayCopy(original, 0, newArray, 0, length); return newArray; }

Output Original size: 5 New size: 10 Original size: 9 New size: 18

Arrays clonen static int[] cloneArray (int[] original) { return (int[]) original.clone(); }

Arrays vergelijken (1) Button[] buttons = { new Button(“0ne”), new Button(“Two”), new Button(“Three”)}; Component[] components = buttons; boolean bln = (components == buttons); Waarde bln? true

Arrays vergelijken (2) String[] clone = (String[]) strArray.clone(); boolean isEqual = (strArray == clone); isEqual = (Arrays.equals(strArray, clone); false true

Loops Essentiële onderdelen: Initialisatie Test Verandering Belangrijke vragen: Welke loop kies je? Hoe controleer je de loop? Hoe ontwerp je een loop?

Soorten loops Counted loops Continuously evaluated loops Endless loops Iterator loops

Varianten in diverse programmeertalen Visual Basic: For-Next While-Wend Do-Loop-While For-Each C, C++, C#, Java for while do-while foreach (C#)

While-loop Meest flexibel Te gebruiken als aantal herhalingen van te voren onbekend is Keuze voor plaats van test aan begin aan eind Geschikt voor meer complexe loops

Loop-with-exit loop (1) score = 0; getNextRating(ratingIncrement); rating= rating + ratingIncrement; while ((score < targetScore) && (ratingIncrement != 0)) { getnextScore(scoreIncrement); score = score + scoreIncrement; getNextRating(ratingIncrement); rating= rating + ratingIncrement; }

Loop-with-exit loop (2) score = 0; while (true) { getNextRating(ratingIncrement); rating= rating + ratingIncrement; if (!((score < targetScore) && (ratingIncrement != 0))) { break; } getnextScore(scoreIncrement); score = score + scoreIncrement; } Vereenvoudig met De Morgan’s Laws

Waarschuwing Zet alle exit-voorwaarde op één plaats Voeg commentaar toe

Endless loop Geaccepteerde idiomen: while (true) for (;;)

For-loop Aantal herhalingen is gespecificeerd Geschikt voor simpele loops met regelmatige verhogingen/verlagingen Waarschuwing: zet geen voorwaarde in de loop body

Wat kan er misgaan? Initialisaties van bij loop betrokken variabelen zijn vergeten of incorrect Niet correcte nesting Loop eindigt niet Controlevariabele wordt niet of verkeerd veranderd Loop indiceert array elementen verkeerd …

Adviezen Verklein zoveel mogelijk de factoren die invloed hebben op de loop, oftewel zorg voor eenvoud Behandel de loop body als een black box while(!inputFile.EndOfFile()&& moreDataAvailable()) { } Controleer de voorwaarden die de loop beëindigen Test de loop met beginwaarde, tussenwaarde(n), eindwaarde