De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

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.

Verwante presentaties


Presentatie over: "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."— Transcript van de presentatie:

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


Download ppt "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."

Verwante presentaties


Ads door Google