Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdDennis Janssens Laatst gewijzigd meer dan 10 jaar geleden
1
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
2
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, …
3
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”
4
Arrays en postvakjes
5
Arrays
6
Arrays met invullingen
7
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
8
ArrayArgs java ArrayArgs Drink Hot Java Arg 0 Drink Arg 1 Hot Arg 2 Java Command-line Screen display
9
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
10
Array aanmaken Specificeer arraygrootte Geheugenruimte wordt toegekend scores = new int[10]; names = new String[50]; accounts = new Account[1000]; scores 01234567890123456789
11
Array opslag in computergeheugen
12
Array initializers int[] scores = {8, 5, 6, 6, 7, 9, 10, 6, 5, 8}; String[] names = {“Java”,“Pascal”,“Python”,“Logo”};
13
Exceptions NullPointerException ArrayOutOfBoundsException
14
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);
15
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);
16
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; }
17
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’
18
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; }
19
Output Original size: 5 New size: 10 Original size: 9 New size: 18
20
Arrays clonen static int[] cloneArray (int[] original) { return (int[]) original.clone(); }
21
Arrays vergelijken (1) Button[] buttons = { new Button(“0ne”), new Button(“Two”), new Button(“Three”)}; Component[] components = buttons; boolean bln = (components == buttons); Waarde bln? true
22
Arrays vergelijken (2) String[] clone = (String[]) strArray.clone(); boolean isEqual = (strArray == clone); isEqual = (Arrays.equals(strArray, clone); false true
23
Loops Essentiële onderdelen: Initialisatie Test Verandering Belangrijke vragen: Welke loop kies je? Hoe controleer je de loop? Hoe ontwerp je een loop?
24
Soorten loops Counted loops Continuously evaluated loops Endless loops Iterator loops
25
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#)
26
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
27
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; }
28
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
29
Waarschuwing Zet alle exit-voorwaarde op één plaats Voeg commentaar toe
30
Endless loop Geaccepteerde idiomen: while (true) for (;;)
31
For-loop Aantal herhalingen is gespecificeerd Geschikt voor simpele loops met regelmatige verhogingen/verlagingen Waarschuwing: zet geen voorwaarde in de loop body
32
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 …
33
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
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.